Compare commits

...

358 Commits

Author SHA1 Message Date
darkvater 7423777a18 (svn r1663) Release 0.3.6. 2005-01-25 00:10:06 +00:00
darkvater 1054ec7749 (svn r1662) -Fix: Unpause Linkgames scenario per default 2005-01-25 00:07:58 +00:00
bjarni 001fa99741 (svn r1661) Makefile: added scenario to make install 2005-01-25 00:07:50 +00:00
dominik 3482605b1a (svn r1660) Added scenarios to Mandrakelinux specs file 2005-01-24 23:58:12 +00:00
bjarni 6a66bb2314 (svn r1659) Makefile: added scenario to mac and MorphOS release scripts 2005-01-24 23:52:59 +00:00
darkvater 212ecff33b (svn r1658) -Update readme and windows installer for 0.3.6
-Fix up VS6 and add new default icon for OpenTTD
2005-01-24 23:44:24 +00:00
bjarni ae7bdefc33 (svn r1657) changelog update 2005-01-24 23:32:58 +00:00
dominik 66166bd7f7 (svn r1656) Sorry, this is of course the 2004 version of Linkgame Islands 2005-01-24 23:28:47 +00:00
dominik 4cc23f6608 (svn r1655) Add: Three brand new scenarios for endless multiplayer pleasure:
- Linkgame Islands (by sign_de)
 - Mountain Pass (by Korenn)
 - Volcano City (aka The Big City, by lucaspiller)
2005-01-24 23:24:34 +00:00
dominik 7150dd66cd (svn r1654) updated changelog and known-bugs for 0.3.6 2005-01-24 23:04:30 +00:00
darkvater 5666efe66b (svn r1653) -Fix: removed CTRL+A and CTRL+B cheats; thanks Hackykid
-Removed executable bits on png files in media dir (svn pd svn:executable <file>)
2005-01-24 23:02:14 +00:00
bjarni e006f89aa3 (svn r1652) Fix: train and road vehicle lists are now redrawn when vehicles enters/leaves a depot (Hackykid)
fix: the ship status bar was not updated properly after a breakdown if show_speed was off (Hackykid)
2005-01-24 22:24:47 +00:00
dominik ffb2c4de77 (svn r1651) Fix: [ 1098696 ] Airport shadow remains after crashing 2005-01-24 22:09:20 +00:00
matthijs 19c55cbb75 (svn r1650) - Added known-bugs.txt to os/debian/docs 2005-01-24 21:51:06 +00:00
bjarni 720b906a74 (svn r1649) Makefile: added known-bugs.txt to mac and MorphOS release scripts and made a really dirty hack to force 0.3.6 on binary files compiled with this makefile 2005-01-24 21:39:16 +00:00
darkvater e05f961eed (svn r1648) -Fix: server can now pause and unpause a game through the console. Use 'pause' and 'unpause' 2005-01-24 21:33:44 +00:00
tron 6151c1044a (svn r1647) Remove stale comment and fix typo 2005-01-24 20:55:54 +00:00
dominik aad7995648 (svn r1646) Miscellaneous langfile fixes, in particular for STR_NETWORK_SERVER_ADDRESS, broken by myself in r1611 2005-01-24 20:42:02 +00:00
dominik 700862295f (svn r1645) Updated Mandrakelinux spec file and added some ScummVMish comments 2005-01-24 20:35:07 +00:00
matthijs b9c13283a4 (svn r1644) - Some minor corrections to the os/debian dir. 2005-01-24 20:33:43 +00:00
truelight f08983a948 (svn r1643) -Fix: [ 1108547 ] You can now change the server-password via the GUI again 2005-01-24 20:25:52 +00:00
truelight 7a5ce1cb34 (svn r1642) -Fix: solve AI related order-problem 2005-01-24 20:20:30 +00:00
tron 7f14b69022 (svn r1641) Remove a boundary check added in r1332 to work around a bug - the real cause has been eleminated in r1413.
Leave an assert() just to be sure...
2005-01-24 18:57:16 +00:00
bjarni 6e2abeba5e (svn r1640) fix: now helicopters will use a hangar in schedule to be replaced in, even if they are only set to service there. Since helicopters are serviced at helipads, they will only go there if they needs to be replaced or renewed. 2005-01-24 18:21:23 +00:00
dominik eae329f332 (svn r1639) Fixed spelling: Wrong command in error for goto_dir 2005-01-24 17:49:22 +00:00
celestar ef3961448f (svn r1638) -Fix: Train crashes should no longer desync the game. This is more of a
workaround, as somewhere there might be some InteractiveRandom() abuse
in the code.
2005-01-24 14:39:22 +00:00
darkvater 9139f4ba84 (svn r1637) -Fix: VS6 warning
-Added missing files to VS6 and VS.Net project files (bociusz)
2005-01-24 11:32:47 +00:00
bjarni 6dc99f7738 (svn r1636) fix: helicopters now go to a hangar if they are set for replacement or needs to be renewed 2005-01-24 10:50:57 +00:00
bjarni b4c4daf775 (svn r1635) fix: forgot to set SetVScrollCount properly in autoreplace train GUI. It appears ok now 2005-01-24 08:49:14 +00:00
tron ad6cc5a12d (svn r1634) Update readme: JAM support has been removed, also be more precise which version of SDL is needed to compile 2005-01-24 07:18:45 +00:00
darkvater a9e789fa02 (svn r1633) -Fix: [1040119] Flood and wagons in depot 2005-01-24 00:36:22 +00:00
darkvater 590bbd7e21 (svn r1632) -Fix: [1108008] Scenario creation bug; engines are of correct year when scenario is saved 2005-01-23 23:59:49 +00:00
dominik 29e0ded977 (svn r1631) A couple of fixes for the signed/unsigned warnings. Only train_cmd.c remains to need fixing... 2005-01-23 23:58:35 +00:00
miham 6912223444 (svn r1630) Langfile update 2005-01-23 22:39:34 +00:00
bjarni 6510b12203 (svn r1629) added a counter to tell how many engines you have of each type to the autoreplace vehicle windows and made them show only the vehicles you actually have in the left list.
this also fixes some window updates issues when autoreplacing
2005-01-23 22:01:51 +00:00
darkvater dd6a6fa7ec (svn r1628) -Fix: [1107893] script command; log file pointer was not reset to NULL after logging was closed 2005-01-23 21:42:29 +00:00
darkvater 94dc25b45f (svn r1627) -Fix: The tabulizer in action ^_^ 2005-01-23 21:30:31 +00:00
darkvater f1c151f157 (svn r1626) -Updated readme and credits list. 2005-01-23 21:24:33 +00:00
darkvater f31d8bb9a1 (svn r1625) -Alphabetized credits list 2005-01-23 20:41:20 +00:00
darkvater 660f130d2b (svn r1624) -Fix: [1106930] BugFix: placing signals with 2x1 drags is treated as placing a single signal thus providing an easy fix for a nasty problem. 2005-01-23 20:40:49 +00:00
tron a2619da37e (svn r1623) Remove dead code 2005-01-23 20:06:38 +00:00
truelight 24a34936db (svn r1622) -Fix: variables can't be defined after a statement.. (Igor2Code) 2005-01-23 19:33:42 +00:00
truelight 8edff76765 (svn r1621) -Fix: fixed some compiler warnings for the random-debug-switch 2005-01-23 19:02:53 +00:00
tron 2cf65953db (svn r1620) Fix typo in r1619 2005-01-23 17:51:22 +00:00
tron 62e8c573e8 (svn r1619) Fight bit rot in the Makefile:
- Begin all echos with ===> to visually emphasise them
- Add @ to suppress printing of commands where it was missing
- Add echos to rules where none were 
- Rephrase some existing echos
- Remove VERBOSE_FILTER, because piping errors to /dev/null is ... a bad idea
2005-01-23 17:35:01 +00:00
tron 88c10e02ff (svn r1618) () -> (void) 2005-01-23 16:33:09 +00:00
darkvater 1a92141896 (svn r1617) -Fix: Ugly hack to only call ResetObjectToPlaceon childwindows of build-toolbar if the window is closed manually (with 'X'); if not checked ResetObjectToPlace is called twice resulting in undesired actions (eg. clicked button is unclicked immediately). 2005-01-23 15:25:17 +00:00
tron 53d1c3f117 (svn r1616) Introduce ttd_strlcat() and use it to de-uglify some piece of code in misc_cmd.
While here rename the len parameter of ttd_strlcpy() to size, because it is a buffer size and not a string length.
Also add -Wwrite-strings to the Makefile, because the above mentioned piece of code was the only part which triggered this warning.
2005-01-23 15:16:47 +00:00
darkvater 9a96f5b64e (svn r1615) -Fix: [1107350] console ignoring return character occasionally. For everyone that is running 2 dedicated servers on 1 windows machine, console input is now correct (event was the same so it was random which console received the input) 2005-01-23 14:15:42 +00:00
dominik 52ec917125 (svn r1614) Fix: Signals were not updated correctly when the vehicle drive side was changed 2005-01-23 13:45:20 +00:00
darkvater ae792cedde (svn r1613) -Fix: WE_CLICK event is not called on default actions. If special action is needed, use the other events like WE_RESIZE or WE_DESTROY, etc. 2005-01-23 13:42:26 +00:00
truelight bb276ef5a9 (svn r1612) -Fix: made sure that ->next pointers are set to NULL 2005-01-23 13:30:02 +00:00
dominik 7d0468aaa4 (svn r1611) Display server port in the multiplayer game info window
I had to make the multiplayer window 10 pixels wider for this
2005-01-23 13:19:15 +00:00
tron 44f48ce915 (svn r1610) Remove trailing whitespace (last time ever, i hope) 2005-01-23 13:09:35 +00:00
truelight 80131e1e4a (svn r1609) -Codechange: converted the last order-loop with FOR_VEHICLE_ORDERS 2005-01-23 13:08:01 +00:00
tron a11eddd04b (svn r1608) Make ReplaceWords() comprehensible 2005-01-23 12:04:40 +00:00
truelight 8fe9bc6439 (svn r1607) -Fix: When deleting an order, the next pointer was not cleared,
resulting in some unusual behavoir from time to time
2005-01-23 11:37:27 +00:00
tron 9f60324821 (svn r1606) Fix some bogus casts 2005-01-23 10:54:32 +00:00
tron fd25a53d1b (svn r1605) Remove redundant if 2005-01-23 10:47:15 +00:00
dominik 322bd934be (svn r1604) Fix: [ 1105112 ] Destroyed train locks crossings 2005-01-23 10:40:54 +00:00
darkvater 720b183017 (svn r1603) -Fix: unused variable in FormatTinyDate
-Fix: added void to all win32.c functions as well
2005-01-23 10:34:39 +00:00
tron 7243369333 (svn r1602) -Fix: [1107514] When resizing a window, make sure the correct window receives the click 2005-01-23 08:34:39 +00:00
dominik f83828d944 (svn r1601) Add: A brand new set of icons.
Removed: The old icons
2005-01-22 23:57:03 +00:00
bjarni c7502c6eb3 (svn r1600) Mac: applied the new icon to the mac binary file 2005-01-22 23:55:45 +00:00
bjarni 8e7d88c85b (svn r1599) fix: autoreplace window now updates when inflation alters prices
Hackykid and not LordOfThePigs pointed out the update problem fixed in rev 1597. Sorry. Sometimes development can get too fast
2005-01-22 23:41:23 +00:00
dominik 6027e777c8 (svn r1598) Feature: Message history now is stickyable and resizeable
The news messages are now precisely cropped according to pixel width to fit optimal into the window.
Introduced a new date format: DATE_TINY, which is ISOish.
2005-01-22 23:13:20 +00:00
bjarni 8313879b3c (svn r1597) fix: autoreplace vehicle lists are now redrawn when a new vehicle becomes available (thanks LordOfThePigs for pointing this one out) 2005-01-22 23:11:25 +00:00
tron e5cd6b6193 (svn r1596) Add some more statics 2005-01-22 22:47:58 +00:00
tron e75c48ec7a (svn r1595) EmergencySave() is only used on WIN32, add preprocessor guard to hide it everywhere else 2005-01-22 22:46:10 +00:00
tron 189ca73707 (svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile 2005-01-22 20:23:18 +00:00
tron 7984a9a500 (svn r1593) Remove yet another alloca() 2005-01-22 19:41:30 +00:00
tron 54e78e114c (svn r1592) -Fix: [1090495] Slopes under high bridges weren't flooded 2005-01-22 19:05:30 +00:00
tron 6fb79d5f33 (svn r1591) Make dedicated servers on OS/2 check for input the UNIX way 2005-01-22 18:59:53 +00:00
darkvater b49547b2b5 (svn r1590) -Fix: [1107347] ban 1 crashes dedicated server. Dedicated server cannot ban itself :) 2005-01-22 18:51:09 +00:00
tron c0a0d1bb22 (svn r1589) Adapt the AI to a slight behavior change of CmdBuildSignals() introduced in r1585 2005-01-22 18:46:30 +00:00
celestar f40ff3c134 (svn r1588) -Fix: [ 1105959 ] coded a workaround in the acceleration code so that
trains don't think they're on a slope while they drive around in a
tunnel
2005-01-22 18:39:52 +00:00
darkvater 7c28bafba9 (svn r1587) -CodeChange: fixed up the graph loop a little..numd now shows the exact amount, no +1 needed
-CodeMotion: moved 'Company performancerating detail' to the end of the file; it fits there
2005-01-22 16:24:21 +00:00
dominik 6e17ee9fe2 (svn r1586) Fix: [ 1107340 ] Graphs don't show comapany info for company #8 2005-01-22 15:50:54 +00:00
tron 5d443a2482 (svn r1585) Rewrite CmdBuildSignals()
This addresses several issues:
- Correct comments
- Check input parameters for validity (and don't assert() them)
- Reorder checks if action is possible to produce more meaningful error messages
- Correct bug where money was charged for an action which should be free
- Kill warning about uninitialized variable, because the variable exists no more
- Make more clear how the function works (at least i hope so)
2005-01-22 14:52:20 +00:00
dominik 4ce10986b5 (svn r1584) Fix: Highlighlighting tiles under bridges works again correctly for square selection tools. 2005-01-22 09:17:58 +00:00
darkvater 0a944dc950 (svn r1583) -Fix: You should no longer be able to delete bridges on any type of underground when there is a vehicle on it 2005-01-21 19:52:32 +00:00
dominik 5290d5f667 (svn r1582) Fix: Only the train orders GUI has a non-stop button now. 2005-01-21 18:36:17 +00:00
celestar 962dd27a8c (svn r1581) Added a display for the total map population to the town display (Jango) 2005-01-21 16:51:25 +00:00
dominik 2f4959dcd8 (svn r1580) Fix: [ 1106354 ] Graph's keys get confused
Fix: Graphs were not updated correctly when one graph with a certain selection was already open and another graph window was opened
2005-01-21 11:12:17 +00:00
dominik ef93fcfe48 (svn r1579) Fix: [ 1105963 ] Buoys can now only be removed if no ship has it in their schedule.
This makes buoys more useable in multiplayer games again, as buoys can't be deleted by other players if they are used.
2005-01-20 22:19:34 +00:00
darkvater c245d93e7d (svn r1578) -Fix: [1102454] dedicated server crashes after some hours (highscore problems for dedicated...should be really solved now) 2005-01-20 18:57:09 +00:00
tron 2e0d576e6b (svn r1577) Fix: [1103301] Railroad tracks on slopes weren't flooded 2005-01-20 18:19:37 +00:00
tron 44dae05c3d (svn r1576) Clean TileLoopWaterHelper() a bit up 2005-01-20 18:18:32 +00:00
Celestar 1af764c4d0 (svn r1575) -Fix: Forgot to exit the construction phase for the waypoint window (if
you have newgrfs loaded)
2005-01-20 10:31:59 +00:00
celestar f8345b3fe6 (svn r1574) -Fix [ 1105281 ] upgrade rail fails when train under bridge 2005-01-20 09:12:20 +00:00
celestar f0e616ea2b (svn r1573) -Fix: Station and depot building mode is now terminated if the
corresponding windows are closed [ 1104277 ]
2005-01-20 08:36:15 +00:00
tron e9c25f8274 (svn r1572) Remove dead code from ludde's autorail implementation which was left over by revision 1571 2005-01-19 21:50:38 +00:00
dominik aaf09ceb26 (svn r1571) Feature: Visually enhanced autorail placing
When using the autorail tool, the rail pieces which are going to be build are highlighted.
If a piece is shown in red, this indicates that the slope/rail combination is impossible. It does not tell you if the rail line construction might not be possible because of other obstacles, e.g. houses or water.
2005-01-19 20:55:23 +00:00
tron 28df4a0e25 (svn r1570) Make the gcc version test work with old versions of test (i.e. don't use the < operator) 2005-01-19 20:22:10 +00:00
darkvater 7837be0575 (svn r1569) -Fix: signed/unsigned mismatch 2005-01-19 19:32:33 +00:00
bjarni 2fd3553d78 (svn r1568) made an enum of train subtypes to make the code more readable 2005-01-19 19:15:03 +00:00
darkvater e4a3d284b2 (svn r1567) -Fix: [110452] On horizontal/vertical tracks you are also charged for building/removing signals on the parallel track on the same tile. Signal updating is also correct. (Hackykid) 2005-01-19 13:31:46 +00:00
darkvater 15630855dd (svn r1566) -Fix eol-style on script files, as well as update them a bit (sign_de) 2005-01-19 13:22:01 +00:00
celestar 941da5dc94 (svn r1565) -Fix: [ 1104969 ] Aircraft in hangar messages are now revalidated before
display
-CodeChange: replaced one if (foo) return true else return false by
return (foo)
2005-01-19 10:00:37 +00:00
tron a6d1544447 (svn r1564) ISO C90 forbids mixed declarations and code (bad bjarni, no cookie) 2005-01-19 05:55:30 +00:00
bjarni 69065b53c8 (svn r1563) fix: autoreplaced trains now sets wagon override properly 2005-01-19 01:18:29 +00:00
bjarni f09b0def11 (svn r1562) Changed copyright 2004 into copyright 2004-(current year) in the get info window in finder (macOSX) 2005-01-18 23:48:55 +00:00
bjarni b1c4b0f07d (svn r1561) Fix: autoreplacing a singleheaded engine into a dualheaded engine now adds the the rear engine
autoreplacing a dualheaded engine into a singleheaded engine now sells the rear engine
as a sideeffect of this, the price for replacing both engines are now added and displayed once from the depot(instead of two identical numbers written on top of each other, looking like one)
fix: cost for autorenew dualheaded engines were doubled and their value where doubled too
2005-01-18 23:27:06 +00:00
tron 31d6f87d80 (svn r1560) Introduce SetTileType() and SetTileHeight()
Replace direct references to _map_type_and_height with these
2005-01-18 18:41:56 +00:00
tron 64b08311b9 (svn r1559) Use IsTileType() instead of bit shifting and comparisons 2005-01-18 17:19:34 +00:00
Celestar 389a4bf44d (svn r1558) -Fix: [ 1104350 ] Crashed trains do not initiate the lost vehicle
message anymore
2005-01-18 16:01:35 +00:00
tron eaa6bf3f42 (svn r1557) Replace strange if () do while () construct with a plain for () 2005-01-18 15:26:14 +00:00
Celestar 5bcf3d2bc0 (svn r1556) -Fix: Vehicle list updates should now really work 2005-01-18 09:35:31 +00:00
miham 4559279686 (svn r1555) Daily (err.. this time it's rather weekly, sorry!) langfile updates 2005-01-17 22:44:33 +00:00
celestar e0471187d0 (svn r1554) -Fix: [ 1103187 ] Order Check messages are now validated before
displayed, so that there are no stray error messages any more.
-Feature/Fix: Order Checking is only execute for ONE vehicle in an
order-share system
2005-01-17 21:54:45 +00:00
tron 9fadf6cf84 (svn r1553) Check which gcc version is present and only set availible compiler flags 2005-01-17 13:21:10 +00:00
tron f4f705e723 (svn r1552) Make ottd compile on Zeta 2005-01-17 13:13:11 +00:00
tron 1847b99461 (svn r1551) Silence a warning and simplify a preprocessor check 2005-01-17 10:17:18 +00:00
tron 5adad6c1b4 (svn r1550) Remove useless function declaration 2005-01-17 09:43:02 +00:00
tron fb0c3c8061 (svn r1549) Clean up some functions:
uint tile -> TileIndex tile
if () cascade -> switch ()
2005-01-17 09:41:46 +00:00
tron d4beff7954 (svn r1548) Move AI_PATHFINDER_IS_ROAD from ai.h to ai_pathfinder.c to avoid global namespace pollution, turn it into a function called IsRoad and improve the commments a bit 2005-01-17 09:16:43 +00:00
darkvater a1e94b67d5 (svn r1547) -Feature: windows dedicated (if anyone would run that, but ok), is now functioning correctly. There is no other way but to create a new thread, but that's only MS braindeadness
-Fix: [1103113] font size changing. Dedicated server did not have code filtering, 'tab' could result in bigger fonts
-Fix: [1103069] console backspace key with ded server; fixed due to normal console handling
-Fix: [1101963] console in dedicated server; see above
-Fix: dedicated server also writes to log file if active
2005-01-16 18:19:33 +00:00
truelight 8521367373 (svn r1546) -Fix: possible buffer-overflow in network 2005-01-16 17:19:37 +00:00
tron 022b8cea37 (svn r1545) Add TileHeight() which returns the height (not multiplied by 8)
Replace some direct references to _map_type_and_height with TileHeight()/IsTileType()
2005-01-16 14:50:01 +00:00
truelight 8e404a26f6 (svn r1544) -Fix: SwapOrder did not use AssignOrder, which caused the saveroutine to
crash from time to time
-Codechange: added const before 'Order *' where possible
2005-01-16 14:42:53 +00:00
dominik be5a832db3 (svn r1543) Fix: [ 1101906 ] Configure Patches window text overflow 2005-01-16 14:10:13 +00:00
tron ef923fae44 (svn r1542) Rename TileHeight to TilePixelHeight, because this is what it actually returns 2005-01-16 14:06:22 +00:00
dominik b119b6c474 (svn r1541) Fix: [ 1100767 ] fast forward in main menu 2005-01-16 13:59:07 +00:00
darkvater 340a9ab6be (svn r1540) -Fix: since grf files are reopened on every load/new game, close the old opened to fix stale filehandles (thx tamlin) 2005-01-16 12:40:25 +00:00
darkvater 8efc7866dd (svn r1539) -Fix: [1103271] free'd memory used. Moved w->wndproc(w, &e) to end of function. Thanks for finding this tamlin. 2005-01-16 12:30:52 +00:00
darkvater 37f56fa324 (svn r1538) -Feature: [988816] Disable servicing when breakdowns set to none (jaguar7) 2005-01-16 12:29:52 +00:00
darkvater 208a9b8547 (svn r1537) -Fix: Close all and any open filehandles open at shutdown (tamlin) 2005-01-16 12:14:52 +00:00
tron ae796740aa (svn r1536) Move GET_TILEHEIGHT, GET_TILETYPE and IS_TILETYPE to map.h, turn them into inline functions and add some asserts 2005-01-16 11:24:58 +00:00
truelight d2643dc483 (svn r1535) -Fix: bah, I hate to be wrong.. oh, euh, wrong copy/paste from TPFMode 1 2005-01-16 11:18:17 +00:00
tron efecea001a (svn r1534) Use memmove() instead of memcpy() when copying overlapping memory (tamlin) 2005-01-16 11:04:45 +00:00
tron 1955371a71 (svn r1533) Turn an if cascade into a switch and move a const array to the only location where it is used 2005-01-16 09:51:56 +00:00
darkvater d41a003bcc (svn r1532) -Fix: [1103078] default service period patch options are now cast to 0 with right variable size. 2005-01-16 00:23:19 +00:00
darkvater 6e07bad728 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune) 2005-01-15 21:41:49 +00:00
bjarni 971d844266 (svn r1530) Makefilefix: now the binary never links to SDL if DEDICATED is set. Thanks to igor2code for making me aware of this issue even through I fixed it in a different way than his patch did. (I made dedicated never link to sdl, nomatter what makefile.config says) 2005-01-15 21:30:16 +00:00
darkvater 633786f55e (svn r1529) -Feature: [1090950] Adding 16:10 resolutions for mainly laptops (doode) 2005-01-15 20:43:01 +00:00
truelight 1b00f36520 (svn r1528) -Fix: forgot to init a variable 2005-01-15 20:10:44 +00:00
truelight 24c9e6ff66 (svn r1527) -Add: RCon (Remote Connection). A server can set:
'set rcon_pw <password>'
  Which enables rcon. A client can now do:
    'rcon <password> "<command>"'
  The command will be executed on the server. (guru3)
-Fix: 'kick 1' did crash dedicated servers
-Fix: server password is now correctly saved

  !!Warning!!: do not give your rcon password to people you do not thrust!
2005-01-15 20:09:16 +00:00
darkvater e6d31cb89c (svn r1526) -Fix: [1103027] Minor changes for the lobby GUI (widen window) (bociusz) 2005-01-15 19:17:45 +00:00
truelight d275109e79 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
-Codechange: renamed all 'schedule' stuff to 'order(list)'
-Codechange: moved all order-stuff to order_cmd.c / order.h
-Codechange: vehicles that share orders are now linked to eachother
  with next_shared/prev_shared in Vehicle

  Developers: please use AssignOrder to assign data to an order. If not, 
   you _WILL_ make the save-routine to assert!
2005-01-15 19:06:22 +00:00
darkvater 732c362dea (svn r1524) -"Feature": when windows exception tracker is enabled (release builds) and the game crashes for any reason any active log file is closed first. This ensures the log file and ingame debug messages can be used to debug a problem. Any *nix versions are welcome 2005-01-15 16:38:10 +00:00
darkvater ef3b9161f8 (svn r1523) -Fix: somehow mousewheel was disabled on windows using SDL; reenabled again
-Fix: added missing CDECL to ellipsis functions and changed VS6 project file to use _cdecl calling conventions (thx tamlin)
2005-01-15 15:48:05 +00:00
darkvater 559317f9d0 (svn r1522) -Fix: warning players.c; forgot return type. Damn, makefile is too strict ;) (Thx Tron) 2005-01-15 10:04:04 +00:00
celestar 02ed8410a2 (svn r1521) -Fix: Ship Vehicle Lists are now redrawn correctly
-Codechange: added some const to last commit
-Codechange: Ship and Aircraft lists are now update on order change, not
on new day
2005-01-15 09:28:08 +00:00
tron 3279a7c9a2 (svn r1520) Trim 134 (!) lines with trailing whitespace ): 2005-01-15 08:58:31 +00:00
celestar 7f7c6297f7 (svn r1519) -Fix: [1102776], [1099535] Aircraft vehicle lists are now redrawn when an aircraft arrives in the depot. Station-specific vehicle lists are now redrawn daily as well (not only the master list) 2005-01-15 08:40:32 +00:00
darkvater f9b5f704b1 (svn r1518) -Fix: server issue where some company names were wrong
-Fix: Highscore troubles; accessing members of deleted window
2005-01-15 01:52:23 +00:00
darkvater 75474e5bf1 (svn r1516) -Cheating players do not get their names added to the highscore table/file
-Fixed issue where highscore window would not come up after endgame screen
-Fix: VS6 compiles once again (braindead compiler)
2005-01-15 00:46:45 +00:00
darkvater c3a40dba68 (svn r1515) -Removed the 'close ALL windows' from the toolbar since shift+del does this. 2005-01-15 00:42:01 +00:00
darkvater 976ed5e396 (svn r1514) -Fix: [1092474] little red box in scenario editor (Celestar). Error box is also shown in scenario editor for terraforming, thus solving the eternally-pulsating-tile problem. 2005-01-14 22:03:09 +00:00
truelight 83b00ad861 (svn r1513) -Fix: glitch in revision 1510
-Fix: MSVC6 project file update (bociusz)
-Fix: MSVC6 default language is now English (UK), no longer Swedish (bociusz)
2005-01-14 21:59:31 +00:00
tron dd27968460 (svn r1512) Replace probably incorrect test of loading_count with probably correct test of loaded_count 2005-01-14 21:58:48 +00:00
truelight e9a57c56b7 (svn r1510) -Add: Improved Network Lobby GUI: (bociusz)
- Added green dot if company income is positive (else red dot)
 - Added lock icon if company is password protected
2005-01-14 21:47:35 +00:00
tron 3a838447a8 (svn r1509) Const correctness and add static where appropriate while touching the lines anyway 2005-01-14 19:44:42 +00:00
tron 4136f395bf (svn r1508) Remove duplicate declarations and include proper headers where necessary 2005-01-14 19:41:24 +00:00
tron 9d1f7e7348 (svn r1507) Remove unreachable code 2005-01-14 19:39:06 +00:00
dominik 34db065631 (svn r1506) Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice 2005-01-14 14:56:50 +00:00
celestar 314a4245a9 (svn r1505) -Fix: Refit engine button is now disabled when cargo capacity equals zero 2005-01-14 09:36:29 +00:00
celestar febac23b25 (svn r1504) enummed town ratings (Jango) 2005-01-14 09:20:12 +00:00
miham 9e10458209 (svn r1503) Added feature:
o allows users to setup the production values of the rawmaterial producing 
  industries in the editor

Modified:
o ttd.h - added CT_INVALID for 0xFF cargo type
o english.txt - added 1 string
o industry_gui.c - the feature itself
o window.h - added compile asserts to the structs which checks whether their
  sizes are smaller than WINDOW_CUSTOM_SIZE

Thanks:
o Darkvater to bother me to constantly improve the patch
o Various users at #openttd for testing
2005-01-14 00:14:13 +00:00
darkvater 352cf002b2 (svn r1502) -Fix: [1101889] Crash under windows... stupid typo in player_gui.c ^ should've been &
-Fix: in multiplayer clientlist can only be opened once
2005-01-13 20:46:39 +00:00
celestar 7dddb6cf7a (svn r1500) -Feature: Train window shows now the number of vehicles per row (mpetrov) 2005-01-13 17:23:24 +00:00
celestar 237732d0a1 (svn r1499) -Fix: Order tooltip now explains the ctrl+click scroll. [1101412 / 1097043] (mpetrov) 2005-01-13 17:06:10 +00:00
Celestar 6dd2e2f06d (svn r1498) -Feature: Addded keyboard shortcuts for the order window 2005-01-13 16:55:17 +00:00
darkvater 61cae70fe5 (svn r1497) -Fix: [1101179] Crash if generating land while industry window is open. This also happened for towns and the land information window
-Added DeleteWindowByClass() function that deletes all windows of a given class
2005-01-13 16:50:20 +00:00
darkvater 06cc62f40d (svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
-Fix: fixed some compiler warnings
-Added PF_NETWORK_ONLY flag to settings. Such a setting can only be modified in a network game.
2005-01-13 16:28:47 +00:00
celestar 0074496ea4 (svn r1495) -Fix: Loan does not count against the company value
-Feature: New companies receive a 5-year protection period
2005-01-13 09:55:32 +00:00
tron 131f4c50fd (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
Add SeedChanceBias() which subtracts a bias from SeedChance() to reduce code duplication
While touching the lines anyway sprinkle a bit holy ANSI water (static before inline) and move assignments in the conditions of ifs before the ifs
2005-01-12 22:10:50 +00:00
celestar 253a02e712 (svn r1493) -Codechange: Removed redundancy in the order GUI. Currently we had most
of the code written 4 - 8 times in the code.
    This currently causes the "non-stop" button to appear for all
vehicles, which is disabled all the time. Don't report this as a bug
please.
    This is (hopefully) the first patch in a joint effort to simplify
the order system
2005-01-12 22:09:21 +00:00
tron f062187e47 (svn r1492) Reduce strcpy(, "") follwed by strcat() to just strcpy() (Jango) 2005-01-12 21:38:49 +00:00
tron 45233a7e16 (svn r1491) Fix bracing style and indentation (Jango) 2005-01-12 21:33:43 +00:00
tron fd19404b6f (svn r1490) Restore original town name generation behavior for german and hungarian (Jango) 2005-01-12 21:11:26 +00:00
truelight 747eab12d9 (svn r1489) -Fix: You fix a GCC warning, you get a MSVC warning.. now fixed both
(which compiler do we break this time?)
2005-01-12 16:33:33 +00:00
truelight 7ec997afce (svn r1488) -Fix: fixed some spelling mistakes (tnx to Tron)
-Fix: fixed some compiler-warnings
2005-01-12 11:54:51 +00:00
darkvater f25bec9132 (svn r1487) -Fix: [1100736] wrong tooltip for place desert button 2005-01-12 11:50:41 +00:00
truelight a243285af4 (svn r1486) -Codechange: moved all 'signs' stuff to signs.c/h and prepared it for
dynamic arrays
2005-01-12 11:21:28 +00:00
darkvater ff23795f5b (svn r1485) -Fix: [1031451] Catchment area shows when buying sign. Catchment area wasn't reset when road station window was unselected
-Fix: small GUI glitch in terraform toolbar
2005-01-12 00:50:08 +00:00
darkvater 1a450b0b39 (svn r1484) -Fix: [1099197] scrolling through console sometimes crashed the whole game. Also added MarkWholeScreenDirty() to have redrawing of console resize instant (sign_de) 2005-01-11 23:39:21 +00:00
truelight 4873c0b1ea (svn r1483) -Fix: don't close a socket if it is already closed (windows doesn't like
it :() (partly tnx to tamlin)
2005-01-11 15:52:18 +00:00
celestar 1feae2083d (svn r1481) -Fix: [ 1099891 ] Added a return in DispatchLeftClickEvent which prevents reading of free'd memory (tamlin) 2005-01-11 12:15:08 +00:00
darkvater 5fac6142e8 (svn r1479) -Added highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
-Added endgame score on 1 jan 2051 where you are added to the highscore if sufficiently large points have been accumulated. Game is paused while
-These values are saved in hs.dat; added read/write functions for it
-Added code to delete all windows to show charts. There is one issue left: somehow a news-gui pops up in front of the the chart at the end of the game.
2005-01-11 00:54:06 +00:00
darkvater 085563653f (svn r1478) -Fix: [1099195] mouse-wheel in train replace window. Scrollbar1 and Scrollbar2 now work independently. You can only scroll on list and scrollbar itself; scrollbar must be next widget of the list.
-Fix: updated the few gui's that didn't have the scrollbar right after the listbox.
2005-01-11 00:24:27 +00:00
darkvater 38da06301d (svn r1477) -Fix: finally zooming in/out always works. The problem was that the zoomed in/out coordinates were used for checking if the area was a zoomable viewport in the not zoomed in/out position. The chances were high that there was a window. 2005-01-10 22:56:20 +00:00
darkvater ae72661742 (svn r1476) -Fix: [1099209] Catchment area with drag&drop stations (Celestar) 2005-01-10 22:36:11 +00:00
tron 05a3a83b6c (svn r1475) Fix some more signed/unsigned comparison warnings 2005-01-10 22:14:35 +00:00
celestar 46d0e2f892 (svn r1474) Added some gcc flags in the Makefile 2005-01-10 21:56:02 +00:00
darkvater 70f9921423 (svn r1472) -Fix: correct error message for when trying to build a railroad station over a bus/truck/etc-station. 2005-01-10 21:52:35 +00:00
darkvater 02e020c05e (svn r1471) -Alternate icon added, made by Dominik
-VS6 project file updated (bociusz)
2005-01-10 20:53:18 +00:00
tron 1fc77885c2 (svn r1470) Revert r1457, this warning option was introduced with gcc 3.4 2005-01-10 19:27:38 +00:00
truelight 2c6e2a68b7 (svn r1469) -Fix: missed one in last commit 2005-01-10 19:14:05 +00:00
truelight 52de6766c7 (svn r1468) -Fix: really old maps do load again (Darkvater / TrueLight) 2005-01-10 19:08:25 +00:00
Celestar c0b82db752 (svn r1467) Fixed a nasty bug where one could build one station OVER the other 2005-01-10 16:35:20 +00:00
darkvater 83b2abb6d6 (svn r1466) -Fix: oops, depot windows can of course also scroll horizontally. Thanks si-m1. 2005-01-10 14:56:26 +00:00
darkvater 29b4ab04c3 (svn r1465) -Fix: [1099101] starting year patch goes out of range. Clamped year between 1920-2090 as wel as adding defines for it. 2005-01-10 14:43:00 +00:00
darkvater fae367ab31 (svn r1464) -Fix: [1099106] Resizeable portion of bus/air/rail depots window unclickable 2005-01-10 14:36:08 +00:00
darkvater 1261a44cec (svn r1463) -Fix: [1099451] Game crashes after the click on Rename (see also Bug 10992). There was no check for non-selected engine 2005-01-10 14:24:40 +00:00
darkvater 49e7939a10 (svn r1460) -Fix: [1099225] Bug Fix - Vehicle Lists not updated at Acqusition (thx tamlin and mpetrov) This also fixes some bug but can't find i right now. 2005-01-10 12:14:15 +00:00
darkvater 53bd40ebaf (svn r1458) -Fix: remove byte *s again for windows. 2005-01-10 10:38:02 +00:00
tron cd4e73193d (svn r1457) Make Darvater happy: -Wdeclaration-after-statement 2005-01-10 09:33:18 +00:00
tron b9fed3391b (svn r1456) Simplify isWagon(), make it static and give it a canonical name (IsWagon) 2005-01-10 08:25:43 +00:00
miham aacb89ed53 (svn r1455) Fixed spritecache.c to compile 2005-01-10 07:26:19 +00:00
darkvater 52bfa90d5e (svn r1454) -Fix: small warnings in spritecache.c 2005-01-10 01:50:17 +00:00
dominik aa261049f4 (svn r1453) Feature: MD5 hash check for TTD files
The original TTD files are now checked with a MD5 sum to determine which version of the grf files is used and to warn about possible file corruptions. (Thanks to ledow for the original patch)
2005-01-10 01:14:26 +00:00
miham c77e9231ef (svn r1452) Fixed missing option from settings.c (Simen Graaten) 2005-01-09 21:39:49 +00:00
tron 49584082a0 (svn r1451) Fix some of the signed/unsigned comparison warnings 2005-01-09 21:25:44 +00:00
miham c6c86abeee (svn r1450) Updated norwegian townname generation (Simen Graaten) 2005-01-09 20:45:07 +00:00
darkvater fbcc84bdcf (svn r1449) -Fix: signed/unsigned error on windows
-Change: Makefile added -Wsign-compare flag
2005-01-09 18:59:16 +00:00
truelight 97479f9613 (svn r1448) -Fix: The current_order of a vehicle is now correctly saved (caused
massive desyncs)
  Warning: savegames which are made with the nightly of 08-01-2005 will 
   NO LONGER work!!
2005-01-09 18:49:18 +00:00
tron 55e6b4f928 (svn r1447) Move TILE_ADD(), TILE_ADDXY() and SafeTileAdd() to map.[ch] and make the latter map size agnostic 2005-01-09 17:55:11 +00:00
truelight 32f480a4ae (svn r1445) -Fix: reversing a train also reverses the UP and DOWN status for the
realistic acceleration calculation
-Fix: there was a big bug in setting the UP and DOWN flags making it 
easy possible for a overloaded train to go up a mountain. This is no 
longer possible. They will hang at a certain height
2005-01-09 16:02:06 +00:00
truelight 9853d4e0d4 (svn r1444) -Fix: fixed weight for double-head trains (and with that the acceleration)
(now maglev lvl4 can reach their top speed, and are faster than lvl3) 
(Tnx to Darkvater :))
-Fix: Buy Vehicle GUI now shows HPs bigger than 32000 correctly
2005-01-09 14:45:19 +00:00
miham 598addff94 (svn r1443) Added feature that users are able to place multiple accepting industies nearby in the editor mode if the appropriate patches are set 2005-01-09 14:07:59 +00:00
celestar 86c3bfd66d (svn r1441) Fixed a couple of warnings, and removed a pointless assert 2005-01-09 10:04:30 +00:00
celestar e17a8989cf (svn r1440) -Feature: Allows more flexible airport layouts now, as the number of
terminals in every group can be freely chosen
-Codechange: AT_OILRIG is now 15, so that new airports can be added
easily.
2005-01-09 08:49:40 +00:00
miham 13dda25334 (svn r1439) Daily langfile updates [except latvian for non-iso8859-1 chars] (semi-automatic)
The last patch (norwegian townnames was from Simen Graaten
2005-01-09 01:11:01 +00:00
miham 0f339f3a6b (svn r1438) Added norwegian townnames 2005-01-09 00:17:01 +00:00
darkvater 5edecb9495 (svn r1437) -Fix: Safetileadd preprocessor magic is the same as for GCC and no longer extern 2005-01-08 23:59:49 +00:00
dominik bfc670b4d9 (svn r1435) Fix: [ 1094092 ] Toolbars accessible via keyboard in spectator mode 2005-01-08 20:55:21 +00:00
dominik 4b6a846d9c (svn r1434) Fix: [ 1098553 ] Crash when all vehicles from a vehicles per station list had been removed 2005-01-08 19:34:00 +00:00
truelight 5110ffeef4 (svn r1432) -Fix: I seem to be unable to revert a simple file :s 2005-01-08 15:31:20 +00:00
truelight ead1aa8dfc (svn r1431) -Fix: oeps, I added my personal Makefile in the last commit :( 2005-01-08 15:28:16 +00:00
truelight d4d4a46436 (svn r1430) -Fix: starting openttd with -g <invalid_name> now acts normal 2005-01-08 15:26:58 +00:00
truelight 788f543bc3 (svn r1429) Change: bumped savegame to revision 5.
- Now orders are bigger
   - Now _map2 is official 16 bits
2005-01-08 12:47:26 +00:00
miham 3be9515d84 (svn r1428) Compiling with MSVC6 documentation update (from the wiki) [Bociusz] 2005-01-08 12:03:21 +00:00
bjarni 4972b3722e (svn r1427) fixed issue where the wrong sprite could be used if autoreplacing between single and multiheaded trains 2005-01-08 10:38:07 +00:00
truelight dcca3cf80b (svn r1426) -Codechange: cleaned up the reference code in the saveload routines
-Codechange: removed next_in_chain_old, and saved ->next for Vehicles
  (and bumped savegame revision for that to version 4.4)
-Codechange: Added _sl.full_version, which has both major and minor version
2005-01-08 09:48:08 +00:00
celestar 90871eeb9e (svn r1425) Added hotkeys for dock and airport toolbar 2005-01-08 09:40:22 +00:00
dominik 634c395a6f (svn r1424) Add dynamite to landscaping toolbar (hotkey 'D') 2005-01-08 09:24:15 +00:00
dominik 69a4df909c (svn r1423) Fix: [ 1084074 ] Delayed news messages 2005-01-08 09:09:11 +00:00
dominik 3f7da833d1 (svn r1422) Fixed linux compiling, that was broken in r1420 2005-01-08 08:29:12 +00:00
bjarni db4668c057 (svn r1421) improved autoreplace multiheaded trains. It now remembers the current heading for an engine instead of turning all of them like the first one and the last the other way 2005-01-08 01:05:24 +00:00
darkvater b11f7c7817 (svn r1420) -Fix: Console alias, load_game functionality and load fix (sign_de) 2005-01-08 00:48:10 +00:00
bjarni 2da54df9df (svn r1419) fixed issue where autoreplacing dualheaded trains turned the last engine the wrong way 2005-01-08 00:22:11 +00:00
darkvater 116789022c (svn r1418) -Feature: [1098254] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid) 2005-01-07 23:59:59 +00:00
dominik b78b576b21 (svn r1417) Fix: The invisible tiles on the southern border are now converted to class MP_VOID when an old map (with wrong classified invisible tiles) is loaded.
I bumped the minor savegame version for that, even though it's not really necessary. We're not gonna run out of minor savegame versions anyway though. ;)
2005-01-07 18:13:56 +00:00
tron 76c7f3b14e (svn r1416) Print sensible information in SafeTileAdd() if gcc is used 2005-01-07 17:47:29 +00:00
tron 35972e68e1 (svn r1415) Move TILE_FROM_XY and TILE_XY to map.h and push TILE_[XY] bits from map.h into map.c.
Now the whole source except map.c is independent of TILE_[XY]_BITS!
2005-01-07 17:40:23 +00:00
tron 7ca6b2b8b0 (svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY] 2005-01-07 17:02:43 +00:00
dominik f5c33e5073 (svn r1413) Fixed a serious memory leak problem. The invisible tiles on the southern border now have the correct tile type (MP_VOID) again. Please note that older maps might still have incorrect border tiles, thus still causing overflows. 2005-01-07 12:33:28 +00:00
celestar 9a4465f9c0 (svn r1412) -Feature/Fix: Aircraft refit options have been restricted to "sane"
values.
-Feature: aircraft can now be refitted "mail-only"
-Feature: Passengers aircraft now ignore the amount of mail for "full
load any" options
2005-01-07 09:51:16 +00:00
truelight e58739c559 (svn r1411) -Fix: structure packing in the OS/2 version (eg, with the old loader). 2005-01-07 09:28:16 +00:00
celestar 8ed132a5b9 (svn r1410) Replaced all occurences of 'passanger' by 'passenger' in the code 2005-01-07 08:38:27 +00:00
tron a6ba0d3fbe (svn r1409) Simplify some preprocessor magic 2005-01-07 08:07:24 +00:00
darkvater a3c0e81230 (svn r1408) -Fix: uninitialized variable :) 2005-01-06 22:50:48 +00:00
truelight 63e97754fb (svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
(in prepare of dynamic arrays):
  - DEREF_XXX is changed into GetXXX
  - All direct call are directed via GetXXX
  - struct Industry has now an index-field
  - ENUM'd some stuff
  - Replaced home built loops with FOR_ALL_XXX
  - Added _stations_size, _vehicles_size, ... which gives the length of the
    array (which will be dynamic in the near future)
  - Changed lengtof(XXX) to _XXX_size (e.g. _stations_size)
  - Removed all endof(XXX) (because mostly it was part of a FOR_ALL_XXX)
  - Made the sort-functions of all 4 dynamic
  - Made all 4 Initialize functions more of the same
  - Some minor tab-fixing and stuff
  (tnx to Tron for proof-reading my 100kb patch ;))

  Note for all: please do NOT directly call _stations, _vehicles, _towns and
  _industries, but use the right wrapper to access them. Thank you.
  Ps: please also do not use 'v++', where v is of type Vehicle *.
2005-01-06 22:31:58 +00:00
bjarni a4111363c0 (svn r1405) Added half done Estonian translation (indrek) 2005-01-06 19:40:44 +00:00
darkvater deabdb666f (svn r1404) -Fix: Company password no longer shares a widget with buying shares 2005-01-06 18:54:13 +00:00
miham 57aebadb15 (svn r1403) Daily langfile updates (semi-automatic) [505 missing strings] 2005-01-06 18:49:51 +00:00
tron 8b7c1e94e1 (svn r1402) Trim trailing whitespace 2005-01-06 18:45:28 +00:00
truelight 2c9cd8f68c (svn r1401) -Fix: glitches in train-depot GUI (tnx to Hackykid)
-Fix: glitch in Company Overview GUI (Hackykid)
2005-01-06 17:40:57 +00:00
truelight 8e58dd8dec (svn r1400) -Fix: signal stays red if a track is removed (Darkvater / Tron / TrueLight) 2005-01-06 17:14:37 +00:00
truelight c06dd27c33 (svn r1399) -Fix: Fixes for compiling with Watcom C/C++ (ie, OS/2 port). (orudge)
Note: If people could watch out for initialising structs with
  *non-constants* in future... it's a bit annoying, I
  know, but Open Watcom isn't the only compiler which
  doesn't support this (yet) - Borland, for example,
  still doesn't like it.
2005-01-06 15:57:26 +00:00
darkvater becd9c224e (svn r1398) -Feature: CTRL+V (Paste) now works on all editboxes. This includes 'Add Server', chat, etc. Feature is Windows only. 2005-01-06 15:54:09 +00:00
tron 5b7e224f46 (svn r1397) Add missing RESIZE_NONE 2005-01-06 12:34:22 +00:00
tron f8c95a1dbe (svn r1396) Introduce TileIndexDiffC - the compile time version of TileIndexDiff 2005-01-06 11:39:00 +00:00
tron 790b03c707 (svn r1395) Fix assertion when building road bridge 2005-01-06 08:08:17 +00:00
bjarni 1e99155d61 (svn r1393) fix [ 1096026 ]. Autorenew trains should now hopefully work like it did before autoreplace was added
DEREF_ENGINE is now used in autoreplace
2005-01-05 19:28:10 +00:00
tron cc465f0f35 (svn r1392) Use TileOffsByDir() instead of home brewed table 2005-01-05 19:12:47 +00:00
tron 5583fd89b3 (svn r1391) Make an assert map size agnostic 2005-01-05 18:59:02 +00:00
tron 2cdc210193 (svn r1390) Use TileOffsByDir() instead of home brewed table 2005-01-05 18:09:06 +00:00
truelight 523a6a1cff (svn r1389) -Add: [Network] Added packet protection. No longer a client or server
reads beyond the size of the packet
-Fix: [Network] A server no longer crashes when a client sends an 
invalid DoCommand, but drops the client instead.
2005-01-05 14:39:48 +00:00
dominik f1e9fdf76d (svn r1388) Feature: [SDL] Show revision number in window title 2005-01-05 14:20:23 +00:00
dominik 6735135773 (svn r1387) Fix: Airplanes now also crash when only one invalid order is in the schedule 2005-01-05 13:48:38 +00:00
tron 67161506ad (svn r1386) Move TileIndexDiff to map.h
Move _tileoffs_by_dir to map.[ch] and encapsulate it in TileOffsByDir()
2005-01-05 13:32:03 +00:00
dominik 2543158c8e (svn r1385) Fix: [ 1095020 ] When all stations in an aircraft's order list are demolished, the plane eventually crashes (running out of fuel) 2005-01-05 13:15:27 +00:00
dominik 61761cfab1 (svn r1384) Fix: Sometimes when lists were saved, a lot of blank lines had been added 2005-01-05 11:19:57 +00:00
dominik 87e5984ae2 (svn r1383) Fix: You can now also delete automatically found servers by pressing "del"
Fix: The scrollbar is correctly updated when deleting servers
2005-01-05 10:47:59 +00:00
tron 9294d33611 (svn r1382) Make automatic placement of rails in front of train depots map size agnostic 2005-01-05 10:20:51 +00:00
dominik e31da8532e (svn r1381) Fix: [ 1095143 ] Servers list now also saves the port 2005-01-05 09:59:45 +00:00
darkvater c4b682f996 (svn r1380) -Fix: missed widget fixes; thanks Jango and TestMan57 2005-01-04 21:45:38 +00:00
darkvater 4c5f6fe360 (svn r1379) -Fix: various GUI glitches. Added default sizes to various widgets. Sticky/Resize- and Scrollbar must be 11 pixels wide, Horizontal scrollbar 11 pixels high, caption must be 13 pixels. I hope I didn't forget any widgets, the game will assert for that so report them to me! 2005-01-04 21:28:09 +00:00
bjarni 0fe19ed2ac (svn r1378) Fix: train engines are now only replaced if the engine is really set to be replaced and they are replaced to the type that engine type is set to be replaced to (instead of whtat the first engine in the train is set to) 2005-01-04 20:19:00 +00:00
darkvater 2af42f48b9 (svn r1377) -Fix: only a server can rename a town in a MP game 2005-01-04 19:49:44 +00:00
bjarni 29d2f6ed6c (svn r1376) fixed an issue where a modified client could try to replace a vehicle to an invalid engine ID and crash the server. Now the server just rejects the request. Also added a check for vehicle ownership, so you should not be able to replace other player's vehicles 2005-01-04 17:54:16 +00:00
darkvater 6edb21231e (svn r1375) -Fix: [1050990] Buying trains sometimes accounted for incorrectly. Was the result of the cost getting reset in a recursive call of docommand. That is fixed. In addition all cost-commands are typed explicitely. Please do not forget to do so or your costs will be credited to construction if you are unlucky. 2005-01-04 17:11:03 +00:00
darkvater 88b8a01da6 (svn r1374) -Feature: Add sticky item to finances window; sticky remains when requesting big/small window
-Moved resize icon in save dialog to bottom-right
2005-01-04 17:04:10 +00:00
darkvater 101ccce895 (svn r1373) -Fix: compilation fix for windows 2005-01-04 16:04:28 +00:00
truelight 27df6c86fc (svn r1372) -Fix: fixed some GUI glitches introduced with resize-buttons 2005-01-04 15:49:30 +00:00
truelight c5d6230c66 (svn r1370) -Add: added console support for loading maps. Use 'load', 'list_files'
and 'goto_dir' to navigate and load games.
2005-01-04 15:06:08 +00:00
darkvater 4f496b8681 (svn r1369) -Feature(ish): Added sprites for up/down and left/right arrows. Anywhere where there are horizontal scrollers these are now left/right arrows 2005-01-04 14:54:27 +00:00
truelight 86fa7720f9 (svn r1368) -Fix: Disabled dropdown menu options are gray again (instead of blue)
(redid revision 1357)
2005-01-04 13:45:58 +00:00
matthijs a9b3d8c998 (svn r1367) -Fix: Full-Loading trains no longer get "lost" after a while (Hackykid) 2005-01-04 00:54:12 +00:00
darkvater cdfb3d5113 (svn r1366) -Fix: [1093186] rough land in snow upon dying of tree 2005-01-04 00:53:52 +00:00
darkvater 3a48ab4c54 (svn r1365) -Fix: very, very nasty buffer overflow bug introduced with replace vehicles. You CANNOT access the i[255] of an array that only has 255 elements! I will kick the next person that does that so hard...goddammit (I only noticed it because it screwed up my console in the debug build and took me at least an hour to fix) 2005-01-04 00:07:58 +00:00
darkvater 5a9478cdba (svn r1361) -Remove .cod files from VS6 project as well (bociusz) 2005-01-03 22:16:02 +00:00
tron 39bb863024 (svn r1359) Fix typos in last commit 2005-01-03 22:12:36 +00:00
tron 2f2688b829 (svn r1358) Assert bounds of depot list when searching for a depot 2005-01-03 22:07:40 +00:00
darkvater 579d51b1b2 (svn r1357) -Fix: Disabled dropdown menu options are gray again (instead of blue) 2005-01-03 22:04:34 +00:00
darkvater f6c4e3eb1c (svn r1356) -Fix: [1092363] missing GCC_PACK in oldloader.c (thx hafken) 2005-01-03 21:51:24 +00:00
darkvater 9a49fda8e6 (svn r1355) -Fix: [1092473] random trees in scenario editor do not overwrite rocks as well 2005-01-03 21:47:52 +00:00
tron d922ca68e7 (svn r1354) Use WindowClass/WindowNumber to store/pass window class/number, not some arbitrary data types 2005-01-03 21:29:59 +00:00
darkvater 52c87a0330 (svn r1353) -Fix: [1092707] placing rocks in scenario editor. You can place rocks on trees and vice versa 2005-01-03 21:26:09 +00:00
darkvater 1ee725ef35 (svn r1352) -Fix: [1093200] Drive side in new games. Setting the driver side is possible during the game until someone buys road vehicles. In networked games only the server can change it. 2005-01-03 21:05:03 +00:00
bjarni ad24d6cb04 (svn r1351) fixed issue in last commit where it it not update the replace train window properly when changing company colour (the lower two panels stayed the old colour until the window was reopened) 2005-01-03 21:01:37 +00:00
bjarni e0c4e144b9 (svn r1350) Replace Vehicle GUI:
- Replaced "WP(w,replaceveh_d).line_height" with 
"w->resize.step_height" since they needed to be the same anyway
- Cleaned the code a litte for readability (like correct tabbing)
- Added company color to replace vehicle windows to make them look like 
the rest of the vehicle windows and made the caption text white (also to 
fit the standard)

 --This line, and those below, will be ignored--

M    vehicle_gui.c
M    lang/english.txt
M    window.h
2005-01-03 20:52:09 +00:00
darkvater 363dd7bdf0 (svn r1349) -Fix: [1093485] Dissappearing rocks in Scenario Editor 2005-01-03 20:20:25 +00:00
truelight a94fe04a9a (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
how the system works. All useful windows are already made resizable. Enjoy :)
-Fix: fixed some GUI-glitches and flaws along the way
2005-01-03 19:45:18 +00:00
darkvater 5b6be88587 (svn r1347) -Fix: Some were fixed for the trees -> Only copy the lowest two bits (amount of snow/desert) from map5 to map2 when placing trees, before this happened implicitly because map2 was just 8 bits wide; 2005-01-03 19:34:07 +00:00
darkvater 79d29b7633 (svn r1346) -Fix: fix signed/unsigned warnings
-Fix: latent removal of 2 lines from ttd.c which I forgot because the file was not saved :O
2005-01-03 19:09:45 +00:00
tron afb6e5441d (svn r1345) Only copy the lowest two bits (amount of snow/desert) from map5 to map2 when placing trees, before this happened implicitly because map2 was just 8 bits wide 2005-01-03 19:06:16 +00:00
tron c0702318d2 (svn r1344) Use MapSize[XY]() (or MapSize()/MapMax[XY]() where appropriate) instead of TILES_[XY] 2005-01-03 18:59:58 +00:00
truelight d382463f8a (svn r1343) -Fix: [Graphic] Autorail icon is now correct (Darkvater)
-Fix: [Graphic] Added resize icon (tnx tokai)
2005-01-03 18:49:45 +00:00
darkvater a72d993e65 (svn r1342) -Fix: [1094596] Problem with ship depot; upon load it is also given owner OWNER_WATER 2005-01-03 18:40:41 +00:00
darkvater 3ee8697bbf (svn r1341) -Fix: fix WWT_FRAME drawing when there is no text there (STR_NULL)
-Copyright notice is now 2002-2005 for all languages
2005-01-03 17:55:25 +00:00
darkvater ca1b3a80ae (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them. 2005-01-03 16:45:42 +00:00
darkvater d317a93e0f (svn r1339) -Fix: compilation with networking works on MinGW32 again (thx orudge). 2005-01-03 14:33:59 +00:00
darkvater 39f8b82640 (svn r1338) -Fix: fix signed/unsigned warnings introduced when ditching the macros for map querying. 2005-01-03 14:07:49 +00:00
tron 32bfe0dddd (svn r1337) Use MapMax[XY]() (or MapSize[XY]() if appropriate) instead of TILE_MAX_[XY]
While here replace one erroneous TILE_MAX_X with MapMaxY()
2005-01-03 12:56:22 +00:00
dominik 4c14afba4e (svn r1336) Fix: Correct landscaping buttons in monorail and maglev toolbars 2005-01-03 12:15:55 +00:00
dominik 288c52b688 (svn r1335) Removed wrongly renamed STR_TOWNNAME_ADDITIONAL_ENGLISH from all language files 2005-01-03 12:03:24 +00:00
dominik 2cb37408a3 (svn r1334) Fix: [ 1093466 ] no more glitches with many maps in the scenario list when creating server 2005-01-03 11:58:53 +00:00
dominik 60ba9c3280 (svn r1333) Fix: No crash when creating a game with American town names any more 2005-01-03 11:45:11 +00:00
truelight 7e89cd8643 (svn r1332) -Fix: Desert-landscape does no longer crash (protected GetMapExtraBits
from overflowing)
2005-01-03 11:11:16 +00:00
tron 6c4840fa50 (svn r1331) Update map size before sending game info 2005-01-03 09:14:31 +00:00
tron 29e71638ce (svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows 2005-01-03 08:50:44 +00:00
tron 608cdbe3f6 (svn r1329) Remove unused function declaration 2005-01-03 08:34:54 +00:00
tron 09dd8053a9 (svn r1328) Turn loop with explicit terminator element into loop using endof() 2005-01-03 08:33:04 +00:00
darkvater ae336f146d (svn r1327) -Fix: made resource file version independent for windows
-Fix: language file inconsistencies...please update all other language files as well when you rename a string name and do nothing else.
2005-01-03 00:42:43 +00:00
bjarni 6a6cbdd9b4 (svn r1326) fixed compiler warnings in vehicle_gui.c and widget.c 2005-01-02 22:28:56 +00:00
darkvater efc2702491 (svn r1325) -Fixed eol-style properties on new files. Please before adding a new file to svn use: "svn propset svn:eol-style native <filename's>"!!
-Fix: the level land icon no longer flashes (was palette colour)
2005-01-02 21:52:21 +00:00
bjarni 2351271889 (svn r1324) Fixed problem with autoreplace GUI and msvc6 (thanks bociusz) 2005-01-02 17:39:01 +00:00
bjarni 29d8c5bb50 (svn r1323) Adding autoreplace feature
This feature works much like autorenew, but it will get you a new engine type instead of a new one of the same type. Once 
ordered, it will automatically replace the engines while they visits a depot. The GUI for setting this up have been added on the 
vehicle overview windows
Note: autorenew is now autoreplace, but to the same engine type
Nice new features, that was added to make this possible
- windows can now have two independant vertical scrollbars
- CMD_SHOW_NO_ERROR have been added as a flag for DoCommandP. It will make it do the action instead of showing the red box with 
estimated costs even if shift is pressed
- fixed problem where enginetypes where not initialized when loading a game. It's now done in InitializeGame()
2005-01-02 17:23:04 +00:00
truelight a11f46fed4 (svn r1322) -Add: banning system (mostly tnx to guru3)
A server can ban people via ClientList
  Both server and dedicated can do it via console:
   'ban', 'unban', 'banlist'.
2005-01-02 12:03:43 +00:00
truelight 5d06584545 (svn r1321) -Fix: Revision 1302 partly solved the problem and created an other.
Should now really be solved.. now only MP_WATER is owned by OWNER_WATER
2005-01-01 19:18:48 +00:00
truelight a0716c39de (svn r1320) -Fix: fixed chat-bug (that from a certain moment, nobody could talk).. 1
variable was still byte instead of uint16 (with a very big tnx to guru3!)
2005-01-01 16:34:54 +00:00
truelight 461ca703ff (svn r1318) -Fix: Saving a game fucked up the industries.. sorry ;) 2005-01-01 15:40:44 +00:00
truelight 36333076d5 (svn r1314) -Fix: Population numbers is no longer negative for 32k+ towns 2004-12-31 19:09:03 +00:00
truelight 2ebc5011f3 (svn r1313) -Fix: fixed MSVC problem 2004-12-31 18:59:22 +00:00
truelight 92ac503b74 (svn r1312) -Add: Patch which is on by default: population in label of the town
-Fix: Expand town is a bit more agressive
-Fix: Fixed a bug in growing algorithm
2004-12-31 18:57:24 +00:00
truelight 1fef394fde (svn r1308) -Update: updated MSVC project files 2004-12-31 15:55:14 +00:00
truelight d76ecbba7c (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
readable now. 'American' is replaces by 'Additional English' (Jango)
2004-12-31 14:43:47 +00:00
miham 6c1e2989b1 (svn r1303) Daily langfile update (automatic) 2004-12-31 09:47:09 +00:00
truelight 4b38004a49 (svn r1302) -Fix: [ 1091655 ] In some older maps somehow water is owned by
OWNER_NONE instead of OWNER_WATER.
-Fix: On InitializeLandscape the map was made MP_WATER, but OWNER_NONE. 
 When ConvertGroundTilesIntoWaterTiles() is not called, this gives big 
 problems (see above). Now the owner is set to OWNER_WATER by default.
2004-12-30 10:29:28 +00:00
truelight 546fcfa3ec (svn r1301) -Codechange: _industries finally has FOR_ALL_INDUSTRIES too 2004-12-30 10:03:35 +00:00
truelight 32c3fbd18e (svn r1300) -Fix: The cost for an autorenew was not always send to the right player ;) 2004-12-30 09:46:40 +00:00
truelight 635b854c29 (svn r1299) -Fix: [ 1092473 ] In SE, when trees are placed randomly, they are no
longer placed on farmland
2004-12-30 09:43:12 +00:00
truelight bcc3b1cbb5 (svn r1298) -Fix: [ 1092661 ] On create, the scrollbar of the server-list was not updated 2004-12-29 15:32:10 +00:00
miham 57852f6498 (svn r1297) Language fixes in the source.. (ln-) 2004-12-29 13:13:29 +00:00
celestar 14dfb539b0 (svn r1296) Cleanup for MSVC files (bociusz) 2004-12-29 11:00:34 +00:00
truelight fe08f457bc (svn r1295) -Fix: [ 1092499 ] Copy order was fucked up, because memcpy said:
sizeof(uint16), instead of sizeof(Order).
2004-12-29 08:42:30 +00:00
miham e24c0ec9df (svn r1294) Daily langfile updates (automatic) 2004-12-28 22:46:09 +00:00
miham 37a18c858f (svn r1293) Fixed the bug in translator 2004-12-28 22:36:46 +00:00
truelight 6735bffd39 (svn r1292) -Codechange: also updated the town/industry sort-list to be uint16 compatible 2004-12-28 17:50:17 +00:00
truelight e6a59be8c0 (svn r1291) -Codechange: prepared subsidies and towns to become an uint16 (happens
after savegame bump)
2004-12-28 17:40:15 +00:00
bjarni c4d073a4de (svn r1290) Added type to typedef struct Engine and filled in the same data as in type in vehicle
it was kind of lame that you should use AircraftVehInfo(), ShipVehInfo() etc. if you wanted to know what type the engine is
2004-12-28 17:18:46 +00:00
truelight 5b8c604f47 (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge) 2004-12-28 12:11:34 +00:00
truelight c2ee8d70e4 (svn r1288) -Codechange: changed _map2 to an uint16. It is still saved and loaded as
an uint8 till the savegame version is bumped to version 5. Then it works 
automaticly as a fully uint16. So _stations[] can not be increased till 
after the bump!!
2004-12-28 11:51:31 +00:00
truelight 41201f488c (svn r1287) -Fix: reversed 1285, because it is not the solution. This also means
that getting a lot of money with shares is back... :(
2004-12-28 09:55:55 +00:00
truelight c531739602 (svn r1286) -Fix: oeps, I clamp'd some numbers wrong :$ 2004-12-28 09:31:38 +00:00
truelight a5a811f767 (svn r1285) -Fix: your loan is now substracted from your company value 2004-12-28 09:29:40 +00:00
truelight 15d188d7f8 (svn r1284) -Fix: Fixed 'money-cheat' (read: bug which could give people a lot of money) 2004-12-28 09:24:02 +00:00
truelight 8dcbf2675b (svn r1283) -Add: AutoRenew is now a client-side patch instead of a game-side patch
Note: this is the first commit that breaks compatibility with 0.3.5!
-Fix: Bufferoverflow with autorenew_money. It is now a 32-bit integer.
2004-12-27 18:18:44 +00:00
truelight 96b36ec01e (svn r1282) -Fix: forget 2 files for the OS/2 patch. And forgot to add:
patch by Orudge, great job!!
2004-12-27 13:40:30 +00:00
truelight 1f4c1e8821 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
- Networking
  - File selector issue
  - Keyboard input
  - Dedicated server console issue (use dedicated.cmd to open a server)
  - Plus many other minor issues
2004-12-27 10:40:04 +00:00
truelight f3c8f40c51 (svn r1280) -Codechange: made the last patch a bit more... readable (in other words:
use that spacebar!!)
2004-12-27 10:24:38 +00:00
bjarni b01382c20b (svn r1279) Fixed the scrollbar in the network gui(server list). It now updates when scrolling (HackyKid) 2004-12-26 22:09:34 +00:00
matthijs e4ee040a04 (svn r1278) (Applied to trunk/ and branch/map/)
-Made media/opentdd.64.png non-executable
-Created an xpm version of media/openttd.64.png (required for debian)
2004-12-25 20:59:11 +00:00
miham c575939ef4 (svn r1277) Daily langfile updates (automatic) 2004-12-25 17:08:56 +00:00
truelight c5cca49117 (svn r1276) -Fix: [Network] Bug in bind system. Advertising failed on systems with
more then 1 ip, and server_bind active to one of them.
2004-12-24 08:54:00 +00:00
213 changed files with 21450 additions and 12666 deletions
+63 -41
View File
@@ -64,8 +64,6 @@
# where it normally would print the revision number
# MIDI: if set, it will use it as custom path to midi player.
# If unset, it will use the hardcoded path in the c code
# NOVERBOSE: supress all warnings and errors during compilation.
# It looks nicer, but you will not know what went wrong. Use it on released (stable) sources only
# VERBOSE: actually show the commands used for compilation.
# WITH_NETWORK: enable networking
# DEDICATED: allows compilation on UNIX without SDL. Useful for dedicated servers
@@ -116,11 +114,15 @@
# Configuration
#
ifndef RELEASE
RELEASE:=0.3.6
endif
# Makefile version tag
# it checks if the version tag in makefile.config is the same and force update outdated config files
MAKEFILE_VERSION:=6
# CONFIG_WRITER have to be found even for manual configuration
# CONFIG_WRITER has to be found even for manual configuration
CONFIG_WRITER=makefiledir/Makefile.config_writer
ifndef MANUAL_CONFIG
@@ -176,26 +178,15 @@ ENABLE_NETWORK:=1
-include $(LIB_DETECTION)
endif
# Verbose filter
ifdef NOVERBOSE
VERBOSE_FILTER = >/dev/null 2>&1
else
VERBOSE_FILTER =
endif
ifdef DISPLAY_WARNINGS
WARNING_DISPLAY:=-fstrict-aliasing
VERBOSE_FILTER =
else
WARNING_DISPLAY:=-fno-strict-aliasing
endif
ifdef SUPRESS_LANG_ERRORS
ifndef VERBOSE_FILTER
LANG_ERRORS = >/dev/null 2>&1
endif
endif
ifdef STATIC
ifndef WIN32
@@ -226,6 +217,10 @@ endif
endif
endif
# remove the dependancy for sdl if DEDICALTED is used
ifdef DEDICATED
WITH_SDL:=
endif
##############################################################################
@@ -290,7 +285,21 @@ endif
# -O optimize or -O2 fully optimize (O's above 2 are not recommended)
# -pg profile - generate profiling data. See "man gprof" to use this.
CFLAGS=-Wall -Wno-multichar
CC_VERSION = $(shell $(CC) -dumpversion | cut -c 1,3)
# GNU make can only test for (in)equality
# this is a workaround to test for >=
ifeq ($(shell if test $(CC_VERSION) -ge 29; then echo true; fi), true)
CFLAGS += -O -Wall -Wno-multichar -Wsign-compare -Wstrict-prototypes
CFLAGS += -Wwrite-strings
endif
ifeq ($(shell if test $(CC_VERSION) -ge 30; then echo true; fi), true)
CFLAGS += -W -Wno-unused-parameter
endif
ifeq ($(shell if test $(CC_VERSION) -ge 34; then echo true; fi), true)
CFLAGS += -Wdeclaration-after-statement -Wold-style-definition
endif
CDEFS=-DWITH_REV
LDFLAGS=
LIBS=
@@ -356,7 +365,10 @@ CDEFS += -DBEOS
LDFLAGS += -lmidi -lbe
ifdef WITH_NETWORK
ifdef BEOS_NET_SERVER
CDEFS += -DBEOS_NET_SERVER
CDEFS += -DBEOS_NET_SERVER
else
# Zeta needs a few more libraries than R5
LDFLAGS += -lbind -lsocket
endif
endif
endif
@@ -613,6 +625,7 @@ C_SOURCES += settings.c
C_SOURCES += settings_gui.c
C_SOURCES += ship_cmd.c
C_SOURCES += ship_gui.c
C_SOURCES += signs.c
C_SOURCES += smallmap_gui.c
C_SOURCES += sound.c
C_SOURCES += sprite.c
@@ -699,18 +712,18 @@ endif
all: endian.h $(UPDATECONFIG) $(LANGS) $(TTD) $(OSX) $(endwarnings)
endian.h: $(ENDIAN_CHECK)
@# Check if system is LITTLE_ENDIAN or BIG_ENDIAN
@echo 'Running endian_check'; \
./$(ENDIAN_CHECK) > $@
@echo '===> Testing endianness'
@./$(ENDIAN_CHECK) > $@
$(ENDIAN_CHECK): endian_check.c
@echo 'Compiling and Linking $@'; \
$(CC) $(BASECFLAGS) $(CDEFS) endian_check.c -o $@
@echo '===> Compiling and Linking $@'
@$(CC) $(BASECFLAGS) $(CDEFS) endian_check.c -o $@
$(TTD): table/strings.h $(ttd_OBJS) $(MAKE_CONFIG)
$(if $(VERBOSE),@echo '$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS)';,@echo 'Compiling and Linking $@';) \
$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS) $(VERBOSE_FILTER)
@echo '===> Linking $@'
@$(if $(VERBOSE), echo '$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS)')
@$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS)
$(OSX): $(TTD)
@rm -fr "$(OSXAPP)"
@@ -719,7 +732,7 @@ $(OSX): $(TTD)
@mkdir -p "$(OSXAPP)"/Contents/Data
@mkdir -p "$(OSXAPP)"/Contents/Lang
@echo "APPL????" > "$(OSXAPP)"/Contents/PkgInfo
@cp os/macos/ttd.icns "$(OSXAPP)"/Contents/Resources/openttd.icns
@cp os/macos/openttd.icns "$(OSXAPP)"/Contents/Resources/openttd.icns
@os/macos/plistgen.sh "$(OSXAPP)" "$(REV)"
@cp os/macos/track_starter "$(OSXAPP)"/contents/macos
@ls os/macos | grep -q "\.class" || \
@@ -736,19 +749,20 @@ $(64_bit_warnings):
$(warning If you see any bugs, include in your bug report that you use a 64 bit CPU)
$(STRGEN): strgen/strgen.c endian.h
@echo 'Compiling and Linking $@'; \
$(CC) $(BASECFLAGS) $(CDEFS) -o $@ $< $(VERBOSE_FILTER)
@echo '===> Compiling and Linking $@'
@$(CC) $(BASECFLAGS) $(CDEFS) -o $@ $<
table/strings.h: lang/english.txt $(STRGEN)
@echo 'Generating $@'; \
$(STRGEN)
@echo '===> Generating $@'
@$(STRGEN)
lang/%.lng: lang/%.txt $(STRGEN) lang/english.txt
@echo 'Generating $@'; \
$(STRGEN) $(STRGEN_FLAGS) $< $(VERBOSE_FILTER) $(LANG_ERRORS)
@echo '===> Compiling language $(*F)'
@$(STRGEN) $(STRGEN_FLAGS) $< $(LANG_ERRORS)
winres.o: ttd.rc
windres -o $@ $<
@echo '===> Compiling resource $<'
@windres -o $@ $<
ifdef MORPHOS
release: all
@@ -758,13 +772,16 @@ release: all
@mkdir -p "/t/openttd-$(RELEASE)-morphos/docs"
@mkdir -p "/t/openttd-$(RELEASE)-morphos/data"
@mkdir -p "/t/openttd-$(RELEASE)-morphos/lang"
@mkdir -p "/t/openttd-$(RELEASE)-morphos/scenario"
@cp -R $(TTD) "/t/openttd-$(RELEASE)-morphos/"
@cp data/* "/t/openttd-$(RELEASE)-morphos/data/"
@cp lang/*.lng "/t/openttd-$(RELEASE)-morphos/lang/"
@cp scenario/* "/t/openttd-$(RELEASE)-morphos/scenario/"
@cp readme.txt "/t/openttd-$(RELEASE)-morphos/docs/ReadMe"
@cp docs/console.txt "/t/openttd-$(RELEASE)-morphos/docs/Console"
@cp COPYING "/t/openttd-$(RELEASE)-morphos/docs/"
@cp changelog.txt "/t/openttd-$(RELEASE)-morphos/docs/ChangeLog"
@cp known-bugs.txt "/t/openttd-$(RELEASE)-morphos/docs/known-bugs.txt"
@cp os/morphos/icons/openttd.info "/t/openttd-$(RELEASE)-morphos/$(TTD).info"
@cp os/morphos/icons/docs.info "/t/openttd-$(RELEASE)-morphos/docs.info"
@cp os/morphos/icons/drawer.info "/t/openttd-$(RELEASE)-morphos.info"
@@ -786,6 +803,7 @@ ifdef OSX
release: all
@mkdir -p "OpenTTD $(RELEASE)"
@mkdir -p "OpenTTD $(RELEASE)"/docs
@mkdir -p "OpenTTD $(RELEASE)"/scenario
@cp -R $(OSXAPP) "OpenTTD $(RELEASE)"/
@cp docs/OSX_where_did_the_package_go.txt "OpenTTD $(RELEASE)"/Where\ did\ the\ package\ go.txt
@cp readme.txt "OpenTTD $(RELEASE)"/docs/
@@ -795,6 +813,8 @@ release: all
@cp changelog.txt "OpenTTD $(RELEASE)"/docs/
@cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD $(RELEASE)"/docs/
@cp os/macos/*.webloc "OpenTTD $(RELEASE)"
@cp known-bugs.txt "OpenTTD $(RELEASE)"/known-bugs.txt
@cp scenario/* "OpenTTD $(RELEASE)"/scenario/
@/usr/bin/hdiutil create -ov -format UDZO -srcfolder "OpenTTD $(RELEASE)" openttd-"$(RELEASE)"-osx.dmg
@rm -fr "OpenTTD $(RELEASE)"
@@ -833,11 +853,11 @@ FORCE:
clean:
@echo 'Cleaning up...'; \
rm -rf .deps *~ $(TTD) $(STRGEN) core table/strings.h $(LANGS) $(ttd_OBJS) endian.h $(ENDIAN_CHECK)
@echo '===> Cleaning up'
@rm -rf .deps *~ $(TTD) $(STRGEN) core table/strings.h $(LANGS) $(ttd_OBJS) endian.h $(ENDIAN_CHECK)
mrproper: clean
rm -rf $(MAKE_CONFIG)
@rm -rf $(MAKE_CONFIG)
ifndef OSX
ifndef MORPHOS
@@ -865,11 +885,13 @@ endif
mkdir -p $(DATA_DIR_INSTALL)/data
mkdir -p $(DATA_DIR_INSTALL)/gm
mkdir -p $(BINARY_DIR_INSTALL)
mkdir -p $(PERSONAL_DIR)/scenario
cp $(TTD) $(BINARY_DIR_INSTALL)
cp lang/*.lng $(DATA_DIR_INSTALL)/lang
cp data/*.grf $(DATA_DIR_INSTALL)/data
cp data/opntitle.dat $(DATA_DIR_INSTALL)/data
cp media/openttd.64.png $(DATA_DIR_INSTALL)
cp scenario/* $(PERSONAL_DIR)/scenario/
else #MorphOS
install:
$(error make install is not supported on MorphOS)
@@ -893,8 +915,8 @@ love:
# Export all variables set to subprocesses (a bit dirty)
.EXPORT_ALL_VARIABLES:
upgradeconf: $(MAKE_CONFIG)
rm $(MAKE_CONFIG)
$(MAKE) $(MAKE_CONFIG)
@rm $(MAKE_CONFIG)
@$(MAKE) $(MAKE_CONFIG)
.PHONY: upgradeconf
@@ -912,12 +934,11 @@ DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
# first compilation round as we just build everything at that time anyway,
# therefore we do not need to watch deps.
#@echo '$(C_BUILD) $<'; \
%.o: %.c $(MAKE_CONFIG) endian.h table/strings.h
$(if $(VERBOSE),@echo '$(C_BUILD) $<',@echo 'Compiling $(*F).o'); \
$(C_BUILD) $< -Wp,-MD,.deps/$(*F).pp $(VERBOSE_FILTER)
@echo '===> Compiling $<'
@$(if $(VERBOSE), echo '$(C_BUILD) $<')
@$(C_BUILD) $< -Wp,-MD,.deps/$(*F).pp
@-cp .deps/$(*F).pp .deps/$(*F).P; \
tr ' ' '\012' < .deps/$(*F).pp \
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
@@ -926,4 +947,5 @@ DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
# For DirectMusic build and BeOS specific parts
%.o: %.cpp $(MAKE_CONFIG) endian.h table/strings.h
$(CXX_BUILD) $< -o $@
@echo '===> Compiling $<'
@$(CXX_BUILD) $< -o $@
+88 -88
View File
@@ -69,10 +69,11 @@ static void AiCase1(Player *p)
static void AiStateVehLoop(Player *p)
{
Vehicle *v;
uint index;
v = p->ai.cur_veh == NULL ? _vehicles : p->ai.cur_veh+1;
index = (p->ai.cur_veh == NULL) ? 0 : p->ai.cur_veh->index + 1;
for (;v != endof(_vehicles); v++) {
FOR_ALL_VEHICLES_FROM(v, index) {
if (v->type == 0 || v->owner != _current_player)
continue;
@@ -266,14 +267,11 @@ static void AiHandleGotoDepot(Player *p, int cmd)
static void AiRestoreVehicleOrders(Vehicle *v, BackuppedOrders *bak)
{
const Order *os = bak->order;
int ind = 0;
int i;
while (os++->type != OT_NOTHING) {
if (DoCommandByTile(0, v->index + (ind << 16), PackOrder(os), DC_EXEC, CMD_INSERT_ORDER) == CMD_ERROR)
for (i = 0; bak->order[i].type != OT_NOTHING; i++)
if (!DoCommandP(0, v->index + (i << 16), PackOrder(&bak->order[i]), NULL, CMD_INSERT_ORDER | CMD_NO_TEST_IF_IN_NETWORK))
break;
ind++;
}
}
static void AiHandleReplaceTrain(Player *p)
@@ -297,7 +295,7 @@ static void AiHandleReplaceTrain(Player *p)
if (DoCommandByTile(0, v->index, 2, DC_EXEC, CMD_SELL_RAIL_WAGON) != CMD_ERROR &&
DoCommandByTile(tile, veh, 0, DC_EXEC, CMD_BUILD_RAIL_VEHICLE) != CMD_ERROR) {
veh = _new_train_id;
AiRestoreVehicleOrders(&_vehicles[veh], orderbak);
AiRestoreVehicleOrders(GetVehicle(veh), orderbak);
DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_TRAIN);
DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
@@ -325,7 +323,7 @@ static void AiHandleReplaceRoadVeh(Player *p)
if (DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_SELL_ROAD_VEH) != CMD_ERROR &&
DoCommandByTile(tile, veh, 0, DC_EXEC, CMD_BUILD_ROAD_VEH) != CMD_ERROR) {
veh = _new_roadveh_id;
AiRestoreVehicleOrders(&_vehicles[veh], orderbak);
AiRestoreVehicleOrders(GetVehicle(veh), orderbak);
DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_ROADVEH);
DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
@@ -353,7 +351,7 @@ static void AiHandleReplaceAircraft(Player *p)
if (DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_SELL_AIRCRAFT) != CMD_ERROR &&
DoCommandByTile(tile, veh, 0, DC_EXEC, CMD_BUILD_AIRCRAFT) != CMD_ERROR) {
veh = _new_aircraft_id;
AiRestoreVehicleOrders(&_vehicles[veh], orderbak);
AiRestoreVehicleOrders(GetVehicle(veh), orderbak);
DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_AIRCRAFT);
DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
@@ -412,19 +410,21 @@ typedef struct FoundRoute {
void *to;
} FoundRoute;
static Town *AiFindRandomTown() {
Town *t = DEREF_TOWN(RandomRange(_total_towns));
static Town *AiFindRandomTown(void)
{
Town *t = GetTown(RandomRange(_total_towns));
return (t->xy != 0) ? t : NULL;
}
static Industry *AiFindRandomIndustry() {
Industry *i = DEREF_INDUSTRY(RandomRange(_total_industries));
static Industry *AiFindRandomIndustry(void)
{
Industry *i = GetIndustry(RandomRange(_total_industries));
return (i->xy != 0) ? i : NULL;
}
static void AiFindSubsidyIndustryRoute(FoundRoute *fr)
{
int i;
uint i;
byte cargo;
Subsidy *s;
Industry *from, *to_ind;
@@ -447,16 +447,16 @@ static void AiFindSubsidyIndustryRoute(FoundRoute *fr)
return;
fr->cargo = cargo;
fr->from = from = DEREF_INDUSTRY(s->from);
fr->from = from = GetIndustry(s->from);
if (cargo == CT_GOODS || cargo == CT_FOOD) {
to_tow = DEREF_TOWN(s->to);
to_tow = GetTown(s->to);
if (to_tow->population < (uint32)(cargo == CT_FOOD ? 200 : 900))
return; // error
fr->to = to_tow;
to_xy = to_tow->xy;
} else {
to_ind = DEREF_INDUSTRY(s->to);
to_ind = GetIndustry(s->to);
fr->to = to_ind;
to_xy = to_ind->xy;
}
@@ -485,8 +485,8 @@ static void AiFindSubsidyPassengerRoute(FoundRoute *fr)
return;
fr->cargo = s->cargo_type;
fr->from = from = DEREF_TOWN(s->from);
fr->to = to = DEREF_TOWN(s->to);
fr->from = from = GetTown(s->from);
fr->to = to = GetTown(s->to);
// They must be big enough
if (from->population < 400 || to->population < 400)
@@ -621,17 +621,17 @@ static bool AiCheckIfRouteIsGood(Player *p, FoundRoute *fr, byte bitmask)
static byte AiGetDirectionBetweenTiles(TileIndex a, TileIndex b)
{
byte i = (GET_TILE_X(a) < GET_TILE_X(b)) ? 1 : 0;
if (GET_TILE_Y(a) >= GET_TILE_Y(b)) i ^= 3;
byte i = (TileX(a) < TileX(b)) ? 1 : 0;
if (TileY(a) >= TileY(b)) i ^= 3;
return i;
}
static TileIndex AiGetPctTileBetween(TileIndex a, TileIndex b, byte pct)
{
return TILE_XY(
GET_TILE_X(a) + ((GET_TILE_X(b) - GET_TILE_X(a)) * pct >> 8),
GET_TILE_Y(a) + ((GET_TILE_Y(b) - GET_TILE_Y(a)) * pct >> 8)
);
TileX(a) + ((TileX(b) - TileX(a)) * pct >> 8),
TileY(a) + ((TileY(b) - TileY(a)) * pct >> 8)
);
}
static void AiWantLongIndustryRoute(Player *p)
@@ -1416,7 +1416,7 @@ static void AiWantOilRigAircraftRoute(Player *p)
t = AiFindRandomTown();
if (t != NULL) {
// Find a random oil rig industry
in = DEREF_INDUSTRY(RandomRange(lengthof(_industries)));
in = GetIndustry(RandomRange(_total_industries));
if (in != NULL && in->type == IT_OIL_RIG) {
if (GetTileDist(t->xy, in->xy) < 60)
break;
@@ -1534,7 +1534,7 @@ static bool AiCheckTrackResources(TileIndex tile, const AiDefaultBlockData *p, b
int rad;
for(;p->mode != 4;p++) if (p->mode == 1) {
tile2 = TILE_ADD(tile, p->tileoffs);
tile2 = TILE_ADD(tile, ToTileIndexDiff(p->tileoffs));
w = ((p->attr>>1) & 7);
h = ((p->attr>>4) & 7);
@@ -1573,7 +1573,7 @@ static int32 AiDoBuildDefaultRailTrack(TileIndex tile, const AiDefaultBlockData
for(;;) {
// This will seldomly overflow for valid reasons. Mask it to be on the safe side.
uint c = TILE_MASK(tile + p->tileoffs);
uint c = TILE_MASK(tile + ToTileIndexDiff(p->tileoffs));
_cleared_town = NULL;
@@ -1598,7 +1598,7 @@ clear_town_stuff:;
}
} else if (p->mode == 2) {
// Rail
if (IS_TILETYPE(c, MP_RAILWAY))
if (IsTileType(c, MP_RAILWAY))
return CMD_ERROR;
j = p->attr;
@@ -1617,7 +1617,7 @@ clear_town_stuff:;
/* signals too? */
if (j&3) {
// Can't build signals on a road.
if (IS_TILETYPE(c, MP_STREET))
if (IsTileType(c, MP_STREET))
return CMD_ERROR;
if (flag & DC_EXEC) {
@@ -1716,7 +1716,7 @@ static void AiDoTerraformLand(TileIndex tile, int dir, int unk, int mode)
unk &= (int)r;
do {
tile = TILE_MASK(tile + _tileoffs_by_dir[dir]);
tile = TILE_MASK(tile + TileOffsByDir(dir));
r >>= 2;
if (r&2) {
@@ -1822,7 +1822,7 @@ static TileIndex AiGetEdgeOfDefaultRailBlock(byte rule, TileIndex tile, byte cmd
while (p->mode != 3 || !((--cmd) & 0x80)) p++;
return tile + p->tileoffs - _tileoffs_by_dir[*dir = p->attr];
return tile + ToTileIndexDiff(p->tileoffs) - TileOffsByDir(*dir = p->attr);
}
typedef struct AiRailPathFindData {
@@ -1855,7 +1855,7 @@ static bool AiDoFollowTrack(Player *p)
arpfd.tile2 = p->ai.cur_tile_a;
arpfd.flag = false;
arpfd.count = 0;
FollowTrack(p->ai.cur_tile_a + _tileoffs_by_dir[p->ai.cur_dir_a], 0x2000 | TRANSPORT_RAIL, p->ai.cur_dir_a^2,
FollowTrack(p->ai.cur_tile_a + TileOffsByDir(p->ai.cur_dir_a), 0x2000 | TRANSPORT_RAIL, p->ai.cur_dir_a^2,
(TPFEnumProc*)AiEnumFollowTrack, NULL, &arpfd);
return arpfd.count > 8;
}
@@ -1961,8 +1961,8 @@ static inline void AiCheckBuildRailBridgeHere(AiRailFinder *arf, TileIndex tile,
// Allow bridges directly over bottom tiles
flag = arf->ti.z == 0;
for(;;) {
if (tile_new < -_tileoffs_by_dir[dir2]) return; // Wraping around map, no bridge possible!
tile_new = TILE_MASK(tile_new + _tileoffs_by_dir[dir2]);
if (tile_new < -TileOffsByDir(dir2)) return; // Wraping around map, no bridge possible!
tile_new = TILE_MASK(tile_new + TileOffsByDir(dir2));
FindLandscapeHeightByTile(&arf->ti, tile_new);
if (arf->ti.tileh != 0 || arf->ti.type == MP_CLEAR || arf->ti.type == MP_TREES) {
if (!flag) return;
@@ -2008,7 +2008,7 @@ static void AiBuildRailRecursive(AiRailFinder *arf, TileIndex tile, int dir)
{
const byte *p;
tile = TILE_MASK(tile + _tileoffs_by_dir[dir]);
tile = TILE_MASK(tile + TileOffsByDir(dir));
// Reached destination?
if (tile == arf->final_tile) {
@@ -2126,7 +2126,7 @@ static void AiBuildRailConstruct(Player *p)
return;
}
p->ai.cur_tile_a += _tileoffs_by_dir[p->ai.cur_dir_a];
p->ai.cur_tile_a += TileOffsByDir(p->ai.cur_dir_a);
if (arf.best_ptr[0]&0x80) {
int i;
@@ -2178,12 +2178,12 @@ static bool AiRemoveTileAndGoForward(Player *p)
int offs;
TileIndex tilenew;
if (IS_TILETYPE(tile, MP_TUNNELBRIDGE)) {
if (IsTileType(tile, MP_TUNNELBRIDGE)) {
if (!(_map5[tile] & 0x80)) {
// Clear the tunnel and continue at the other side of it.
if (DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR) == CMD_ERROR)
return false;
p->ai.cur_tile_a = TILE_MASK(_build_tunnel_endtile - _tileoffs_by_dir[p->ai.cur_dir_a]);
p->ai.cur_tile_a = TILE_MASK(_build_tunnel_endtile - TileOffsByDir(p->ai.cur_dir_a));
return true;
}
@@ -2195,7 +2195,7 @@ static bool AiRemoveTileAndGoForward(Player *p)
return false;
// Find other side of bridge.
offs = _tileoffs_by_dir[p->ai.cur_dir_a];
offs = TileOffsByDir(p->ai.cur_dir_a);
do {
tile = TILE_MASK(tile - offs);
} while (_map5[tile] & 0x40);
@@ -2218,7 +2218,7 @@ static bool AiRemoveTileAndGoForward(Player *p)
bit = FindFirstBit(b);
// Then remove and signals if there are any.
if (IS_TILETYPE(tile, MP_RAILWAY) &&
if (IsTileType(tile, MP_RAILWAY) &&
(_map5[tile]&0xC0) == 0x40) {
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_REMOVE_SIGNALS);
}
@@ -2233,7 +2233,7 @@ static bool AiRemoveTileAndGoForward(Player *p)
p->ai.cur_dir_a = ptr[1] ^ 2;
// And then also switch tile.
p->ai.cur_tile_a = TILE_MASK(p->ai.cur_tile_a - _tileoffs_by_dir[p->ai.cur_dir_a]);
p->ai.cur_tile_a = TILE_MASK(p->ai.cur_tile_a - TileOffsByDir(p->ai.cur_dir_a));
return true;
}
@@ -2332,7 +2332,7 @@ static void AiStateBuildRail(Player *p)
p->ai.cur_tile_a = tile;
p->ai.start_dir_a = dir;
p->ai.cur_dir_a = dir;
DoCommandByTile(TILE_MASK(tile + _tileoffs_by_dir[dir]), 0, (dir&1)?1:0, DC_EXEC, CMD_REMOVE_SINGLE_RAIL);
DoCommandByTile(TILE_MASK(tile + TileOffsByDir(dir)), 0, (dir&1)?1:0, DC_EXEC, CMD_REMOVE_SINGLE_RAIL);
assert(TILE_MASK(tile) != 0xFF00);
@@ -2343,7 +2343,7 @@ static void AiStateBuildRail(Player *p)
p->ai.cur_tile_b = tile;
p->ai.start_dir_b = dir;
p->ai.cur_dir_b = dir;
DoCommandByTile(TILE_MASK(tile + _tileoffs_by_dir[dir]), 0, (dir&1)?1:0, DC_EXEC, CMD_REMOVE_SINGLE_RAIL);
DoCommandByTile(TILE_MASK(tile + TileOffsByDir(dir)), 0, (dir&1)?1:0, DC_EXEC, CMD_REMOVE_SINGLE_RAIL);
assert(TILE_MASK(tile) != 0xFF00);
@@ -2357,7 +2357,7 @@ static int AiGetStationIdByDef(TileIndex tile, int id)
{
const AiDefaultBlockData *p = _default_rail_track_data[id]->data;
while (p->mode != 1) p++;
return _map2[TILE_ADD(tile,p->tileoffs)];
return _map2[TILE_ADD(tile, ToTileIndexDiff(p->tileoffs))];
}
static void AiStateBuildRailVeh(Player *p)
@@ -2373,7 +2373,7 @@ static void AiStateBuildRailVeh(Player *p)
ptr = _default_rail_track_data[p->ai.src.cur_building_rule]->data;
while (ptr->mode != 0) { ptr++; }
tile = TILE_ADD(p->ai.src.use_tile, ptr->tileoffs);
tile = TILE_ADD(p->ai.src.use_tile, ToTileIndexDiff(ptr->tileoffs));
cargo = p->ai.cargo_type;
for(i=0;;) {
@@ -2412,7 +2412,7 @@ handle_nocash:
loco_id = _new_train_id;
// Sell a vehicle if the train is double headed.
v = &_vehicles[loco_id];
v = GetVehicle(loco_id);
if (v->next != NULL) {
i = p->ai.wagon_list[p->ai.num_wagons*2-2];
p->ai.wagon_list[p->ai.num_wagons*2-2] = INVALID_VEHICLE;
@@ -2469,7 +2469,7 @@ static void AiStateDeleteRailBlocks(Player *p)
if (aib->cur_building_rule != 255) {
b = _default_rail_track_data[aib->cur_building_rule]->data;
while (b->mode != 4) {
DoCommandByTile(TILE_ADD(aib->use_tile, b->tileoffs), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
DoCommandByTile(TILE_ADD(aib->use_tile, ToTileIndexDiff(b->tileoffs)), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
b++;
}
}
@@ -2482,18 +2482,18 @@ static bool AiCheckRoadResources(TileIndex tile, const AiDefaultBlockData *p, by
{
uint values[NUM_CARGO];
int rad;
if (_patches.modified_catchment) {
rad = CA_TRUCK; //Same as CA_BUS at the moment?
rad = CA_TRUCK; //Same as CA_BUS at the moment?
} else { //change that at some point?
rad = 4;
}
for(;;p++) {
if (p->mode == 4) {
return true;
} else if (p->mode == 1) {
uint tile2 = TILE_ADD(tile, p->tileoffs);
uint tile2 = TILE_ADD(tile, ToTileIndexDiff(p->tileoffs));
if (cargo & 0x80) {
GetProductionAroundTiles(values, tile2, 1, 1, rad);
return values[cargo & 0x7F] != 0;
@@ -2536,12 +2536,12 @@ static int32 AiDoBuildDefaultRoadBlock(TileIndex tile, const AiDefaultBlockData
int roadflag = 0;
for(;p->mode != 4;p++) {
uint c = TILE_MASK(tile+ p->tileoffs);
uint c = TILE_MASK(tile + ToTileIndexDiff(p->tileoffs));
_cleared_town = NULL;
if (p->mode == 2) {
if (IS_TILETYPE(c, MP_STREET) &&
if (IsTileType(c, MP_STREET) &&
(_map5[c]&0xF0)==0 &&
(_map5[c]&p->attr)!=0) {
roadflag |= 2;
@@ -2589,7 +2589,7 @@ clear_town_stuff:;
if (GetTileSlope(c, NULL) != 0)
return CMD_ERROR;
if (!(IS_TILETYPE(c, MP_STREET) && (_map5[c]&0xF0)==0)) {
if (!(IsTileType(c, MP_STREET) && (_map5[c] & 0xF0) == 0)) {
r = DoCommandByTile(c, 0, 0, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_LANDSCAPE_CLEAR);
if (r == CMD_ERROR) return CMD_ERROR;
}
@@ -2771,8 +2771,8 @@ static bool AiEnumFollowRoad(uint tile, AiRoadEnum *a, int track, uint length, b
uint tile2;
if (dist <= a->best_dist) {
tile2 = TILE_MASK(tile + _tileoffs_by_dir[_dir_by_track[track]]);
if (IS_TILETYPE(tile2, MP_STREET) &&
tile2 = TILE_MASK(tile + TileOffsByDir(_dir_by_track[track]));
if (IsTileType(tile2, MP_STREET) &&
(_map5[tile2]&0xF0) == 0) {
a->best_dist = dist;
a->best_tile = tile;
@@ -2799,7 +2799,7 @@ static bool AiCheckRoadFinished(Player *p)
int i;
are.dest = p->ai.cur_tile_b;
tile = TILE_MASK(p->ai.cur_tile_a + _tileoffs_by_dir[dir]);
tile = TILE_MASK(p->ai.cur_tile_a + TileOffsByDir(dir));
bits = GetTileTrackStatus(tile, TRANSPORT_ROAD) & _ai_road_table_and[dir];
if (bits == 0) {
@@ -2850,8 +2850,8 @@ static inline void AiCheckBuildRoadBridgeHere(AiRoadFinder *arf, TileIndex tile,
// Allow bridges directly over bottom tiles
flag = arf->ti.z == 0;
for(;;) {
if (tile_new < -_tileoffs_by_dir[dir2]) return; // Wraping around map, no bridge possible!
tile_new = TILE_MASK(tile_new + _tileoffs_by_dir[dir2]);
if (tile_new < -TileOffsByDir(dir2)) return; // Wraping around map, no bridge possible!
tile_new = TILE_MASK(tile_new + TileOffsByDir(dir2));
FindLandscapeHeightByTile(&arf->ti, tile_new);
if (arf->ti.tileh != 0 || arf->ti.type == MP_CLEAR || arf->ti.type == MP_TREES) {
// Allow a bridge if either we have a tile that's water, rail or street,
@@ -2899,7 +2899,7 @@ static void AiBuildRoadRecursive(AiRoadFinder *arf, TileIndex tile, int dir)
{
const byte *p;
tile = TILE_MASK(tile + _tileoffs_by_dir[dir]);
tile = TILE_MASK(tile + TileOffsByDir(dir));
// Reached destination?
if (tile == arf->final_tile) {
@@ -3001,14 +3001,14 @@ do_some_terraform:
if (++p->ai.state_counter == 21) {
p->ai.state_mode = 1;
p->ai.cur_tile_a = TILE_MASK(p->ai.cur_tile_a + _tileoffs_by_dir[p->ai.cur_dir_a]);
p->ai.cur_tile_a = TILE_MASK(p->ai.cur_tile_a + TileOffsByDir(p->ai.cur_dir_a));
p->ai.cur_dir_a ^= 2;
p->ai.state_counter = 0;
}
return;
}
tile = TILE_MASK(p->ai.cur_tile_a + _tileoffs_by_dir[p->ai.cur_dir_a]);
tile = TILE_MASK(p->ai.cur_tile_a + TileOffsByDir(p->ai.cur_dir_a));
if (arf.best_ptr[0]&0x80) {
int i;
@@ -3085,7 +3085,7 @@ static TileIndex AiGetRoadBlockEdge(byte rule, TileIndex tile, int *dir)
const AiDefaultBlockData *p = _road_default_block_data[rule]->data;
while (p->mode != 1) p++;
*dir = p->attr;
return TILE_ADD(tile, p->tileoffs);
return TILE_ADD(tile, ToTileIndexDiff(p->tileoffs));
}
@@ -3158,7 +3158,7 @@ static int AiGetStationIdFromRoadBlock(TileIndex tile, int id)
{
const AiDefaultBlockData *p = _road_default_block_data[id]->data;
while (p->mode != 1) p++;
return _map2[TILE_ADD(tile, p->tileoffs)];
return _map2[TILE_ADD(tile, ToTileIndexDiff(p->tileoffs))];
}
static void AiStateBuildRoadVehicles(Player *p)
@@ -3170,7 +3170,7 @@ static void AiStateBuildRoadVehicles(Player *p)
ptr = _road_default_block_data[p->ai.src.cur_building_rule]->data;
for(;ptr->mode != 0;ptr++) {}
tile = TILE_ADD(p->ai.src.use_tile, ptr->tileoffs);
tile = TILE_ADD(p->ai.src.use_tile, ToTileIndexDiff(ptr->tileoffs));
veh = AiChooseRoadVehToBuild(p->ai.cargo_type, p->player_money);
if (veh == -1) {
@@ -3227,7 +3227,7 @@ static void AiStateDeleteRoadBlocks(Player *p)
b = _road_default_block_data[aib->cur_building_rule]->data;
while (b->mode != 4) {
if (b->mode <= 1) {
DoCommandByTile(TILE_ADD(aib->use_tile, b->tileoffs), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
DoCommandByTile(TILE_ADD(aib->use_tile, ToTileIndexDiff(b->tileoffs)), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
}
b++;
}
@@ -3339,7 +3339,7 @@ static int32 AiDoBuildDefaultAirportBlock(TileIndex tile, const AiDefaultBlockDa
for(;p->mode == 0;p++) {
if (!HASBIT(_avail_aircraft, p->attr))
return CMD_ERROR;
r = DoCommandByTile(TILE_MASK(tile + p->tileoffs), p->attr,0,flag | DC_AUTO | DC_NO_WATER,CMD_BUILD_AIRPORT);
r = DoCommandByTile(TILE_MASK(tile + ToTileIndexDiff(p->tileoffs)), p->attr,0,flag | DC_AUTO | DC_NO_WATER,CMD_BUILD_AIRPORT);
if (r == CMD_ERROR)
return CMD_ERROR;
total_cost += r;
@@ -3354,15 +3354,15 @@ static bool AiCheckAirportResources(TileIndex tile, const AiDefaultBlockData *p,
int w,h;
uint tile2;
int rad;
if (_patches.modified_catchment) {
rad = CA_AIR_LARGE; //I Have NFI what airport the
rad = CA_AIR_LARGE; //I Have NFI what airport the
} else { //AI is going to build here
rad = 4;
}
for(;p->mode==0;p++) {
tile2 = TILE_ADD(tile, p->tileoffs);
tile2 = TILE_ADD(tile, ToTileIndexDiff(p->tileoffs));
w = _airport_size_x[p->attr];
h = _airport_size_y[p->attr];
if (cargo & 0x80) {
@@ -3425,9 +3425,9 @@ static void AiStateBuildDefaultAirportBlocks(Player *p)
rule = AiFindBestDefaultAirportBlock(aib->use_tile, aib->cargo, p->ai.build_kind, &cost);
#if 0
if (!IS_TILETYPE(aib->use_tile, MP_STREET) &&
!IS_TILETYPE(aib->use_tile, MP_RAILWAY) &&
!IS_TILETYPE(aib->use_tile, MP_STATION)
if (!IsTileType(aib->use_tile, MP_STREET) &&
!IsTileType(aib->use_tile, MP_RAILWAY) &&
!IsTileType(aib->use_tile, MP_STATION)
) {
_map_type_and_height[aib->use_tile] = 0xa1;
@@ -3479,7 +3479,7 @@ static int AiGetStationIdFromAircraftBlock(TileIndex tile, int id)
{
const AiDefaultBlockData *p = _airport_default_block_data[id];
while (p->mode != 1) p++;
return _map2[TILE_ADD(tile, p->tileoffs)];
return _map2[TILE_ADD(tile, ToTileIndexDiff(p->tileoffs))];
}
static void AiStateBuildAircraftVehicles(Player *p)
@@ -3494,7 +3494,7 @@ static void AiStateBuildAircraftVehicles(Player *p)
ptr = _airport_default_block_data[p->ai.src.cur_building_rule];
for(;ptr->mode!=0;ptr++) {}
tile = TILE_ADD(p->ai.src.use_tile, ptr->tileoffs);
tile = TILE_ADD(p->ai.src.use_tile, ToTileIndexDiff(ptr->tileoffs));
veh = AiChooseAircraftToBuild(p->player_money, p->ai.build_kind!=0 ? 1 : 0);
if (veh == -1) {
@@ -3608,7 +3608,7 @@ static void AiStateRemoveStation(Player *p)
{
// Remove stations that aren't in use by any vehicle
byte in_use[256], *used;
Order *ord;
const Order *ord;
Station *st;
uint tile;
@@ -3617,7 +3617,7 @@ static void AiStateRemoveStation(Player *p)
// Get a list of all stations that are in use by a vehicle
memset(in_use, 0, sizeof(in_use));
for (ord = _order_array; ord != _ptr_to_next_order; ++ord) {
FOR_ALL_ORDERS(ord) {
if (ord->type == OT_GOTO_STATION)
in_use[ord->station] = 1;
}
@@ -3642,7 +3642,7 @@ static void AiRemovePlayerRailOrRoad(Player *p, uint tile)
{
byte m5;
if (IS_TILETYPE(tile, MP_RAILWAY)) {
if (IsTileType(tile, MP_RAILWAY)) {
if (_map_owner[tile] != _current_player)
return;
m5 = _map5[tile];
@@ -3696,12 +3696,12 @@ pos_3:
static const byte _depot_bits[] = {0x19,0x16,0x25,0x2A};
m5 &= 3;
if (GetRailTrackStatus(tile + _tileoffs_by_dir[m5]) & _depot_bits[m5])
if (GetRailTrackStatus(tile + TileOffsByDir(m5)) & _depot_bits[m5])
return;
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
}
} else if (IS_TILETYPE(tile, MP_STREET)) {
} else if (IsTileType(tile, MP_STREET)) {
if (_map_owner[tile] != _current_player)
return;
@@ -3712,19 +3712,19 @@ pos_3:
int dir;
// Check if there are any stations around.
if (IS_TILETYPE(tile + TILE_XY(-1,0), MP_STATION) &&
if (IsTileType(tile + TILE_XY(-1,0), MP_STATION) &&
_map_owner[tile + TILE_XY(-1,0)] == _current_player)
return;
if (IS_TILETYPE(tile + TILE_XY(1,0), MP_STATION) &&
if (IsTileType(tile + TILE_XY(1,0), MP_STATION) &&
_map_owner[tile + TILE_XY(1,0)] == _current_player)
return;
if (IS_TILETYPE(tile + TILE_XY(0,-1), MP_STATION) &&
if (IsTileType(tile + TILE_XY(0,-1), MP_STATION) &&
_map_owner[tile + TILE_XY(0,-1)] == _current_player)
return;
if (IS_TILETYPE(tile + TILE_XY(0,1), MP_STATION) &&
if (IsTileType(tile + TILE_XY(0,1), MP_STATION) &&
_map_owner[tile + TILE_XY(0,1)] == _current_player)
return;
@@ -3732,13 +3732,13 @@ pos_3:
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
DoCommandByTile(
TILE_MASK(tile + _tileoffs_by_dir[dir]),
TILE_MASK(tile + TileOffsByDir(dir)),
8 >> (dir ^ 2),
0,
DC_EXEC,
CMD_REMOVE_ROAD);
}
} else if (IS_TILETYPE(tile, MP_TUNNELBRIDGE)) {
} else if (IsTileType(tile, MP_TUNNELBRIDGE)) {
byte b;
if (_map_owner[tile] != _current_player || (_map5[tile] & 0xC6) != 0x80)
+4 -18
View File
@@ -71,7 +71,7 @@
#define AI_LOCATE_ROUTE_MAX_COUNTER 200
// How many days must there be between building the first station and the second station
// within one city. This number is in days and should be more then 4 months.
// within one city. This number is in days and should be more than 4 months.
#define AI_CHECKCITY_DATE_BETWEEN 180
// How many cargo is needed for one station in a city?
@@ -130,7 +130,7 @@
// reuse the station instead of building a new one!
#define AI_STATION_REUSE_MULTIPLER 2
// No more then this amount of vehicles per station..
// No more than this amount of vehicles per station..
#define AI_CHECK_MAX_VEHICLE_PER_STATION 10
// How many thick between building 2 vehicles
@@ -149,7 +149,7 @@
// while old vehicles stay longer, because we do get less in return.
#define AI_MINIMUM_ROUTE_PROFIT 1000
// A vehicle is considered lost when he his cargo is more then 180 days old
// A vehicle is considered lost when he his cargo is more than 180 days old
#define AI_VEHICLE_LOST_DAYS 180
// How many times may the AI try to find a route before it gives up
@@ -168,13 +168,6 @@ static const byte _illegal_curves[6] = {
3, // upright and downright are not valid
};
static const TileIndexDiff _tiles_around[4] = {
TILE_XY(-1,0),
TILE_XY(0,1),
TILE_XY(1,0),
TILE_XY(0,-1),
};
enum {
AI_STATE_STARTUP = 0,
AI_STATE_FIRST_TIME,
@@ -227,7 +220,7 @@ enum {
#define AI_NO_CARGO 0xFF // Means that there is no cargo defined yet (used for industry)
#define AI_NEED_CARGO 0xFE // Used when the AI needs to find out a cargo for the route
#define AI_STATION_RANGE TILE_XY(TILE_X_MAX, TILE_Y_MAX)
#define AI_STATION_RANGE TILE_XY(MapMaxX(), MapMaxY())
#define AI_PATHFINDER_NO_DIRECTION (byte)-1
@@ -235,13 +228,6 @@ enum {
#define AI_PATHFINDER_FLAG_BRIDGE 1
#define AI_PATHFINDER_FLAG_TUNNEL 2
// A macro for mp_street, where 0x20 is depot
// mp_tunnelbridge, where 0xf0 is a bridge, and 0x4/0x2 means: roadtunnel/bridge
#define AI_PATHFINDER_IS_ROAD(tile) ((IS_TILETYPE(tile, MP_STREET) && !(_map5[tile] & 0x20)) || \
(IS_TILETYPE(tile, MP_TUNNELBRIDGE) && \
(((_map5[tile] & 0x80) == 0 && (_map5[tile] & 0x4) == 0x4) || \
((_map5[tile] & 0x80) != 0 && (_map5[tile] & 0x2) == 0x2))))
typedef void AiNew_StateFunction(Player *p);
// ai_new.c
+3 -3
View File
@@ -174,11 +174,11 @@ int AiNew_Build_RoutePart(Player *p, Ai_PathFinderInfo *PathFinderInfo, byte fla
if (old_dir != -1 && old_dir != dir) break;
old_dir = dir;
// There is already some road, and it is a bridge.. don't build!!!
if (!IS_TILETYPE(route[part], MP_TUNNELBRIDGE)) {
if (!IsTileType(route[part], MP_TUNNELBRIDGE)) {
// Build the tile
res = DoCommandByTile(route[part], dir, 0, flag | DC_NO_WATER, CMD_BUILD_ROAD);
// Currently, we ignore CMD_ERRORs!
if (res == CMD_ERROR && flag == DC_EXEC && !IS_TILETYPE(route[part], MP_STREET) && !EnsureNoVehicle(route[part])) {
if (res == CMD_ERROR && flag == DC_EXEC && !IsTileType(route[part], MP_STREET) && !EnsureNoVehicle(route[part])) {
// Problem.. let's just abort it all!
DEBUG(ai,0)("Darn, the route could not be builded.. aborting!");
p->ainew.state = AI_STATE_NOTHING;
@@ -250,7 +250,7 @@ int AiNew_Build_Depot(Player *p, uint tile, byte direction, byte flag) {
r = DoCommandByTile(tile, direction, 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_DEPOT);
if (r == CMD_ERROR) return r;
// Try to build the road from the depot
r2 = DoCommandByTile(tile + _tileoffs_by_dir[direction], _roadbits_by_dir[direction], 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD);
r2 = DoCommandByTile(tile + TileOffsByDir(direction), _roadbits_by_dir[direction], 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD);
// If it fails, ignore it..
if (r2 == CMD_ERROR) return r;
return r + r2;
+74 -76
View File
@@ -185,7 +185,7 @@ static void AiNew_State_ActionDone(Player *p) {
// Check if a city or industry is good enough to start a route there
static bool AiNew_Check_City_or_Industry(Player *p, int ic, byte type) {
if (type == AI_CITY) {
Town *t = DEREF_TOWN(ic);
Town *t = GetTown(ic);
Station *st;
int count = 0;
int j = 0;
@@ -247,7 +247,7 @@ static bool AiNew_Check_City_or_Industry(Player *p, int ic, byte type) {
return true;
}
if (type == AI_INDUSTRY) {
Industry *i = DEREF_INDUSTRY(ic);
Industry *i = GetIndustry(ic);
Station *st;
int count = 0;
int j = 0;
@@ -405,16 +405,16 @@ static void AiNew_State_LocateRoute(Player *p) {
// is.
if (p->ainew.from_type == AI_CITY && p->ainew.tbt == AI_BUS) {
int max_cargo = DEREF_TOWN(p->ainew.from_ic)->max_pass + DEREF_TOWN(p->ainew.temp)->max_pass;
max_cargo -= DEREF_TOWN(p->ainew.from_ic)->act_pass + DEREF_TOWN(p->ainew.temp)->act_pass;
int max_cargo = GetTown(p->ainew.from_ic)->max_pass + GetTown(p->ainew.temp)->max_pass;
max_cargo -= GetTown(p->ainew.from_ic)->act_pass + GetTown(p->ainew.temp)->act_pass;
// max_cargo is now the amount of cargo we can move between the two cities
// If it is more then the distance, we allow it
if (GetTileDist(DEREF_TOWN(p->ainew.from_ic)->xy, DEREF_TOWN(p->ainew.temp)->xy) <= max_cargo * AI_LOCATEROUTE_BUS_CARGO_DISTANCE) {
// If it is more than the distance, we allow it
if (GetTileDist(GetTown(p->ainew.from_ic)->xy, GetTown(p->ainew.temp)->xy) <= max_cargo * AI_LOCATEROUTE_BUS_CARGO_DISTANCE) {
// We found a good city/industry, save the data of it
p->ainew.to_ic = p->ainew.temp;
p->ainew.state = AI_STATE_FIND_STATION;
DEBUG(ai,1)("[AiNew - LocateRoute] Found bus-route of %d tiles long (from %d to %d)",GetTileDist(DEREF_TOWN(p->ainew.from_ic)->xy, DEREF_TOWN(p->ainew.temp)->xy), p->ainew.from_ic, p->ainew.temp);
DEBUG(ai,1)("[AiNew - LocateRoute] Found bus-route of %d tiles long (from %d to %d)",GetTileDist(GetTown(p->ainew.from_ic)->xy, GetTown(p->ainew.temp)->xy), p->ainew.from_ic, p->ainew.temp);
p->ainew.from_tile = 0;
p->ainew.to_tile = 0;
@@ -427,12 +427,12 @@ static void AiNew_State_LocateRoute(Player *p) {
int i;
// TODO: in max_cargo, also check other cargo (beside [0])
// First we check if the from_ic produces cargo that this ic accepts
if (DEREF_INDUSTRY(p->ainew.from_ic)->produced_cargo[0] != 0xFF && DEREF_INDUSTRY(p->ainew.from_ic)->total_production[0] != 0) {
if (GetIndustry(p->ainew.from_ic)->produced_cargo[0] != 0xFF && GetIndustry(p->ainew.from_ic)->total_production[0] != 0) {
for (i=0;i<3;i++) {
if (DEREF_INDUSTRY(p->ainew.temp)->accepts_cargo[i] == 0xFF) break;
if (DEREF_INDUSTRY(p->ainew.from_ic)->produced_cargo[0] == DEREF_INDUSTRY(p->ainew.temp)->accepts_cargo[i]) {
if (GetIndustry(p->ainew.temp)->accepts_cargo[i] == 0xFF) break;
if (GetIndustry(p->ainew.from_ic)->produced_cargo[0] == GetIndustry(p->ainew.temp)->accepts_cargo[i]) {
// Found a compatbiel industry
max_cargo = DEREF_INDUSTRY(p->ainew.from_ic)->total_production[0] - DEREF_INDUSTRY(p->ainew.from_ic)->total_transported[0];
max_cargo = GetIndustry(p->ainew.from_ic)->total_production[0] - GetIndustry(p->ainew.from_ic)->total_transported[0];
found = true;
p->ainew.from_deliver = true;
p->ainew.to_deliver = false;
@@ -440,14 +440,14 @@ static void AiNew_State_LocateRoute(Player *p) {
}
}
}
if (!found && DEREF_INDUSTRY(p->ainew.temp)->produced_cargo[0] != 0xFF && DEREF_INDUSTRY(p->ainew.temp)->total_production[0] != 0) {
if (!found && GetIndustry(p->ainew.temp)->produced_cargo[0] != 0xFF && GetIndustry(p->ainew.temp)->total_production[0] != 0) {
// If not check if the current ic produces cargo that the from_ic accepts
for (i=0;i<3;i++) {
if (DEREF_INDUSTRY(p->ainew.from_ic)->accepts_cargo[i] == 0xFF) break;
if (DEREF_INDUSTRY(p->ainew.temp)->produced_cargo[0] == DEREF_INDUSTRY(p->ainew.from_ic)->accepts_cargo[i]) {
if (GetIndustry(p->ainew.from_ic)->accepts_cargo[i] == 0xFF) break;
if (GetIndustry(p->ainew.temp)->produced_cargo[0] == GetIndustry(p->ainew.from_ic)->accepts_cargo[i]) {
// Found a compatbiel industry
found = true;
max_cargo = DEREF_INDUSTRY(p->ainew.temp)->total_production[0] - DEREF_INDUSTRY(p->ainew.from_ic)->total_transported[0];
max_cargo = GetIndustry(p->ainew.temp)->total_production[0] - GetIndustry(p->ainew.from_ic)->total_transported[0];
p->ainew.from_deliver = false;
p->ainew.to_deliver = true;
break;
@@ -457,17 +457,17 @@ static void AiNew_State_LocateRoute(Player *p) {
if (found) {
// Yeah, they are compatible!!!
// Check the length against the amount of goods
if (GetTileDist(DEREF_INDUSTRY(p->ainew.from_ic)->xy, DEREF_INDUSTRY(p->ainew.temp)->xy) > AI_LOCATEROUTE_TRUCK_MIN_DISTANCE &&
GetTileDist(DEREF_INDUSTRY(p->ainew.from_ic)->xy, DEREF_INDUSTRY(p->ainew.temp)->xy) <= max_cargo * AI_LOCATEROUTE_TRUCK_CARGO_DISTANCE) {
if (GetTileDist(GetIndustry(p->ainew.from_ic)->xy, GetIndustry(p->ainew.temp)->xy) > AI_LOCATEROUTE_TRUCK_MIN_DISTANCE &&
GetTileDist(GetIndustry(p->ainew.from_ic)->xy, GetIndustry(p->ainew.temp)->xy) <= max_cargo * AI_LOCATEROUTE_TRUCK_CARGO_DISTANCE) {
p->ainew.to_ic = p->ainew.temp;
if (p->ainew.from_deliver) {
p->ainew.cargo = DEREF_INDUSTRY(p->ainew.from_ic)->produced_cargo[0];
p->ainew.cargo = GetIndustry(p->ainew.from_ic)->produced_cargo[0];
} else {
p->ainew.cargo = DEREF_INDUSTRY(p->ainew.temp)->produced_cargo[0];
p->ainew.cargo = GetIndustry(p->ainew.temp)->produced_cargo[0];
}
p->ainew.state = AI_STATE_FIND_STATION;
DEBUG(ai,1)("[AiNew - LocateRoute] Found truck-route of %d tiles long (from %d to %d)",GetTileDist(DEREF_INDUSTRY(p->ainew.from_ic)->xy, DEREF_INDUSTRY(p->ainew.temp)->xy), p->ainew.from_ic, p->ainew.temp);
DEBUG(ai,1)("[AiNew - LocateRoute] Found truck-route of %d tiles long (from %d to %d)",GetTileDist(GetIndustry(p->ainew.from_ic)->xy, GetIndustry(p->ainew.temp)->xy), p->ainew.from_ic, p->ainew.temp);
p->ainew.from_tile = 0;
p->ainew.to_tile = 0;
@@ -493,7 +493,7 @@ static void AiNew_State_LocateRoute(Player *p) {
p->ainew.last_id = p->ainew.temp;
}
// Check if there are not more then a certain amount of vehicles pointed to a certain
// Check if there are not more than a certain amount of vehicles pointed to a certain
// station. This to prevent 10 busses going to one station, which gives... problems ;)
static bool AiNew_CheckVehicleStation(Player *p, Station *st) {
int count = 0;
@@ -502,14 +502,12 @@ static bool AiNew_CheckVehicleStation(Player *p, Station *st) {
// Also check if we don't have already a lot of busses to this city...
FOR_ALL_VEHICLES(v) {
if (v->owner == _current_player) {
const Order *sched = v->schedule_ptr;
if (sched != NULL) {
for (; sched->type != OT_NOTHING; ++sched) {
if (sched->type == OT_GOTO_STATION &&
DEREF_STATION(sched->station) == st) {
// This vehicle has this city in his list
count++;
}
const Order *order;
FOR_VEHICLE_ORDERS(v, order) {
if (order->type == OT_GOTO_STATION && GetStation(order->station) == st) {
// This vehicle has this city in its list
count++;
}
}
}
@@ -533,19 +531,19 @@ static void AiNew_State_FindStation(Player *p) {
if (p->ainew.from_tile == 0) {
// First we scan for a station in the from-city
if (p->ainew.from_type == AI_CITY) {
town = DEREF_TOWN(p->ainew.from_ic);
town = GetTown(p->ainew.from_ic);
tile = town->xy;
} else {
industry = DEREF_INDUSTRY(p->ainew.from_ic);
industry = GetIndustry(p->ainew.from_ic);
tile = industry->xy;
}
} else if (p->ainew.to_tile == 0) {
// Second we scan for a station in the to-city
if (p->ainew.to_type == AI_CITY) {
town = DEREF_TOWN(p->ainew.to_ic);
town = GetTown(p->ainew.to_ic);
tile = town->xy;
} else {
industry = DEREF_INDUSTRY(p->ainew.to_ic);
industry = GetIndustry(p->ainew.to_ic);
tile = industry->xy;
}
} else {
@@ -558,7 +556,7 @@ static void AiNew_State_FindStation(Player *p) {
// First, we are going to look at the stations that already exist inside the city
// If there is enough cargo left in the station, we take that station
// If that is not possible, and there are more then 2 stations in the city, abort
// If that is not possible, and there are more than 2 stations in the city, abort
i = AiNew_PickVehicle(p);
// Euhmz, this should not happen _EVER_
// Quit finding a route...
@@ -588,7 +586,7 @@ static void AiNew_State_FindStation(Player *p) {
}
// We are going to add a new station...
if (new_tile == 0) count++;
// No more then 2 stations allowed in a city
// No more than 2 stations allowed in a city
// This is because only the best 2 stations of one cargo do get any cargo
if (count > 2) {
p->ainew.state = AI_STATE_NOTHING;
@@ -606,10 +604,10 @@ static void AiNew_State_FindStation(Player *p) {
// where we get the most cargo and where it is buildable.
// TODO: also check for station of myself and make sure we are not
// taking eachothers passangers away (bad result when it does not)
for (x = GET_TILE_X(tile) - AI_FINDSTATION_TILE_RANGE; x <= GET_TILE_X(tile) + AI_FINDSTATION_TILE_RANGE; x++) {
for (y = GET_TILE_Y(tile) - AI_FINDSTATION_TILE_RANGE; y <= GET_TILE_Y(tile) + AI_FINDSTATION_TILE_RANGE; y++) {
for (x = TileX(tile) - AI_FINDSTATION_TILE_RANGE; x <= TileX(tile) + AI_FINDSTATION_TILE_RANGE; x++) {
for (y = TileY(tile) - AI_FINDSTATION_TILE_RANGE; y <= TileY(tile) + AI_FINDSTATION_TILE_RANGE; y++) {
new_tile = TILE_XY(x,y);
if (IS_TILETYPE(new_tile, MP_CLEAR) || IS_TILETYPE(new_tile, MP_TREES)) {
if (IsTileType(new_tile, MP_CLEAR) || IsTileType(new_tile, MP_TREES)) {
// This tile we can build on!
// Check acceptance
// XXX - Get the catchment area
@@ -682,8 +680,8 @@ static void AiNew_State_FindPath(Player *p) {
// Init path_info
if (p->ainew.from_tile == AI_STATION_RANGE) {
// For truck routes we take a range around the industry
p->ainew.path_info.start_tile_tl = DEREF_INDUSTRY(p->ainew.from_ic)->xy - TILE_XY(1,1);
p->ainew.path_info.start_tile_br = DEREF_INDUSTRY(p->ainew.from_ic)->xy + TILE_XY(DEREF_INDUSTRY(p->ainew.from_ic)->width, DEREF_INDUSTRY(p->ainew.from_ic)->height) + TILE_XY(1,1);
p->ainew.path_info.start_tile_tl = GetIndustry(p->ainew.from_ic)->xy - TILE_XY(1,1);
p->ainew.path_info.start_tile_br = GetIndustry(p->ainew.from_ic)->xy + TILE_XY(GetIndustry(p->ainew.from_ic)->width, GetIndustry(p->ainew.from_ic)->height) + TILE_XY(1,1);
p->ainew.path_info.start_direction = p->ainew.from_direction;
} else {
p->ainew.path_info.start_tile_tl = p->ainew.from_tile;
@@ -692,8 +690,8 @@ static void AiNew_State_FindPath(Player *p) {
}
if (p->ainew.to_tile == AI_STATION_RANGE) {
p->ainew.path_info.end_tile_tl = DEREF_INDUSTRY(p->ainew.to_ic)->xy - TILE_XY(1,1);
p->ainew.path_info.end_tile_br = DEREF_INDUSTRY(p->ainew.to_ic)->xy + TILE_XY(DEREF_INDUSTRY(p->ainew.to_ic)->width, DEREF_INDUSTRY(p->ainew.to_ic)->height) + TILE_XY(1,1);
p->ainew.path_info.end_tile_tl = GetIndustry(p->ainew.to_ic)->xy - TILE_XY(1,1);
p->ainew.path_info.end_tile_br = GetIndustry(p->ainew.to_ic)->xy + TILE_XY(GetIndustry(p->ainew.to_ic)->width, GetIndustry(p->ainew.to_ic)->height) + TILE_XY(1,1);
p->ainew.path_info.end_direction = p->ainew.to_direction;
} else {
p->ainew.path_info.end_tile_tl = p->ainew.to_tile;
@@ -745,16 +743,16 @@ static void AiNew_State_FindDepot(Player *p) {
for (i=2;i<p->ainew.path_info.route_length-2;i++) {
tile = p->ainew.path_info.route[i];
for (j=0;j<lengthof(_tileoffs_by_dir);j++) {
if (IS_TILETYPE(tile + _tileoffs_by_dir[j], MP_STREET)) {
for (j = 0; j < 4; j++) {
if (IsTileType(tile + TileOffsByDir(j), MP_STREET)) {
// Its a street, test if it is a depot
if (_map5[tile + _tileoffs_by_dir[j]] & 0x20) {
if (_map5[tile + TileOffsByDir(j)] & 0x20) {
// We found a depot, is it ours? (TELL ME!!!)
if (_map_owner[tile + _tileoffs_by_dir[j]] == _current_player) {
if (_map_owner[tile + TileOffsByDir(j)] == _current_player) {
// Now, is it pointing to the right direction.........
if ((_map5[tile + _tileoffs_by_dir[j]] & 3) == (j ^ 2)) {
if ((_map5[tile + TileOffsByDir(j)] & 3) == (j ^ 2)) {
// Yeah!!!
p->ainew.depot_tile = tile + _tileoffs_by_dir[j];
p->ainew.depot_tile = tile + TileOffsByDir(j);
p->ainew.depot_direction = j ^ 2; // Reverse direction
p->ainew.state = AI_STATE_VERIFY_ROUTE;
return;
@@ -781,28 +779,28 @@ static void AiNew_State_FindDepot(Player *p) {
tile = p->ainew.path_info.route[i];
for (j=0;j<lengthof(_tileoffs_by_dir);j++) {
for (j = 0; j < 4; j++) {
// It may not be placed on the road/rail itself
// And because it is not build yet, we can't see it on the tile..
// So check the surrounding tiles :)
if (tile + _tileoffs_by_dir[j] == p->ainew.path_info.route[i-1] ||
tile + _tileoffs_by_dir[j] == p->ainew.path_info.route[i+1]) continue;
if (tile + TileOffsByDir(j) == p->ainew.path_info.route[i-1] ||
tile + TileOffsByDir(j) == p->ainew.path_info.route[i+1]) continue;
// Not around a bridge?
if (p->ainew.path_info.route_extra[i] != 0) continue;
if (IS_TILETYPE(tile, MP_TUNNELBRIDGE)) continue;
if (IsTileType(tile, MP_TUNNELBRIDGE)) continue;
// Is the terrain clear?
if (IS_TILETYPE(tile + _tileoffs_by_dir[j], MP_CLEAR) ||
IS_TILETYPE(tile + _tileoffs_by_dir[j], MP_TREES)) {
if (IsTileType(tile + TileOffsByDir(j), MP_CLEAR) ||
IsTileType(tile + TileOffsByDir(j), MP_TREES)) {
TileInfo ti;
FindLandscapeHeightByTile(&ti, tile);
// If the current tile is on a slope (tileh != 0) then we do not allow this
if (ti.tileh != 0) continue;
// Check if everything went okay..
r = AiNew_Build_Depot(p, tile + _tileoffs_by_dir[j], j ^ 2, 0);
r = AiNew_Build_Depot(p, tile + TileOffsByDir(j), j ^ 2, 0);
if (r == CMD_ERROR) continue;
// Found a spot!
p->ainew.new_cost += r;
p->ainew.depot_tile = tile + _tileoffs_by_dir[j];
p->ainew.depot_tile = tile + TileOffsByDir(j);
p->ainew.depot_direction = j ^ 2; // Reverse direction
p->ainew.state = AI_STATE_VERIFY_ROUTE;
return;
@@ -847,11 +845,11 @@ static int AiNew_HowManyVehicles(Player *p) {
// Calculating tiles a day a vehicle moves is not easy.. this is how it must be done!
tiles_a_day = RoadVehInfo(i)->max_speed * DAY_TICKS / 256 / 16;
if (p->ainew.from_deliver)
max_cargo = DEREF_INDUSTRY(p->ainew.from_ic)->total_production[0];
max_cargo = GetIndustry(p->ainew.from_ic)->total_production[0];
else
max_cargo = DEREF_INDUSTRY(p->ainew.to_ic)->total_production[0];
max_cargo = GetIndustry(p->ainew.to_ic)->total_production[0];
// This is because moving 60% is more then we can dream of!
// This is because moving 60% is more than we can dream of!
max_cargo *= 0.6;
// We want all the cargo to be gone in a month.. so, we know the cargo it delivers
// we know what the vehicle takes with him, and we know the time it takes him
@@ -931,11 +929,11 @@ static void AiNew_State_BuildStation(Player *p) {
int res = 0;
assert(p->ainew.state == AI_STATE_BUILD_STATION);
if (p->ainew.temp == 0) {
if (!IS_TILETYPE(p->ainew.from_tile, MP_STATION))
if (!IsTileType(p->ainew.from_tile, MP_STATION))
res = AiNew_Build_Station(p, p->ainew.tbt, p->ainew.from_tile, 0, 0, p->ainew.from_direction, DC_EXEC);
}
else {
if (!IS_TILETYPE(p->ainew.to_tile, MP_STATION))
if (!IsTileType(p->ainew.to_tile, MP_STATION))
res = AiNew_Build_Station(p, p->ainew.tbt, p->ainew.to_tile, 0, 0, p->ainew.to_direction, DC_EXEC);
p->ainew.state = AI_STATE_BUILD_PATH;
}
@@ -984,14 +982,14 @@ static void AiNew_State_BuildPath(Player *p) {
int i, r;
for (i=0;i<2;i++) {
if (i == 0) {
tile = p->ainew.from_tile + _tileoffs_by_dir[p->ainew.from_direction];
tile = p->ainew.from_tile + TileOffsByDir(p->ainew.from_direction);
dir1 = p->ainew.from_direction - 1;
if (dir1 < 0) dir1 = 3;
dir2 = p->ainew.from_direction + 1;
if (dir2 > 3) dir2 = 0;
dir3 = p->ainew.from_direction;
} else {
tile = p->ainew.to_tile + _tileoffs_by_dir[p->ainew.to_direction];
tile = p->ainew.to_tile + TileOffsByDir(p->ainew.to_direction);
dir1 = p->ainew.to_direction - 1;
if (dir1 < 0) dir1 = 3;
dir2 = p->ainew.to_direction + 1;
@@ -1001,11 +999,11 @@ static void AiNew_State_BuildPath(Player *p) {
r = DoCommandByTile(tile, _roadbits_by_dir[dir1], 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
if (r != CMD_ERROR) {
dir1 = _tileoffs_by_dir[dir1];
if (IS_TILETYPE(tile+dir1, MP_CLEAR) || IS_TILETYPE(tile+dir1, MP_TREES)) {
dir1 = TileOffsByDir(dir1);
if (IsTileType(tile + dir1, MP_CLEAR) || IsTileType(tile + dir1, MP_TREES)) {
r = DoCommandByTile(tile+dir1, AiNew_GetRoadDirection(tile, tile+dir1, tile+dir1+dir1), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
if (r != CMD_ERROR) {
if (IS_TILETYPE(tile+dir1+dir1, MP_CLEAR) || IS_TILETYPE(tile+dir1+dir1, MP_TREES))
if (IsTileType(tile + dir1 + dir1, MP_CLEAR) || IsTileType(tile + dir1 + dir1, MP_TREES))
DoCommandByTile(tile+dir1+dir1, AiNew_GetRoadDirection(tile+dir1, tile+dir1+dir1, tile+dir1+dir1+dir1), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
}
}
@@ -1013,11 +1011,11 @@ static void AiNew_State_BuildPath(Player *p) {
r = DoCommandByTile(tile, _roadbits_by_dir[dir2], 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
if (r != CMD_ERROR) {
dir2 = _tileoffs_by_dir[dir2];
if (IS_TILETYPE(tile+dir2, MP_CLEAR) || IS_TILETYPE(tile+dir2, MP_TREES)) {
dir2 = TileOffsByDir(dir2);
if (IsTileType(tile + dir2, MP_CLEAR) || IsTileType(tile + dir2, MP_TREES)) {
r = DoCommandByTile(tile+dir2, AiNew_GetRoadDirection(tile, tile+dir2, tile+dir2+dir2), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
if (r != CMD_ERROR) {
if (IS_TILETYPE(tile+dir2+dir2, MP_CLEAR) || IS_TILETYPE(tile+dir2+dir2, MP_TREES))
if (IsTileType(tile + dir2 + dir2, MP_CLEAR) || IsTileType(tile + dir2 + dir2, MP_TREES))
DoCommandByTile(tile+dir2+dir2, AiNew_GetRoadDirection(tile+dir2, tile+dir2+dir2, tile+dir2+dir2+dir2), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
}
}
@@ -1025,11 +1023,11 @@ static void AiNew_State_BuildPath(Player *p) {
r = DoCommandByTile(tile, _roadbits_by_dir[dir3^2], 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
if (r != CMD_ERROR) {
dir3 = _tileoffs_by_dir[dir3];
if (IS_TILETYPE(tile+dir3, MP_CLEAR) || IS_TILETYPE(tile+dir3, MP_TREES)) {
dir3 = TileOffsByDir(dir3);
if (IsTileType(tile + dir3, MP_CLEAR) || IsTileType(tile + dir3, MP_TREES)) {
r = DoCommandByTile(tile+dir3, AiNew_GetRoadDirection(tile, tile+dir3, tile+dir3+dir3), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
if (r != CMD_ERROR) {
if (IS_TILETYPE(tile+dir3+dir3, MP_CLEAR) || IS_TILETYPE(tile+dir3+dir3, MP_TREES))
if (IsTileType(tile + dir3 + dir3, MP_CLEAR) || IsTileType(tile + dir3 + dir3, MP_TREES))
DoCommandByTile(tile+dir3+dir3, AiNew_GetRoadDirection(tile+dir3, tile+dir3+dir3, tile+dir3+dir3+dir3), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
}
}
@@ -1048,7 +1046,7 @@ static void AiNew_State_BuildDepot(Player *p) {
int res = 0;
assert(p->ainew.state == AI_STATE_BUILD_DEPOT);
if (IS_TILETYPE(p->ainew.depot_tile, MP_STREET) && _map5[p->ainew.depot_tile] & 0x20) {
if (IsTileType(p->ainew.depot_tile, MP_STREET) && _map5[p->ainew.depot_tile] & 0x20) {
if (_map_owner[p->ainew.depot_tile] == _current_player) {
// The depot is already builded!
p->ainew.state = AI_STATE_BUILD_VEHICLE;
@@ -1061,7 +1059,7 @@ static void AiNew_State_BuildDepot(Player *p) {
}
// There is a bus on the tile we want to build road on... idle till he is gone! (BAD PERSON! :p)
if (!EnsureNoVehicle(p->ainew.depot_tile + _tileoffs_by_dir[p->ainew.depot_direction]))
if (!EnsureNoVehicle(p->ainew.depot_tile + TileOffsByDir(p->ainew.depot_direction)))
return;
res = AiNew_Build_Depot(p, p->ainew.depot_tile, p->ainew.depot_direction, DC_EXEC);
@@ -1134,7 +1132,7 @@ static void AiNew_State_GiveOrders(Player *p) {
p->ainew.veh_main_id = p->ainew.veh_id;
}
// When more then 1 vehicle, we send them to different directions
// When more than 1 vehicle, we send them to different directions
idx = 0;
order.type = OT_GOTO_STATION;
order.flags = 0;
@@ -1188,7 +1186,7 @@ static void AiNew_CheckVehicle(Player *p, Vehicle *v) {
// When a vehicle is older then 1 year, it should make money...
if (v->age > 360) {
// If both years together are not more then AI_MINIMUM_ROUTE_PROFIT,
// 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 < AI_MINIMUM_ROUTE_PROFIT ||
(v->reliability * 100 >> 16) < 40) {
+64 -40
View File
@@ -8,7 +8,8 @@
// Tests if a station can be build on the given spot
// TODO: make it train compatible
bool TestCanBuildStationHere(uint tile, byte dir) {
static bool TestCanBuildStationHere(uint tile, byte dir)
{
Player *p = DEREF_PLAYER(_current_player);
if (dir == TEST_STATION_NO_DIR) {
// TODO: currently we only allow spots that can be access from al 4 directions...
@@ -27,16 +28,32 @@ bool TestCanBuildStationHere(uint tile, byte dir) {
return true;
}
static bool IsRoad(TileIndex tile)
{
return
// MP_STREET, but not a road depot?
(IsTileType(tile, MP_STREET) && !(_map5[tile] & 0x20)) ||
(IsTileType(tile, MP_TUNNELBRIDGE) && (
// road tunnel?
((_map5[tile] & 0x80) == 0 && (_map5[tile] & 0x4) == 0x4) ||
// road bridge?
((_map5[tile] & 0x80) != 0 && (_map5[tile] & 0x2) == 0x2)
));
}
// Checks if a tile 'a' is between the tiles 'b' and 'c'
#define TILES_BETWEEN(a,b,c) (GET_TILE_X(a) >= GET_TILE_X(b) && GET_TILE_X(a) <= GET_TILE_X(c) && GET_TILE_Y(a) >= GET_TILE_Y(b) && GET_TILE_Y(a) <= GET_TILE_Y(c))
#define TILES_BETWEEN(a, b, c) (TileX(a) >= TileX(b) && TileX(a) <= TileX(c) && TileY(a) >= TileY(b) && TileY(a) <= TileY(c))
// Check if the current tile is in our end-area
int32 AyStar_AiPathFinder_EndNodeCheck(AyStar *aystar, OpenListNode *current) {
static int32 AyStar_AiPathFinder_EndNodeCheck(AyStar *aystar, OpenListNode *current)
{
Ai_PathFinderInfo *PathFinderInfo = (Ai_PathFinderInfo*)aystar->user_target;
// It is not allowed to have a station on the end of a bridge or tunnel ;)
if (current->path.node.user_data[0] != 0) return AYSTAR_DONE;
if (TILES_BETWEEN(current->path.node.tile, PathFinderInfo->end_tile_tl, PathFinderInfo->end_tile_br))
if (IS_TILETYPE(current->path.node.tile, MP_CLEAR) || IS_TILETYPE(current->path.node.tile, MP_TREES))
if (IsTileType(current->path.node.tile, MP_CLEAR) || IsTileType(current->path.node.tile, MP_TREES))
if (current->path.parent == NULL || TestCanBuildStationHere(current->path.node.tile,AiNew_GetDirection(current->path.parent->node.tile, current->path.node.tile)))
return AYSTAR_FOUND_END_NODE;
@@ -45,12 +62,14 @@ int32 AyStar_AiPathFinder_EndNodeCheck(AyStar *aystar, OpenListNode *current) {
// Calculates the hash
// Currently it is a 10 bit hash, so the hash array has a max depth of 6 bits (so 64)
uint AiPathFinder_Hash(uint key1, uint key2) {
return (GET_TILE_X(key1) & 0x1F) + ((GET_TILE_Y(key1) & 0x1F) << 5);
static uint AiPathFinder_Hash(uint key1, uint key2)
{
return (TileX(key1) & 0x1F) + ((TileY(key1) & 0x1F) << 5);
}
// Clear the memory of all the things
void AyStar_AiPathFinder_Free(AyStar *aystar) {
static void AyStar_AiPathFinder_Free(AyStar *aystar)
{
AyStarMain_Free(aystar);
free(aystar);
}
@@ -90,8 +109,8 @@ AyStar *new_AyStar_AiPathFinder(int max_tiles_around, Ai_PathFinderInfo *PathFin
start_node.node.user_data[0] = 0;
// Now we add all the starting tiles
for (x=GET_TILE_X(PathFinderInfo->start_tile_tl);x<=GET_TILE_X(PathFinderInfo->start_tile_br);x++) {
for (y=GET_TILE_Y(PathFinderInfo->start_tile_tl);y<=GET_TILE_Y(PathFinderInfo->start_tile_br);y++) {
for (x = TileX(PathFinderInfo->start_tile_tl); x <= TileX(PathFinderInfo->start_tile_br); x++) {
for (y = TileY(PathFinderInfo->start_tile_tl); y <= TileY(PathFinderInfo->start_tile_br); y++) {
start_node.node.tile = TILE_XY(x,y);
result->addstart(result, &start_node.node);
}
@@ -117,9 +136,9 @@ void clean_AyStar_AiPathFinder(AyStar *aystar, Ai_PathFinderInfo *PathFinderInfo
start_node.node.tile = PathFinderInfo->start_tile_tl;
// Now we add all the starting tiles
for (x=GET_TILE_X(PathFinderInfo->start_tile_tl);x<=GET_TILE_X(PathFinderInfo->start_tile_br);x++) {
for (y=GET_TILE_Y(PathFinderInfo->start_tile_tl);y<=GET_TILE_Y(PathFinderInfo->start_tile_br);y++) {
if (!(IS_TILETYPE(TILE_XY(x,y), MP_CLEAR) || IS_TILETYPE(TILE_XY(x,y), MP_TREES))) continue;
for (x = TileX(PathFinderInfo->start_tile_tl); x <= TileX(PathFinderInfo->start_tile_br); x++) {
for (y = TileY(PathFinderInfo->start_tile_tl); y <= TileY(PathFinderInfo->start_tile_br); y++) {
if (!(IsTileType(TILE_XY(x,y), MP_CLEAR) || IsTileType(TILE_XY(x,y), MP_TREES))) continue;
if (!TestCanBuildStationHere(TILE_XY(x,y),TEST_STATION_NO_DIR)) continue;
start_node.node.tile = TILE_XY(x,y);
aystar->addstart(aystar, &start_node.node);
@@ -133,14 +152,14 @@ static int32 AyStar_AiPathFinder_CalculateH(AyStar *aystar, AyStarNode *current,
int r, r2;
if (PathFinderInfo->end_direction != AI_PATHFINDER_NO_DIRECTION) {
// The station is pointing to a direction, add a tile towards that direction, so the H-value is more accurate
r = GetTileDist(current->tile, PathFinderInfo->end_tile_tl + _tiles_around[PathFinderInfo->end_direction]);
r2 = GetTileDist(current->tile, PathFinderInfo->end_tile_br + _tiles_around[PathFinderInfo->end_direction]);
r = GetTileDist(current->tile, PathFinderInfo->end_tile_tl + TileOffsByDir(PathFinderInfo->end_direction));
r2 = GetTileDist(current->tile, PathFinderInfo->end_tile_br + TileOffsByDir(PathFinderInfo->end_direction));
} else {
// No direction, so just get the fastest route to the station
r = GetTileDist(current->tile, PathFinderInfo->end_tile_tl);
r2 = GetTileDist(current->tile, PathFinderInfo->end_tile_br);
}
// See if the bottomright is faster then the topleft..
// See if the bottomright is faster than the topleft..
if (r2 < r) r = r2;
return r * AI_PATHFINDER_H_MULTIPLER;
}
@@ -148,7 +167,7 @@ static int32 AyStar_AiPathFinder_CalculateH(AyStar *aystar, AyStarNode *current,
// We found the end.. let's get the route back and put it in an array
static void AyStar_AiPathFinder_FoundEndNode(AyStar *aystar, OpenListNode *current) {
Ai_PathFinderInfo *PathFinderInfo = (Ai_PathFinderInfo*)aystar->user_target;
int i = 0;
uint i = 0;
PathNode *parent = &current->path;
do {
@@ -168,35 +187,40 @@ static void AyStar_AiPathFinder_FoundEndNode(AyStar *aystar, OpenListNode *curre
// What tiles are around us.
static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *current) {
int i, r, dir;
uint i;
int r;
int dir;
Ai_PathFinderInfo *PathFinderInfo = (Ai_PathFinderInfo*)aystar->user_target;
aystar->num_neighbours = 0;
// Go through all surrounding tiles and check if they are within the limits
for (i=0;i<4;i++) {
if (GET_TILE_X(_tiles_around[i] + current->path.node.tile) > 1 && GET_TILE_X(_tiles_around[i] + current->path.node.tile) < TILE_X_MAX - 1 &&
GET_TILE_Y(_tiles_around[i] + current->path.node.tile) > 1 && GET_TILE_Y(_tiles_around[i] + current->path.node.tile) < TILE_Y_MAX - 1) {
if (TileX(TileOffsByDir(i) + current->path.node.tile) > 1 &&
TileX(TileOffsByDir(i) + current->path.node.tile) < MapMaxX() - 1 &&
TileY(TileOffsByDir(i) + current->path.node.tile) > 1 &&
TileY(TileOffsByDir(i) + current->path.node.tile) < MapMaxY() - 1) {
// We also directly test if the current tile can connect to this tile..
// We do this simply by just building the tile!
// If the next step is a bridge, we have to enter it the right way
if (!PathFinderInfo->rail_or_road && AI_PATHFINDER_IS_ROAD(current->path.node.tile + _tiles_around[i])) {
if (IS_TILETYPE(current->path.node.tile + _tiles_around[i], MP_TUNNELBRIDGE)) {
if (!PathFinderInfo->rail_or_road && IsRoad(current->path.node.tile + TileOffsByDir(i))) {
if (IsTileType(current->path.node.tile + TileOffsByDir(i), MP_TUNNELBRIDGE)) {
// An existing bridge... let's test the direction ;)
if ((_map5[current->path.node.tile + _tiles_around[i]] & 1) != (i & 1)) continue;
if ((_map5[current->path.node.tile + TileOffsByDir(i)] & 1U) != (i & 1)) continue;
// This problem only is valid for tunnels:
// When the last tile was not yet a tunnel, check if we enter from the right side..
if (!IS_TILETYPE(current->path.node.tile, MP_TUNNELBRIDGE) && (_map5[current->path.node.tile + _tiles_around[i]] & 0x80) == 0) {
if (i != (_map5[current->path.node.tile + _tiles_around[i]] & 3)) continue;
if (!IsTileType(current->path.node.tile, MP_TUNNELBRIDGE) && (_map5[current->path.node.tile + TileOffsByDir(i)] & 0x80) == 0) {
if (i != (_map5[current->path.node.tile + TileOffsByDir(i)] & 3U)) continue;
}
}
}
// But also if we are on a bridge, we can only move a certain direction
if (!PathFinderInfo->rail_or_road && AI_PATHFINDER_IS_ROAD(current->path.node.tile)) {
if (IS_TILETYPE(current->path.node.tile, MP_TUNNELBRIDGE)) {
if (!PathFinderInfo->rail_or_road && IsRoad(current->path.node.tile)) {
if (IsTileType(current->path.node.tile, MP_TUNNELBRIDGE)) {
// An existing bridge/tunnel... let's test the direction ;)
if ((_map5[current->path.node.tile] & 1) != (i & 1)) continue;
if ((_map5[current->path.node.tile] & 1U) != (i & 1)) continue;
}
}
@@ -213,14 +237,14 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
// If not, this means we are at the starting station
if (PathFinderInfo->start_direction != AI_PATHFINDER_NO_DIRECTION) {
// We do need a direction?
if (AiNew_GetDirection(current->path.node.tile, current->path.node.tile + _tiles_around[i]) != PathFinderInfo->start_direction)
if (AiNew_GetDirection(current->path.node.tile, current->path.node.tile + TileOffsByDir(i)) != PathFinderInfo->start_direction)
// We are not pointing the right way, invalid tile
continue;
}
} else if (current->path.node.user_data[0] == 0) {
if (PathFinderInfo->rail_or_road) {
// Rail check
dir = AiNew_GetRailDirection(current->path.parent->node.tile, current->path.node.tile, current->path.node.tile + _tiles_around[i]);
dir = AiNew_GetRailDirection(current->path.parent->node.tile, current->path.node.tile, current->path.node.tile + TileOffsByDir(i));
r = DoCommandByTile(current->path.node.tile, 0, dir, DC_AUTO | DC_NO_WATER, CMD_BUILD_SINGLE_RAIL);
if (r == CMD_ERROR) continue;
#ifdef AI_PATHFINDER_NO_90DEGREES_TURN
@@ -234,9 +258,9 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
#endif
} else {
// Road check
dir = AiNew_GetRoadDirection(current->path.parent->node.tile, current->path.node.tile, current->path.node.tile + _tiles_around[i]);
if (AI_PATHFINDER_IS_ROAD(current->path.node.tile)) {
if (IS_TILETYPE(current->path.node.tile, MP_TUNNELBRIDGE)) {
dir = AiNew_GetRoadDirection(current->path.parent->node.tile, current->path.node.tile, current->path.node.tile + TileOffsByDir(i));
if (IsRoad(current->path.node.tile)) {
if (IsTileType(current->path.node.tile, MP_TUNNELBRIDGE)) {
// We have a bridge, how nicely! We should mark it...
dir = 0;
} else {
@@ -259,7 +283,7 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
}
// The tile can be connected
aystar->neighbours[aystar->num_neighbours].tile = _tiles_around[i] + current->path.node.tile;
aystar->neighbours[aystar->num_neighbours].tile = TileOffsByDir(i) + current->path.node.tile;
aystar->neighbours[aystar->num_neighbours].user_data[0] = 0;
aystar->neighbours[aystar->num_neighbours++].direction = 0;
}
@@ -280,11 +304,11 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
// Bridges can only be build on land that is not flat
// And if there is a road or rail blocking
if (ti.tileh != 0 ||
(PathFinderInfo->rail_or_road && IS_TILETYPE(tile + _tiles_around[dir], MP_STREET)) ||
(!PathFinderInfo->rail_or_road && IS_TILETYPE(tile + _tiles_around[dir], MP_RAILWAY))) {
(PathFinderInfo->rail_or_road && IsTileType(tile + TileOffsByDir(dir), MP_STREET)) ||
(!PathFinderInfo->rail_or_road && IsTileType(tile + TileOffsByDir(dir), MP_RAILWAY))) {
for (;;) {
new_tile += _tiles_around[dir];
new_tile += TileOffsByDir(dir);
// Precheck, is the length allowed?
if (!CheckBridge_Stuff(0,GetBridgeLength(tile, new_tile))) break;
@@ -356,7 +380,7 @@ static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current,
if (!PathFinderInfo->rail_or_road) {
// Road has the lovely advantage it can use other road... check if
// the current tile is road, and if so, give a good bonus
if (AI_PATHFINDER_IS_ROAD(current->tile)) {
if (IsRoad(current->tile)) {
res -= AI_PATHFINDER_ROAD_ALREADY_EXISTS_BONUS;
}
}
@@ -373,7 +397,7 @@ static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current,
res += AI_PATHFINDER_TILE_GOES_UP_PENALTY;
}
} else {
if (!(AI_PATHFINDER_IS_ROAD(parent->path.node.tile) && IS_TILETYPE(parent->path.node.tile, MP_TUNNELBRIDGE))) {
if (!(IsRoad(parent->path.node.tile) && IsTileType(parent->path.node.tile, MP_TUNNELBRIDGE))) {
r = GetRoadFoundation(parent_ti.tileh, AiNew_GetRoadDirection(parent->path.parent->node.tile, parent->path.node.tile, current->tile));
if (r >= 15 || r == 0)
res += AI_PATHFINDER_TILE_GOES_UP_PENALTY;
@@ -418,7 +442,7 @@ static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current,
if (parent->path.parent != NULL &&
AiNew_GetDirection(current->tile, parent->path.node.tile) != AiNew_GetDirection(parent->path.node.tile, parent->path.parent->node.tile)) {
// When road exists, we don't like turning, but its free, so don't be to piggy about it
if (AI_PATHFINDER_IS_ROAD(parent->path.node.tile))
if (IsRoad(parent->path.node.tile))
res += AI_PATHFINDER_DIRECTION_CHANGE_ON_EXISTING_ROAD_PENALTY;
else
res += AI_PATHFINDER_DIRECTION_CHANGE_PENALTY;
@@ -429,7 +453,7 @@ static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current,
if (parent->path.parent != NULL && parent->path.parent->parent != NULL) {
int dir1 = AiNew_GetRailDirection(parent->path.parent->node.tile, parent->path.node.tile, current->tile);
int dir2 = AiNew_GetRailDirection(parent->path.parent->parent->node.tile, parent->path.parent->node.tile, parent->path.node.tile);
// First, see if we are on diagonal path, that is better then straight path
// First, see if we are on diagonal path, that is better than straight path
if (dir1 > 1) { res -= AI_PATHFINDER_DIAGONAL_BONUS; }
// First see if they are different
+15 -15
View File
@@ -15,13 +15,13 @@ int AiNew_GetRailDirection(uint tile_a, uint tile_b, uint tile_c) {
int x1, x2, x3;
int y1, y2, y3;
x1 = GET_TILE_X(tile_a);
x2 = GET_TILE_X(tile_b);
x3 = GET_TILE_X(tile_c);
x1 = TileX(tile_a);
x2 = TileX(tile_b);
x3 = TileX(tile_c);
y1 = GET_TILE_Y(tile_a);
y2 = GET_TILE_Y(tile_b);
y3 = GET_TILE_Y(tile_c);
y1 = TileY(tile_a);
y2 = TileY(tile_b);
y3 = TileY(tile_c);
if (y1 == y2 && y2 == y3) return 0;
if (x1 == x2 && x2 == x3) return 1;
@@ -50,13 +50,13 @@ int AiNew_GetRoadDirection(uint tile_a, uint tile_b, uint tile_c) {
int y1, y2, y3;
int r;
x1 = GET_TILE_X(tile_a);
x2 = GET_TILE_X(tile_b);
x3 = GET_TILE_X(tile_c);
x1 = TileX(tile_a);
x2 = TileX(tile_b);
x3 = TileX(tile_c);
y1 = GET_TILE_Y(tile_a);
y2 = GET_TILE_Y(tile_b);
y3 = GET_TILE_Y(tile_c);
y1 = TileY(tile_a);
y2 = TileY(tile_b);
y3 = TileY(tile_c);
r = 0;
@@ -75,9 +75,9 @@ int AiNew_GetRoadDirection(uint tile_a, uint tile_b, uint tile_c) {
// Get's the direction between 2 tiles seen from tile_a
int AiNew_GetDirection(uint tile_a, uint tile_b) {
if (GET_TILE_Y(tile_a) < GET_TILE_Y(tile_b)) return 1;
if (GET_TILE_Y(tile_a) > GET_TILE_Y(tile_b)) return 3;
if (GET_TILE_X(tile_a) < GET_TILE_X(tile_b)) return 2;
if (TileY(tile_a) < TileY(tile_b)) return 1;
if (TileY(tile_a) > TileY(tile_b)) return 3;
if (TileX(tile_a) < TileX(tile_b)) return 2;
return 0;
}
+249 -120
View File
@@ -18,6 +18,7 @@ static bool AirportHasBlock(Vehicle *v, AirportFTA *current_pos, const AirportFT
static bool AirportFindFreeTerminal(Vehicle *v, const AirportFTAClass *Airport);
static bool AirportFindFreeHelipad(Vehicle *v, const AirportFTAClass *Airport);
static void AirportGoToNextPosition(Vehicle *v, const AirportFTAClass *Airport);
static void CrashAirplane(Vehicle *v);
static void AircraftNextAirportPos_and_Order(Vehicle *v);
static byte GetAircraftFlyingAltitude(const Vehicle *v);
@@ -70,7 +71,7 @@ void DrawAircraftEngineInfo(int engine, int x, int y, int maxw)
const AircraftVehicleInfo *avi = AircraftVehInfo(engine);
SetDParam(0, ((_price.aircraft_base >> 3) * avi->base_cost) >> 5);
SetDParam(1, avi->max_speed << 3);
SetDParam(2, avi->passanger_capacity);
SetDParam(2, avi->passenger_capacity);
SetDParam(3, avi->mail_capacity);
SetDParam(4, avi->running_cost * _price.aircraft_running >> 8);
@@ -100,7 +101,7 @@ static bool AllocateVehicles(Vehicle **vl, int num)
return success;
}
static int32 EstimateAircraftCost(uint16 engine_type)
int32 EstimateAircraftCost(uint16 engine_type)
{
return AircraftVehInfo(engine_type)->base_cost * (_price.aircraft_base>>3)>>5;
}
@@ -125,7 +126,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
// allocate 2 or 3 vehicle structs, depending on type
if (!AllocateVehicles(vl, (avi->subtype & 1) == 0 ? 3 : 2) ||
_ptr_to_next_order >= endof(_order_array))
IsOrderPoolFull())
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
unit_num = GetFreeUnitNumber(VEH_Aircraft);
@@ -145,8 +146,8 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
v->tile = tile;
// u->tile = 0;
x = GET_TILE_X(tile)*16 + 5;
y = GET_TILE_Y(tile)*16 + 3;
x = TileX(tile) * 16 + 5;
y = TileY(tile) * 16 + 3;
v->x_pos = u->x_pos = x;
v->y_pos = u->y_pos = y;
@@ -169,7 +170,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
v->spritenum = avi->image_index;
// v->cargo_count = u->number_of_pieces = 0;
v->cargo_cap = avi->passanger_capacity;
v->cargo_cap = avi->passenger_capacity;
u->cargo_cap = avi->mail_capacity;
v->cargo_type = CT_PASSENGERS;
@@ -180,7 +181,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
// v->load_unload_time_rem = 0;
// v->progress = 0;
v->last_station_visited = 0xFF;
v->last_station_visited = 0xFFFF;
// v->destination_coords = 0;
v->max_speed = avi->max_speed;
@@ -199,9 +200,6 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
_new_aircraft_id = v->index;
_ptr_to_next_order->type = OT_NOTHING;
_ptr_to_next_order->flags = 0;
v->schedule_ptr = _ptr_to_next_order++;
// the AI doesn't click on a tile to build airplanes, so the below code will
// never work. Therefore just assume the AI's planes always come from Hangar0
// On hold for NewAI
@@ -214,12 +212,12 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
Station *st;
const AirportFTAClass *Airport;
const uint16 *cur_depot;
const TileIndexDiffC *cur_depot;
byte i = 0;
st = DEREF_STATION(_map2[tile]);
st = GetStation(_map2[tile]);
Airport = GetAirport(st->airport_type);
for (cur_depot = Airport->airport_depots; i != Airport->nof_depots; cur_depot++) {
if ((uint)(st->airport_tile + *cur_depot) == tile) {
if ((uint)(st->airport_tile + ToTileIndexDiff(*cur_depot)) == tile) {
assert(Airport->layout[i].heading == HANGAR);
v->u.air.pos = Airport->layout[i].position;
break;
@@ -271,6 +269,8 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
InvalidateWindow(WC_COMPANY, v->owner);
}
InvalidateWindow(WC_REPLACE_VEHICLE, VEH_Aircraft); //updates the replace Aircraft window
return value;
}
@@ -279,7 +279,7 @@ bool IsAircraftHangarTile(TileIndex tile)
// 0x56 - hangar facing other way international airport (86)
// 0x20 - hangar large airport (32)
// 0x41 - hangar small airport (65)
return IS_TILETYPE(tile, MP_STATION) &&
return IsTileType(tile, MP_STATION) &&
(_map5[tile] == 32 || _map5[tile] == 65 || _map5[tile] == 86);
}
@@ -301,6 +301,7 @@ static void DoDeleteAircraft(Vehicle *v)
RebuildVehicleLists();
InvalidateWindow(WC_COMPANY, v->owner);
DeleteVehicleChain(v);
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
}
// p1 = vehicle
@@ -310,7 +311,7 @@ int32 CmdSellAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
v = &_vehicles[p1];
v = GetVehicle(p1);
if (!CheckOwnership(v->owner) || !CheckStoppedInHangar(v))
return CMD_ERROR;
@@ -323,6 +324,8 @@ int32 CmdSellAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
}
InvalidateWindow(WC_REPLACE_VEHICLE, VEH_Aircraft); // updates the replace Aircraft window
return -(int32)v->value;
}
@@ -331,7 +334,7 @@ int32 CmdStartStopAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
Vehicle *v;
v = &_vehicles[p1];
v = GetVehicle(p1);
if (!CheckOwnership(v->owner))
return CMD_ERROR;
@@ -345,23 +348,27 @@ int32 CmdStartStopAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
v->vehstatus ^= VS_STOPPED;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
}
return 0;
}
// p1 = vehicle
// p2 = if set, the aircraft will try to goto a depot, but not stop
int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
Vehicle *v;
Station *st;
v = &_vehicles[p1];
v = GetVehicle(p1);
if (p2 != 0) v->set_for_replacement = true; //now all clients knows that the vehicle wants to be replaced
if (!CheckOwnership(v->owner))
return CMD_ERROR;
if (v->current_order.type == OT_GOTO_DEPOT) {
if (v->current_order.type == OT_GOTO_DEPOT && p2 != 0) {
if (flags & DC_EXEC) {
if (v->current_order.flags & OF_UNLOAD) v->cur_order_index++;
v->current_order.type = OT_DUMMY;
@@ -369,15 +376,15 @@ int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2)
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
}
} else {
st = DEREF_STATION(v->u.air.targetairport);
st = GetStation(v->u.air.targetairport);
// If an airport doesn't have terminals (so no landing space for airports),
// it surely doesn't have any hangars
if (st->xy == 0 || st->airport_tile == 0 || GetAirport(st->airport_type)->nofterminals == 0)
if (st->xy == 0 || st->airport_tile == 0 || GetAirport(st->airport_type)->terminals == NULL)
return CMD_ERROR;
if (flags & DC_EXEC) {
v->current_order.type = OT_GOTO_DEPOT;
v->current_order.flags = OF_NON_STOP | OF_FULL_LOAD;
v->current_order.flags = p2 == 0 ? OF_NON_STOP | OF_FULL_LOAD : 0;
v->current_order.station = v->u.air.targetairport;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
}
@@ -392,7 +399,7 @@ int32 CmdChangeAircraftServiceInt(int x, int y, uint32 flags, uint32 p1, uint32
{
Vehicle *v;
v = &_vehicles[p1];
v = GetVehicle(p1);
if (!CheckOwnership(v->owner))
return CMD_ERROR;
@@ -406,29 +413,44 @@ int32 CmdChangeAircraftServiceInt(int x, int y, uint32 flags, uint32 p1, uint32
}
// p1 = vehicle
// p2 = new cargo type
// p2 = new cargo type(0xFF)
// p2 = skip check for stopped in hanger (0x0100)
int32 CmdRefitAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
Vehicle *v,*u;
int pass, mail;
int32 cost;
byte SkipStoppedInHangerCheck = (p2 & 0x100) >> 8; //excludes the cargo value
byte new_cargo_type = p2 & 0xFF; //gets the cargo number
AircraftVehicleInfo *avi;
SET_EXPENSES_TYPE(EXPENSES_AIRCRAFT_RUN);
v = &_vehicles[p1];
if (!CheckOwnership(v->owner) || !CheckStoppedInHangar(v))
v = GetVehicle(p1);
avi = AircraftVehInfo(v->engine_type);
if (!CheckOwnership(v->owner) || (!CheckStoppedInHangar(v) && !(SkipStoppedInHangerCheck)))
return CMD_ERROR;
pass = AircraftVehInfo(v->engine_type)->passanger_capacity;
if (p2 != 0) {
pass >>= 1;
if (p2 != 5)
pass >>= 1;
switch (new_cargo_type) {
case CT_PASSENGERS:
pass = avi->passenger_capacity;
break;
case CT_MAIL:
pass = avi->passenger_capacity + avi->mail_capacity;
break;
case CT_GOODS:
pass = avi->passenger_capacity + avi->mail_capacity;
pass /= 2;
break;
default:
pass = avi->passenger_capacity + avi->mail_capacity;
pass /= 4;
break;
}
_aircraft_refit_capacity = pass;
cost = 0;
if (IS_HUMAN_PLAYER(v->owner) && (byte)p2 != v->cargo_type) {
if (IS_HUMAN_PLAYER(v->owner) && new_cargo_type != v->cargo_type) {
cost = _price.aircraft_base >> 7;
}
@@ -436,13 +458,16 @@ int32 CmdRefitAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
v->cargo_cap = pass;
u = v->next;
mail = AircraftVehInfo(v->engine_type)->mail_capacity;
if (p2 != 0) {
mail = avi->mail_capacity;
if (new_cargo_type != CT_PASSENGERS) {
mail = 0;
}
u->cargo_cap = mail;
v->cargo_count = u->cargo_count = 0;
v->cargo_type = (byte)p2;
//autorefitted planes wants to keep the cargo
//it will be checked if the cargo is valid in CmdReplaceVehicle
if (!(SkipStoppedInHangerCheck))
v->cargo_count = u->cargo_count = 0;
v->cargo_type = new_cargo_type;
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
}
@@ -471,12 +496,12 @@ static void CheckIfAircraftNeedsService(Vehicle *v)
v->current_order.flags & OF_FULL_LOAD)
return;
if (_patches.gotodepot && ScheduleHasDepotOrders(v->schedule_ptr))
if (_patches.gotodepot && VehicleHasDepotOrders(v))
return;
st = DEREF_STATION(v->current_order.station);
st = GetStation(v->current_order.station);
// only goto depot if the target airport has terminals (eg. it is airport)
if (st->xy != 0 && st->airport_tile != 0 && GetAirport(st->airport_type)->nofterminals != 0) {
if (st->xy != 0 && st->airport_tile != 0 && GetAirport(st->airport_type)->terminals != NULL) {
// printf("targetairport = %d, st->index = %d\n", v->u.air.targetairport, st->index);
// v->u.air.targetairport = st->index;
v->current_order.type = OT_GOTO_DEPOT;
@@ -499,7 +524,7 @@ void OnNewDay_Aircraft(Vehicle *v)
if ((++v->day_counter & 7) == 0)
DecreaseVehicleValue(v);
CheckOrders(v);
CheckOrders(v->index, OC_INIT);
CheckVehicleBreakdown(v);
AgeVehicle(v);
@@ -516,10 +541,10 @@ void OnNewDay_Aircraft(Vehicle *v)
SubtractMoneyFromPlayerFract(v->owner, cost);
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
InvalidateWindow(WC_AIRCRAFT_LIST, v->owner);
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
}
void AircraftYearlyLoop()
void AircraftYearlyLoop(void)
{
Vehicle *v;
@@ -713,15 +738,15 @@ static bool Aircraft_5(Vehicle *v)
uint dist;
int x,y;
st = DEREF_STATION(v->u.air.targetairport);
st = GetStation(v->u.air.targetairport);
// prevent going to 0,0 if airport is deleted.
{
uint tile = st->airport_tile;
if (tile == 0) tile = st->xy;
// xy of destination
x = GET_TILE_X(tile)*16;
y = GET_TILE_Y(tile)*16;
x = TileX(tile) * 16;
y = TileY(tile) * 16;
}
// get airport moving data
@@ -914,9 +939,22 @@ static void HandleCrashedAircraft(Vehicle *v)
{
uint32 r;
Station *st;
int z;
v->u.air.crashed_counter++;
st = GetStation(v->u.air.targetairport);
// make aircraft crash down to the ground
if (v->u.air.crashed_counter < 500 && st->airport_tile==0 && ((v->u.air.crashed_counter % 3) == 0) ) {
z = GetSlopeZ(v->x_pos, v->y_pos);
v->z_pos -= 1;
if (v->z_pos == z) {
v->u.air.crashed_counter = 500;
v->z_pos++;
}
}
if (v->u.air.crashed_counter < 650) {
if (CHANCE16R(1,32,r)) {
v->direction = (v->direction+_crashed_aircraft_moddir[(r >> 16)&3]) & 7;
@@ -929,7 +967,6 @@ static void HandleCrashedAircraft(Vehicle *v)
EV_DEMOLISH);
}
} else if (v->u.air.crashed_counter >= 10000) {
st = DEREF_STATION(v->u.air.targetairport);
// remove rubble of crashed airplane
// clear runway-in on all airports, set by crashing plane
@@ -985,47 +1022,53 @@ static void HandleAircraftSmoke(Vehicle *v)
static void ProcessAircraftOrder(Vehicle *v)
{
Order order;
const Order *order;
// OT_GOTO_DEPOT, OT_LOADING
if (v->current_order.type >= OT_GOTO_DEPOT &&
v->current_order.type <= OT_LOADING) {
if (v->current_order.type == OT_GOTO_DEPOT ||
v->current_order.type == OT_LOADING) {
if (v->current_order.type != OT_GOTO_DEPOT ||
!(v->current_order.flags & OF_UNLOAD))
return;
}
return;
}
if (v->current_order.type == OT_GOTO_DEPOT &&
(v->current_order.flags & (OF_UNLOAD | OF_FULL_LOAD)) == (OF_UNLOAD | OF_FULL_LOAD) &&
!VehicleNeedsService(v)) {
v->cur_order_index++;
}
!VehicleNeedsService(v) &&
v->set_for_replacement == false) {
v->cur_order_index++;
}
if (v->cur_order_index >= v->num_orders)
v->cur_order_index = 0;
order = v->schedule_ptr[v->cur_order_index];
order = GetVehicleOrder(v, v->cur_order_index);
if (order.type == OT_NOTHING) {
if (order == NULL) {
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
return;
}
if (order.type == v->current_order.type &&
order.flags == v->current_order.flags &&
order.station == v->current_order.station)
if (order->type == OT_DUMMY && !CheckForValidOrders(v))
CrashAirplane(v);
if (order->type == v->current_order.type &&
order->flags == v->current_order.flags &&
order->station == v->current_order.station)
return;
v->current_order = order;
v->current_order = *order;
// orders are changed in flight, ensure going to the right station
if (order.type == OT_GOTO_STATION && v->u.air.state == FLYING) {
if (order->type == OT_GOTO_STATION && v->u.air.state == FLYING) {
AircraftNextAirportPos_and_Order(v);
v->u.air.targetairport = order.station;
v->u.air.targetairport = order->station;
}
InvalidateVehicleOrderWidget(v);
InvalidateVehicleOrder(v);
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
}
static void HandleAircraftLoading(Vehicle *v, int mode)
@@ -1058,7 +1101,43 @@ static void HandleAircraftLoading(Vehicle *v, int mode)
}
}
v->cur_order_index++;
InvalidateVehicleOrderWidget(v);
InvalidateVehicleOrder(v);
}
static void CrashAirplane(Vehicle *v)
{
uint16 amt;
Station *st;
StringID newsitem;
v->vehstatus |= VS_CRASHED;
v->u.air.crashed_counter = 0;
CreateEffectVehicleRel(v, 4, 4, 8, EV_CRASHED_SMOKE);
InvalidateWindow(WC_VEHICLE_VIEW, v->index);
amt = 2;
if (v->cargo_type == CT_PASSENGERS) amt += v->cargo_count;
SetDParam(0, amt);
v->cargo_count = 0;
v->next->cargo_count = 0,
st = GetStation(v->u.air.targetairport);
if(st->airport_tile==0) {
newsitem = STR_PLANE_CRASH_OUT_OF_FUEL;
} else {
SetDParam(1, st->index);
newsitem = STR_A034_PLANE_CRASH_DIE_IN_FIREBALL;
}
SetDParam(1, st->index);
AddNewsItem(newsitem,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ACCIDENT, 0),
v->index,
0);
SndPlayVehicleFx(SND_12_EXPLOSION, v);
}
static void MaybeCrashAirplane(Vehicle *v)
@@ -1066,9 +1145,8 @@ static void MaybeCrashAirplane(Vehicle *v)
Station *st;
uint16 prob;
int i;
uint16 amt;
st = DEREF_STATION(v->u.air.targetairport);
st = GetStation(v->u.air.targetairport);
//FIXME -- MaybeCrashAirplane -> increase crashing chances of very modern airplanes on smaller than AT_METROPOLITAN airports
prob = 0x10000 / 1500;
@@ -1085,28 +1163,7 @@ static void MaybeCrashAirplane(Vehicle *v)
st->goods[i].waiting_acceptance &= ~0xFFF;
}
v->vehstatus |= VS_CRASHED;
v->u.air.crashed_counter = 0;
CreateEffectVehicleRel(v, 4, 4, 8, EV_CRASHED_SMOKE);
InvalidateWindow(WC_VEHICLE_VIEW, v->index);
amt = 2;
if (v->cargo_type == CT_PASSENGERS) amt += v->cargo_count;
SetDParam(0, amt);
v->cargo_count = 0;
v->next->cargo_count = 0,
SetDParam(1, st->index);
AddNewsItem(STR_A034_PLANE_CRASH_DIE_IN_FIREBALL,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ACCIDENT, 0),
v->index,
0);
ModifyStationRatingAround(TILE_FROM_XY(v->x_pos, v->y_pos), v->owner, -160, 30);
SndPlayVehicleFx(SND_12_EXPLOSION, v);
CrashAirplane(v);
}
// we've landed and just arrived at a terminal
@@ -1118,7 +1175,7 @@ static void AircraftEntersTerminal(Vehicle *v)
if (v->current_order.type == OT_GOTO_DEPOT)
return;
st = DEREF_STATION(v->u.air.targetairport);
st = GetStation(v->u.air.targetairport);
v->last_station_visited = v->u.air.targetairport;
/* Check if station was ever visited before */
@@ -1149,6 +1206,14 @@ static void AircraftEntersTerminal(Vehicle *v)
SET_EXPENSES_TYPE(EXPENSES_AIRCRAFT_INC);
LoadUnloadVehicle(v);
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
}
static bool ValidateAircraftInHangar( uint data_a, uint data_b )
{
Vehicle *v = GetVehicle(data_a);
return (IsAircraftHangarTile(v->tile) && (v->vehstatus & VS_STOPPED));
}
static void AircraftEnterHangar(Vehicle *v)
@@ -1156,8 +1221,9 @@ static void AircraftEnterHangar(Vehicle *v)
Order old_order;
ServiceAircraft(v);
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
MaybeRenewVehicle(v, EstimateAircraftCost(v->engine_type));
MaybeReplaceVehicle(v);
TriggerVehicle(v, VEHICLE_TRIGGER_DEPOT);
@@ -1172,14 +1238,16 @@ static void AircraftEnterHangar(Vehicle *v)
v->cur_order_index++;
} else if (old_order.flags & OF_FULL_LOAD) { // force depot visit
v->vehstatus |= VS_STOPPED;
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
if (v->owner == _local_player) {
SetDParam(0, v->unitnumber);
AddNewsItem(
AddValidatedNewsItem(
STR_A014_AIRCRAFT_IS_WAITING_IN,
NEWS_FLAGS(NM_SMALL, NF_VIEWPORT|NF_VEHICLE, NT_ADVICE, 0),
v->index,
0);
0,
ValidateAircraftInHangar);
}
}
}
@@ -1207,7 +1275,7 @@ static void AircraftNextAirportPos_and_Order(Vehicle *v)
v->current_order.type == OT_GOTO_DEPOT)
v->u.air.targetairport = v->current_order.station;
st = DEREF_STATION(v->u.air.targetairport);
st = GetStation(v->u.air.targetairport);
Airport = GetAirport(st->airport_type);
v->u.air.pos = v->u.air.previous_pos = Airport->entry_point;
}
@@ -1233,6 +1301,7 @@ static void AircraftLeaveHangar(Vehicle *v)
VehicleServiceInDepot(v);
SetAircraftPosition(v, v->x_pos, v->y_pos, v->z_pos);
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
}
@@ -1298,7 +1367,7 @@ static void AircraftEventHandler_AtTerminal(Vehicle *v, const AirportFTAClass *A
// on an airport with helipads, a helicopter will always land there
// and get serviced at the same time - patch setting
if (_patches.serviceathelipad) {
if (v->subtype == 0 && Airport->nofhelipads > 0) {
if (v->subtype == 0 && Airport->helipads != NULL) {
// an exerpt of ServiceAircraft, without the invisibility stuff
v->date_of_last_service = _date;
v->breakdowns_since_last_service = 0;
@@ -1368,6 +1437,14 @@ static void AircraftEventHandler_HeliTakeOff(Vehicle *v, const AirportFTAClass *
v->u.air.state = FLYING;
// get the next position to go to, differs per airport
AircraftNextAirportPos_and_Order(v);
// check if the aircraft needs to be replaced or renewed and send it to a hangar if needed
if (v->current_order.type != OT_GOTO_DEPOT && ((v->owner == _local_player && _autoreplace_array[v->engine_type] != v->engine_type) ||
(v->owner == _local_player && _patches.autorenew && v->age - v->max_age > (_patches.autorenew_months * 30)))) {
_current_player = _local_player;
DoCommandP(v->tile, v->index, 1, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR);
_current_player = OWNER_NONE;
}
}
static void AircraftEventHandler_Flying(Vehicle *v, const AirportFTAClass *Airport)
@@ -1377,7 +1454,7 @@ static void AircraftEventHandler_Flying(Vehicle *v, const AirportFTAClass *Airpo
AirportFTA *current;
uint16 tcur_speed, tsubspeed;
st = DEREF_STATION(v->u.air.targetairport);
st = GetStation(v->u.air.targetairport);
// flying device is accepted at this station
// small airport --> no helicopters (AIRCRAFT_ONLY)
// all other airports --> all types of flying devices (ALL)
@@ -1460,7 +1537,7 @@ static void AircraftEventHandler_HeliEndLanding(Vehicle *v, const AirportFTAClas
if (v->current_order.type == OT_GOTO_STATION) {
if (AirportFindFreeHelipad(v, Airport)) {return;}
}
v->u.air.state = (Airport->nofterminals != 0) ? HANGAR : HELITAKEOFF;
v->u.air.state = (Airport->terminals != NULL) ? HANGAR : HELITAKEOFF;
}
typedef void AircraftStateHandler(Vehicle *v, const AirportFTAClass *Airport);
@@ -1491,7 +1568,7 @@ static void AirportClearBlock(Vehicle *v, const AirportFTAClass *Airport)
Station *st;
// we have left the previous block, and entered the new one. Free the previous block
if (Airport->layout[v->u.air.previous_pos].block != Airport->layout[v->u.air.pos].block) {
st = DEREF_STATION(v->u.air.targetairport);
st = GetStation(v->u.air.targetairport);
CLRBITS(st->airport_flags, Airport->layout[v->u.air.previous_pos].block);
}
}
@@ -1567,7 +1644,7 @@ static bool AirportHasBlock(Vehicle *v, AirportFTA *current_pos, const AirportFT
// same block, then of course we can move
if (Airport->layout[current_pos->position].block != next->block) {
airport_flags = next->block;
st = DEREF_STATION(v->u.air.targetairport);
st = GetStation(v->u.air.targetairport);
// check additional possible extra blocks
if (current_pos != reference && current_pos->block != NOTHING_block) {
airport_flags |= current_pos->block;
@@ -1594,7 +1671,7 @@ static bool AirportSetBlocks(Vehicle *v, AirportFTA *current_pos, const AirportF
// if the next position is in another block, check it and wait until it is free
if (Airport->layout[current_pos->position].block != next->block) {
airport_flags = next->block;
st = DEREF_STATION(v->u.air.targetairport);
st = GetStation(v->u.air.targetairport);
//search for all all elements in the list with the same state, and blocks != N
// this means more blocks should be checked/set
current = current_pos;
@@ -1626,7 +1703,7 @@ static bool AirportSetBlocks(Vehicle *v, AirportFTA *current_pos, const AirportF
static bool FreeTerminal(Vehicle *v, byte i, byte last_terminal)
{
Station *st = DEREF_STATION(v->u.air.targetairport);
Station *st = GetStation(v->u.air.targetairport);
for (; i < last_terminal; i++) {
if (!HASBIT(st->airport_flags, i)) {
// TERMINAL# HELIPAD#
@@ -1638,9 +1715,18 @@ static bool FreeTerminal(Vehicle *v, byte i, byte last_terminal)
return false;
}
static int GetNumTerminals(const AirportFTAClass *Airport)
{
int i, num = 0;
for (i = Airport->terminals[0]; i > 0; i--)
num += Airport->terminals[i];
return num;
}
static bool AirportFindFreeTerminal(Vehicle *v, const AirportFTAClass *Airport)
{
byte nofterminalspergroup, i;
AirportFTA *temp;
Station *st;
@@ -1654,18 +1740,29 @@ static bool AirportFindFreeTerminal(Vehicle *v, const AirportFTAClass *Airport)
possible groups are checked (in this case group 1, since that is after group 0). If that
fails, then attempt fails and plane waits
*/
if (Airport->nofterminalgroups > 1) {
st = DEREF_STATION(v->u.air.targetairport);
nofterminalspergroup = Airport->nofterminals / Airport->nofterminalgroups;
if (Airport->terminals[0] > 1) {
st = GetStation(v->u.air.targetairport);
temp = Airport->layout[v->u.air.pos].next_in_chain;
while (temp != NULL) {
if (temp->heading == 255) {
if (!HASBITS(st->airport_flags, temp->block)) {
i = temp->next_position * nofterminalspergroup; // next_position denotes the group to check
// only that group will be checked (eg 6 terms, 2 groups)
// with i = 0 terms 1 - 3 and
// with i = 1 terms 4 - 6
if (FreeTerminal(v, i, i + nofterminalspergroup)) {return true;}
int target_group;
int i;
int group_start = 0;
int group_end;
//read which group do we want to go to?
//(the first free group)
target_group = temp->next_position + 1;
//at what terminal does the group start?
//that means, sum up all terminals of
//groups with lower number
for(i = 1; i < target_group; i++)
group_start += Airport->terminals[i];
group_end = group_start + Airport->terminals[target_group];
if (FreeTerminal(v, group_start, group_end)) {return true;}
}
}
else {return false;} // once the heading isn't 255, we've exhausted the possible blocks. So we cannot move
@@ -1674,29 +1771,52 @@ static bool AirportFindFreeTerminal(Vehicle *v, const AirportFTAClass *Airport)
}
// if there is only 1 terminalgroup, all terminals are checked (starting from 0 to max)
return FreeTerminal(v, 0, Airport->nofterminals);
return FreeTerminal(v, 0, GetNumTerminals(Airport));
}
static int GetNumHelipads(const AirportFTAClass *Airport)
{
int i, num = 0;
for (i = Airport->helipads[0]; i > 0; i--)
num += Airport->helipads[i];
return num;
}
static bool AirportFindFreeHelipad(Vehicle *v, const AirportFTAClass *Airport)
{
Station *st;
byte nofhelipadspergroup, i;
AirportFTA *temp;
// if an airport doesn't have helipads, use terminals
if (Airport->nofhelipads == 0) {return AirportFindFreeTerminal(v, Airport);}
if (Airport->helipads == NULL) {return AirportFindFreeTerminal(v, Airport);}
// if there are more helicoptergroups, pick one, just as in AirportFindFreeTerminal()
if (Airport->nofhelipadgroups > 1) {
st = DEREF_STATION(v->u.air.targetairport);
nofhelipadspergroup = Airport->nofhelipads / Airport->nofhelipadgroups;
if (Airport->helipads[0] > 1) {
st = GetStation(v->u.air.targetairport);
temp = Airport->layout[v->u.air.pos].next_in_chain;
while (temp != NULL) {
if (temp->heading == 255) {
if (!HASBITS(st->airport_flags, temp->block)) {
i = temp->next_position * nofhelipadspergroup; // next position is the group to check
// heliports start from after TERMINALS, so MAX_TERMINALS needs to be added
if (FreeTerminal(v, i + MAX_TERMINALS, i + MAX_TERMINALS + nofhelipadspergroup)) {return true;}
int target_group;
int i;
int group_start = 0;
int group_end;
//read which group do we want to go to?
//(the first free group)
target_group = temp->next_position + 1;
//at what terminal does the group start?
//that means, sum up all terminals of
//groups with lower number
for(i = 1; i < target_group; i++)
group_start += Airport->helipads[i];
group_end = group_start + Airport->helipads[target_group];
if (FreeTerminal(v, group_start, group_end)) {return true;}
}
}
else {return false;} // once the heading isn't 255, we've exhausted the possible blocks. So we cannot move
@@ -1705,7 +1825,7 @@ static bool AirportFindFreeHelipad(Vehicle *v, const AirportFTAClass *Airport)
}
// only 1 helicoptergroup, check all helipads
// The blocks for helipads start after the last terminal (MAX_TERMINALS)
else {return FreeTerminal(v, MAX_TERMINALS, Airport->nofhelipads + MAX_TERMINALS);}
else {return FreeTerminal(v, MAX_TERMINALS, GetNumHelipads(Airport) + MAX_TERMINALS);}
return false; // it shouldn't get here anytime, but just to be sure
}
@@ -1741,7 +1861,7 @@ static void AircraftEventHandler(Vehicle *v, int loop)
// pass the right airport structure to the functions
// DEREF_STATION gets target airport (Station *st), its type is passed to GetAirport
// that returns the correct layout depending on type
AirportGoToNextPosition(v, GetAirport(DEREF_STATION(v->u.air.targetairport)->airport_type));
AirportGoToNextPosition(v, GetAirport(GetStation(v->u.air.targetairport)->airport_type));
}
void Aircraft_Tick(Vehicle *v)
@@ -1763,8 +1883,17 @@ void Aircraft_Tick(Vehicle *v)
}
}
void UpdateOilRig( void )
{
Station *st;
FOR_ALL_STATIONS(st) {
if (st->airport_type == 5) st->airport_type = AT_OILRIG;
}
}
// need to be called to load aircraft from old version
void UpdateOldAircraft()
void UpdateOldAircraft(void)
{
Station *st;
Vehicle *v_oldstyle;
+226 -148
View File
@@ -13,6 +13,26 @@
#include "player.h"
void Set_DPARAM_Aircraft_Build_Window(uint16 engine_number)
{
const AircraftVehicleInfo *avi = AircraftVehInfo(engine_number);
Engine *e;
YearMonthDay ymd;
SetDParam(0, avi->base_cost * (_price.aircraft_base>>3)>>5);
SetDParam(1, avi->max_speed * 8);
SetDParam(2, avi->passenger_capacity);
SetDParam(3, avi->mail_capacity);
SetDParam(4, avi->running_cost * _price.aircraft_running >> 8);
e = &_engines[engine_number];
SetDParam(6, e->lifelength);
SetDParam(7, e->reliability * 100 >> 16);
ConvertDayToYMD(&ymd, e->intro_date);
SetDParam(5, ymd.year + 1920);
}
static void DrawAircraftImage(Vehicle *v, int x, int y, VehicleID selection)
{
int image = GetAircraftImage(v, 6);
@@ -31,7 +51,7 @@ void CcBuildAircraft(bool success, uint tile, uint32 p1, uint32 p2)
Vehicle *v;
if (success) {
v = &_vehicles[_new_aircraft_id];
v = GetVehicle(_new_aircraft_id);
if (v->tile == _backup_orders_tile) {
_backup_orders_tile = 0;
RestoreVehicleOrders(v, _backup_orders_data);
@@ -43,8 +63,6 @@ void CcBuildAircraft(bool success, uint tile, uint32 p1, uint32 p2)
static void NewAircraftWndProc(Window *w, WindowEvent *e)
{
YearMonthDay ymd;
switch(e->event) {
case WE_PAINT: {
@@ -77,7 +95,7 @@ static void NewAircraftWndProc(Window *w, WindowEvent *e)
do {
if (HASBIT(e->player_avail, _local_player)) {
if (sel==0) selected_id = engine_id;
if (IS_INT_INSIDE(--pos, -4, 0)) {
if (IS_INT_INSIDE(--pos, -w->vscroll.cap, 0)) {
DrawString(x+62, y+7, GetCustomEngineName(engine_id), sel==0 ? 0xC : 0x10);
DrawAircraftEngine(x+29, y+10, engine_id, SPRITE_PALETTE(PLAYER_SPRITE_COLOR(_local_player)));
y += 24;
@@ -89,22 +107,9 @@ static void NewAircraftWndProc(Window *w, WindowEvent *e)
WP(w,buildtrain_d).sel_engine = selected_id;
if (selected_id != -1) {
const AircraftVehicleInfo *avi = AircraftVehInfo(selected_id);
Engine *e;
Set_DPARAM_Aircraft_Build_Window(selected_id);
SetDParam(0, avi->base_cost * (_price.aircraft_base>>3)>>5);
SetDParam(1, avi->max_speed * 8);
SetDParam(2, avi->passanger_capacity);
SetDParam(3, avi->mail_capacity);
SetDParam(4, avi->running_cost * _price.aircraft_running >> 8);
e = &_engines[selected_id];
SetDParam(6, e->lifelength);
SetDParam(7, e->reliability * 100 >> 16);
ConvertDayToYMD(&ymd, e->intro_date);
SetDParam(5, ymd.year + 1920);
DrawString(2, 111, STR_A007_COST_SPEED_CAPACITY_PASSENGERS, 0);
DrawString(2, w->widget[4].top + 1, STR_A007_COST_SPEED_CAPACITY_PASSENGERS, 0);
}
}
} break;
@@ -113,7 +118,7 @@ static void NewAircraftWndProc(Window *w, WindowEvent *e)
switch(e->click.widget) {
case 2: { /* listbox */
uint i = (e->click.pt.y - 14) / 24;
if (i < 4) {
if (i < w->vscroll.cap) {
WP(w,buildtrain_d).sel_index = i + w->vscroll.pos;
SetWindowDirty(w);
}
@@ -125,16 +130,14 @@ static void NewAircraftWndProc(Window *w, WindowEvent *e)
DoCommandP(w->window_number, sel_eng, 0, CcBuildAircraft, CMD_BUILD_AIRCRAFT | CMD_MSG(STR_A008_CAN_T_BUILD_AIRCRAFT));
} break;
case 6: /* rename */
WP(w,buildtrain_d).rename_engine = WP(w,buildtrain_d).sel_engine;
ShowQueryString(
GetCustomEngineName(WP(w,buildtrain_d).sel_engine),
STR_A039_RENAME_AIRCRAFT_TYPE,
31,
160,
w->window_class,
w->window_number);
break;
case 6: { /* rename */
int sel_eng = WP(w,buildtrain_d).sel_engine;
if (sel_eng != -1) {
WP(w,buildtrain_d).rename_engine = sel_eng;
ShowQueryString(GetCustomEngineName(sel_eng),
STR_A039_RENAME_AIRCRAFT_TYPE, 31, 160, w->window_class, w->window_number);
}
} break;
}
break;
@@ -151,24 +154,30 @@ static void NewAircraftWndProc(Window *w, WindowEvent *e)
memcpy(_decode_parameters, b, 32);
DoCommandP(0, WP(w,buildtrain_d).rename_engine, 0, NULL, CMD_RENAME_ENGINE | CMD_MSG(STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE));
} break;
case WE_RESIZE:
w->vscroll.cap += e->sizing.diff.y / 24;
w->widget[2].unkA = (w->vscroll.cap << 8) + 1;
break;
}
}
static const Widget _new_aircraft_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 239, 0, 13, STR_A005_NEW_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_MATRIX, 14, 0, 228, 14, 109, 0x401, STR_A025_AIRCRAFT_SELECTION_LIST},
{ WWT_SCROLLBAR, 14, 229, 239, 14, 109, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_IMGBTN, 14, 0, 239, 110, 161, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, 14, 0, 119, 162, 173, STR_A006_BUILD_AIRCRAFT, STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT},
{ WWT_PUSHTXTBTN, 14, 120, 239, 162, 173, STR_A037_RENAME, STR_A038_RENAME_AIRCRAFT_TYPE},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 239, 0, 13, STR_A005_NEW_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_MATRIX, RESIZE_BOTTOM, 14, 0, 227, 14, 109, 0x401, STR_A025_AIRCRAFT_SELECTION_LIST},
{ WWT_SCROLLBAR, RESIZE_BOTTOM, 14, 228, 239, 14, 109, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_IMGBTN, RESIZE_TB, 14, 0, 239, 110, 161, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 114, 162, 173, STR_A006_BUILD_AIRCRAFT, STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT},
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 115, 227, 162, 173, STR_A037_RENAME, STR_A038_RENAME_AIRCRAFT_TYPE},
{ WWT_RESIZEBOX, RESIZE_TB, 14, 228, 239, 162, 173, 0x0, STR_RESIZE_BUTTON},
{ WIDGETS_END},
};
static const WindowDesc _new_aircraft_desc = {
-1, -1, 240, 174,
WC_BUILD_VEHICLE,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
_new_aircraft_widgets,
NewAircraftWndProc
};
@@ -182,6 +191,9 @@ static void ShowBuildAircraftWindow(uint tile)
w = AllocateWindowDesc(&_new_aircraft_desc);
w->window_number = tile;
w->vscroll.cap = 4;
w->widget[2].unkA = (w->vscroll.cap << 8) + 1;
w->resize.step_height = 24;
if (tile != 0) {
w->caption_color = _map_owner[tile];
@@ -190,20 +202,59 @@ static void ShowBuildAircraftWindow(uint tile)
}
}
const byte _aircraft_refit_normal[] = { 0,1,4,5,6,7,8,9,10,0xFF };
const byte _aircraft_refit_arctic[] = { 0,1,4,5,6,7,9,11,10,0xFF };
const byte _aircraft_refit_desert[] = { 0,4,5,8,6,7,9,10,0xFF };
const byte _aircraft_refit_candy[] = { 0,1,3,5,7,8,9,6,4,10,11,0xFF };
#define MAX_REFIT 0xFF
const byte _aircraft_refit_normal[] = {
CT_PASSENGERS,
CT_MAIL,
CT_GOODS,
CT_VALUABLES,
MAX_REFIT
};
const byte _aircraft_refit_arctic[] = {
CT_PASSENGERS,
CT_MAIL,
CT_GOODS,
CT_FOOD,
MAX_REFIT
};
const byte _aircraft_refit_desert[] = {
CT_PASSENGERS,
CT_MAIL,
CT_FRUIT,
CT_GOODS,
CT_DIAMONDS,
MAX_REFIT
};
const byte _aircraft_refit_candy[] = {
CT_PASSENGERS,
CT_SUGAR,
CT_TOYS,
CT_CANDY,
CT_COLA,
CT_COTTON_CANDY,
CT_BUBBLES,
CT_TOFFEE,
CT_BATTERIES,
CT_PLASTIC,
CT_FIZZY_DRINKS,
MAX_REFIT
};
const byte * const _aircraft_refit_types[4] = {
_aircraft_refit_normal, _aircraft_refit_arctic, _aircraft_refit_desert, _aircraft_refit_candy
};
#undef MAX_REFIT
static void AircraftRefitWndProc(Window *w, WindowEvent *e)
{
switch(e->event) {
case WE_PAINT: {
Vehicle *v = &_vehicles[w->window_number];
Vehicle *v = GetVehicle(w->window_number);
const byte *b;
int sel;
int x,y;
@@ -282,7 +333,7 @@ static void AircraftRefitWndProc(Window *w, WindowEvent *e)
} break;
case 4: /* refit button */
if (WP(w,refit_d).cargo != 0xFF) {
Vehicle *v = &_vehicles[w->window_number];
Vehicle *v = GetVehicle(w->window_number);
if (DoCommandP(v->tile, v->index, WP(w,refit_d).cargo, NULL, CMD_REFIT_AIRCRAFT | CMD_MSG(STR_A042_CAN_T_REFIT_AIRCRAFT)))
DeleteWindow(w);
}
@@ -293,11 +344,11 @@ static void AircraftRefitWndProc(Window *w, WindowEvent *e)
}
static const Widget _aircraft_refit_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 239, 0, 13, STR_A03C_REFIT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 14, 0, 239, 14, 135, 0x0, STR_A03E_SELECT_TYPE_OF_CARGO_FOR},
{ WWT_IMGBTN, 14, 0, 239, 136, 157, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, 14, 0, 239, 158, 169, STR_A03D_REFIT_AIRCRAFT, STR_A03F_REFIT_AIRCRAFT_TO_CARRY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 239, 0, 13, STR_A03C_REFIT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 239, 14, 135, 0x0, STR_A03E_SELECT_TYPE_OF_CARGO_FOR},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 239, 136, 157, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 239, 158, 169, STR_A03D_REFIT_AIRCRAFT, STR_A03F_REFIT_AIRCRAFT_TO_CARRY},
{ WIDGETS_END},
};
@@ -325,7 +376,7 @@ static void ShowAircraftRefitWindow(Vehicle *v)
static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
{
int mod;
Vehicle *v = &_vehicles[w->window_number], *u;
Vehicle *v = GetVehicle(w->window_number), *u;
switch(e->event) {
case WE_PAINT:
@@ -464,14 +515,14 @@ change_int:
static const Widget _aircraft_details_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 349, 0, 13, STR_A00C_DETAILS, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 350, 389, 0, 13, STR_01AA_NAME, STR_A032_NAME_AIRCRAFT},
{ WWT_IMGBTN, 14, 0, 389, 14, 55, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 389, 56, 101, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, 14, 0, 10, 102, 107, STR_0188, STR_884D_INCREASE_SERVICING_INTERVAL},
{ WWT_PUSHTXTBTN, 14, 0, 10, 108, 113, STR_0189, STR_884E_DECREASE_SERVICING_INTERVAL},
{ WWT_IMGBTN, 14, 11, 389, 102, 113, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 349, 0, 13, STR_A00C_DETAILS, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 350, 389, 0, 13, STR_01AA_NAME, STR_A032_NAME_AIRCRAFT},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 389, 14, 55, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 389, 56, 101, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 10, 102, 107, STR_0188, STR_884D_INCREASE_SERVICING_INTERVAL},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 10, 108, 113, STR_0189, STR_884E_DECREASE_SERVICING_INTERVAL},
{ WWT_IMGBTN, RESIZE_NONE, 14, 11, 389, 102, 113, 0x0, STR_NULL},
{ WIDGETS_END},
};
@@ -502,17 +553,17 @@ static void ShowAircraftDetailsWindow(Vehicle *v)
static const Widget _aircraft_view_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 237, 0, 13, STR_A00A, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 14, 238, 249, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, 14, 0, 231, 14, 103, 0x0, STR_NULL},
{ WWT_6, 14, 2, 229, 16, 101, 0x0, STR_NULL},
{ WWT_PUSHIMGBTN, 14, 0, 249, 104, 115, 0x0, STR_A027_CURRENT_AIRCRAFT_ACTION},
{ WWT_PUSHIMGBTN, 14, 232, 249, 14, 31, 0x2AB, STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT},
{ WWT_PUSHIMGBTN, 14, 232, 249, 32, 49, 0x2AF, STR_A02A_SEND_AIRCRAFT_TO_HANGAR},
{ WWT_PUSHIMGBTN, 14, 232, 249, 50, 67, 0x2B4, STR_A03B_REFIT_AIRCRAFT_TO_CARRY},
{ WWT_PUSHIMGBTN, 14, 232, 249, 68, 85, 0x2B2, STR_A028_SHOW_AIRCRAFT_S_ORDERS},
{ WWT_PUSHIMGBTN, 14, 232, 249, 86, 103, 0x2B3, STR_A02B_SHOW_AIRCRAFT_DETAILS},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 237, 0, 13, STR_A00A, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, RESIZE_NONE, 14, 238, 249, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 231, 14, 103, 0x0, STR_NULL},
{ WWT_6, RESIZE_NONE, 14, 2, 229, 16, 101, 0x0, STR_NULL},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 0, 249, 104, 115, 0x0, STR_A027_CURRENT_AIRCRAFT_ACTION},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 232, 249, 14, 31, 0x2AB, STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 232, 249, 32, 49, 0x2AF, STR_A02A_SEND_AIRCRAFT_TO_HANGAR},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 232, 249, 50, 67, 0x2B4, STR_A03B_REFIT_AIRCRAFT_TO_CARRY},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 232, 249, 68, 85, 0x2B2, STR_A028_SHOW_AIRCRAFT_S_ORDERS},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 232, 249, 86, 103, 0x2B3, STR_A02B_SHOW_AIRCRAFT_DETAILS},
{ WIDGETS_END},
};
@@ -520,13 +571,13 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
{
switch(e->event) {
case WE_PAINT: {
Vehicle *v = &_vehicles[w->window_number];
Vehicle *v = GetVehicle(w->window_number);
uint32 disabled = 1<<8;
StringID str;
{
uint tile = v->tile;
if (IS_TILETYPE(tile, MP_STATION) &&
if (IsTileType(tile, MP_STATION) &&
(_map5[tile] == 32 || _map5[tile] == 65) &&
v->vehstatus&VS_STOPPED)
disabled = 0;
@@ -581,7 +632,7 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
} break;
case WE_CLICK: {
Vehicle *v = &_vehicles[w->window_number];
Vehicle *v = GetVehicle(w->window_number);
switch(e->click.widget) {
case 5: /* start stop */
@@ -643,7 +694,7 @@ static void DrawAircraftDepotWindow(Window *w)
tile = w->window_number;
/* setup disabled buttons */
w->disabled_state = (_map_owner[tile]==_local_player) ? 0 : ((1<<4)|(1<<6));
w->disabled_state = (_map_owner[tile]==_local_player) ? 0 : ((1<<4)|(1<<7));
/* determine amount of items for scroller */
num = 0;
@@ -652,21 +703,21 @@ static void DrawAircraftDepotWindow(Window *w)
v->tile == (TileIndex)tile)
num++;
}
SetVScrollCount(w, (num + 3) >> 2);
SetVScrollCount(w, (num + w->hscroll.cap - 1) / w->hscroll.cap);
SetDParam(0, _map2[tile]);
DrawWindowWidgets(w);
x = 2;
y = 15;
num = w->vscroll.pos * 4;
num = w->vscroll.pos * w->hscroll.cap;
FOR_ALL_VEHICLES(v) {
if (v->type == VEH_Aircraft &&
v->subtype <= 2 &&
v->vehstatus&VS_HIDDEN &&
v->tile == (TileIndex)tile &&
--num < 0 && num >= -8) {
--num < 0 && num >= -w->vscroll.cap * w->hscroll.cap) {
DrawAircraftImage(v, x+12, y, WP(w,traindepot_d).sel);
@@ -675,8 +726,8 @@ static void DrawAircraftDepotWindow(Window *w)
DrawSprite( (v->vehstatus & VS_STOPPED) ? 0xC12 : 0xC13, x, y+12);
if ((x+=74) == 2+74*4) {
x -= 74*4;
if ((x+=74) == 2 + 74 * w->hscroll.cap) {
x = 2;
y += 24;
}
}
@@ -684,22 +735,22 @@ static void DrawAircraftDepotWindow(Window *w)
}
static int GetVehicleFromAircraftDepotWndPt(Window *w, int x, int y, Vehicle **veh) {
uint xt,yt,xm,ym;
uint xt,row,xm,ym;
Vehicle *v;
uint tile;
int pos;
xt = x / 74;
xm = x % 74;
if (xt >= 4)
if (xt >= w->hscroll.cap)
return 1;
yt = (y - 14) / 24;
row = (y - 14) / 24;
ym = (y - 14) % 24;
if (yt >= 2)
if (row >= w->vscroll.cap)
return 1;
pos = (yt + w->vscroll.pos) * 4 + xt;
pos = (row + w->vscroll.pos) * w->hscroll.cap + xt;
tile = w->window_number;
FOR_ALL_VEHICLES(v) {
@@ -754,19 +805,6 @@ static void AircraftDepotClickAircraft(Window *w, int x, int y)
}
}
static const Widget _aircraft_depot_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 318, 0, 13, STR_A002_AIRCRAFT_HANGAR, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 14, 319, 330, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_MATRIX, 14, 0, 295, 14, 61, 0x204, STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT},
{ WWT_IMGBTN, 14, 296, 319, 14, 61, 0x2A9, STR_A023_DRAG_AIRCRAFT_TO_HERE_TO},
{ WWT_SCROLLBAR, 14, 320, 330, 14, 61, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_PUSHTXTBTN, 14, 0, 164, 62, 73, STR_A003_NEW_AIRCRAFT, STR_A022_BUILD_NEW_AIRCRAFT},
{ WWT_PUSHTXTBTN, 14, 165, 330, 62, 73, STR_00E4_LOCATION, STR_A024_CENTER_MAIN_VIEW_ON_HANGAR},
{ WIDGETS_END},
};
static void AircraftDepotWndProc(Window *w, WindowEvent *e)
{
switch(e->event) {
@@ -776,13 +814,13 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
case WE_CLICK:
switch(e->click.widget) {
case 3: /* click aircraft */
case 5: /* click aircraft */
AircraftDepotClickAircraft(w, e->click.pt.x, e->click.pt.y);
break;
case 6: /* show build aircraft window */
case 7: /* show build aircraft window */
ShowBuildAircraftWindow(w->window_number);
break;
case 7: /* scroll to tile */
case 8: /* scroll to tile */
ScrollMainWindowToTile(w->window_number);
break;
}
@@ -794,7 +832,7 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
case WE_DRAGDROP: {
switch(e->click.widget) {
case 3: {
case 5: {
Vehicle *v;
VehicleID sel = WP(w,traindepot_d).sel;
@@ -815,7 +853,7 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
HandleButtonClick(w, 4);
v = &_vehicles[WP(w,traindepot_d).sel];
v = GetVehicle(WP(w,traindepot_d).sel);
WP(w,traindepot_d).sel = INVALID_VEHICLE;
_backup_orders_tile = v->tile;
@@ -832,15 +870,35 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
break;
}
break;
case WE_RESIZE:
w->vscroll.cap += e->sizing.diff.y / 24;
w->hscroll.cap += e->sizing.diff.x / 74;
w->widget[5].unkA = (w->vscroll.cap << 8) + w->hscroll.cap;
break;
}
}
static const Widget _aircraft_depot_widgets[] = {
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 318, 0, 13, STR_A002_AIRCRAFT_HANGAR, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, RESIZE_LR, 14, 319, 330, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PANEL, RESIZE_LRB, 14, 296, 318, 14, 13, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_LRTB, 14, 296, 318, 14, 61, 0x2A9, STR_A023_DRAG_AIRCRAFT_TO_HERE_TO},
{ WWT_MATRIX, RESIZE_RB, 14, 0, 295, 14, 61, 0x204, STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT},
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 319, 330, 14, 61, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 159, 62, 73, STR_A003_NEW_AIRCRAFT, STR_A022_BUILD_NEW_AIRCRAFT},
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 160, 318, 62, 73, STR_00E4_LOCATION, STR_A024_CENTER_MAIN_VIEW_ON_HANGAR},
{ WWT_PANEL, RESIZE_RTB, 14, 319, 318, 62, 73, 0x0, STR_NULL},
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 319, 330, 62, 73, 0x0, STR_RESIZE_BUTTON},
{ WIDGETS_END},
};
static const WindowDesc _aircraft_depot_desc = {
-1, -1, 331, 74,
WC_VEHICLE_DEPOT,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
_aircraft_depot_widgets,
AircraftDepotWndProc
};
@@ -854,21 +912,21 @@ void ShowAircraftDepotWindow(uint tile)
if (w) {
w->caption_color = _map_owner[tile];
w->vscroll.cap = 2;
w->hscroll.cap = 4;
w->resize.step_width = 74;
w->resize.step_height = 24;
WP(w,traindepot_d).sel = INVALID_VEHICLE;
_backup_orders_tile = 0;
}
}
static void DrawSmallSchedule(Vehicle *v, int x, int y) {
const Order *sched;
int sel;
Order ord;
int i = 0;
static void DrawSmallOrderList(Vehicle *v, int x, int y) {
const Order *order;
int sel, i = 0;
sched = v->schedule_ptr;
sel = v->cur_order_index;
while ((ord = *sched++).type != OT_NOTHING) {
FOR_VEHICLE_ORDERS(v, order) {
if (sel == 0) {
_stringwidth_base = 0xE0;
DoDrawString( "\xAF", x-6, y, 16);
@@ -876,8 +934,8 @@ static void DrawSmallSchedule(Vehicle *v, int x, int y) {
}
sel--;
if (ord.type == OT_GOTO_STATION) {
SetDParam(0, ord.station);
if (order->type == OT_GOTO_STATION) {
SetDParam(0, order->station);
DrawString(x, y, STR_A036, 0);
y += 6;
@@ -888,31 +946,35 @@ static void DrawSmallSchedule(Vehicle *v, int x, int y) {
}
static Widget _player_aircraft_widgets[] = {
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 247, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 14, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PUSHTXTBTN, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_ORDER_TIP},
{ WWT_PANEL, 14, 81, 237, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
{ WWT_CLOSEBOX, 14, 238, 248, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
{ WWT_PANEL, 14, 249, 259, 14, 25, 0x0, STR_NULL},
{ WWT_MATRIX, 14, 0, 248, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
{ WWT_SCROLLBAR, 14, 249, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_PUSHTXTBTN, 14, 0, 129, 170, 181, STR_A003_NEW_AIRCRAFT, STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES},
{ WWT_PANEL, 14, 130, 259, 170, 181, 0x0, STR_NULL},
static const Widget _player_aircraft_widgets[] = {
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 247, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, RESIZE_LR, 14, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_ORDER_TIP},
{ WWT_PANEL, RESIZE_NONE, 14, 81, 235, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 236, 247, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
{ WWT_PANEL, RESIZE_RIGHT, 14, 248, 259, 14, 25, 0x0, STR_NULL},
{ WWT_MATRIX, RESIZE_RB, 14, 0, 247, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 248, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 124, 170, 181, STR_A003_NEW_AIRCRAFT, STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES},
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 125, 247, 170, 181, STR_REPLACE_VEHICLES, STR_REPLACE_HELP},
{ WWT_PANEL, RESIZE_RTB, 14, 248, 247, 170, 181, 0x0, STR_NULL},
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 248, 259, 170, 181, 0x0, STR_RESIZE_BUTTON},
{ WIDGETS_END},
};
static Widget _other_player_aircraft_widgets[] = {
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 247, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 14, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PUSHTXTBTN, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_ORDER_TIP},
{ WWT_PANEL, 14, 81, 237, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
{ WWT_CLOSEBOX, 14, 238, 248, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
{ WWT_PANEL, 14, 249, 259, 14, 25, 0x0, STR_NULL},
{ WWT_MATRIX, 14, 0, 248, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
{ WWT_SCROLLBAR, 14, 249, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
static const Widget _other_player_aircraft_widgets[] = {
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 247, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, RESIZE_LR, 14, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_ORDER_TIP},
{ WWT_PANEL, RESIZE_NONE, 14, 81, 235, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 236, 247, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
{ WWT_PANEL, RESIZE_RIGHT, 14, 248, 259, 14, 25, 0x0, STR_NULL},
{ WWT_MATRIX, RESIZE_RB, 14, 0, 247, 26, 169, 0x401, STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT},
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 248, 259, 26, 169, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_PANEL, RESIZE_RTB, 14, 0, 247, 170, 181, 0x0, STR_NULL},
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 248, 259, 170, 181, 0x0, STR_RESIZE_BUTTON},
{ WIDGETS_END},
};
@@ -941,20 +1003,17 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
/* draw the widgets */
{
const Player *p = DEREF_PLAYER(owner);
/* XXX hack */
if (station == -1) {
/* Company Name -- (###) Aircraft */
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
SetDParam(2, w->vscroll.count);
_player_aircraft_widgets[1].unkA = STR_A009_AIRCRAFT;
_other_player_aircraft_widgets[1].unkA = STR_A009_AIRCRAFT;
w->widget[1].unkA = STR_A009_AIRCRAFT;
} else {
/* Station Name -- (###) Aircraft */
SetDParam(0, DEREF_STATION(station)->index);
SetDParam(0, GetStation(station)->index);
SetDParam(1, w->vscroll.count);
_player_aircraft_widgets[1].unkA = STR_SCHEDULED_AIRCRAFT;
_other_player_aircraft_widgets[1].unkA = STR_SCHEDULED_AIRCRAFT;
w->widget[1].unkA = STR_SCHEDULED_AIRCRAFT;
}
DrawWindowWidgets(w);
}
@@ -966,7 +1025,7 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
max = min(w->vscroll.pos + w->vscroll.cap, vl->list_length);
for (i = w->vscroll.pos; i < max; ++i) {
Vehicle *v = DEREF_VEHICLE(vl->sort_list[i].index);
Vehicle *v = GetVehicle(vl->sort_list[i].index);
StringID str;
assert(v->type == VEH_Aircraft && v->subtype <= 2);
@@ -975,7 +1034,7 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
DrawVehicleProfitButton(v, x, y + 13);
SetDParam(0, v->unitnumber);
if (IsAircraftHangarTile(v->tile))
if (IsAircraftHangarTile(v->tile) && (v->vehstatus & VS_HIDDEN))
str = STR_021F;
else
str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2;
@@ -990,7 +1049,7 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
DrawString(x + 19, y, STR_01AB, 0);
}
DrawSmallSchedule(v, x + 136, y);
DrawSmallOrderList(v, x + 136, y);
y += PLY_WND_PRC__SIZE_OF_ROW_BIG;
}
@@ -1005,7 +1064,7 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
break;
case 4: case 5:/* Select sorting criteria dropdown menu */
ShowDropDownMenu(w, _vehicle_sort_listing, vl->sort_type, 5, 0);
ShowDropDownMenu(w, _vehicle_sort_listing, vl->sort_type, 5, 0, 0);
return;
case 7: { /* Matrix to show vehicles */
@@ -1020,7 +1079,7 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
if (id_v >= vl->list_length) return; // click out of list bound
v = DEREF_VEHICLE(vl->sort_list[id_v].index);
v = GetVehicle(vl->sort_list[id_v].index);
assert(v->type == VEH_Aircraft && v->subtype <= 2);
@@ -1031,6 +1090,9 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
case 9: { /* Build new Vehicle */
uint tile;
if (!IsWindowOfPrototype(w, _player_aircraft_widgets))
break;
tile = _last_built_aircraft_depot_tile;
do {
if (_map_owner[tile] == _local_player && IsAircraftHangarTile(tile)) {
@@ -1044,6 +1106,14 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
ShowBuildAircraftWindow(0);
} break;
case 10:
if (!IsWindowOfPrototype(w, _player_aircraft_widgets))
break;
ShowReplaceVehicleWindow(VEH_Aircraft);
break;
}
} break;
@@ -1080,21 +1150,27 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
SetWindowDirty(w);
}
break;
case WE_RESIZE:
/* Update the scroll + matrix */
w->vscroll.cap += e->sizing.diff.y / PLY_WND_PRC__SIZE_OF_ROW_BIG;
w->widget[7].unkA = (w->vscroll.cap << 8) + 1;
break;
}
}
static const WindowDesc _player_aircraft_desc = {
-1, -1, 260, 182,
WC_AIRCRAFT_LIST,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
_player_aircraft_widgets,
PlayerAircraftWndProc
};
static const WindowDesc _other_player_aircraft_desc = {
-1, -1, 260, 170,
-1, -1, 260, 182,
WC_AIRCRAFT_LIST,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
_other_player_aircraft_widgets,
PlayerAircraftWndProc
};
@@ -1111,6 +1187,8 @@ void ShowPlayerAircraft(int player, int station)
if (w) {
w->caption_color = w->window_number;
w->vscroll.cap = 4; // maximum number of vehicles shown
w->vscroll.cap = 4;
w->widget[7].unkA = (w->vscroll.cap << 8) + 1;
w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_BIG;
}
}
+102 -26
View File
@@ -10,11 +10,10 @@ AirportFTAClass *MetropolitanAirport;
AirportFTAClass *InternationalAirport;
static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
const byte nofterminals, const byte nofterminalgroups,
const byte nofhelipads, const byte nofhelipadgroups,
const byte *terminals, const byte *helipads,
const byte entry_point, const byte acc_planes,
const AirportFTAbuildup *FA,
const TileIndex *depots, const byte nof_depots);
const TileIndexDiffC *depots, const byte nof_depots);
static void AirportFTAClass_Destructor(AirportFTAClass *Airport);
static uint16 AirportGetNofElements(const AirportFTAbuildup *FA);
@@ -23,31 +22,82 @@ static byte AirportTestFTA(const AirportFTAClass *Airport);
/*static void AirportPrintOut(const AirportFTAClass *Airport, const bool full_report);
static byte AirportBlockToString(uint32 block);*/
void InitializeAirports()
void InitializeAirports(void)
{
// country airport
CountryAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(CountryAirport, 2, 1, 0, 0, 16, ALL, _airport_fta_country, _airport_depots_country, lengthof(_airport_depots_country));
CountryAirport = malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(
CountryAirport,
_airport_terminal_country,
NULL,
16,
ALL,
_airport_fta_country,
_airport_depots_country,
lengthof(_airport_depots_country)
);
// city airport
CityAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(CityAirport, 3, 1, 0, 0, 19, ALL, _airport_fta_city, _airport_depots_city, lengthof(_airport_depots_city));
CityAirport = malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(
CityAirport,
_airport_terminal_city,
NULL,
19,
ALL,
_airport_fta_city,
_airport_depots_city,
lengthof(_airport_depots_city)
);
// metropolitan airport
MetropolitanAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(MetropolitanAirport, 3, 1, 0, 0, 20, ALL, _airport_fta_metropolitan, _airport_depots_metropolitan, lengthof(_airport_depots_metropolitan));
MetropolitanAirport = malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(
MetropolitanAirport,
_airport_terminal_metropolitan,
NULL,
20,
ALL,
_airport_fta_metropolitan,
_airport_depots_metropolitan,
lengthof(_airport_depots_metropolitan)
);
// international airport
InternationalAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(InternationalAirport, 6, 2, 2, 1, 37, ALL, _airport_fta_international, _airport_depots_international, lengthof(_airport_depots_international));
AirportFTAClass_Constructor(
InternationalAirport,
_airport_terminal_international,
_airport_helipad_international,
37,
ALL,
_airport_fta_international,
_airport_depots_international,
lengthof(_airport_depots_international)
);
// heliport, oilrig
Heliport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(Heliport, 0, 0, 1, 1, 7, HELICOPTERS_ONLY, _airport_fta_heliport_oilrig, NULL, 0);
AirportFTAClass_Constructor(
Heliport,
NULL,
_airport_helipad_heliport_oilrig,
7,
HELICOPTERS_ONLY,
_airport_fta_heliport_oilrig,
NULL,
0
);
Oilrig = Heliport; // exactly the same structure for heliport/oilrig, so share state machine
}
void UnInitializeAirports()
void UnInitializeAirports(void)
{
AirportFTAClass_Destructor(CountryAirport);
AirportFTAClass_Destructor(CityAirport);
@@ -57,12 +107,46 @@ void UnInitializeAirports()
}
static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
const byte nofterminals, const byte nofterminalgroups,
const byte nofhelipads, const byte nofhelipadgroups,
const byte *terminals, const byte *helipads,
const byte entry_point, const byte acc_planes,
const AirportFTAbuildup *FA,
const TileIndex *depots, const byte nof_depots)
const TileIndexDiffC *depots, const byte nof_depots)
{
byte nofterminals, nofhelipads;
byte nofterminalgroups = 0;
byte nofhelipadgroups = 0;
const byte * curr;
int i;
nofterminals = nofhelipads = 0;
//now we read the number of terminals we have
if (terminals != NULL) {
i = terminals[0];
nofterminalgroups = i;
curr = terminals;
while (i-- > 0) {
curr++;
assert(*curr != 0); //we don't want to have an empty group
nofterminals += *curr;
}
}
Airport->terminals = terminals;
//read helipads
if (helipads != NULL) {
i = helipads[0];
nofhelipadgroups = i;
curr = helipads;
while (i-- > 0) {
curr++;
assert(*curr != 0); //no empty groups please
nofhelipads += *curr;
}
}
Airport->helipads = helipads;
// if there are more terminals than 6, internal variables have to be changed, so don't allow that
// same goes for helipads
if (nofterminals > MAX_TERMINALS) { printf("Currently only maximum of %2d terminals are supported (you wanted %2d)\n", MAX_TERMINALS, nofterminals);}
@@ -70,23 +154,15 @@ static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
// terminals/helipads are divided into groups. Groups are computed by dividing the number
// of terminals by the number of groups. Half in half. If #terminals is uneven, first group
// will get the less # of terminals
if (nofterminalgroups > nofterminals) { printf("# of terminalgroups (%2d) must be less or equal to terminals (%2d)", nofterminals, nofterminalgroups);}
if (nofhelipadgroups > nofhelipads) { printf("# of helipadgroups (%2d) must be less or equal to helipads (%2d)", nofhelipads, nofhelipadgroups);}
assert(nofterminals <= MAX_TERMINALS);
assert(nofhelipads <= MAX_HELIPADS);
assert(nofterminalgroups <= nofterminals);
assert(nofhelipadgroups <= nofhelipads);
Airport->nofelements = AirportGetNofElements(FA);
// check
if (entry_point >= Airport->nofelements) {printf("Entry point (%2d) must be within the airport positions (which is max %2d)\n", entry_point, Airport->nofelements);}
assert(entry_point < Airport->nofelements);
Airport->nofterminals = nofterminals;
Airport->nofterminalgroups = nofterminalgroups;
Airport->nofhelipads = nofhelipads;
Airport->nofhelipadgroups = nofhelipadgroups;
Airport->acc_planes = acc_planes;
Airport->entry_point = entry_point;
Airport->airport_depots = depots;
@@ -95,8 +171,8 @@ static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
// build the state machine
AirportBuildAutomata(Airport, FA);
DEBUG(misc, 1) ("#Elements %2d; #Terminals %2d in %d group(s); #Helipads %2d in %d group(s)", Airport->nofelements,
Airport->nofterminals, Airport->nofterminalgroups, Airport->nofhelipads, Airport->nofhelipadgroups);
DEBUG(misc, 1) ("#Elements %2d; #Terminals %2d in %d group(s); #Helipads %2d in %d group(s); Entry Point %d", Airport->nofelements,
nofterminals, nofterminalgroups, nofhelipads, nofhelipadgroups, Airport->entry_point);
{
+6 -8
View File
@@ -13,7 +13,7 @@ enum {
AT_HELIPORT = 2,
AT_METROPOLITAN = 3,
AT_INTERNATIONAL = 4,
AT_OILRIG = 5
AT_OILRIG = 15
};
// do not change unless you change v->subtype too. This aligns perfectly with its current setting
@@ -26,13 +26,11 @@ enum {
// Finite sTate mAchine --> FTA
typedef struct AirportFTAClass {
byte nofelements; // number of positions the airport consists of
byte nofterminals; // number of terminals this airport has
byte nofterminalgroups; // terminals belong to so many groups (MAX is the nofterminals)
byte nofhelipads; // number of helipads this airport has
byte nofhelipadgroups; // helipads belong to so many groups (MAX is the nofhelipads)
const byte *terminals;
const byte *helipads;
byte entry_point; // when an airplane arrives at this airport, enter it at position entry_point
byte acc_planes; // accept airplanes or helicopters or both
const TileIndex *airport_depots; // gives the position of the depots on the airports
const TileIndexDiffC *airport_depots; // gives the position of the depots on the airports
byte nof_depots; // number of depots this airport has
struct AirportFTA *layout; // state machine for airport
} AirportFTAClass;
@@ -46,8 +44,8 @@ typedef struct AirportFTA {
struct AirportFTA *next_in_chain; // possible extra movement choices from this position
} AirportFTA;
void InitializeAirports();
void UnInitializeAirports();
void InitializeAirports(void);
void UnInitializeAirports(void);
const AirportFTAClass* GetAirport(const byte airport_type);
#endif /* AIRPORT_H */
+37 -24
View File
@@ -14,7 +14,7 @@
static byte _selected_airport_type;
static void ShowBuildAirportPicker();
static void ShowBuildAirportPicker(void);
void CcBuildAirport(bool success, uint tile, uint32 p1, uint32 p2)
@@ -70,6 +70,16 @@ static void BuildAirToolbWndProc(Window *w, WindowEvent *e)
_build_air_button_proc[e->click.widget - 3](w);
break;
case WE_KEYPRESS: {
switch (e->keypress.keycode) {
case '1': BuildAirClick_Airport(w); break;
case '2': BuildAirClick_Demolish(w); break;
case 'l': BuildAirClick_Landscaping(w); break;
default:
return;
}
} break;
case WE_PLACE_OBJ:
_place_proc(e->place.tile);
break;
@@ -96,12 +106,12 @@ static void BuildAirToolbWndProc(Window *w, WindowEvent *e)
}
static const Widget _air_toolbar_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 73, 0, 13, STR_A000_AIRPORTS, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 7, 74, 85, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PANEL, 7, 0, 41, 14, 35, 0x2E8, STR_A01E_BUILD_AIRPORT},
{ WWT_PANEL, 7, 42, 63, 14, 35, 0x2BF, STR_018D_DEMOLISH_BUILDINGS_ETC},
{ WWT_PANEL, 7, 64, 85, 14, 35, SPR_IMG_LANDSCAPING, STR_LANDSCAPING_TOOLBAR_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 73, 0, 13, STR_A000_AIRPORTS, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, RESIZE_NONE, 7, 74, 85, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 41, 14, 35, 0x2E8, STR_A01E_BUILD_AIRPORT},
{ WWT_PANEL, RESIZE_NONE, 7, 42, 63, 14, 35, 0x2BF, STR_018D_DEMOLISH_BUILDINGS_ETC},
{ WWT_PANEL, RESIZE_NONE, 7, 64, 85, 14, 35, SPR_IMG_LANDSCAPING, STR_LANDSCAPING_TOOLBAR_TIP},
{ WIDGETS_END},
};
@@ -114,8 +124,9 @@ static const WindowDesc _air_toolbar_desc = {
BuildAirToolbWndProc
};
void ShowBuildAirToolbar()
void ShowBuildAirToolbar(void)
{
if (_current_player == OWNER_SPECTATOR) return;
DeleteWindowById(WC_BUILD_TOOLBAR, 0);
AllocateWindowDescFront(&_air_toolbar_desc, 0);
}
@@ -155,7 +166,7 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
case AT_INTERNATIONAL: rad = CA_AIR_INTER; break;
}
}
if (_station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
DrawWindowWidgets(w);
@@ -168,9 +179,6 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
case WE_CLICK: {
switch(e->click.widget) {
case 0:
ResetObjectToPlace();
break;
case 3: case 4: case 5: case 6: case 7:
_selected_airport_type = e->click.widget - 3;
SndPlayFx(SND_15_BEEP);
@@ -192,20 +200,25 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
CheckRedrawStationCoverage(w);
} break;
case WE_DESTROY:
if (!WP(w,def_d).close)
ResetObjectToPlace();
break;
}
}
static const Widget _build_airport_picker_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 147, 0, 13, STR_3001_AIRPORT_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 147, 14, 130, 0x0, STR_NULL},
{WWT_NODISTXTBTN, 14, 2, 73, 27, 38, STR_3059_SMALL, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
{WWT_NODISTXTBTN, 14, 74, 145, 27, 38, STR_305A_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
{WWT_NODISTXTBTN, 14, 2, 145, 63, 74, STR_306B_HELIPORT, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
{WWT_NODISTXTBTN, 14, 2, 145, 39, 50, STR_305AA_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
{WWT_NODISTXTBTN, 14, 2, 145, 51, 62, STR_305AB_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
{ WWT_CLOSEBOX, 14, 14, 73, 88, 98, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
{ WWT_CLOSEBOX, 14, 74, 133, 88, 98, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_3001_AIRPORT_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 147, 14, 130, 0x0, STR_NULL},
{WWT_NODISTXTBTN, RESIZE_NONE, 14, 2, 73, 27, 38, STR_3059_SMALL, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
{WWT_NODISTXTBTN, RESIZE_NONE, 14, 74, 145, 27, 38, STR_305A_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
{WWT_NODISTXTBTN, RESIZE_NONE, 14, 2, 145, 63, 74, STR_306B_HELIPORT, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
{WWT_NODISTXTBTN, RESIZE_NONE, 14, 2, 145, 39, 50, STR_305AA_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
{WWT_NODISTXTBTN, RESIZE_NONE, 14, 2, 145, 51, 62, STR_305AB_LARGE, STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 14, 73, 88, 98, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 74, 133, 88, 98, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
{ WIDGETS_END},
};
@@ -217,12 +230,12 @@ static const WindowDesc _build_airport_desc = {
BuildAirportPickerWndProc
};
static void ShowBuildAirportPicker()
static void ShowBuildAirportPicker(void)
{
AllocateWindowDesc(&_build_airport_desc);
}
void InitializeAirportGui()
void InitializeAirportGui(void)
{
_selected_airport_type = AT_SMALL;
_last_built_aircraft_depot_tile = 0;
+21 -5
View File
@@ -263,7 +263,8 @@ static const AirportMovingData _airport_moving_data_oilrig[9] = {
/////**********Movement Machine on Airports*********************///////
// first element of depots array tells us how many depots there are (to know size of array)
// this may be changed later when airports are moved to external file
static const TileIndex _airport_depots_country[] = {TILE_XY(3,0)};
static const TileIndexDiffC _airport_depots_country[] = {{3, 0}};
static const byte _airport_terminal_country[] = {1, 2};
static const AirportFTAbuildup _airport_fta_country[] = {
{ 0,HANGAR,NOTHING_block,1},
{ 1,255,AIRPORT_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM1,TERM1_block,2}, {1,TERM2,0,4}, {1,HELITAKEOFF,0,19}, {1,0,0,6},
@@ -293,7 +294,8 @@ static const AirportFTAbuildup _airport_fta_country[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
static const TileIndex _airport_depots_city[] = {TILE_XY(5,0)};
static const TileIndexDiffC _airport_depots_city[] = {{5, 0}};
static const byte _airport_terminal_city[] = {1, 3};
static const AirportFTAbuildup _airport_fta_city[] = {
{ 0,HANGAR,NOTHING_block,1}, {0,TAKEOFF,OUT_WAY_block,1}, {0,0,0,1},
{ 1,255,TAXIWAY_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM2,0,6}, {1,TERM3,0,6}, {1,0,0,7}, // for all else, go to 7
@@ -327,7 +329,8 @@ static const AirportFTAbuildup _airport_fta_city[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
static const TileIndex _airport_depots_metropolitan[] = {TILE_XY(5,0)};
static const TileIndexDiffC _airport_depots_metropolitan[] = {{5, 0}};
static const byte _airport_terminal_metropolitan[] = {1, 3};
static const AirportFTAbuildup _airport_fta_metropolitan[] = {
{ 0,HANGAR,NOTHING_block,1},
{ 1,255,TAXIWAY_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM2,0,6}, {1,TERM3,0,6}, {1,0,0,7}, // for all else, go to 7
@@ -363,7 +366,9 @@ static const AirportFTAbuildup _airport_fta_metropolitan[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
static const TileIndex _airport_depots_international[] = {TILE_XY(0,3), TILE_XY(6,1)};
static const TileIndexDiffC _airport_depots_international[] = {{0, 3}, {6, 1}};
static const byte _airport_terminal_international[] = {2, 3, 3};
static const byte _airport_helipad_international[] = {1, 2};
static const AirportFTAbuildup _airport_fta_international[] = {
{ 0,HANGAR,NOTHING_block,2}, {0,255,TERM_GROUP1_block,0}, {0,255,TERM_GROUP2_ENTER1_block,1}, {0,HELITAKEOFF,HELIPAD1_block,2}, {0,0,0,2},
{ 1,HANGAR,NOTHING_block,3}, {1,255,HANGAR2_AREA_block,1}, {1,HELITAKEOFF,HELIPAD2_block,3}, {1,0,0,3},
@@ -426,6 +431,7 @@ static const AirportFTAbuildup _airport_fta_international[] = {
};
// heliports, oilrigs don't have depots
static const byte _airport_helipad_heliport_oilrig[] = {1, 1};
static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = {
{0,HELIPAD1,HELIPAD1_block,1},
{1,HELITAKEOFF,NOTHING_block,0}, // takeoff
@@ -440,12 +446,22 @@ static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
static const AirportMovingData * const _airport_moving_datas[6] = {
static const AirportMovingData * const _airport_moving_datas[] = {
_airport_moving_data_country, // Country Airfield (small) 4x3
_airport_moving_data_town, // City Airport (large) 6x6
_airport_moving_data_heliport, // Heliport
_airport_moving_data_metropolitan, // Metropolitain Airport (large) - 2 runways
_airport_moving_data_international, // International Airport (xlarge) - 2 runways
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
_airport_moving_data_oilrig // Oilrig
};
+14 -8
View File
@@ -19,13 +19,15 @@
#include "aystar.h"
// This looks in the Hash if a node exists in ClosedList
// If so, it returns the PathNode, else NULL
PathNode *AyStarMain_ClosedList_IsInList(AyStar *aystar, AyStarNode *node) {
static PathNode *AyStarMain_ClosedList_IsInList(AyStar *aystar, AyStarNode *node)
{
return (PathNode*)Hash_Get(&aystar->ClosedListHash, node->tile, node->direction);
}
// This adds a node to the ClosedList
// It makes a copy of the data
void AyStarMain_ClosedList_Add(AyStar *aystar, PathNode *node) {
static void AyStarMain_ClosedList_Add(AyStar *aystar, PathNode *node)
{
// Add a node to the ClosedList
PathNode *new_node = malloc(sizeof(PathNode));
*new_node = *node;
@@ -34,14 +36,16 @@ void AyStarMain_ClosedList_Add(AyStar *aystar, PathNode *node) {
// Checks if a node is in the OpenList
// If so, it returns the OpenListNode, else NULL
OpenListNode *AyStarMain_OpenList_IsInList(AyStar *aystar, AyStarNode *node) {
static OpenListNode *AyStarMain_OpenList_IsInList(AyStar *aystar, AyStarNode *node)
{
return (OpenListNode*)Hash_Get(&aystar->OpenListHash, node->tile, node->direction);
}
// Gets the best node from OpenList
// returns the best node, or NULL of none is found
// Also it deletes the node from the OpenList
OpenListNode *AyStarMain_OpenList_Pop(AyStar *aystar) {
static OpenListNode *AyStarMain_OpenList_Pop(AyStar *aystar)
{
// Return the item the Queue returns.. the best next OpenList item.
OpenListNode* res = (OpenListNode*)aystar->OpenListQueue.pop(&aystar->OpenListQueue);
if (res != NULL)
@@ -52,7 +56,8 @@ OpenListNode *AyStarMain_OpenList_Pop(AyStar *aystar) {
// Adds a node to the OpenList
// It makes a copy of node, and puts the pointer of parent in the struct
void AyStarMain_OpenList_Add(AyStar *aystar, PathNode *parent, AyStarNode *node, int f, int g, int userdata) {
static void AyStarMain_OpenList_Add(AyStar *aystar, PathNode *parent, AyStarNode *node, int f, int g, int userdata)
{
// Add a new Node to the OpenList
OpenListNode* new_node = malloc(sizeof(OpenListNode));
new_node->g = g;
@@ -101,7 +106,7 @@ int AyStarMain_CheckTile(AyStar *aystar, AyStarNode *current, OpenListNode *pare
// Check if this item is already in the OpenList
if ((check = AyStarMain_OpenList_IsInList(aystar, current)) != NULL) {
int i;
uint i;
// Yes, check if this g value is lower..
if (new_g > check->g) return AYSTAR_DONE;
aystar->OpenListQueue.del(&aystar->OpenListQueue, check, 0);
@@ -215,7 +220,7 @@ void AyStarMain_Clear(AyStar *aystar) {
int AyStarMain_Main(AyStar *aystar) {
int r, i = 0;
// Loop through the OpenList
// Quit if result is no AYSTAR_STILL_BUSY or is more then loops_per_tick
// Quit if result is no AYSTAR_STILL_BUSY or is more than loops_per_tick
while ((r = aystar->loop(aystar)) == AYSTAR_STILL_BUSY && (aystar->loops_per_tick == 0 || ++i < aystar->loops_per_tick)) { }
#ifdef AYSTAR_DEBUG
if (r == AYSTAR_FOUND_END_NODE)
@@ -246,7 +251,8 @@ int AyStarMain_Main(AyStar *aystar) {
*/
void AyStarMain_AddStartNode(AyStar *aystar, AyStarNode *start_node) {
#ifdef AYSTAR_DEBUG
printf("[AyStar] Starting A* Algorithm from node (%d, %d, %d)\n", GET_TILE_X(start_node->tile), GET_TILE_Y(start_node->tile), start_node->direction);
printf("[AyStar] Starting A* Algorithm from node (%d, %d, %d)\n",
TileX(start_node->tile), TileY(start_node->tile), start_node->direction);
#endif
AyStarMain_OpenList_Add(aystar, NULL, start_node, 0, 0, 0);
}
+10 -9
View File
@@ -77,10 +77,10 @@ static void BuildBridgeWndProc(Window *w, WindowEvent *e)
}
static const Widget _build_bridge_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 199, 0, 13, STR_100D_SELECT_RAIL_BRIDGE, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_MATRIX, 7, 0, 188, 14, 101, 0x401, STR_101F_BRIDGE_SELECTION_CLICK},
{ WWT_SCROLLBAR, 7, 189, 199, 14, 101, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 199, 0, 13, STR_100D_SELECT_RAIL_BRIDGE, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_MATRIX, RESIZE_NONE, 7, 0, 187, 14, 101, 0x401, STR_101F_BRIDGE_SELECTION_CLICK},
{ WWT_SCROLLBAR, RESIZE_NONE, 7, 188, 199, 14, 101, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WIDGETS_END},
};
@@ -94,10 +94,10 @@ static const WindowDesc _build_bridge_desc = {
static const Widget _build_road_bridge_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 199, 0, 13, STR_1803_SELECT_ROAD_BRIDGE, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_MATRIX, 7, 0, 188, 14, 101, 0x401, STR_101F_BRIDGE_SELECTION_CLICK},
{ WWT_SCROLLBAR, 7, 189, 199, 14, 101, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 199, 0, 13, STR_1803_SELECT_ROAD_BRIDGE, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_MATRIX, RESIZE_NONE, 7, 0, 187, 14, 101, 0x401, STR_101F_BRIDGE_SELECTION_CLICK},
{ WWT_SCROLLBAR, RESIZE_NONE, 7, 188, 199, 14, 101, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WIDGETS_END},
};
@@ -161,6 +161,7 @@ void ShowBuildBridgeWindow(uint start, uint end, byte bridge_type)
w->vscroll.cap = 4;
w->vscroll.count = (byte)j;
} else {
ShowErrorMessage(errmsg, STR_5015_CAN_T_BUILD_BRIDGE_HERE, GET_TILE_X(end) * 16, GET_TILE_Y(end) * 16);
ShowErrorMessage(errmsg, STR_5015_CAN_T_BUILD_BRIDGE_HERE,
TileX(end) * 16, TileY(end) * 16);
}
}
+138
View File
@@ -1,3 +1,141 @@
0.3.6 (2005-01-24)
------------------------------------------------------------------------
- Feature: resizable windows. All useful windows are already made resizable.
- Feature: highscore chart (accessible from the difficulty window) with top5 companies for a given difficulty (select the difficulty in the menu)
- Feature: endgame score on 1 jan 2051 where you are added to the highscore if sufficiently large points have been accumulated. Game is paused while
- Feature: Visually enhanced autorail placing
When using the autorail tool, the rail pieces which are going to be build are highlighted.
If a piece is shown in red, this indicates that the slope/rail combination is impossible. It does not tell you if
the rail line construction might not be possible because of other obstacles, e.g. houses or water.
- Feature: Autoreplace Vehicles (accessible from the vehicle lists)
This feature works much like autorenew, but it will get you a new engine type instead of a new one of the same type. Once
ordered, it will automatically replace the engines while they visits a depot. The GUI for setting this up have been added on the
vehicle overview windows (Bjarni)
- Feature: A counter to tell how many engines you have of each type to the autoreplace vehicle windows (Bjarni)
- Feature: A display for the total map population to the town display
- Feature: [network] RCon (Remote Connection).
A server can set: 'set rcon_pw <password>' to enable rcon
A client can now do: 'rcon <password> "<command>"'
!!Warning!!: do not give your rcon password to people you do not thrust!
- Feature: hotkeys for dock and airport toolbar (see http://wiki.openttd.org/index.php/Hotkeys)
- Feature: [Network] banning system (mostly tnx to guru3) A server can ban people via ClientList using 'ban', 'unban', 'banlist'.
- Feature: [Network] server can now pause and unpause a game through the console. Use 'pause' and 'unpause'
- Feature: [OS/2] OS/2 support is now finished (Fixes for networking, file selection, keyboard input, plus many other minor issues)
- Feature: [SDL] Show revision number in window title
- Feature: [Unix] Check which gcc version is present and only set available compiler flags
- Feature: [Windows] CTRL+V (Paste) now works on all editboxes. This includes 'Add Server', chat, etc.
- Feature: [Windows] dedicated server is now functioning correctly
- Feature: Addded keyboard shortcuts for the order window
- Feature: Aircraft refit options have been restricted to "sane" values.
- Feature: allows setting the production values of the rawmaterial producing industries in the editor
- Feature: console support for loading maps. Use 'load', 'list_files' and 'goto_dir' to navigate and load games.
- Feature: Display server port in the multiplayer game info window
- Feature: dynamite in landscaping toolbar (hotkey 'D')
- Feature: Improved Network Lobby GUI with a green dot if company income is positive (else red dot) and lock icon if company is password protected
- Feature: Make ottd compile on Zeta
- Feature: MD5 hash check for TTD files (The original TTD files are now checked with a MD5 sum to determine which version of the grf files is used and to warn about possible file corruptions. Thanks to ledow for the original patch)
- Feature: New companies receive a 5-year protection period against buying-up
- Feature: norwegian townnames (Simen Graaten)
- Feature: Order Checking is only execute for ONE vehicle in an order-share system
- Feature: Passengers aircraft now ignore the amount of mail for "full load any" options
- Feature: place multiple accepting industies nearby in the editor mode if the appropriate patches are set
- Feature: population in label of the town (patch setting)
- Feature: scrolling credits list (in alphabetical order)
- Feature: Train window now shows the number of vehicles per row (mpetrov)
- Feature: [ 1039061 ] Swiss town-names (vulvulune)
- Feature: [ 1090950 ] Adding 16:10 resolutions for mainly laptops (doode)
- Feature: [ 1098254 ] (dis)Allow Shares. Add patch options to allow buying/selling of shares (Hackykid)
- Fix: [ 1031451 ] Catchment area shows when buying sign
- Fix: [ 1040119 ] Flood and wagons in depot
- Fix: [ 1050990 ] Buying trains sometimes accounted for incorrectly.
- Fix: [ 1084074 ] Delayed news messages
- Fix: [ 1090495 ] Slopes under high bridges weren't flooded
- Fix: [ 1092473 ] In scenario editor, when trees are placed randomly, they are no longer placed on farmland
- Fix: [ 1092661 ] On create, the scrollbar of the server-list was not updated
- Fix: [ 1092707 ] placing rocks in scenario editor. You can place rocks on trees and vice versa
- Fix: [ 1093200 ] Drive side in new games. Setting the driver side is possible during the game until someone buys road vehicles. In networked games only the server can change it.
- Fix: [ 1093466 ] no more glitches with many maps in the scenario list when creating server
- Fix: [ 1093485 ] Dissappearing rocks in Scenario Editor
- Fix: [ 1094092 ] Toolbars accessible via keyboard in spectator mode
- Fix: [ 1095020 ] When all stations in an aircraft's order list are demolished, the plane eventually crashes (running out of fuel)
- Fix: [ 1095143 ] Servers list now also saves the port
- Fix: [ 1098553 ] Crash when all vehicles from a vehicles per station list had been removed
- Fix: [ 1099101 ] starting year patch goes out of range. Clamped year between 1920-2090
- Fix: [ 1099225 ] Bug Fix - Vehicle Lists not updated at Acqusition (thx tamlin and mpetrov)
- Fix: [ 1099451 ] Game crashes after the click on Rename (see also Bug 10992). There was no check for non-selected engine
- Fix: [ 1100736 ] wrong tooltip for place desert button
- Fix: [ 1100767 ] fast forward in main menu
- Fix: [ 1101179 ] Crash if generating land while industry window is open. This also happened for towns and the land information window
- Fix: [ 1101906 ] Configure Patches window text overflow
- Fix: [ 1101963 ] console in dedicated server
- Fix: [ 1102275 ] Game crashed when clicking "new face" or "company color" twice
- Fix: [ 1102776 ], [ 1099535 ] Vehicle lists are now redrawn when a vehicle arrives in a depot. Station-specific vehicle lists are now redrawn daily as well (not only the master list)
- Fix: [ 1103113 ] font size changing. Dedicated server did not have code filtering, 'tab' could result in bigger fonts
- Fix: [ 1103187 ] Order Check messages are now validated before displayed
- Fix: [ 1103301 ] Railroad tracks on slopes weren't flooded
- Fix: [ 1104350 ] Crashed trains do not initiate the lost vehicle message anymore
- Fix: [ 110452 ] On horizontal/vertical tracks you are also charged for building/removing signals on the parallel track on the same tile.
- Fix: [ 1104969 ] Aircraft in hangar messages are now revalidated before display
- Fix: [ 1105112 ] Destroyed train locks crossings
- Fix: [ 1105281 ] upgrade rail fails when train under bridge
- Fix: [ 1105959 ] Trains don't think they're on a slope any more while they drive around in a tunnel
- Fix: [ 1105963 ] Buoys can now only be removed if no ship has it in their schedule. (This makes buoys more useable in multiplayer games again, as buoys can't be deleted by other players if they are used.)
- Fix: [ 1106354 ] Graph's keys get confused
- Fix: [ 1106930 ] placing signals with 2x1 drags is treated as placing a single signal
- Fix: [ 1107350 ] console ignoring return character occasionally.
- Fix: [ 1108008 ] Scenario creation bug; engines are of correct year when scenario is saved
- Fix: [ 1092474 ] little red box in scenario editor
- Fix: [ 1099197 ] scrolling through console sometimes crashed the whole game.
- Fix: [ 1099209 ] Catchment area with drag&drop stations
- Fix: [Network] 'kick 1' did crash dedicated servers
- Fix: [Network] A server no longer crashes when a client sends an invalid DoCommand, but drops the client instead.
- Fix: [Network] Added packet protection. No longer a client or server
- Fix: [Network] Bug in bind system. Advertising failed on systems with more then 1 ip, and server_bind active to one of them.
- Fix: [Network] Disabled 'money-cheat' (read: bug which could give people a lot of money)
- Fix: [SDL] now the binary never links to SDL if DEDICATED is set.
- Fix: [Windows] somehow mousewheel was disabled on windows using SDL; reenabled again
- Fix: a modified client could try to replace a vehicle to an invalid engine ID and crash the server.
- Fix: autoreplace vehicle lists are now redrawn when a new vehicle becomes available
- Fix: Buy Vehicle GUI now shows HPs bigger than 32000 correctly
- Fix: Console alias, load_game functionality and load fix
- Fix: correct error message for when trying to build a railroad station over a bus/truck/etc-station.
- Fix: Correct landscaping buttons in monorail and maglev toolbars
- Fix: dedicated server also writes to log file if active
- Fix: Desert-landscape does no longer crash
- Fix: Expand town is a bit more agressive
- Fix: finally zooming in/out always works.
- Fix: fixed chat-bug (that from a certain moment, nobody could talk)
- Fix: fixed weight for double-head trains and with that the acceleration (now maglev lvl4 can reach their top speed, and are faster than lvl3)
- Fix: Full-Loading trains no longer get "lost" after a while (Hackykid)
- Fix: Graphs were not updated correctly when one graph with a certain selection was already open and another graph window was opened
- Fix: in multiplayer clientlist can only be opened once
- Fix: Loan does not count against the company value
- Fix: nasty bug where one could build one station OVER the other
- Fix: No crash when creating a game with New English town names any more
- Fix: now helicopters will use a hangar in schedule to be replaced in, even if they are only set to service there. Since helicopters are serviced at helipads, they will only go there if they needs to be replaced or renewed. They will also use a hangar in an airport in the schedule if needed. (Bjarni)
- Fix: only a server can rename a town in a MP game
- Fix: really old maps do load again (Darkvater / TrueLight)
- Fix: Refit engine button is now disabled when cargo capacity equals zero
- Fix: server issue where some company names were wrong
- Fix: Ship Vehicle Lists are now redrawn correctly
- Fix: signal stays red if a track is removed (Darkvater / Tron / TrueLight)
- Fix: solve AI related order-problem
- Fix: starting openttd with -g <invalid_name> now acts normal
- Fix: The cost for an autorenew was not always send to the right player ;)
- Fix: Autorenewing multiheaded train engines now costs the correct amount. Used to be twice the correct price
- Fix: the scrollbar in the network gui (server list) now updates when scrolling (HackyKid)
- Fix: Train crashes should no longer desync the game.
- Fix: When deleting an order, the next pointer was not cleared, resulting in some unusual behavoir from time to time
- Fix: You can now also delete automatically found servers by pressing "del"
- Fix: You should no longer be able to delete bridges on any type of underground when there is a vehicle on it
- Fix: your loan is now substracted from your company value
- Add: A brand new set of icons.
- Change: AutoRenew is now a client-side patch instead of a game-side patch
- Change: Removed the 'close ALL windows' from the toolbar since shift+del does this.
- Language: Updated all languages
- Fix: Many more things....
0.3.5 (2004-12-24)
------------------------------------------------------------------------
- Feature: [Network] New network, very stable, a lot of new features
+47 -37
View File
@@ -30,7 +30,7 @@ static int TerraformAllowTileProcess(TerraformerState *ts, TileIndex tile)
TileIndex *t;
int count;
if ((GET_TILE_X(tile) == TILE_X_MAX) || (GET_TILE_Y(tile) == TILE_Y_MAX))
if (TileX(tile) == MapMaxX() || TileY(tile) == MapMaxY())
return -1;
t = ts->tile_table;
@@ -52,7 +52,7 @@ static int TerraformGetHeightOfTile(TerraformerState *ts, TileIndex tile)
return mod->height;
}
return _map_type_and_height[tile] & 0xF;
return TileHeight(tile);
}
static void TerraformAddDirtyTile(TerraformerState *ts, TileIndex tile)
@@ -86,12 +86,12 @@ static int TerraformProc(TerraformerState *ts, uint tile, int mode)
int r;
int32 ret;
assert(tile < TILES_X * TILES_Y);
assert(tile < MapSize());
if ((r=TerraformAllowTileProcess(ts, tile)) <= 0)
return r;
if ((_map_type_and_height[tile] >> 4) == MP_RAILWAY) {
if (IsTileType(tile, MP_RAILWAY)) {
static const byte _railway_modes[4] = {8, 0x10, 4, 0x20};
static const byte _railway_dangslopes[4] = {0xd, 0xe, 7, 0xb};
static const byte _railway_dangslopes2[4] = {0x2, 0x1, 0x8, 0x4};
@@ -135,7 +135,7 @@ static bool TerraformTileHeight(TerraformerState *ts, uint tile, int height)
TerraformerHeightMod *mod;
int count;
assert(tile < TILES_X * TILES_Y);
assert(tile < MapSize());
if (height < 0) {
_error_message = STR_1003_ALREADY_AT_SEA_LEVEL;
@@ -186,12 +186,17 @@ static bool TerraformTileHeight(TerraformerState *ts, uint tile, int height)
{
int direction = ts->direction, r;
const TileIndexDiff *ttm;
const TileIndexDiffC *ttm;
static const TileIndexDiff _terraform_tilepos[5] = {TILE_XY(1,0), TILE_XY(-2,0), TILE_XY(1,1), TILE_XY(0,-2), 0 };
static const TileIndexDiffC _terraform_tilepos[] = {
{ 1, 0},
{-2, 0},
{ 1, 1},
{ 0, -2}
};
for(ttm = _terraform_tilepos; *ttm != 0; ttm++) {
tile += *ttm;
for(ttm = _terraform_tilepos; ttm != endof(_terraform_tilepos); ttm++) {
tile += ToTileIndexDiff(*ttm);
r = TerraformGetHeightOfTile(ts, tile);
if (r != height && r-direction != height && r+direction != height) {
@@ -234,25 +239,25 @@ int32 CmdTerraformLand(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (p1 & 1) {
if (!TerraformTileHeight(&ts, tile+TILE_XY(1,0),
(_map_type_and_height[tile+TILE_XY(1,0)]&0xF) + direction))
TileHeight(tile + TILE_XY(1, 0)) + direction))
return CMD_ERROR;
}
if (p1 & 2) {
if (!TerraformTileHeight(&ts, tile+TILE_XY(1,1),
(_map_type_and_height[tile+TILE_XY(1,1)]&0xF) + direction))
TileHeight(tile + TILE_XY(1, 1)) + direction))
return CMD_ERROR;
}
if (p1 & 4) {
if (!TerraformTileHeight(&ts, tile+TILE_XY(0,1),
(_map_type_and_height[tile+TILE_XY(0,1)]&0xF) + direction))
TileHeight(tile + TILE_XY(0, 1)) + direction))
return CMD_ERROR;
}
if (p1 & 8) {
if (!TerraformTileHeight(&ts, tile+TILE_XY(0,0),
(_map_type_and_height[tile+TILE_XY(0,0)]&0xF) + direction))
TileHeight(tile + TILE_XY(0, 0)) + direction))
return CMD_ERROR;
}
@@ -298,9 +303,7 @@ int32 CmdTerraformLand(int x, int y, uint32 flags, uint32 p1, uint32 p2)
for(count = ts.modheight_count; count != 0; count--, mod++) {
til = mod->tile;
// Change tile height
_map_type_and_height[til] = (_map_type_and_height[til]&~0x0F)|mod->height;
SetTileHeight(til, mod->height);
TerraformAddDirtyTileAround(&ts, til);
}
}
@@ -330,14 +333,16 @@ int32 CmdLevelLand(int ex, int ey, uint32 flags, uint32 p1, uint32 p2)
uint tile;
int32 ret, cost, money;
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
// remember level height
h = _map_type_and_height[p1]&0xF;
h = TileHeight(p1);
ex >>= 4; ey >>= 4;
// make sure sx,sy are smaller than ex,ey
sx = GET_TILE_X(p1);
sy = GET_TILE_Y(p1);
sx = TileX(p1);
sy = TileY(p1);
if (ex < sx) intswap(ex, sx);
if (ey < sy) intswap(ey, sy);
tile = TILE_XY(sx,sy);
@@ -349,7 +354,7 @@ int32 CmdLevelLand(int ex, int ey, uint32 flags, uint32 p1, uint32 p2)
cost = 0;
BEGIN_TILE_LOOP(tile2, size_x, size_y, tile)
curh = _map_type_and_height[tile2]&0xF;
curh = TileHeight(tile2);
while (curh != h) {
ret = DoCommandByTile(tile2, 8, (curh > h)?0:1, flags & ~DC_EXEC, CMD_TERRAFORM_LAND);
if (ret == CMD_ERROR) break;
@@ -388,7 +393,7 @@ int32 CmdPurchaseLandArea(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (!EnsureNoVehicle(tile))
return CMD_ERROR;
if (IS_TILETYPE(tile, MP_UNMOVABLE) &&
if (IsTileType(tile, MP_UNMOVABLE) &&
_map5[tile] == 3 &&
_map_owner[tile] == _current_player)
return_cmd_error(STR_5807_YOU_ALREADY_OWN_IT);
@@ -408,7 +413,8 @@ int32 CmdPurchaseLandArea(int x, int y, uint32 flags, uint32 p1, uint32 p2)
}
int32 ClearTile_Clear(uint tile, byte flags) {
static int32 ClearTile_Clear(uint tile, byte flags)
{
static const int32 * _clear_price_table[] = {
NULL,
&_price.clear_1, &_price.clear_1,&_price.clear_1,
@@ -518,9 +524,12 @@ static void DrawTile_Clear(TileInfo *ti)
DrawClearLandFence(ti, _map3_hi[ti->tile] >> 2);
}
uint GetSlopeZ_Clear(TileInfo *ti) { return GetPartialZ(ti->x&0xF, ti->y&0xF, ti->tileh) + ti->z; }
static uint GetSlopeZ_Clear(TileInfo *ti)
{
return GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh) + ti->z;
}
uint GetSlopeTileh_Clear(TileInfo *ti)
static uint GetSlopeTileh_Clear(TileInfo *ti)
{
return ti->tileh;
}
@@ -542,16 +551,16 @@ void TileLoopClearHelper(uint tile)
uint dirty = -1;
img_1 = 0;
if (IS_TILETYPE(tile, MP_CLEAR)) {
if (IsTileType(tile, MP_CLEAR)) {
img_1 = img_by_map5[(_map5[tile] & 0x1C) >> 2];
} else if (IS_TILETYPE(tile, MP_TREES) && (_map2[tile] & 0x30) == 0x20) {
} else if (IsTileType(tile, MP_TREES) && (_map2[tile] & 0x30) == 0x20) {
img_1 = 1;
}
img_2 = 0;
if (IS_TILETYPE(TILE_ADDXY(tile, 1, 0), MP_CLEAR)) {
if (IsTileType(TILE_ADDXY(tile, 1, 0), MP_CLEAR)) {
img_2 = img_by_map5[(_map5[TILE_ADDXY(tile, 1, 0)] & 0x1C) >> 2];
} else if (IS_TILETYPE(TILE_ADDXY(tile, 1, 0), MP_TREES) && (_map2[TILE_ADDXY(tile, 1, 0)] & 0x30) == 0x20) {
} else if (IsTileType(TILE_ADDXY(tile, 1, 0), MP_TREES) && (_map2[TILE_ADDXY(tile, 1, 0)] & 0x30) == 0x20) {
img_2 = 1;
}
@@ -568,9 +577,9 @@ void TileLoopClearHelper(uint tile)
}
img_2 = 0;
if (IS_TILETYPE(TILE_ADDXY(tile, 0, 1), MP_CLEAR)) {
if (IsTileType(TILE_ADDXY(tile, 0, 1), MP_CLEAR)) {
img_2 = img_by_map5[(_map5[TILE_ADDXY(tile, 0, 1)] & 0x1C) >> 2];
} else if (IS_TILETYPE(TILE_ADDXY(tile, 0, 1), MP_TREES) && (_map2[TILE_ADDXY(tile, 0, 1)] & 0x30) == 0x20) {
} else if (IsTileType(TILE_ADDXY(tile, 0, 1), MP_TREES) && (_map2[TILE_ADDXY(tile, 0, 1)] & 0x30) == 0x20) {
img_2 = 1;
}
@@ -586,7 +595,7 @@ void TileLoopClearHelper(uint tile)
}
}
if (dirty != -1)
if (dirty != (uint) -1)
MarkTileDirtyByTile(dirty);
}
@@ -724,7 +733,7 @@ static void TileLoop_Clear(uint tile)
MarkTileDirtyByTile(tile);
}
void GenerateClearTile()
void GenerateClearTile(void)
{
int i,j;
uint tile,tile_new;
@@ -734,7 +743,7 @@ void GenerateClearTile()
i = (Random() & 0x3FF) | 0x400;
do {
tile = TILE_MASK(Random());
if (IS_TILETYPE(tile, MP_CLEAR))
if (IsTileType(tile, MP_CLEAR))
_map5[tile] = (byte)((_map5[tile] & ~(3<<2)) | (1<<2));
} while (--i);
@@ -743,14 +752,14 @@ void GenerateClearTile()
do {
r = Random();
tile = TILE_MASK(r);
if (IS_TILETYPE(tile, MP_CLEAR)) {
if (IsTileType(tile, MP_CLEAR)) {
j = ((r >> 16) & 0xF) + 5;
for(;;) {
_map5[tile] = (byte)((_map5[tile] & ~(3<<2)) | (2<<2));
do {
if (--j == 0) goto get_out;
tile_new = tile + _tileoffs_by_dir[Random() & 3];
} while (!IS_TILETYPE(tile_new, MP_CLEAR));
tile_new = tile + TileOffsByDir(Random() & 3);
} while (!IsTileType(tile_new, MP_CLEAR));
tile = tile_new;
}
get_out:;
@@ -796,7 +805,8 @@ static void ChangeTileOwner_Clear(uint tile, byte old_player, byte new_player)
return;
}
void InitializeClearLand() {
void InitializeClearLand(void)
{
_opt.snow_line = _patches.snow_line_height * 8;
}
+26 -11
View File
@@ -167,6 +167,8 @@ DEF_COMMAND(CmdStartScenario);
DEF_COMMAND(CmdBuildManySignals);
DEF_COMMAND(CmdReplaceVehicle);
/* The master command table */
static CommandProc * const _command_proc_table[] = {
CmdBuildRailroadTrack, /* 0 */
@@ -307,11 +309,23 @@ static CommandProc * const _command_proc_table[] = {
CmdDestroyCompanyHQ, /* 111 */
CmdGiveMoney, /* 112 */
CmdChangePatchSetting, /* 113 */
CmdReplaceVehicle, /* 114 */
};
/* This function range-checks a cmd, and checks if the cmd is not NULL */
bool IsValidCommand(uint cmd)
{
cmd = cmd & 0xFF;
if (cmd >= lengthof(_command_proc_table) || _command_proc_table[cmd] == NULL)
return false;
return true;
}
int32 DoCommandByTile(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc)
{
return DoCommand(GET_TILE_X(tile)*16, GET_TILE_Y(tile)*16, p1, p2, flags, procc);
return DoCommand(TileX(tile) * 16, TileY(tile) * 16, p1, p2, flags, procc);
}
@@ -353,8 +367,8 @@ int32 DoCommand(int x, int y, uint32 p1, uint32 p2, uint32 flags, uint procc)
}
}
// execute the command here.
_yearly_expenses_type = 0;
/* Execute the command here. All cost-relevant functions set the expenses type
* themselves with "SET_EXPENSES_TYPE(...);" at the beginning of the function */
res = proc(x, y, flags, p1, p2);
if ((uint32)res >> 16 == 0x8000) {
if (res & 0xFFFF) _error_message = res & 0xFFFF;
@@ -371,7 +385,7 @@ error:
return res;
}
int32 GetAvailableMoneyForCommand()
int32 GetAvailableMoneyForCommand(void)
{
uint pid = _current_player;
if (pid >= MAX_PLAYERS) return 0x7FFFFFFF; // max int
@@ -387,8 +401,8 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
uint32 flags;
bool notest;
int x = GET_TILE_X(tile)*16;
int y = GET_TILE_Y(tile)*16;
int x = TileX(tile) * 16;
int y = TileY(tile) * 16;
assert(_docommand_recursive == 0);
@@ -410,7 +424,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
assert((cmd & 0xFF) < lengthof(_command_proc_table));
proc = _command_proc_table[cmd & 0xFF];
// Some commands have a different output in dryrun then the realrun
// Some commands have a different output in dryrun than the realrun
// e.g.: if you demolish a whole town, the dryrun would say okay.
// but by really destroying, your rating drops and at a certain point
// it will fail. so res and res2 are different
@@ -428,7 +442,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
_docommand_recursive = 1;
// cost estimation only?
if (_shift_pressed && _current_player == _local_player && !(cmd & CMD_NETWORK_COMMAND)) {
if (_shift_pressed && _current_player == _local_player && !(cmd & (CMD_NETWORK_COMMAND | CMD_SHOW_NO_ERROR))) {
// estimate the cost.
res = proc(x, y, flags, p1, p2);
if ((uint32)res >> 16 == 0x8000) {
@@ -467,11 +481,12 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
// update last build coordinate of player.
if ( tile != 0 && _current_player < MAX_PLAYERS) DEREF_PLAYER(_current_player)->last_build_coordinate = tile;
// actually try and execute the command.
_yearly_expenses_type = 0;
/* Actually try and execute the command. If no cost-type is given
* use the construction one */
_yearly_expenses_type = EXPENSES_CONSTRUCTION;
res2 = proc(x,y, flags|DC_EXEC, p1, p2);
// If notest is on, it means the result of the test can be different then
// If notest is on, it means the result of the test can be different than
// the real command.. so ignore the test
if (!notest && !((cmd & CMD_NO_TEST_IF_IN_NETWORK) && _networking)) {
assert(res == res2); // sanity check
+5 -1
View File
@@ -148,6 +148,8 @@ enum {
CMD_DESTROY_COMPANY_HQ = 111,
CMD_GIVE_MONEY = 112,
CMD_CHANGE_PATCH_SETTING = 113,
CMD_REPLACE_VEHICLE = 114,
};
enum {
@@ -170,6 +172,7 @@ enum {
CMD_NO_WATER = 0x400,
CMD_NETWORK_COMMAND = 0x800, // execute the command without sending it on the network
CMD_NO_TEST_IF_IN_NETWORK = 0x1000, // When enabled, the command will bypass the no-DC_EXEC round if in network
CMD_SHOW_NO_ERROR = 0x2000,
};
//#define return_cmd_error(errcode) do { _error_message=(errcode); return CMD_ERROR; } while(0)
@@ -179,6 +182,7 @@ enum {
int32 DoCommand(int x, int y, uint32 p1, uint32 p2, uint32 flags, uint procc);
int32 DoCommandByTile(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc);
int32 GetAvailableMoneyForCommand();
bool IsValidCommand(uint cmd);
int32 GetAvailableMoneyForCommand(void);
#endif /* COMMAND_H */
+51 -18
View File
@@ -11,6 +11,8 @@
#include <string.h>
#include "console.h"
#include "network.h"
#include "network_data.h"
#include "network_server.h"
#ifdef WIN32
#include <windows.h>
@@ -94,9 +96,6 @@ static void IConsoleClearCommand(void)
static void IConsoleWndProc(Window* w, WindowEvent* e)
{
// only do window events with the console
w = FindWindowById(WC_CONSOLE, 0);
switch(e->event) {
case WE_PAINT:
{
@@ -104,7 +103,7 @@ static void IConsoleWndProc(Window* w, WindowEvent* e)
int max = (w->height / ICON_LINE_HEIGHT) - 1;
int delta = 0;
GfxFillRect(w->left, w->top, w->width, w->height - 1, 0);
while ((i > _iconsole_scroll - max) && (_iconsole_buffer[i] != NULL)) {
while ((i > 0) && (i > _iconsole_scroll - max) && (_iconsole_buffer[i] != NULL)) {
DoDrawString(_iconsole_buffer[i], 5,
w->height - (_iconsole_scroll + 2 - i) * ICON_LINE_HEIGHT, _iconsole_cbuffer[i]);
i--;
@@ -193,9 +192,8 @@ static void IConsoleWndProc(Window* w, WindowEvent* e)
IConsolePrintF(_iconsole_color_commands, "] %s", _iconsole_cmdline);
_iconsole_cmdbufferpos = 19;
IConsoleCmdBufferAdd(_iconsole_cmdline);
if (strlen(_iconsole_cmdline) != 0) // only execute if there is something typed obviously
IConsoleCmdExec(_iconsole_cmdline);
IConsoleCmdExec(_iconsole_cmdline);
IConsoleClearCommand();
break;
case WKC_CTRL | WKC_RETURN:
@@ -272,15 +270,39 @@ void IConsoleClear(void)
free(_iconsole_buffer[i]);
}
static void IConsoleWriteToLogFile(const char* string)
{
if (_iconsole_output_file != NULL) {
// if there is an console output file ... also print it there
fwrite(string, strlen(string), 1, _iconsole_output_file);
fwrite("\n", 1, 1, _iconsole_output_file);
}
}
bool CloseConsoleLogIfActive(void)
{
if (_iconsole_output_file != NULL) {
IConsolePrintF(_iconsole_color_default, "file output complete");
fclose(_iconsole_output_file);
_iconsole_output_file = NULL;
return true;
}
return false;
}
void IConsoleFree(void)
{
_iconsole_inited = false;
IConsoleClear();
if (_iconsole_output_file != NULL) fclose(_iconsole_output_file);
CloseConsoleLogIfActive();
}
void IConsoleResize(void)
{
_iconsole_win = FindWindowById(WC_CONSOLE, 0);
switch (_iconsole_mode) {
case ICONSOLE_OPENED:
_iconsole_win->height = _screen.height / 3;
@@ -293,6 +315,8 @@ void IConsoleResize(void)
default:
break;
}
MarkWholeScreenDirty();
}
void IConsoleSwitch(void)
@@ -315,6 +339,8 @@ void IConsoleSwitch(void)
_iconsole_mode = ICONSOLE_CLOSED;
break;
}
MarkWholeScreenDirty();
}
void IConsoleClose(void)
@@ -368,8 +394,15 @@ void IConsolePrint(uint16 color_code, const char* string)
char* i;
int j;
if (_redirect_console_to_client != 0) {
/* Redirect the string to the client */
SEND_COMMAND(PACKET_SERVER_RCON)(NetworkFindClientStateFromIndex(_redirect_console_to_client), color_code, string);
return;
}
if (_network_dedicated) {
printf("%s\n", string);
IConsoleWriteToLogFile(string);
return;
}
@@ -391,11 +424,7 @@ void IConsolePrint(uint16 color_code, const char* string)
}
free(_ex);
if (_iconsole_output_file != NULL) {
// if there is an console output file ... also print it there
fwrite(string, strlen(string), 1, _iconsole_output_file);
fwrite("\n", 1, 1, _iconsole_output_file);
}
IConsoleWriteToLogFile(string);
if (_iconsole_win != NULL) SetWindowDirty(_iconsole_win);
}
@@ -562,7 +591,8 @@ _iconsole_alias* IConsoleAliasGet(const char* name)
return NULL;
}
void IConsoleAliasExec(const char* cmdline, char* tokens[20], byte tokentypes[20]) {
static void IConsoleAliasExec(const char* cmdline, char* tokens[20], byte tokentypes[20])
{
char* lines[ICON_MAX_ALIAS_LINES];
char* linestream;
char* linestream_s;
@@ -625,9 +655,10 @@ void IConsoleAliasExec(const char* cmdline, char* tokens[20], byte tokentypes[20
x += l2+1;
t++;
}
linestream--;
*linestream = '"';
linestream++;
x += 2;
x += 1;
} else {
// one specific parameter: %A = [param 1] %B = [param 2] ...
int l2;
@@ -908,7 +939,6 @@ void IConsoleVarDump(const _iconsole_var* var, const char* dump_desc)
IConsolePrintF(_iconsole_color_default, "%s = %s",
dump_desc, *var->data.bool_ ? "true" : "false");
break;
break;
case ICONSOLE_VAR_BYTE:
case ICONSOLE_VAR_UINT8:
IConsolePrintF(_iconsole_color_default, "%s = %u",
@@ -1057,9 +1087,12 @@ void IConsoleCmdExec(const char* cmdstr)
bool valid_token;
bool skip_lt_change;
int c;
int i;
int l;
uint c;
uint i;
uint l;
if (strlen(cmdstr) == 0) // only execute if there is something typed obviously
return;
if (_stdlib_con_developer)
IConsolePrintF(_iconsole_color_debug, "CONDEBUG: execution_cmdline: %s", cmdstr);
+335 -22
View File
@@ -11,6 +11,7 @@
#include "network_udp.h"
#include "command.h"
#include "settings.h"
#include "hal.h" /* for file list */
// ** scriptfile handling ** //
@@ -138,12 +139,280 @@ DEF_CONSOLE_CMD(ConScrollToTile)
return 0;
}
extern bool SafeSaveOrLoad(const char *filename, int mode, int newgm);
extern void BuildFileList(void);
extern void SetFiosType(const byte fiostype);
/* Load a file-number from current dir */
static void LoadMap(uint no)
{
/* Build file list */
BuildFileList();
/* Check if in range */
if (no != 0 && no <= (uint)_fios_num) {
const FiosItem *item = &_fios_list[no - 1];
if (item->type == FIOS_TYPE_FILE) {
/* Load the file */
_switch_mode = SM_LOAD;
SetFiosType(item->type);
strcpy(_file_to_saveload.name, FiosBrowseTo(item));
IConsolePrint(_iconsole_color_default, "Loading map...");
} else
IConsolePrint(_iconsole_color_error, "That is not a map.");
} else /* Show usages */
IConsolePrint(_iconsole_color_error, "Unknown map. Use 'list_files' and 'goto_dir' to find the numbers of the savegame.");
/* Free the file-list */
FiosFreeSavegameList();
}
/* Load a file from a map */
DEF_CONSOLE_CMD(ConLoad)
{
/* We need 1 argument */
if (argc == 2) {
/* Load the map */
LoadMap(atoi(argv[1]));
return NULL;
}
/* Give usage */
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: load <file-no>");
return NULL;
}
/* List all the files in the current dir via console */
DEF_CONSOLE_CMD(ConListFiles)
{
const FiosItem *item;
int pos = 0;
/* Build the file-list */
BuildFileList();
/* As long as we have files */
while (pos < _fios_num) {
item = _fios_list + pos;
pos++;
/* Show them */
IConsolePrintF(_iconsole_color_default, "%d) %s", pos, item->title[0] ? item->title : item->name);
}
/* Destroy the file list */
FiosFreeSavegameList();
return NULL;
}
/* Get an Specific file */
DEF_CONSOLE_CMD(ConScanFiles)
{
const FiosItem *item;
int pos = 0;
_iconsole_var* result;
result = IConsoleVarAlloc(ICONSOLE_VAR_STRING);
if (argc <= 1) {
IConsoleVarSetString(result, "0");
return result; // return an zero
}
/* Build the file-list */
BuildFileList();
/* As long as we have files */
while (pos < _fios_num) {
item = _fios_list + pos;
pos++;
if (strcmp(argv[1], "..") == 0) {
if (item->type == FIOS_TYPE_PARENT) {
// huh we are searching for the parent directory
char buffer[10];
sprintf(buffer, "%d", pos);
IConsoleVarSetString(result, buffer);
return result;
}
} else
// file records ?
if (item->type == FIOS_TYPE_FILE) {
if (strcmp(argv[1], item->name) == 0) {
char buffer[10];
sprintf(buffer, "%d", pos);
IConsoleVarSetString(result, buffer);
return result;
}
}
}
/* Destroy the file list */
FiosFreeSavegameList();
return NULL;
}
/* Change the dir via console */
DEF_CONSOLE_CMD(ConGotoDir)
{
char *file;
int no;
/* We need 1 argument */
if (argc != 2) {
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: goto_dir <dir-no>");
return NULL;
}
no = atoi(argv[1]);
/* Make the file list */
BuildFileList();
/* Check if we are in range */
if (no != 0 && no <= _fios_num) {
const FiosItem *item = &_fios_list[no - 1];
/* Only DIR and PARENT we do allow here */
if (item->type == FIOS_TYPE_DIR || item->type == FIOS_TYPE_PARENT) {
/* Goto the map */
file = FiosBrowseTo(item);
FiosFreeSavegameList();
return NULL;
}
}
/* Report error */
IConsolePrint(_iconsole_color_default, "That number is no directory.");
FiosFreeSavegameList();
return NULL;
}
// ********************************* //
// * Network Core Console Commands * //
// ********************************* //
#ifdef ENABLE_NETWORK
DEF_CONSOLE_CMD(ConBan)
{
NetworkClientInfo *ci;
if (argc == 2) {
uint32 index = atoi(argv[1]);
if (index == NETWORK_SERVER_INDEX) {
IConsolePrint(_iconsole_color_default, "Silly boy, you can not ban yourself!");
return NULL;
}
if (index == 0) {
IConsoleError("Invalid Client-ID");
return NULL;
}
ci = NetworkFindClientInfoFromIndex(index);
if (ci != NULL) {
uint i;
/* Add user to ban-list */
for (i = 0; i < lengthof(_network_ban_list); i++) {
if (_network_ban_list[i] == NULL || _network_ban_list[i][0] == '\0') {
_network_ban_list[i] = strdup(inet_ntoa(*(struct in_addr *)&ci->client_ip));
break;
}
}
SEND_COMMAND(PACKET_SERVER_ERROR)(NetworkFindClientStateFromIndex(index), NETWORK_ERROR_KICKED);
return NULL;
} else {
IConsoleError("Client-ID not found");
return NULL;
}
}
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: ban <client-id>. For client-ids, see 'clients'.");
return NULL;
}
DEF_CONSOLE_CMD(ConUnBan)
{
if (argc == 2) {
uint i;
for (i = 0; i < lengthof(_network_ban_list); i++) {
if (_network_ban_list[i] == NULL || _network_ban_list[i][0] == '\0')
continue;
if (strncmp(_network_ban_list[i], argv[1], strlen(_network_ban_list[i])) == 0) {
_network_ban_list[i][0] = '\0';
IConsolePrint(_iconsole_color_default, "IP unbanned.");
return NULL;
}
}
IConsolePrint(_iconsole_color_default, "IP not in ban-list.");
return NULL;
}
IConsolePrint(_iconsole_color_default, "Unknown usage. Usage: unban <ip>.");
return NULL;
}
DEF_CONSOLE_CMD(ConBanList)
{
uint i;
IConsolePrint(_iconsole_color_default, "Banlist: ");
for (i = 0; i < lengthof(_network_ban_list); i++) {
if (_network_ban_list[i] == NULL || _network_ban_list[i][0] == '\0')
continue;
IConsolePrintF(_iconsole_color_default, " %d) %s", i + 1, _network_ban_list[i]);
}
return NULL;
}
DEF_CONSOLE_CMD(ConPauseGame)
{
if (_pause == 0) {
DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
IConsolePrint(_iconsole_color_default, "Game paused.");
} else
IConsolePrint(_iconsole_color_default, "Game is already paused.");
return NULL;
}
DEF_CONSOLE_CMD(ConUnPauseGame)
{
if (_pause != 0) {
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
IConsolePrint(_iconsole_color_default, "Game unpaused.");
} else
IConsolePrint(_iconsole_color_default, "Game is already unpaused.");
return NULL;
}
DEF_CONSOLE_CMD(ConRcon)
{
if (argc < 3) {
IConsolePrint(_iconsole_color_default, "Usage: rcon <password> <command>");
return NULL;
}
SEND_COMMAND(PACKET_CLIENT_RCON)(argv[1], argv[2]);
return NULL;
}
DEF_CONSOLE_CMD(ConStatus)
{
const char *status;
@@ -190,7 +459,7 @@ DEF_CONSOLE_CMD(ConKick)
if (argc == 2) {
uint32 index = atoi(argv[1]);
if (index == NETWORK_SERVER_INDEX && !_network_dedicated) {
if (index == NETWORK_SERVER_INDEX) {
IConsolePrint(_iconsole_color_default, "Silly boy, you can not kick yourself!");
return NULL;
}
@@ -222,7 +491,7 @@ DEF_CONSOLE_CMD(ConResetCompany)
NetworkClientInfo *ci;
if (argc == 2) {
uint32 index = atoi(argv[1]);
byte index = atoi(argv[1]);
/* Check valid range */
if (index < 1 || index > MAX_PLAYERS) {
@@ -360,20 +629,18 @@ DEF_CONSOLE_CMD(ConReturn)
/* **************************** */
/* default console commands */
/* **************************** */
extern bool CloseConsoleLogIfActive(void);
DEF_CONSOLE_CMD(ConScript)
{
extern FILE* _iconsole_output_file;
if (_iconsole_output_file != NULL) {
IConsolePrintF(_iconsole_color_default, "file output complete");
fclose(_iconsole_output_file);
} else {
if (!CloseConsoleLogIfActive()) {
if (argc < 2) return NULL;
IConsolePrintF(_iconsole_color_default, "file output started to: %s",
argv[1]);
IConsolePrintF(_iconsole_color_default, "file output started to: %s", argv[1]);
_iconsole_output_file = fopen(argv[1], "ab");
if (_iconsole_output_file == NULL) IConsoleError("could not open file");
}
return NULL;
}
@@ -657,13 +924,14 @@ DEF_CONSOLE_CMD(ConSet) {
if (argc == 3) {
// Change server password
if (strncmp(argv[2], "*", NETWORK_PASSWORD_LENGTH) == 0) {
_network_game_info.server_password[0] = '\0';
_network_server_password[0] = '\0';
_network_game_info.use_password = 0;
} else {
ttd_strlcpy(_network_game_info.server_password, argv[2], sizeof(_network_game_info.server_password));
ttd_strlcpy(_network_server_password, argv[2], sizeof(_network_server_password));
_network_game_info.use_password = 1;
}
IConsolePrintF(_iconsole_color_warning, "Game-password changed to '%s'", _network_game_info.server_password);
IConsolePrintF(_iconsole_color_warning, "Game-password changed to '%s'", _network_server_password);
ttd_strlcpy(_network_game_info.server_password, _network_server_password, sizeof(_network_game_info.server_password));
} else {
IConsolePrintF(_iconsole_color_default, "Current game-password is set to '%s'", _network_game_info.server_password);
IConsolePrint(_iconsole_color_warning, "Usage: set server_pw \"<password>\". Use * as <password> to set no password.");
@@ -671,6 +939,28 @@ DEF_CONSOLE_CMD(ConSet) {
return NULL;
}
// setting the rcon password
if ((strcmp(argv[1], "rcon_pw") == 0) || (strcmp(argv[1], "rcon_password") == 0)) {
if (!_network_server) {
IConsolePrintF(_iconsole_color_error, "You are not the server");
return NULL;
}
if (argc == 3) {
// Change server password
if (strncmp(argv[2], "*", NETWORK_PASSWORD_LENGTH) == 0) {
_network_rcon_password[0] = '\0';
} else {
ttd_strlcpy(_network_rcon_password, argv[2], sizeof(_network_rcon_password));
}
IConsolePrintF(_iconsole_color_warning, "Rcon-password changed to '%s'", _network_rcon_password);
ttd_strlcpy(_network_game_info.rcon_password, _network_rcon_password, sizeof(_network_game_info.rcon_password));
} else {
IConsolePrintF(_iconsole_color_default, "Current rcon-password is set to '%s'", _network_game_info.rcon_password);
IConsolePrint(_iconsole_color_warning, "Usage: set rcon_pw \"<password>\". Use * as <password> to disable rcon.");
}
return NULL;
}
// setting the company password
if ((strcmp(argv[1],"company_pw") == 0) || (strcmp(argv[1],"company_password") == 0)) {
if (!_networking) {
@@ -880,6 +1170,7 @@ DEF_CONSOLE_CMD(ConSet) {
IConsolePrint(_iconsole_color_error, " - autoclean_unprotected <months>");
IConsolePrint(_iconsole_color_error, " - company_pw \"<password>\"");
IConsolePrint(_iconsole_color_error, " - name \"<playername>\"");
IConsolePrint(_iconsole_color_error, " - rcon_pw \"<password>\"");
IConsolePrint(_iconsole_color_error, " - server_name \"<name>\"");
IConsolePrint(_iconsole_color_error, " - server_advertise on/off");
IConsolePrint(_iconsole_color_error, " - server_bind_ip <ip>");
@@ -898,21 +1189,14 @@ DEF_CONSOLE_CMD(ConSet) {
/* debug commands and variables */
/* ****************************************** */
void IConsoleDebugLibRegister()
static void IConsoleDebugLibRegister(void)
{
// debugging variables and functions
extern bool _stdlib_con_developer; /* XXX extern in .c */
IConsoleVarRegister("con_developer", &_stdlib_con_developer, ICONSOLE_VAR_BOOLEAN);
IConsoleVarMemRegister("temp_string", ICONSOLE_VAR_STRING);
IConsoleVarMemRegister("temp_string2", ICONSOLE_VAR_STRING);
IConsoleVarMemRegister("temp_bool", ICONSOLE_VAR_BOOLEAN);
IConsoleVarMemRegister("temp_int16", ICONSOLE_VAR_INT16);
IConsoleVarMemRegister("temp_int32", ICONSOLE_VAR_INT32);
IConsoleVarMemRegister("temp_pointer", ICONSOLE_VAR_POINTER);
IConsoleVarMemRegister("temp_uint16", ICONSOLE_VAR_UINT16);
IConsoleVarMemRegister("temp_uint16_2", ICONSOLE_VAR_UINT16);
IConsoleVarMemRegister("temp_uint32", ICONSOLE_VAR_UINT32);
IConsoleCmdRegister("resettile", ConResetTile);
IConsoleAliasRegister("dbg_echo","echo %A; echo %B");
IConsoleAliasRegister("dbg_echo2","echo %+");
@@ -953,12 +1237,27 @@ void IConsoleStdLibRegister(void)
IConsoleCmdRegister("scrollto", ConScrollToTile);
IConsoleCmdRegister("set", ConSet);
IConsoleCmdRegister("alias", ConAlias);
IConsoleAliasRegister("new_game", "newgame");
IConsoleAliasRegister("newmap", "newgame");
IConsoleAliasRegister("new_map", "newgame");
IConsoleCmdRegister("load", ConLoad);
IConsoleCmdRegister("list_files", ConListFiles);
IConsoleCmdRegister("scan_files", ConScanFiles);
IConsoleCmdRegister("goto_dir", ConGotoDir);
IConsoleAliasRegister("new_game", "newgame");
IConsoleAliasRegister("newmap", "newgame");
IConsoleAliasRegister("new_map", "newgame");
IConsoleAliasRegister("load_game", "temp_string << scan_files %!;load temp_string");
IConsoleVarRegister("developer", &_stdlib_developer, ICONSOLE_VAR_BYTE);
// temporary data containers for alias scripting
IConsoleVarMemRegister("temp_string", ICONSOLE_VAR_STRING);
IConsoleVarMemRegister("temp_bool", ICONSOLE_VAR_BOOLEAN);
IConsoleVarMemRegister("temp_int16", ICONSOLE_VAR_INT16);
IConsoleVarMemRegister("temp_int32", ICONSOLE_VAR_INT32);
IConsoleVarMemRegister("temp_pointer", ICONSOLE_VAR_POINTER);
IConsoleVarMemRegister("temp_uint16", ICONSOLE_VAR_UINT16);
IConsoleVarMemRegister("temp_uint32", ICONSOLE_VAR_UINT32);
// networking variables and functions
#ifdef ENABLE_NETWORK
IConsoleCmdRegister("say", ConSay);
@@ -978,6 +1277,20 @@ void IConsoleStdLibRegister(void)
IConsoleCmdHook("status", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
IConsoleCmdHook("resetengines", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetwork);
IConsoleCmdRegister("rcon", ConRcon);
IConsoleCmdHook("rcon", ICONSOLE_HOOK_ACCESS, ConCmdHookNeedNetwork);
IConsoleCmdRegister("ban", ConBan);
IConsoleCmdHook("ban", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
IConsoleCmdRegister("unban", ConUnBan);
IConsoleCmdHook("unban", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
IConsoleCmdRegister("banlist", ConBanList);
IConsoleCmdHook("banlist", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
IConsoleCmdRegister("pause", ConPauseGame);
IConsoleCmdHook("pause", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
IConsoleCmdRegister("unpause", ConUnPauseGame);
IConsoleCmdHook("unpause", ICONSOLE_HOOK_ACCESS, ConCmdHookNoNetClient);
IConsoleAliasRegister("clean_company", "reset_company %A");
IConsoleVarRegister("net_frame_freq", &_network_frame_freq, ICONSOLE_VAR_UINT8);
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+95 -35
View File
@@ -20,6 +20,8 @@
# include <unistd.h>
# include <conio.h>
# define STDIN 0 /* file descriptor for standard input */
extern void OS2_SwitchToConsoleMode();
#endif
#ifdef UNIX
@@ -30,7 +32,7 @@
# define STDIN 0 /* file descriptor for standard input */
#endif
#ifdef __MORPHOS__
/* voids the fork, option will be disabled for morphos build anyway, because MorphOS
/* voids the fork, option will be disabled for morphos build anyway, because MorphOS
* doesn't support forking (could only implemented with lots of code changes here).
*/
int morphos_dummy_fork() { return -1; }
@@ -86,6 +88,45 @@ static void DedicatedSignalHandler(int sig)
}
#endif
#ifdef WIN32
#include <time.h>
HANDLE hEvent;
static HANDLE hThread; // Thread to close
static char _win_console_thread_buffer[200];
/* Windows Console thread. Just loop and signal when input has been received */
void WINAPI CheckForConsoleInput(void)
{
while (true) {
fgets(_win_console_thread_buffer, lengthof(_win_console_thread_buffer), stdin);
SetEvent(hEvent); // signal input waiting that the line is ready
}
}
void CreateWindowsConsoleThread(void)
{
static char tbuffer[9];
/* Create event to signal when console input is ready */
hEvent = CreateEvent(NULL, false, false, _strtime(tbuffer));
if (hEvent == NULL)
error("Cannot create console event!");
hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)CheckForConsoleInput, 0, 0, NULL);
if (hThread == NULL)
error("Cannot create console thread!");
DEBUG(misc, 0) ("Windows console thread started...");
}
void CloseWindowsConsoleThread(void)
{
CloseHandle(hThread);
CloseHandle(hEvent);
DEBUG(misc, 0) ("Windows console thread shut down...");
}
#endif
static const char *DedicatedVideoStart(char **parm) {
_screen.width = _screen.pitch = _cur_resolution[0];
_screen.height = _cur_resolution[1];
@@ -97,19 +138,32 @@ static const char *DedicatedVideoStart(char **parm) {
#ifdef WIN32
// For win32 we need to allocate an console (debug mode does the same)
CreateConsole();
CreateWindowsConsoleThread();
SetConsoleTitle("OpenTTD Dedicated Server");
#endif
#ifdef __OS2__
// For OS/2 we also need to switch to console mode instead of PM mode
OS2_SwitchToConsoleMode();
#endif
DEBUG(misc,0)("Loading dedicated server...");
return NULL;
}
static void DedicatedVideoStop() { free(_dedicated_video_mem); }
static void DedicatedVideoStop(void)
{
#ifdef WIN32
CloseWindowsConsoleThread();
#endif
free(_dedicated_video_mem);
}
static void DedicatedVideoMakeDirty(int left, int top, int width, int height) {}
static bool DedicatedVideoChangeRes(int w, int h) { return false; }
#ifdef UNIX
static bool InputWaiting()
#if defined(UNIX) || defined(__OS2__)
static bool InputWaiting(void)
{
struct timeval tv;
fd_set readfds;
@@ -126,49 +180,55 @@ static bool InputWaiting()
if (ret > 0)
return true;
else
return false;
return false;
}
#else
static bool InputWaiting()
static bool InputWaiting(void)
{
return kbhit();
if (WaitForSingleObject(hEvent, 1) == WAIT_OBJECT_0)
return true;
return false;
}
#endif
static void DedicatedHandleKeyInput()
static void DedicatedHandleKeyInput(void)
{
#ifdef WIN32
char input;
#endif
static char input_line[200] = "";
#if defined(UNIX) || defined(__OS2__)
if (InputWaiting()) {
if (_exit_game)
return;
if (!InputWaiting())
return;
fgets(input_line, 200, stdin);
// Forget about the final \n (or \r)
strtok(input_line, "\r\n");
IConsoleCmdExec(input_line);
}
if (_exit_game)
return;
#if defined(UNIX) || defined(__OS2__)
fgets(input_line, lengthof(input_line), stdin);
#else
if (InputWaiting()) {
input = getch();
printf("%c", input);
if (input != '\r')
snprintf(input_line, 200, "%s%c", input_line, input);
else {
printf("\n");
IConsoleCmdExec(input_line);
input_line[0] = '\0';
strncpy(input_line, _win_console_thread_buffer, lengthof(input_line));
#endif
/* XXX - strtok() does not 'forget' \n\r if it is the first character! */
strtok(input_line, "\r\n"); // Forget about the final \n (or \r)
{ /* Remove any special control characters */
uint i;
for (i = 0; i < lengthof(input_line); i++) {
if (input_line[i] == '\n' || input_line[i] == '\r') // cut missed beginning '\0'
input_line[i] = '\0';
if (input_line[i] == '\0')
break;
if (!IS_INT_INSIDE(input_line[i], ' ', 256))
input_line[i] = ' ';
}
}
#endif
IConsoleCmdExec(input_line); // execute command
}
static int DedicatedVideoMainLoop()
static int DedicatedVideoMainLoop(void)
{
#ifndef WIN32
struct timeval tim;
@@ -252,10 +312,10 @@ static const char *DedicatedVideoStart(char **parm) {
}
void DedicatedFork(void) {}
static void DedicatedVideoStop() { free(_dedicated_video_mem); }
static void DedicatedVideoStop(void) { free(_dedicated_video_mem); }
static void DedicatedVideoMakeDirty(int left, int top, int width, int height) {}
static bool DedicatedVideoChangeRes(int w, int h) { return false; }
static int DedicatedVideoMainLoop() { return ML_QUIT; }
static int DedicatedVideoMainLoop(void) { return ML_QUIT; }
const HalVideoDriver _dedicated_video_driver = {
DedicatedVideoStart,
+94 -85
View File
@@ -13,25 +13,31 @@
#include "airport_movement.h"
#include "sound.h"
static void DisasterClearSquare(uint tile)
static void DisasterClearSquare(TileIndex tile)
{
int type;
if (!EnsureNoVehicle(tile))
return;
type = _map_type_and_height[tile] >> 4;
switch (TileType(tile)) {
case MP_RAILWAY:
if (IS_HUMAN_PLAYER(_map_owner[tile])) DoClearSquare(tile);
break;
if (type == MP_RAILWAY) {
if (IS_HUMAN_PLAYER(_map_owner[tile]))
case MP_HOUSE: {
byte p = _current_player;
_current_player = OWNER_NONE;
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
_current_player = p;
break;
}
case MP_TREES:
case MP_CLEAR:
DoClearSquare(tile);
} else if (type == MP_HOUSE) {
byte p = _current_player;
_current_player = OWNER_NONE;
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
_current_player = p;
} else if (type == MP_TREES || type == MP_CLEAR) {
DoClearSquare(tile);
break;
default:
break;
}
}
@@ -164,7 +170,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
} else if (v->current_order.station == 0) {
tile = v->tile; /**/
if (IS_TILETYPE(tile, MP_STATION) &&
if (IsTileType(tile, MP_STATION) &&
IS_BYTE_INSIDE(_map5[tile], 8, 0x43) &&
IS_HUMAN_PLAYER(_map_owner[tile])) {
@@ -178,7 +184,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
0);
}
}
if (v->y_pos >= (TILES_Y+9) * 16 - 1)
if (v->y_pos >= ((int)MapSizeY() + 9) * 16 - 1)
DeleteDisasterVeh(v);
return;
}
@@ -189,11 +195,11 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
tile = v->tile; /**/
if (IS_TILETYPE(tile, MP_STATION) &&
if (IsTileType(tile, MP_STATION) &&
IS_BYTE_INSIDE(_map5[tile], 8, 0x43) &&
IS_HUMAN_PLAYER(_map_owner[tile])) {
st = DEREF_STATION(_map2[tile]);
st = GetStation(_map2[tile]);
CLRBITS(st->airport_flags, RUNWAY_IN_block);
}
@@ -231,11 +237,11 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
}
tile = v->tile;/**/
if (IS_TILETYPE(tile, MP_STATION) &&
if (IsTileType(tile, MP_STATION) &&
IS_BYTE_INSIDE(_map5[tile], 8, 0x43) &&
IS_HUMAN_PLAYER(_map_owner[tile])) {
st = DEREF_STATION(_map2[tile]);
st = GetStation(_map2[tile]);
SETBITS(st->airport_flags, RUNWAY_IN_block);
}
}
@@ -253,8 +259,8 @@ static void DisasterTick_UFO(Vehicle *v)
if (v->current_order.station == 0) {
// fly around randomly
int x = GET_TILE_X(v->dest_tile)*16;
int y = GET_TILE_Y(v->dest_tile)*16;
int x = TileX(v->dest_tile) * 16;
int y = TileY(v->dest_tile) * 16;
if (abs(x - v->x_pos) + abs(y - v->y_pos) >= 16) {
v->direction = GetDirectionTowards(v, x, y);
GetNewVehiclePos(v, &gp);
@@ -278,7 +284,7 @@ static void DisasterTick_UFO(Vehicle *v)
DeleteDisasterVeh(v);
} else {
// target a vehicle
u = &_vehicles[v->dest_tile];
u = GetVehicle(v->dest_tile);
if (u->type != VEH_Road) {
DeleteDisasterVeh(v);
return;
@@ -323,10 +329,9 @@ static void DisasterTick_UFO(Vehicle *v)
static void DestructIndustry(Industry *i)
{
uint tile;
byte index = i - _industries;
for(tile=0; tile != TILES_X*TILES_Y; tile++) {
if (IS_TILETYPE(tile, MP_INDUSTRY) && _map2[tile] == index) {
for(tile=0; tile != MapSize(); tile++) {
if (IsTileType(tile, MP_INDUSTRY) && _map2[tile] == i->index) {
_map_owner[tile] = 0;
MarkTileDirtyByTile(tile);
}
@@ -352,9 +357,9 @@ static void DisasterTick_2(Vehicle *v)
if (v->current_order.station == 2) {
if (!(v->tick_counter&3)) {
Industry *i = DEREF_INDUSTRY(v->dest_tile);
int x = GET_TILE_X(i->xy)*16;
int y = GET_TILE_Y(i->xy)*16;
Industry *i = GetIndustry(v->dest_tile);
int x = TileX(i->xy) * 16;
int y = TileY(i->xy) * 16;
uint32 r = Random();
CreateEffectVehicleAbove(
@@ -373,7 +378,7 @@ static void DisasterTick_2(Vehicle *v)
v->current_order.station = 2;
v->age = 0;
i = DEREF_INDUSTRY(v->dest_tile);
i = GetIndustry(v->dest_tile);
DestructIndustry(i);
SetDParam(0, i->town->index);
@@ -388,16 +393,16 @@ static void DisasterTick_2(Vehicle *v)
x = v->x_pos - 15*16;
y = v->y_pos;
if ( (uint)x > (TILES_X-1) * 16-1)
if ( (uint)x > MapMaxX() * 16-1)
return;
tile = TILE_FROM_XY(x,y);
if (!IS_TILETYPE(tile, MP_INDUSTRY))
if (!IsTileType(tile, MP_INDUSTRY))
return;
v->dest_tile = ind = _map2[tile];
if (DEREF_INDUSTRY(ind)->type == IT_OIL_REFINERY) {
if (GetIndustry(ind)->type == IT_OIL_REFINERY) {
v->current_order.station = 1;
v->age = 0;
}
@@ -416,16 +421,16 @@ static void DisasterTick_3(Vehicle *v)
GetNewVehiclePos(v, &gp);
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
if (gp.x > TILES_X * 16 + 9*16 - 1) {
if (gp.x > (int)MapSizeX() * 16 + 9*16 - 1) {
DeleteDisasterVeh(v);
return;
}
if (v->current_order.station == 2) {
if (!(v->tick_counter&3)) {
Industry *i = DEREF_INDUSTRY(v->dest_tile);
int x = GET_TILE_X(i->xy)*16;
int y = GET_TILE_Y(i->xy)*16;
Industry *i = GetIndustry(v->dest_tile);
int x = TileX(i->xy) * 16;
int y = TileY(i->xy) * 16;
uint32 r = Random();
CreateEffectVehicleAbove(
@@ -444,7 +449,7 @@ static void DisasterTick_3(Vehicle *v)
v->current_order.station = 2;
v->age = 0;
i = DEREF_INDUSTRY(v->dest_tile);
i = GetIndustry(v->dest_tile);
DestructIndustry(i);
SetDParam(0, i->town->index);
@@ -459,16 +464,16 @@ static void DisasterTick_3(Vehicle *v)
x = v->x_pos - 15*16;
y = v->y_pos;
if ( (uint)x > (TILES_X-1) * 16-1)
if ( (uint)x > MapMaxX() * 16-1)
return;
tile = TILE_FROM_XY(x,y);
if (!IS_TILETYPE(tile, MP_INDUSTRY))
if (!IsTileType(tile, MP_INDUSTRY))
return;
v->dest_tile = ind = _map2[tile];
if (DEREF_INDUSTRY(ind)->type == IT_FACTORY) {
if (GetIndustry(ind)->type == IT_FACTORY) {
v->current_order.station = 1;
v->age = 0;
}
@@ -502,8 +507,8 @@ static void DisasterTick_4(Vehicle *v)
v->tick_counter++;
if (v->current_order.station == 1) {
int x = GET_TILE_X(v->dest_tile)*16 + 8;
int y = GET_TILE_Y(v->dest_tile)*16 + 8;
int x = TileX(v->dest_tile) * 16 + 8;
int y = TileY(v->dest_tile) * 16 + 8;
if (abs(v->x_pos - x) + abs(v->y_pos - y) >= 8) {
v->direction = GetDirectionTowards(v, x, y);
@@ -554,8 +559,8 @@ static void DisasterTick_4(Vehicle *v)
w->vehstatus |= VS_DISASTER;
} else if (v->current_order.station < 1) {
int x = GET_TILE_X(v->dest_tile)*16;
int y = GET_TILE_Y(v->dest_tile)*16;
int x = TileX(v->dest_tile) * 16;
int y = TileY(v->dest_tile) * 16;
if (abs(x - v->x_pos) + abs(y - v->y_pos) >= 16) {
v->direction = GetDirectionTowards(v, x, y);
GetNewVehiclePos(v, &gp);
@@ -571,7 +576,7 @@ static void DisasterTick_4(Vehicle *v)
tile_org = tile = TILE_MASK(Random());
do {
if (IS_TILETYPE(tile, MP_RAILWAY) &&
if (IsTileType(tile, MP_RAILWAY) &&
(_map5[tile]&~3)!=0xC0 && IS_HUMAN_PLAYER(_map_owner[tile]))
break;
tile = TILE_MASK(tile+1);
@@ -594,13 +599,13 @@ static void DisasterTick_4b(Vehicle *v)
GetNewVehiclePos(v, &gp);
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
if (gp.x > TILES_X * 16 + 9*16 - 1) {
if (gp.x > (int)MapSizeX() * 16 + 9*16 - 1) {
DeleteDisasterVeh(v);
return;
}
if (v->current_order.station == 0) {
u = &_vehicles[v->u.disaster.unk2];
u = GetVehicle(v->u.disaster.unk2);
if (abs(v->x_pos - u->x_pos) > 16)
return;
v->current_order.station = 1;
@@ -646,7 +651,7 @@ static void DisasterTick_5_and_6(Vehicle *v)
if (!(v->tick_counter&1))
return;
tile = v->tile + _tileoffs_by_dir[v->direction >> 1];
tile = v->tile + TileOffsByDir(v->direction >> 1);
if (IsValidTile(tile) &&
(r=GetTileTrackStatus(tile,TRANSPORT_WATER),(byte)(r+(r >> 8)) == 0x3F) &&
!CHANCE16(1,90)) {
@@ -689,10 +694,10 @@ void OnNewDay_DisasterVehicle(Vehicle *v)
// not used
}
typedef void DisasterInitProc();
typedef void DisasterInitProc(void);
// Zeppeliner which crashes on a small airport
static void Disaster0_Init()
static void Disaster0_Init(void)
{
Vehicle *v = ForceAllocateSpecialVehicle(), *u;
Station *st;
@@ -701,16 +706,15 @@ static void Disaster0_Init()
if (v == NULL)
return;
for(st=_stations;;) {
/* Pick a random place, unless we find
a small airport */
x = TileX(Random()) * 16 + 8;
FOR_ALL_STATIONS(st) {
if (st->xy && st->airport_tile != 0 &&
st->airport_type <= 1 &&
IS_HUMAN_PLAYER(st->owner)) {
x = (GET_TILE_X(st->xy) + 2) * 16;
break;
}
if (++st == endof(_stations)) {
x = (GET_TILE_X(Random())) * 16 + 8;
x = (TileX(st->xy) + 2) * 16;
break;
}
}
@@ -721,12 +725,12 @@ static void Disaster0_Init()
u = ForceAllocateSpecialVehicle();
if (u != NULL) {
v->next = u;
InitializeDisasterVehicle(u,x,0,0,3,1);
InitializeDisasterVehicle(u, x, 0, 0, 3, 1);
u->vehstatus |= VS_DISASTER;
}
}
static void Disaster1_Init()
static void Disaster1_Init(void)
{
Vehicle *v = ForceAllocateSpecialVehicle(), *u;
int x;
@@ -734,10 +738,10 @@ static void Disaster1_Init()
if (v == NULL)
return;
x = (GET_TILE_X(Random())) * 16 + 8;
x = TileX(Random()) * 16 + 8;
InitializeDisasterVehicle(v, x, 0, 135, 3, 2);
v->dest_tile = TILE_XY(TILES_X/2,TILES_Y/2);
v->dest_tile = TILE_XY(MapSizeX() / 2, MapSizeY() / 2);
v->age = 0;
// Allocate shadow too?
@@ -749,13 +753,15 @@ static void Disaster1_Init()
}
}
static void Disaster2_Init()
static void Disaster2_Init(void)
{
Industry *i, *found;
Vehicle *v,*u;
int x,y;
for(found=NULL,i=_industries; i != endof(_industries); i++) {
found = NULL;
FOR_ALL_INDUSTRIES(i) {
if (i->xy != 0 &&
i->type == IT_OIL_REFINERY &&
(found==NULL || CHANCE16(1,2))) {
@@ -770,8 +776,8 @@ static void Disaster2_Init()
if (v == NULL)
return;
x = (TILES_X+9) * 16 - 1;
y = GET_TILE_Y(found->xy)*16 + 37;
x = (MapSizeX() + 9) * 16 - 1;
y = TileY(found->xy) * 16 + 37;
InitializeDisasterVehicle(v,x,y, 135,1,4);
@@ -783,13 +789,15 @@ static void Disaster2_Init()
}
}
static void Disaster3_Init()
static void Disaster3_Init(void)
{
Industry *i, *found;
Vehicle *v,*u,*w;
int x,y;
for(found=NULL,i=_industries; i != endof(_industries); i++) {
found = NULL;
FOR_ALL_INDUSTRIES(i) {
if (i->xy != 0 &&
i->type == IT_FACTORY &&
(found==NULL || CHANCE16(1,2))) {
@@ -805,7 +813,7 @@ static void Disaster3_Init()
return;
x = -16 * 16;
y = GET_TILE_Y(found->xy)*16 + 37;
y = TileY(found->xy) * 16 + 37;
InitializeDisasterVehicle(v,x,y, 135,5,6);
@@ -823,7 +831,7 @@ static void Disaster3_Init()
}
}
static void Disaster4_Init()
static void Disaster4_Init(void)
{
Vehicle *v = ForceAllocateSpecialVehicle(), *u;
int x,y;
@@ -831,11 +839,11 @@ static void Disaster4_Init()
if (v == NULL)
return;
x = (GET_TILE_X(Random())) * 16 + 8;
x = TileX(Random()) * 16 + 8;
y = (TILES_X-1)*16-1;
y = MapMaxX() * 16 - 1;
InitializeDisasterVehicle(v, x, y, 135, 7, 9);
v->dest_tile = TILE_XY(TILES_X/2,TILES_Y/2);
v->dest_tile = TILE_XY(MapSizeX() / 2, MapSizeY() / 2);
v->age = 0;
// Allocate shadow too?
@@ -848,7 +856,7 @@ static void Disaster4_Init()
}
// Submarine type 1
static void Disaster5_Init()
static void Disaster5_Init(void)
{
Vehicle *v = ForceAllocateSpecialVehicle();
int x,y;
@@ -859,17 +867,17 @@ static void Disaster5_Init()
return;
r = Random();
x = (GET_TILE_X(r)) * 16 + 8;
x = TileX(r) * 16 + 8;
y = 8;
dir = 3;
if (r & 0x80000000) { y = (TILES_X-1) * 16 - 8 - 1; dir = 7; }
if (r & 0x80000000) { y = MapMaxX() * 16 - 8 - 1; dir = 7; }
InitializeDisasterVehicle(v, x, y, 0, dir,13);
v->age = 0;
}
// Submarine type 2
static void Disaster6_Init()
static void Disaster6_Init(void)
{
Vehicle *v = ForceAllocateSpecialVehicle();
int x,y;
@@ -880,23 +888,23 @@ static void Disaster6_Init()
return;
r = Random();
x = (GET_TILE_X(r)) * 16 + 8;
x = TileX(r) * 16 + 8;
y = 8;
dir = 3;
if (r & 0x80000000) { y = (TILES_X-1) * 16 - 8 - 1; dir = 7; }
if (r & 0x80000000) { y = MapMaxX() * 16 - 8 - 1; dir = 7; }
InitializeDisasterVehicle(v, x, y, 0, dir,14);
v->age = 0;
}
static void Disaster7_Init()
static void Disaster7_Init(void)
{
Industry *i;
int maxloop = 15;
int index = Random() & 0xF;
do {
for(i=_industries; i != endof(_industries); i++) {
FOR_ALL_INDUSTRIES(i) {
if (i->xy != 0 && i->type == IT_COAL_MINE && --index < 0) {
SetDParam(0, i->town->index);
@@ -905,7 +913,7 @@ static void Disaster7_Init()
{
uint tile = i->xy;
int step = _tileoffs_by_dir[Random() & 3];
TileIndexDiff step = TileOffsByDir(Random() & 3);
int count = 30;
do {
DisasterClearSquare(tile);
@@ -946,7 +954,7 @@ static const DisasterYears _dis_years[8] = {
};
static void DoDisaster()
static void DoDisaster(void)
{
byte buf[8];
byte year = _cur_year;
@@ -965,12 +973,12 @@ static void DoDisaster()
}
static void ResetDisasterDelay()
static void ResetDisasterDelay(void)
{
_disaster_delay = (int)(Random() & 0x1FF) + 730;
}
void DisasterDailyLoop()
void DisasterDailyLoop(void)
{
if (--_disaster_delay != 0)
return;
@@ -981,7 +989,8 @@ void DisasterDailyLoop()
DoDisaster();
}
void StartupDisasters() {
void StartupDisasters(void)
{
ResetDisasterDelay();
}
+53 -34
View File
@@ -10,8 +10,8 @@
#include "sound.h"
#include "command.h"
static void ShowBuildDockStationPicker();
static void ShowBuildDocksDepotPicker();
static void ShowBuildDockStationPicker(void);
static void ShowBuildDocksDepotPicker(void);
static byte _ship_depot_direction;
@@ -119,6 +119,20 @@ static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
if (e->click.widget - 3 >= 0 && e->click.widget != 5) _build_docks_button_proc[e->click.widget - 3](w);
} break;
case WE_KEYPRESS: {
switch(e->keypress.keycode) {
case '1': BuildDocksClick_Canal(w); break;
case '2': BuildDocksClick_Lock(w); break;
case '3': BuildDocksClick_Demolish(w); break;
case '4': BuildDocksClick_Depot(w); break;
case '5': BuildDocksClick_Dock(w); break;
case '6': BuildDocksClick_Buoy(w); break;
case 'l': BuildDocksClick_Landscaping(w); break;
default:
return;
}
} break;
case WE_PLACE_OBJ:
_place_proc(e->place.tile);
break;
@@ -164,19 +178,19 @@ static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
}
static const Widget _build_docks_toolb_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 145, 0, 13, STR_9801_DOCK_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 7, 146, 157, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PANEL, 7, 0, 21, 14, 35, SPR_OPENTTD_BASE+65, STR_BUILD_CANALS_TIP},
{ WWT_PANEL, 7, 22, 43, 14, 35, SPR_CANALS_BASE+69, STR_BUILD_LOCKS_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 145, 0, 13, STR_9801_DOCK_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, RESIZE_NONE, 7, 146, 157, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_OPENTTD_BASE+65, STR_BUILD_CANALS_TIP},
{ WWT_PANEL, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_CANALS_BASE+69, STR_BUILD_LOCKS_TIP},
{ WWT_PANEL, 7, 44, 47, 14, 35, 0x0, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 7, 44, 47, 14, 35, 0x0, STR_NULL},
{ WWT_PANEL, 7, 48, 69, 14, 35, 703, STR_018D_DEMOLISH_BUILDINGS_ETC},
{ WWT_PANEL, 7, 70, 91, 14, 35, 748, STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING},
{ WWT_PANEL, 7, 92, 113, 14, 35, 746, STR_981D_BUILD_SHIP_DOCK},
{ WWT_PANEL, 7, 114, 135, 14, 35, 693, STR_9834_POSITION_BUOY_WHICH_CAN},
{ WWT_PANEL, 7, 136, 157, 14, 35, SPR_IMG_LANDSCAPING, STR_LANDSCAPING_TOOLBAR_TIP},
{ WWT_PANEL, RESIZE_NONE, 7, 48, 69, 14, 35, 703, STR_018D_DEMOLISH_BUILDINGS_ETC},
{ WWT_PANEL, RESIZE_NONE, 7, 70, 91, 14, 35, 748, STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING},
{ WWT_PANEL, RESIZE_NONE, 7, 92, 113, 14, 35, 746, STR_981D_BUILD_SHIP_DOCK},
{ WWT_PANEL, RESIZE_NONE, 7, 114, 135, 14, 35, 693, STR_9834_POSITION_BUOY_WHICH_CAN},
{ WWT_PANEL, RESIZE_NONE, 7, 136, 157, 14, 35, SPR_IMG_LANDSCAPING, STR_LANDSCAPING_TOOLBAR_TIP},
{ WIDGETS_END},
};
@@ -188,8 +202,9 @@ static const WindowDesc _build_docks_toolbar_desc = {
BuildDocksToolbWndProc
};
void ShowBuildDocksToolbar()
void ShowBuildDocksToolbar(void)
{
if (_current_player == OWNER_SPECTATOR) return;
DeleteWindowById(WC_BUILD_TOOLBAR, 0);
AllocateWindowDesc(&_build_docks_toolbar_desc);
}
@@ -219,9 +234,6 @@ static void BuildDockStationWndProc(Window *w, WindowEvent *e)
case WE_CLICK: {
switch(e->click.widget) {
case 0:
ResetObjectToPlace();
break;
case 3: case 4:
_station_show_coverage = e->click.widget - 3;
SndPlayFx(SND_15_BEEP);
@@ -239,15 +251,20 @@ static void BuildDockStationWndProc(Window *w, WindowEvent *e)
CheckRedrawStationCoverage(w);
break;
}
case WE_DESTROY:
if (!WP(w,def_d).close)
ResetObjectToPlace();
break;
}
}
static const Widget _build_dock_station_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 147, 0, 13, STR_3068_DOCK, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 147, 14, 74, 0x0, STR_NULL},
{ WWT_CLOSEBOX, 14, 14, 73, 30, 40, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
{ WWT_CLOSEBOX, 14, 74, 133, 30, 40, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_3068_DOCK, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 147, 14, 74, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 14, 73, 30, 40, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 74, 133, 30, 40, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
{ WIDGETS_END},
};
@@ -259,12 +276,12 @@ static const WindowDesc _build_dock_station_desc = {
BuildDockStationWndProc
};
static void ShowBuildDockStationPicker()
static void ShowBuildDockStationPicker(void)
{
AllocateWindowDesc(&_build_dock_station_desc);
}
static void UpdateDocksDirection()
static void UpdateDocksDirection(void)
{
if (_ship_depot_direction != 0) {
SetTileSelectSize(1, 2);
@@ -288,9 +305,6 @@ static void BuildDocksDepotWndProc(Window *w, WindowEvent *e)
case WE_CLICK: {
switch(e->click.widget) {
case 0:
ResetObjectToPlace();
break;
case 3:
case 4:
_ship_depot_direction = e->click.widget - 3;
@@ -305,15 +319,20 @@ static void BuildDocksDepotWndProc(Window *w, WindowEvent *e)
if (WP(w,def_d).close)
DeleteWindow(w);
break;
case WE_DESTROY:
if (!WP(w,def_d).close)
ResetObjectToPlace();
break;
}
}
static const Widget _build_docks_depot_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 203, 0, 13, STR_3800_SHIP_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 203, 14, 85, 0x0, STR_NULL},
{ WWT_PANEL, 14, 3, 100, 17, 82, 0x0, STR_3803_SELECT_SHIP_DEPOT_ORIENTATION},
{ WWT_PANEL, 14, 103, 200, 17, 82, 0x0, STR_3803_SELECT_SHIP_DEPOT_ORIENTATION},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 203, 0, 13, STR_3800_SHIP_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 203, 14, 85, 0x0, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 14, 3, 100, 17, 82, 0x0, STR_3803_SELECT_SHIP_DEPOT_ORIENTATION},
{ WWT_PANEL, RESIZE_NONE, 14, 103, 200, 17, 82, 0x0, STR_3803_SELECT_SHIP_DEPOT_ORIENTATION},
{ WIDGETS_END},
};
@@ -326,14 +345,14 @@ static const WindowDesc _build_docks_depot_desc = {
};
static void ShowBuildDocksDepotPicker()
static void ShowBuildDocksDepotPicker(void)
{
AllocateWindowDesc(&_build_docks_depot_desc);
UpdateDocksDirection();
}
void InitializeDockGui()
void InitializeDockGui(void)
{
_ship_depot_direction = 0;
}
+1 -1
View File
@@ -24,7 +24,7 @@ On BeOS, run ./configure and then use jam. There are a variaty of options you ca
On Windows, insert your "Transport Tycoon Deluxe for Windows 95" disk. You can use a DOS version, but your graphics will be purple. NB: Even if your version of Transport Tycoon Deluxe ran on Windows 95, it may still be the DOS version. Then run the OpenTTD installer.
On UNIX platforms; decompress your OpenTTD archive, or otherwise run the installer. You should be left with an OpenTTD directory on your system. In this directory, make a subdirectory called 'data', and into this place the sample.cat file and all the .grf files from the install CD of 'Transport Tycoon Deluxe for Windows 95".
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
If you want MIDI music, copy the 'gm' folder from the original game directory/CD to the OpenTTD folder.
+1 -1
View File
@@ -19,6 +19,6 @@ 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. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
You should also use the data folder to add any custom grf files if you like
+1 -1
View File
@@ -39,7 +39,7 @@ Copy the following files from Transport Tycoon Deluxe to openttd/data/
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. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
4.) Compiling and running:
+118 -48
View File
@@ -1,48 +1,118 @@
OpenTTD: OS/2 version ** CURRENTLY INCOMPLETE **
=====================
OpenTTD has been ported to work on OS/2 4.x or later (including eComStation). At the moment, it does not work properly, but it
can compile and work to an extent.
Compiler
--------
Open Watcom 1.3 was used to build OpenTTD (earlier versions will NOT work). See http://www.openwatcom.org/ to download it.
It may also be possible to build OpenTTD under OS/2: I attempted this before using Open Watcom, but found the tools available
for OS/2 at the time to be a bit more tricky to get working.
Due to complexities in my set-up, I actually used the Win32 version of Open Watcom to initially compile OpenTTD for OS/2. There
should be no reason of course why the OS/2 version cannot be used.
Libraries Required
------------------
The following libraries are required. To build zlib and libpng, I simply added the required files (watch out for sample
programs, etc) to an IDE project file and built a library:
- zlib
http://www.zlib.org/ - contains a makefile for OS/2, but is out of date and uses EMX
- libpng
http://www.libpng.org/ - contains an EMX/gcc makefile
- SDL for OS/2
I used ftp://ftp.netlabs.org/pub/sdl/SDL-1.2.7-src-20040908a.zip - take SDL.dll and SDL.lib from the src/ directory.
Note that to use the compiled program, you also need FSLib.dll (from src/ in the SDL zip) and a version of the Scitech
Display Drivers or its later incarnation (see www.scitech.com).
Compiling
---------
To compile, open the os/os2/openttd.wpj file in the IDE and build the openttd.exe target.
TODO: compilation of language files properly
** THESE DOCS ARE INCOMPLETE FOR THE MOMENT, WILL BE COMPLETED SOON **
If you have any questions, please contact me (owen@owenrudge.net) and I'll try to help you out
- Owen Rudge, 18th December 2004
OpenTTD: OS/2 version
=====================
OpenTTD has been ported to work on OS/2 4.x or later (including
eComStation). The game should work as well as it does on Windows
or other platforms: the main issues you may encounter are graphics
card problems, but that is really the fault of SDL.
=========================
USING OPENTTD FOR OS/2
=========================
LIBRARIES REQUIRED FOR END USERS
--------------------------------
SDL.DLL (SDL 1.2.7) and FSLib.dll are required to use this program:
these can be downloaded from the Files section at
http://sourceforge.net/projects/openttd/ - see "os2-useful.zip".
(Note that a newer version of SDL is now available at
ftp://ftp.netlabs.org/pub/sdl/sdl-dev-os2-2004-12-22.zip which may
help solve some problems).
Note that to actually play the game, I have found in my own
experience that a version of the Scitech Display Drivers or its later
incarnation (see www.scitech.com) are necessary for it to work. If
you have trouble with your native drivers, try the Scitech drivers
and see if they help the problem.
KNOWN ISSUES
------------
- If an error occurs during loading, the OS/2 error message window
is not always displayed.
A NOTE ABOUT MUSIC
------------------
OpenTTD includes a music driver which uses the MCI MIDI system. Unfortunately,
due to the lack of proper MIDI hardware myself, I have been unable to test it,
but during testing, I found that when MIDI was enabled, I got no sound
effects. I therefore decided to DISABLE music by default.
To enable music, start OpenTTD with the command line:
openttd -m os2
If I hear enough responses that both music and sound work together (it might
just be my system), I'll have the defaults changed.
A NOTE ABOUT DEDICATED MULTIPLAYER SERVERS
------------------------------------------
To start a dedicated multiplayer server, you should run the dedicated.cmd
file. This enables OpenTTD to open up a VIO console window to display
its output and gather any necessary input. Running "openttd -D"
directly will result in the console not being displayed. You may
still pass any other parameters ('-D' is already passed) to
dedicated.cmd.
=========================
BUILDING THE OS/2 VERSION
=========================
Compiler
--------
Open Watcom 1.3 was used to build OpenTTD (earlier versions will
NOT work). See http://www.openwatcom.org/ to download it. It may
also be possible to build OpenTTD under OS/2: I attempted this
before using Open Watcom, but found the tools available for OS/2
at the time to be a bit more tricky to get working.
Due to complexities in my set-up, I actually used the Win32 version
of Open Watcom to initially compile OpenTTD for OS/2. There should
be no reason of course why the OS/2 version cannot be used.
Libraries Required
------------------
The following libraries are required. To build zlib and libpng, I
simply added the required files (watch out for sample programs, etc)
to an IDE project file and built a library. Do not use the makefiles
provided, they are not designed for Watcom (apart from SDL):
- zlib
http://www.zlib.org/ - contains a makefile for OS/2, but is out
of date and uses EMX
- libpng
http://www.libpng.org/ - contains an EMX/gcc makefile
- SDL for OS/2
For 0.3.5, I used ftp://ftp.netlabs.org/pub/sdl/SDL-1.2.7-src-20040908a.zip -
take SDL.dll and SDL.lib from the src/ directory. Note that 20041222 is
out now, which is recommended for stability updates.
If you do not wish to build the libraries yourself, pre-built versions
can be downloaded from the Files section at
http://sourceforge.net/projects/openttd/ - see "os2-useful.zip".
Compiling
---------
To compile, open the os/os2/openttd.wpj file in the IDE and first build
the strgen.exe target. This will build the .lng file generator, and will
also attempt to build all the language files (plus the table\strings.h
file which is required for openttd.exe to be built). Once strgen.exe and
the language files are built successfully, you can build the openttd.exe
target.
Contact Information
-------------------
If you have any questions regarding OS/2 issues, please contact me
(owen@owenrudge.net) and I'll try to help you out. For general OpenTTD
issues, see the Contacting section of readme.txt.
- Owen Rudge, 26th December 2004
+105 -89
View File
@@ -1,89 +1,105 @@
Compilung OpenTTD using MS VC6.0
Step 1
------------------
Downloaded:
Useful.zip http://sourceforge.net/project/showfiles.php?group_id=103924&package_id=114307&release_id=228633
SDL.zip http://www.libsdl.org/release/SDL-1.2.7-win32.zip
DirectX7.0 SDK http://www.tt-forums.net/download.php?id=15989
(or alternatively the latest DirectX SDK from Microsoft)
afxres.h http://www-d0.fnal.gov/d0dist/dist/packages/d0ve/devel/windows/AFXRES.H
Step 2
------------------
Put the newly downloaded files in the VC lib and include directories
(Where D:\program files\ is your local location of VC)
* zconf.h [useful.zip]
* zlib.h [useful.zip]
* afxres.h
in
D:\Program Files\Microsoft Visual Studio\VC98\Include
* zlibstat.lib [usefull.zip]
* SDL.lib [SDL.zip
* libpng.lib [usefull.zip]
in
D:\Program Files\Microsoft Visual Studio\VC98\Lib
You can also make custum directories, for libraries (.lib) and includes/header files (.h) and
add it to the VC paths via:
Tools -> Options -> Directories -> show directories for:
a) include files (the include dir: D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\include )
b) library files (the lib dir, D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\lib )
Step 3: DirextX SDK
------------------
(This should work with the latest DirectX SDK as well.)
The installation with DirectX 7 was odd, so you'd better use the version available via the forum, see also
the download link on top.
Copy the DirectX 7 SDK files, leaving the directory stucture intact, to the directory:
D:\Program Files\Microsoft Visual Studio\VC98\
thus resulting in
D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\include and
D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\lib
Step 3.1
Add these two folders to the search path of VC.
In VC6.0: Tools -> Options -> Directories -> show directories for:
a) include files (the include dir: D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\include )
b) libraru files (the lib dir, D:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\lib )
Step 4
-----------------
Copy the following files from Transport Tycoon Deluxe to the data folder
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. Those filenames have to be uppercase to be detected correctly. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
Step 5
-----------------
Compile ...
Step 6
-----------------
Now it should work, it worked for me :)
Go ahead and make that patch!
Happy Hacking!
------------------
written by Dribbel
Compiling OpenTTD using Microsoft Visual C++ 6.0
---Step 1
Download the following files:
* Useful.zip (http://sourceforge.net/project/showfiles.php?group_id=103924&package_id=114307&release_id=228633)
* SDL-1.2.8-VC6.zip (http://www.libsdl.org/release/SDL-devel-1.2.8-VC6.zip)
* DirectX7.0 SDK (http://www.tt-forums.net/download.php?id=15989) (or alternatively the latest DirectX SDK from Microsoft)
* afxres.h (http://www-d0.fnal.gov/d0dist/dist/packages/d0ve/devel/windows/AFXRES.H)
...and of course the newest source from svn://svn.openttd.com/trunk
(The alpha version of the new map array can be found at svn://svn.openttd.com/branch/map)
You have to have and SVN-client to download the source:
* Command line version (http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91)
* TortoiseSVN (http://tortoisesvn.tigris.org/download.html)
---Step 2
Put the newly downloaded files in the VC lib and include directories (Where C:\program files\ is your local location of VC)
* zconf.h [useful.zip]
* zlib.h [useful.zip]
* png.h [useful.zip]
* pngconf.h [useful.zip]
* afxres.h
in
C:\Program Files\Microsoft Visual Studio\VC98\Include
and
* zlibstat.lib [useful.zip]
* SDL.lib [SDL.zip]
* libpng.lib [useful.zip]
in
C:\Program Files\Microsoft Visual Studio\VC98\Lib
---Step 3: DirectX SDK
(This should work with the latest DirectX SDK as well.) The installation with DirectX 7 was odd, so you'd better use the version available via the forum, see also the download link on top.
There are 2 folder in the compressed file: Include and Lib
Copy all files from Include folder to
C:\Program Files\Microsoft Visual Studio\VC98\Include
and all files from Lib folder to
C:\Program Files\Microsoft Visual Studio\VC98\Lib
You can also make custom directories, for libraries (.lib) and includes/header files (.h) and add it to the VC paths via:
Tools -> Options -> Directories -> show directories for:
a) include files (the include dir: C:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\include )
b) library files (the lib dir, C:\Program Files\Microsoft Visual Studio\VC98\DirectX 7 SDK\lib )
---Step 4
Copy the following files from Transport Tycoon Deluxe to the data folder
* sample.cat
* trg1r.grf
* trgcr.grf
* trghr.grf
* trgir.grf
* trgtr.grf
---Step 5
Open trunk/ttd.dsw
Build menu > Set active configuration > Select: "ttd - Win32 Release with PNG"
Compile...
Now it should work, it worked for me :)
From r1319 you can compile branch/map in Debug mode (by Bociusz)
If it's not working, and you checked that you using the newest SVN (!) report to Bociusz on IRC (irc://irc.freenode.net/#openttd)
Go ahead and make that patch! Happy Hacking! :)
Originally written by Dribbel
Project file updating by Bociusz
+19 -19
View File
@@ -1,20 +1,20 @@
Notes about DirectMusic driver for Win32
----------------------------------------
If compiling under MinGW32, you require the DirectX 7.0 files for MinGW32, available from
http://alleg.sourceforge.net/files/dx70_mgw.zip.
If compiling under MSVC 6.0, you require the equivalent for MSVC, available from
http://alleg.sourceforge.net/files/dx70_min.zip. MSVC 7.0/7.1 include header files that
are recent enough.
If you do not want to compile the DirectMusic driver, undefine WIN32_ENABLE_DIRECTMUSIC_SUPPORT
in stdafx.h.
Bugs, etc
---------
- The volume control doesn't work properly. I'll fix this soon.
Owen Rudge
Notes about DirectMusic driver for Win32
----------------------------------------
If compiling under MinGW32, you require the DirectX 7.0 files for MinGW32, available from
http://alleg.sourceforge.net/files/dx70_mgw.zip.
If compiling under MSVC 6.0, you require the equivalent for MSVC, available from
http://alleg.sourceforge.net/files/dx70_min.zip. MSVC 7.0/7.1 include header files that
are recent enough.
If you do not want to compile the DirectMusic driver, undefine WIN32_ENABLE_DIRECTMUSIC_SUPPORT
in stdafx.h.
Bugs, etc
---------
- The volume control doesn't work properly. I'll fix this soon.
Owen Rudge
14th March 2004
+2 -2
View File
@@ -22,13 +22,13 @@ openttd \- An open source clone of the Microprose game "Transport Tycoon Deluxe
.RI [ options ]
.br
.SH DESCRIPTION
Unfortanetely, there is no real manpage for openttd yet. Hopefully someone
Unfortunately, there is no real manpage for openttd yet. Hopefully someone
will write one soon. For now you should use
.B openttd -h
for more information, or check our Wiki manual: http://wiki.openttd.org/
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
.\" respectively.
.\" \fBopenttd\fP is a program that...
.SH OPTIONS
+38 -38
View File
@@ -1,38 +1,38 @@
0,9,10,2,3,13,9,9,0,10,4,15,6,11,14,1
dark blue=0 =0
pale_green=1 =9
pink=2 =10
yellow=3 =2
red=4 =3
light blue=5 =13
green=6 =9
dark green=7 =9
blue=8 =0
cream=9 =10
mauve=10 =4
purple=11 =15
orange=12 =6
brown=13 =11
grey=14 =14
white=15 =1
=blue=0
=white=1
=yellow=2
=red=3
=blue=4
=grey=5
=orange=6
=green=7
=light yellow=8
=light green=9
=cream=10
=brown=11
=white=12
=light blue=13
=dark grey=14
=purple=15
=black=16
=dark green=17=not good
=dark grey=21
0,9,10,2,3,13,9,9,0,10,4,15,6,11,14,1
dark blue=0 =0
pale_green=1 =9
pink=2 =10
yellow=3 =2
red=4 =3
light blue=5 =13
green=6 =9
dark green=7 =9
blue=8 =0
cream=9 =10
mauve=10 =4
purple=11 =15
orange=12 =6
brown=13 =11
grey=14 =14
white=15 =1
=blue=0
=white=1
=yellow=2
=red=3
=blue=4
=grey=5
=orange=6
=green=7
=light yellow=8
=light green=9
=cream=10
=brown=11
=white=12
=light blue=13
=dark grey=14
=purple=15
=black=16
=dark green=17=not good
=dark grey=21
+69 -51
View File
@@ -26,8 +26,8 @@ uint GetMaskOfAllowedCurrencies(void)
for (i = 0; i != lengthof(_currency_specs); i++) {
uint16 to_euro = _currency_specs[i].to_euro;
if (i == 23) mask |= (1 << 23); // always allow custom currency
if (to_euro != CF_NOEURO && to_euro != CF_ISEURO && _cur_year >= (to_euro-1920)) continue;
if (_cur_year < (2000-1920) && (to_euro == CF_ISEURO)) continue;
if (to_euro != CF_NOEURO && to_euro != CF_ISEURO && _cur_year >= (to_euro-MAX_YEAR_BEGIN_REAL)) continue;
if (_cur_year < (2000-MAX_YEAR_BEGIN_REAL) && (to_euro == CF_ISEURO)) continue;
mask |= (1 << i);
}
return mask;
@@ -37,7 +37,7 @@ void CheckSwitchToEuro(void)
{
if (_currency_specs[_opt.currency].to_euro != CF_NOEURO &&
_currency_specs[_opt.currency].to_euro != CF_ISEURO &&
_cur_year >= (_currency_specs[_opt.currency].to_euro-1920)) {
_cur_year >= (_currency_specs[_opt.currency].to_euro-MAX_YEAR_BEGIN_REAL)) {
_opt.currency = 2; // this is the index of euro above.
AddNewsItem(STR_EURO_INTRODUCE, NEWS_FLAGS(NM_NORMAL,0,NT_ECONOMY,0), 0, 0);
}
@@ -105,10 +105,9 @@ int64 CalculateCompanyValue(Player *p) {
}
}
if (p->player_money > 0)
value += p->money64; // add real money value
value += p->money64 - p->current_loan; // add real money value
return value;
return max(value, 1);
}
// if update is set to true, the economy is updated with this score
@@ -129,7 +128,7 @@ int UpdateCompanyRatingAndValue(Player *p, bool update)
FOR_ALL_VEHICLES(v) {
if (v->owner != owner)
continue;
if ((v->type == VEH_Train && v->subtype == 0) ||
if ((v->type == VEH_Train && v->subtype == TS_Front_Engine) ||
v->type == VEH_Road ||
(v->type == VEH_Aircraft && v->subtype<=2) ||
v->type == VEH_Ship) {
@@ -270,7 +269,7 @@ void ChangeOwnershipOfPlayerItems(byte old_player, byte new_player)
for(s=_subsidies; s != endof(_subsidies); s++) {
if (s->cargo_type != 0xff && s->age >= 12) {
Station *st = DEREF_STATION(s->to);
Station *st = GetStation(s->to);
if (st->owner == old_player)
s->cargo_type = 0xff;
}
@@ -311,7 +310,7 @@ void ChangeOwnershipOfPlayerItems(byte old_player, byte new_player)
// Determine Ids for the new vehicles
FOR_ALL_VEHICLES(v) {
if (v->owner == new_player) {
if (v->type == VEH_Train && v->subtype == 0)
if (v->type == VEH_Train && v->subtype == TS_Front_Engine)
num_train++;
else if (v->type == VEH_Road)
num_road++;
@@ -331,7 +330,7 @@ void ChangeOwnershipOfPlayerItems(byte old_player, byte new_player)
DeleteVehicle(v);
} else {
v->owner = new_player;
if (v->type == VEH_Train && v->subtype == 0)
if (v->type == VEH_Train && v->subtype == TS_Front_Engine)
v->unitnumber = ++num_train;
else if (v->type == VEH_Road)
v->unitnumber = ++num_road;
@@ -349,7 +348,7 @@ void ChangeOwnershipOfPlayerItems(byte old_player, byte new_player)
uint tile = 0;
do {
ChangeTileOwner(tile, old_player, new_player);
} while (++tile != TILES_X * TILES_Y);
} while (++tile != MapSize());
}
// Change color of existing windows
@@ -585,7 +584,7 @@ StringID GetNewsStringBankrupcy(NewsItem *ni)
return 0;
}
static void PlayersGenStatistics()
static void PlayersGenStatistics(void)
{
Station *st;
Player *p;
@@ -634,7 +633,7 @@ static void AddSingleInflation(int32 *value, uint16 *frac, int32 amt)
*value += (int32)(tmp >> 16) + (low >> 16);
}
static void AddInflation()
static void AddInflation(void)
{
int i;
int32 inf = _economy.infl_amount * 54;
@@ -658,11 +657,12 @@ static void AddInflation()
}
InvalidateWindowClasses(WC_BUILD_VEHICLE);
InvalidateWindowClasses(WC_REPLACE_VEHICLE);
InvalidateWindowClasses(WC_VEHICLE_DETAILS);
InvalidateWindow(WC_PAYMENT_RATES, 0);
}
static void PlayersPayInterest()
static void PlayersPayInterest(void)
{
Player *p;
int interest = _economy.interest_rate * 54;
@@ -681,7 +681,7 @@ static void PlayersPayInterest()
}
}
static void HandleEconomyFluctuations()
static void HandleEconomyFluctuations(void)
{
if (_opt.diff.economy == 0)
return;
@@ -757,7 +757,7 @@ static const int32 _price_base[NUM_PRICES] = {
1000000, // build_industry
};
void StartupEconomy()
void StartupEconomy(void)
{
int i;
@@ -798,7 +798,7 @@ Pair SetupSubsidyDecodeParam(Subsidy *s, bool mode)
if (s->age < 12) {
if (!(s->cargo_type == CT_PASSENGERS || s->cargo_type == CT_MAIL)) {
SetDParam(1, STR_2029);
i = DEREF_INDUSTRY(s->from);
i = GetIndustry(s->from);
tile = i->xy;
SetDParam(2, i->town->townnametype);
SetDParam(3, i->town->townnameparts);
@@ -807,34 +807,34 @@ Pair SetupSubsidyDecodeParam(Subsidy *s, bool mode)
if (s->cargo_type != CT_GOODS && s->cargo_type != CT_FOOD) {
SetDParam(5, STR_2029);
i = DEREF_INDUSTRY(s->to);
i = GetIndustry(s->to);
tile2 = i->xy;
SetDParam(8, i->type + STR_4802_COAL_MINE);
SetDParam(6, i->town->townnametype);
SetDParam(7, i->town->townnameparts);
} else {
t = DEREF_TOWN(s->to);
t = GetTown(s->to);
tile2 = t->xy;
SetDParam(5, t->townnametype);
SetDParam(6, t->townnameparts);
}
} else {
t = DEREF_TOWN(s->from);
t = GetTown(s->from);
tile = t->xy;
SetDParam(1, t->townnametype);
SetDParam(2, t->townnameparts);
t = DEREF_TOWN(s->to);
t = GetTown(s->to);
tile2 = t->xy;
SetDParam(3, t->townnametype);
SetDParam(4, t->townnameparts);
}
} else {
st = DEREF_STATION(s->from);
st = GetStation(s->from);
tile = st->xy;
SetDParam(1, st->index);
st = DEREF_STATION(s->to);
st = GetStation(s->to);
tile2 = st->xy;
SetDParam(2, st->index);
}
@@ -845,7 +845,7 @@ Pair SetupSubsidyDecodeParam(Subsidy *s, bool mode)
return tp;
}
void DeleteSubsidyWithIndustry(byte index)
void DeleteSubsidyWithIndustry(uint16 index)
{
Subsidy *s;
@@ -858,7 +858,7 @@ void DeleteSubsidyWithIndustry(byte index)
}
}
void DeleteSubsidyWithStation(byte index)
void DeleteSubsidyWithStation(uint16 index)
{
Subsidy *s;
bool dirty = false;
@@ -888,11 +888,11 @@ static void FindSubsidyPassengerRoute(FoundRoute *fr)
fr->distance = (uint)-1;
fr->from = from = DEREF_TOWN(RandomRange(_total_towns));
fr->from = from = GetTown(RandomRange(_total_towns));
if (from->xy == 0 || from->population < 400)
return;
fr->to = to = DEREF_TOWN(RandomRange(_total_towns));
fr->to = to = GetTown(RandomRange(_total_towns));
if (from==to || to->xy == 0 || to->population < 400 || to->pct_pass_transported > 42)
return;
@@ -907,7 +907,7 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
fr->distance = (uint)-1;
fr->from = i = DEREF_INDUSTRY(RandomRange(_total_industries));
fr->from = i = GetIndustry(RandomRange(_total_industries));
if (i->xy == 0)
return;
@@ -932,7 +932,7 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
if (cargo == CT_GOODS || cargo == CT_FOOD) {
// The destination is a town
Town *t = DEREF_TOWN(RandomRange(_total_towns));
Town *t = GetTown(RandomRange(_total_towns));
// Only want big towns
if (t->xy == 0 || t->population < 900)
@@ -941,7 +941,7 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
fr->to = t;
} else {
// The destination is an industry
Industry *i2 = DEREF_INDUSTRY(RandomRange(_total_industries));
Industry *i2 = GetIndustry(RandomRange(_total_industries));
// The industry must accept the cargo
if (i == i2 || i2->xy == 0 ||
@@ -989,7 +989,7 @@ void RemoteSubsidyAdd(Subsidy *s_new)
InvalidateWindow(WC_SUBSIDIES_LIST, 0);
}
static void SubsidyMonthlyHandler()
static void SubsidyMonthlyHandler(void)
{
Subsidy *s;
Pair pair;
@@ -1008,7 +1008,7 @@ static void SubsidyMonthlyHandler()
s->cargo_type = 0xFF;
modified = true;
} else if (s->age == 2*12-1) {
st = DEREF_STATION(s->to);
st = GetStation(s->to);
if (st->owner == _local_player) {
pair = SetupSubsidyDecodeParam(s, 1);
AddNewsItem(STR_202F_SUBSIDY_WITHDRAWN_SERVICE, NEWS_FLAGS(NM_NORMAL, NF_TILE, NT_SUBSIDIES, 0), pair.a, pair.b);
@@ -1041,8 +1041,8 @@ static void SubsidyMonthlyHandler()
FindSubsidyCargoRoute(&fr);
if (fr.distance <= 70) {
s->cargo_type = fr.cargo;
s->from = (Industry*)fr.from - _industries;
s->to = (fr.cargo == CT_GOODS || fr.cargo == CT_FOOD) ? ((Town*)fr.to)->index : (Industry*)fr.to - _industries;
s->from = ((Industry*)fr.from)->index;
s->to = (fr.cargo == CT_GOODS || fr.cargo == CT_FOOD) ? ((Town*)fr.to)->index : ((Industry*)fr.to)->index;
add_subsidy:
if (!CheckSubsidyDuplicate(s)) {
s->age = 0;
@@ -1062,12 +1062,14 @@ no_add:;
static const byte _subsidies_desc[] = {
SLE_VAR(Subsidy,cargo_type, SLE_UINT8),
SLE_VAR(Subsidy,age, SLE_UINT8),
SLE_VAR(Subsidy,from, SLE_UINT8),
SLE_VAR(Subsidy,to, SLE_UINT8),
SLE_CONDVAR(Subsidy,from, SLE_FILE_U8 | SLE_VAR_U16, 0, 4),
SLE_CONDVAR(Subsidy,from, SLE_UINT16, 5, 255),
SLE_CONDVAR(Subsidy,to, SLE_FILE_U8 | SLE_VAR_U16, 0, 4),
SLE_CONDVAR(Subsidy,to, SLE_UINT16, 5, 255),
SLE_END()
};
static void Save_SUBS()
static void Save_SUBS(void)
{
int i;
Subsidy *s;
@@ -1081,7 +1083,7 @@ static void Save_SUBS()
}
}
static void Load_SUBS()
static void Load_SUBS(void)
{
int index;
while ((index = SlIterateArray()) != -1)
@@ -1125,7 +1127,7 @@ static void DeliverGoodsToIndustry(TileIndex xy, byte cargo_type, int num_pieces
* the cargo */
best = NULL;
u = _patches.station_spread + 8;
for(ind = _industries; ind != endof(_industries); ind++) {
FOR_ALL_INDUSTRIES(ind) {
if (ind->xy != 0 && (cargo_type == ind->accepts_cargo[0] || cargo_type
== ind->accepts_cargo[1] || cargo_type == ind->accepts_cargo[2]) &&
ind->produced_cargo[0] != 0xFF &&
@@ -1165,18 +1167,18 @@ static bool CheckSubsidised(Station *from, Station *to, byte cargo_type)
/* Check distance from source */
if (cargo_type == CT_PASSENGERS || cargo_type == CT_MAIL) {
xy = DEREF_TOWN(s->from)->xy;
xy = GetTown(s->from)->xy;
} else {
xy = (DEREF_INDUSTRY(s->from))->xy;
xy = (GetIndustry(s->from))->xy;
}
if (GetTileDist1D(xy, from->xy) > 9)
continue;
/* Check distance from dest */
if (cargo_type == CT_PASSENGERS || cargo_type == CT_MAIL || cargo_type == CT_GOODS || cargo_type == CT_FOOD) {
xy = DEREF_TOWN(s->to)->xy;
xy = GetTown(s->to)->xy;
} else {
xy = (DEREF_INDUSTRY(s->to))->xy;
xy = (GetIndustry(s->to))->xy;
}
if (GetTileDist1D(xy, to->xy) > 9)
@@ -1222,8 +1224,8 @@ static int32 DeliverGoods(int num_pieces, byte cargo_type, byte source, byte des
}
// Get station pointers.
s_from = DEREF_STATION(source);
s_to = DEREF_STATION(dest);
s_from = GetStation(source);
s_to = GetStation(dest);
// Check if a subsidy applies.
subsidised = CheckSubsidised(s_from, s_to, cargo_type);
@@ -1296,7 +1298,7 @@ static bool LoadWait(const Vehicle *v, const Vehicle *u) {
}
FOR_ALL_VEHICLES(x) {
if ((x->type != VEH_Train || x->subtype == 0) && // for all locs
if ((x->type != VEH_Train || x->subtype == TS_Front_Engine) && // for all locs
u->last_station_visited == x->last_station_visited && // at the same station
!(x->vehstatus & VS_STOPPED) && // not stopped
x->current_order.type == OT_LOADING && // loading
@@ -1347,7 +1349,7 @@ int LoadUnloadVehicle(Vehicle *v)
old_player = _current_player;
_current_player = v->owner;
st = DEREF_STATION(last_visited = v->last_station_visited);
st = GetStation(last_visited = v->last_station_visited);
for (; v != NULL; v = v->next) {
if (v->cargo_cap == 0) continue;
@@ -1472,7 +1474,7 @@ int LoadUnloadVehicle(Vehicle *v)
return result;
}
void PlayersMonthlyLoop()
void PlayersMonthlyLoop(void)
{
PlayersGenStatistics();
if (_patches.inflation)
@@ -1517,6 +1519,7 @@ static void DoAcquireCompany(Player *p)
p->is_active = false;
DeletePlayerWindows(pi);
RebuildVehicleLists(); //Updates the open windows to add the newly acquired vehicles to the lists
}
extern int GetAmountOwnedBy(Player *p, byte owner);
@@ -1531,9 +1534,20 @@ int32 CmdBuyShareInCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_OTHER);
p = DEREF_PLAYER(p1);
if (_cur_year - p->inaugurated_year < 6) {
_error_message = STR_7080_PROTECTED;
return CMD_ERROR;
}
/* Check if buying shares is allowed (protection against modified clients */
if (!_patches.allow_shares)
return CMD_ERROR;
/* Those lines are here for network-protection (clients can be slow) */
if (GetAmountOwnedBy(p, OWNER_SPECTATOR) == 0)
return 0;
/* We can not buy out a real player in networking */
if (GetAmountOwnedBy(p, OWNER_SPECTATOR) == 1 && !p->is_ai)
return 0;
@@ -1565,6 +1579,10 @@ int32 CmdSellShareInCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_OTHER);
p = DEREF_PLAYER(p1);
/* Check if selling shares is allowed (protection against modified clients */
if (!_patches.allow_shares)
return CMD_ERROR;
/* Those lines are here for network-protection (clients can be slow) */
if (GetAmountOwnedBy(p, _current_player) == 0)
return 0;
@@ -1594,14 +1612,14 @@ int32 CmdBuyCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
}
// Prices
static void SaveLoad_PRIC()
static void SaveLoad_PRIC(void)
{
SlArray(&_price, NUM_PRICES, SLE_INT32);
SlArray(&_price_frac, NUM_PRICES, SLE_UINT16);
}
// Cargo payment rates
static void SaveLoad_CAPR()
static void SaveLoad_CAPR(void)
{
SlArray(&_cargo_payment_rates, NUM_CARGO, SLE_INT32);
SlArray(&_cargo_payment_rates_frac, NUM_CARGO, SLE_UINT16);
@@ -1618,7 +1636,7 @@ static const byte _economy_desc[] = {
};
// Economy variables
static void SaveLoad_ECMY()
static void SaveLoad_ECMY(void)
{
SlObject(&_economy, &_economy_desc);
}
+4 -4
View File
@@ -18,8 +18,8 @@ VARDEF Economy _economy;
typedef struct Subsidy {
byte cargo_type;
byte age;
byte from;
byte to;
uint16 from;
uint16 to;
} Subsidy;
@@ -68,8 +68,8 @@ void UpdatePlayerHouse(Player *p, uint score);
VARDEF Subsidy _subsidies[MAX_PLAYERS];
Pair SetupSubsidyDecodeParam(Subsidy *s, bool mode);
void DeleteSubsidyWithIndustry(byte index);
void DeleteSubsidyWithStation(byte index);
void DeleteSubsidyWithIndustry(uint16 index);
void DeleteSubsidyWithStation(uint16 index);
void RemoteSubsidyAdd(Subsidy *s_new);
int32 GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, byte cargo_type);
+61 -29
View File
@@ -3,6 +3,7 @@
#include "table/strings.h"
#include "engine.h"
#include "table/engines.h"
#include "gfx.h"
#include "player.h"
#include "command.h"
#include "vehicle.h"
@@ -49,7 +50,7 @@ byte _local_cargo_id_landscape[NUM_CID] = {
void ShowEnginePreviewWindow(int engine);
void DeleteCustomEngineNames()
void DeleteCustomEngineNames(void)
{
uint i;
StringID old;
@@ -63,13 +64,13 @@ void DeleteCustomEngineNames()
_vehicle_design_names &= ~1;
}
void LoadCustomEngineNames()
void LoadCustomEngineNames(void)
{
// XXX: not done */
DEBUG(misc, 1) ("LoadCustomEngineNames: not done");
}
static void SetupEngineNames()
static void SetupEngineNames(void)
{
uint i;
@@ -80,7 +81,7 @@ static void SetupEngineNames()
LoadCustomEngineNames();
}
static void AdjustAvailAircraft()
static void AdjustAvailAircraft(void)
{
uint16 date = _date;
byte avail = 0;
@@ -115,16 +116,39 @@ static void CalcEngineReliability(Engine *e)
}
}
void StartupEngines()
void AddTypeToEngines(void)
{
Engine *e;
uint32 counter = 0;
for(e=_engines; e != endof(_engines); e++, counter++) {
e->type = VEH_Train;
if (counter >= ROAD_ENGINES_INDEX) {
e->type = VEH_Road;
if (counter >= SHIP_ENGINES_INDEX) {
e->type = VEH_Ship;
if (counter >= AIRCRAFT_ENGINES_INDEX) {
e->type = VEH_Aircraft;
if (counter >= TOTAL_NUM_ENGINES) {
e->type = VEH_Special;
}
}
}
}
}
}
void StartupEngines(void)
{
Engine *e;
const EngineInfo *ei;
uint32 r;
uint32 r, counter = 0;
SetupEngineNames();
for(e=_engines, ei=_engine_info; e != endof(_engines); e++, ei++, counter++) {
for(e=_engines, ei=_engine_info; e != endof(_engines); e++,ei++) {
e->age = 0;
e->railtype = ei->railtype_climates >> 4;
e->flags = 0;
@@ -164,6 +188,12 @@ void StartupEngines()
e->flags |= ENGINE_AVAILABLE;
e->player_avail = 0;
}
/* This sets up type for the engine
It is needed if you want to ask the engine what type it is
It should hopefully be the same as when you ask a vehicle what it is
but using this, you can ask what type an engine number is
even if it is not a vehicle (yet)*/
}
AdjustAvailAircraft();
@@ -376,8 +406,8 @@ ResolveVehicleSpriteGroup(struct SpriteGroup *spritegroup, struct Vehicle *veh,
veh_prop(0x57, veh->profit_last_year & 0xFF);
veh_prop(0x58, veh->profit_last_year);
veh_prop(0x59, veh->profit_last_year & 0xFF);
veh_prop(0x5A, veh->next_in_chain_old);
veh_prop(0x5B, veh->next_in_chain_old & 0xFF);
/* veh_prop(0x5A, veh->next_in_chain_old);
veh_prop(0x5B, veh->next_in_chain_old & 0xFF);*/
veh_prop(0x5C, veh->value);
veh_prop(0x5D, veh->value & 0xFFFFFF);
veh_prop(0x5E, veh->value & 0xFFFF);
@@ -621,9 +651,10 @@ void AcceptEnginePreview(Engine *e, int player)
e->preview_player = 0xFF;
InvalidateWindowClasses(WC_BUILD_VEHICLE);
InvalidateWindowClasses(WC_REPLACE_VEHICLE);
}
void EnginesDailyLoop()
void EnginesDailyLoop(void)
{
Engine *e;
int i,num;
@@ -688,14 +719,9 @@ int32 CmdWantEnginePreview(int x, int y, uint32 flags, uint32 p1, uint32 p2)
}
// Determine if an engine type is a wagon (and not a loco)
bool isWagon(byte index)
static bool IsWagon(byte index)
{
if (index < NUM_TRAIN_ENGINES) {
const RailVehicleInfo *rvi = &_rail_vehicle_info[index];
if(rvi->flags & RVI_WAGON)
return true;
}
return false;
return index < NUM_TRAIN_ENGINES && RailVehInfo(index)->flags & RVI_WAGON;
}
static void NewVehicleAvailable(Engine *e)
@@ -708,17 +734,22 @@ static void NewVehicleAvailable(Engine *e)
// prevent that player from getting future intro periods for a while.
if (e->flags&ENGINE_INTRODUCING) {
FOR_ALL_PLAYERS(p) {
uint block_preview = p->block_preview;
if (!HASBIT(e->player_avail,p->index))
continue;
for(v=_vehicles;;) {
/* We assume the user did NOT build it.. prove me wrong ;) */
p->block_preview = 20;
FOR_ALL_VEHICLES(v) {
if (v->type == VEH_Train || v->type == VEH_Road || v->type == VEH_Ship ||
(v->type == VEH_Aircraft && v->subtype <= 2)) {
if (v->owner == p->index && v->engine_type == index) break;
}
if (++v == endof(_vehicles)) {
p->block_preview = 20;
break;
if (v->owner == p->index && v->engine_type == index) {
/* The user did prove me wrong, so restore old value */
p->block_preview = block_preview;
break;
}
}
}
}
@@ -726,12 +757,13 @@ static void NewVehicleAvailable(Engine *e)
e->flags = (e->flags & ~ENGINE_INTRODUCING) | ENGINE_AVAILABLE;
InvalidateWindowClasses(WC_BUILD_VEHICLE);
InvalidateWindowClasses(WC_REPLACE_VEHICLE);
// Now available for all players
e->player_avail = (byte)-1;
// Do not introduce new rail wagons
if(isWagon(index))
if (IsWagon(index))
return;
// make maglev / monorail available
@@ -751,7 +783,7 @@ static void NewVehicleAvailable(Engine *e)
}
}
void EnginesMonthlyLoop()
void EnginesMonthlyLoop(void)
{
Engine *e;
@@ -771,7 +803,7 @@ void EnginesMonthlyLoop()
e->flags |= ENGINE_INTRODUCING;
// Do not introduce new rail wagons
if(!isWagon(e - _engines))
if (!IsWagon(e - _engines))
e->preview_player = 1; // Give to the player with the highest rating.
}
}
@@ -846,7 +878,7 @@ static const byte _engine_desc[] = {
SLE_END()
};
static void Save_ENGN()
static void Save_ENGN(void)
{
Engine *e;
int i;
@@ -856,7 +888,7 @@ static void Save_ENGN()
}
}
static void Load_ENGN()
static void Load_ENGN(void)
{
int index;
while ((index = SlIterateArray()) != -1) {
@@ -864,7 +896,7 @@ static void Load_ENGN()
}
}
static void LoadSave_ENGS()
static void LoadSave_ENGS(void)
{
SlArray(_engine_name_strings, lengthof(_engine_name_strings), SLE_STRINGID);
}
+6 -4
View File
@@ -36,7 +36,7 @@ typedef struct AircraftVehicleInfo {
byte acceleration;
byte max_speed;
byte mail_capacity;
uint16 passanger_capacity;
uint16 passenger_capacity;
} AircraftVehicleInfo;
typedef struct RoadVehicleInfo {
@@ -70,6 +70,7 @@ typedef struct Engine {
byte preview_wait;
byte railtype;
byte player_avail;
byte type; // type, ie VEH_Road, VEH_Train, etc. Same as in vehicle.h
} Engine;
@@ -79,7 +80,8 @@ enum {
};
void StartupEngines();
void AddTypeToEngines(void);
void StartupEngines(void);
extern byte _global_cargo_id[NUM_LANDSCAPE][NUM_CARGO];
@@ -128,8 +130,8 @@ void DrawAircraftEngineInfo(int engine, int x, int y, int maxw);
void AcceptEnginePreview(Engine *e, int player);
void LoadCustomEngineNames();
void DeleteCustomEngineNames();
void LoadCustomEngineNames(void);
void DeleteCustomEngineNames(void);
enum {
+6 -9
View File
@@ -9,11 +9,8 @@
#include "command.h"
#include "news.h"
void DrawShipEngine(int x, int y, int engine, uint32 image_ormod);
void DrawShipEngineInfo(int engine, int x, int y, int maxw);
StringID GetEngineCategoryName(byte engine)
static StringID GetEngineCategoryName(byte engine)
{
if (engine < NUM_TRAIN_ENGINES) {
switch (_engines[engine].railtype) {
@@ -36,11 +33,11 @@ StringID GetEngineCategoryName(byte engine)
}
static const Widget _engine_preview_widgets[] = {
{ WWT_TEXTBTN, 5, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 5, 11, 299, 0, 13, STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 5, 0, 299, 14, 191, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, 5, 85, 144, 172, 183, STR_00C9_NO, STR_NULL},
{ WWT_PUSHTXTBTN, 5, 155, 214, 172, 183, STR_00C8_YES, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 5, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 5, 11, 299, 0, 13, STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, RESIZE_NONE, 5, 0, 299, 14, 191, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 5, 85, 144, 172, 183, STR_00C9_NO, STR_NULL},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 5, 155, 214, 172, 183, STR_00C8_YES, STR_NULL},
{ WIDGETS_END},
};
+19 -13
View File
@@ -1,6 +1,7 @@
#include "stdafx.h"
#include "ttd.h"
#if defined(UNIX)
#include "fileio.h"
#if defined(UNIX) || defined(__OS2__)
#include <ctype.h> // required for tolower()
#endif
@@ -21,7 +22,7 @@ typedef struct {
static Fio _fio;
// Get current position in file
uint32 FioGetPos()
uint32 FioGetPos(void)
{
return _fio.pos + (_fio.buffer - _fio.buffer_start) - FIO_BUFFER_SIZE;
}
@@ -42,7 +43,7 @@ void FioSeekToFile(uint32 pos)
FioSeekTo(pos & 0xFFFFFF, SEEK_SET);
}
byte FioReadByte()
byte FioReadByte(void)
{
if (_fio.buffer == _fio.buffer_end) {
_fio.pos += FIO_BUFFER_SIZE;
@@ -64,13 +65,13 @@ void FioSkipBytes(int n)
}
uint16 FioReadWord()
uint16 FioReadWord(void)
{
byte b = FioReadByte();
return (FioReadByte() << 8) | b;
}
uint32 FioReadDword()
uint32 FioReadDword(void)
{
uint b = FioReadWord();
return (FioReadWord() << 16) | b;
@@ -83,16 +84,20 @@ void FioReadBlock(void *ptr, uint size)
fread(ptr, 1, size, _fio.cur_fh);
}
void FioCloseAll()
static inline void FioCloseFile(int slot)
{
if (_fio.handles[slot] != NULL) {
fclose(_fio.handles[slot]);
_fio.handles[slot] = NULL;
}
}
void FioCloseAll(void)
{
int i;
for(i=0; i!=lengthof(_fio.handles); i++) {
if (_fio.handles[i] != NULL) {
fclose(_fio.handles[i]);
_fio.handles[i] = NULL;
}
}
for (i = 0; i != lengthof(_fio.handles); i++)
FioCloseFile(i);
}
void FioOpenFile(int slot, const char *filename)
@@ -110,7 +115,7 @@ void FioOpenFile(int slot, const char *filename)
for(s=buf + strlen(_path.data_dir) - 1; *s != 0; s++)
*s = tolower(*s);
f = fopen(buf, "rb");
#if defined SECOND_DATA_DIR
// tries in the 2nd data directory
if (f == NULL) {
@@ -126,6 +131,7 @@ void FioOpenFile(int slot, const char *filename)
if (f == NULL)
error("Cannot open file '%s'", buf);
FioCloseFile(slot); // if file was opened before, close it
_fio.handles[slot] = f;
FioSeekToFile(slot << 24);
}
+5 -5
View File
@@ -3,11 +3,11 @@
void FioSeekTo(uint32 pos, int mode);
void FioSeekToFile(uint32 pos);
uint32 FioGetPos();
byte FioReadByte();
uint16 FioReadWord();
uint32 FioReadDword();
void FioCloseAll();
uint32 FioGetPos(void);
byte FioReadByte(void);
uint16 FioReadWord(void);
uint32 FioReadDword(void);
void FioCloseAll(void);
void FioOpenFile(int slot, const char *filename);
void FioReadBlock(void *ptr, uint size);
void FioSkipBytes(int n);
+43 -42
View File
@@ -16,7 +16,7 @@ void DoClearSquare(uint tile);
void CDECL ModifyTile(uint tile, uint flags, ...);
void SetMapExtraBits(uint tile, byte flags);
uint GetMapExtraBits(uint tile);
void RunTileLoop();
void RunTileLoop(void);
uint GetPartialZ(int x, int y, int corners);
uint GetSlopeZ(int x, int y);
@@ -58,10 +58,10 @@ static inline Point RemapCoords2(int x, int y)
byte *GetString(byte *buffr, uint16 string);
void InjectDparam(int amount);
int32 GetParamInt32();
int GetParamInt16();
int GetParamInt8();
int GetParamUint16();
int32 GetParamInt32(void);
int GetParamInt16(void);
int GetParamInt8(void);
int GetParamUint16(void);
/* clear_land.c */
@@ -113,17 +113,17 @@ void NORETURN CDECL error(const char *str, ...);
#ifdef RANDOM_DEBUG
#define Random() DoRandom(__LINE__, __FILE__)
uint32 DoRandom(uint line, char *file);
uint32 DoRandom(int line, const char *file);
#define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
uint DoRandomRange(uint max, uint line, char *file);
uint DoRandomRange(uint max, int line, const char *file);
#else
uint32 Random();
uint32 Random(void);
uint RandomRange(uint max);
#endif
void InitPlayerRandoms();
void InitPlayerRandoms(void);
uint32 InteractiveRandom(); /* Used for random sequences that are not the same on the other end of the multiplayer link */
uint32 InteractiveRandom(void); /* Used for random sequences that are not the same on the other end of the multiplayer link */
uint InteractiveRandomRange(uint max);
void SetDate(uint date);
@@ -131,21 +131,21 @@ void SetDate(uint date);
void DrawPlayerFace(uint32 face, int color, int x, int y);
/* texteff.c */
void MoveAllTextEffects();
void MoveAllTextEffects(void);
void AddTextEffect(StringID msg, int x, int y, uint16 duration);
void InitTextEffects();
void InitTextEffects(void);
void DrawTextEffects(DrawPixelInfo *dpi);
void InitTextMessage();
void DrawTextMessage();
void InitTextMessage(void);
void DrawTextMessage(void);
void CDECL AddTextMessage(uint16 color, uint8 duration, const char *message, ...);
void UndrawTextMessage();
void TextMessageDailyLoop();
void UndrawTextMessage(void);
void TextMessageDailyLoop(void);
bool AddAnimatedTile(uint tile);
void DeleteAnimatedTile(uint tile);
void AnimateAnimatedTiles();
void InitializeAnimatedTiles();
void AnimateAnimatedTiles(void);
void InitializeAnimatedTiles(void);
/* tunnelbridge_cmd.c */
bool CheckTunnelInWay(uint tile, int z);
@@ -158,18 +158,18 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
/* network.c */
void NetworkUDPClose(void);
void NetworkStartUp();
void NetworkStartUp(void);
void NetworkShutDown(void);
void NetworkGameLoop(void);
void NetworkUDPGameLoop(void);
bool NetworkServerStart(void);
bool NetworkClientConnectGame(const byte* host, unsigned short port);
void NetworkReboot();
void NetworkDisconnect();
void NetworkReboot(void);
void NetworkDisconnect(void);
void NetworkSend_Command(uint32 tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback);
/* misc_cmd.c */
void PlaceTreesRandomly();
void PlaceTreesRandomly(void);
uint GetTileDist(TileIndex xy1, TileIndex xy2);
uint GetTileDist1D(TileIndex xy1, TileIndex xy2);
@@ -201,11 +201,12 @@ void InvalidateWindow(byte cls, WindowNumber number);
void InvalidateWindowWidget(byte cls, WindowNumber number, byte widget_index);
void InvalidateWindowClasses(byte cls);
void DeleteWindowById(WindowClass cls, WindowNumber number);
void DeleteWindowByClass(WindowClass cls);
void SetObjectToPlaceWnd(int icon, byte mode, Window *w);
void SetObjectToPlace(int icon, byte mode, byte window_class, uint16 window_num);
void SetObjectToPlace(int icon, byte mode, WindowClass window_class, WindowNumber window_num);
void ResetObjectToPlace();
void ResetObjectToPlace(void);
bool ScrollWindowToTile(TileIndex tile, Window * w);
bool ScrollWindowTo(int x, int y, Window * w);
@@ -213,11 +214,11 @@ bool ScrollWindowTo(int x, int y, Window * w);
bool ScrollMainWindowToTile(TileIndex tile);
bool ScrollMainWindowTo(int x, int y);
void DrawSprite(uint32 img, int x, int y);
uint GetCorrectTileHeight(TileIndex tile);
bool EnsureNoVehicle(TileIndex tile);
bool EnsureNoVehicleZ(TileIndex tile, byte z);
void MarkAllViewportsDirty(int left, int top, int right, int bottom);
void ShowCostOrIncomeAnimation(int x, int y, int z, int32 cost);
void MarkWholeScreenDirty();
void DrawFoundation(TileInfo *ti, uint f);
@@ -227,15 +228,14 @@ void ChangeTownRating(Town *t, int add, int max);
uint GetRoadBitsByTile(TileIndex tile);
int GetTownRadiusGroup(Town *t, uint tile);
int32 GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, byte cargo_type);
void ShowNetworkChatQueryWindow(byte desttype, byte dest);
void ShowNetworkGiveMoneyWindow(byte player);
void ShowNetworkNeedGamePassword();
void ShowNetworkNeedCompanyPassword();
void ShowRenameSignWindow(SignStruct *ss);
void ShowNetworkNeedGamePassword(void);
void ShowNetworkNeedCompanyPassword(void);
void ShowRenameWaypointWindow(Waypoint *cp);
int FindFirstBit(uint32 x);
void ShowHighscoreTable(int tbl);
void ShowHighscoreTable(int difficulty, int8 rank);
void ShowEndGameChart(void);
TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng);
enum SaveOrLoadResult {
@@ -252,11 +252,11 @@ enum SaveOrLoadMode {
int SaveOrLoad(const char *filename, int mode);
void AfterLoadTown();
void AskExitGame();
void AskExitToGameMenu();
void AfterLoadTown(void);
void AskExitGame(void);
void AskExitToGameMenu(void);
void RedrawAutosave();
void RedrawAutosave(void);
StringID RemapOldStringID(StringID s);
@@ -271,24 +271,25 @@ enum {
};
void ShowSaveLoadDialog(int mode);
void ttd_strlcpy(char *dst, const char *src, size_t len);
void ttd_strlcpy(char *dst, const char *src, size_t size);
void ttd_strlcat(char *dst, const char *src, size_t size);
// callback from drivers that is called if the game size changes dynamically
void GameSizeChanged();
void GameSizeChanged(void);
bool FileExists(const char *filename);
bool ReadLanguagePack(int index);
void InitializeLanguagePacks();
void InitializeLanguagePacks(void);
byte *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize);
int GetLanguageList(char **languages, int max);
void CheckSwitchToEuro();
void CheckSwitchToEuro(void);
void LoadFromConfig();
void SaveToConfig();
void LoadFromConfig(void);
void SaveToConfig(void);
int ttd_main(int argc, char* argv[]);
byte GetOSVersion();
byte GetOSVersion(void);
void DeterminePaths();
void DeterminePaths(void);
char * CDECL str_fmt(const char *str, ...);
#endif /* FUNCTIONS_H */
+19 -18
View File
@@ -5,7 +5,6 @@
#include "hal.h"
static void GfxMainBlitter(byte *sprite, int x, int y, int mode);
void GfxInitPalettes();
static int _stringwidth_out;
static byte _cursor_backup[64*64];
@@ -24,11 +23,11 @@ void memcpy_pitch(void *d, void *s, int w, int h, int spitch, int dpitch)
byte *sp = (byte*)s;
assert(h >= 0);
if (h != 0) do {
for (; h != 0; --h) {
memcpy(dp, sp, w);
dp += dpitch;
sp += spitch;
} while (--h);
}
}
@@ -291,7 +290,8 @@ void DrawStringCenterUnderline(int x, int y, uint16 str, uint16 color)
GfxFillRect(x-(w>>1), y+10, x-(w>>1)+w, y+10, _string_colorremap[1]);
}
uint32 FormatStringLinebreaks(byte *str, int maxw) {
static uint32 FormatStringLinebreaks(byte *str, int maxw)
{
int num = 0;
int base = _stringwidth_base;
int w;
@@ -1484,9 +1484,9 @@ static void GfxScalePalette(int pal, byte scaling)
}
#endif
void DoPaletteAnimations();
void DoPaletteAnimations(void);
void GfxInitPalettes()
void GfxInitPalettes(void)
{
int pal = _use_dos_palette?1:0;
memcpy(_cur_palette, _palettes[pal], 256*3);
@@ -1500,14 +1500,14 @@ void GfxInitPalettes()
#define EXTR2(p,q) (((uint16)(~_timer_counter * (p)) * (q)) >> 16)
#define COPY_TRIPLET do {d[0]=s[0+j]; d[1]=s[1+j]; d[2]=s[2+j];d+=3;}while(0)
void DoPaletteAnimations()
void DoPaletteAnimations(void)
{
const byte *s;
byte *d;
/* Amount of colors to be rotated.
* A few more for the DOS palette, because the water colors are
* 245-254 for DOS and 217-226 for Windows. */
int c = _use_dos_palette?38:28;
int c = _use_dos_palette?38:28;
int j;
int i;
const ExtraPaletteValues *ev = &_extra_palette_values;
@@ -1594,7 +1594,7 @@ void DoPaletteAnimations()
j+=3;
if (j == 15) j = 0;
}
// Glittery water DOS
s = ev->b;
if (_opt.landscape == LT_CANDY) s = ev->bc;
@@ -1613,7 +1613,7 @@ void DoPaletteAnimations()
}
void LoadStringWidthTable()
void LoadStringWidthTable(void)
{
int i;
byte *b;
@@ -1634,7 +1634,7 @@ void LoadStringWidthTable()
}
}
void ScreenSizeChanged()
void ScreenSizeChanged(void)
{
// check the dirty rect
if (_invalid_rect.right >= _screen.width) _invalid_rect.right = _screen.width;
@@ -1644,7 +1644,7 @@ void ScreenSizeChanged()
_cursor.visible = false;
}
void UndrawMouseCursor()
void UndrawMouseCursor(void)
{
if (_cursor.visible) {
_cursor.visible = false;
@@ -1657,7 +1657,7 @@ void UndrawMouseCursor()
}
}
void DrawMouseCursor()
void DrawMouseCursor(void)
{
int x,y,w,h;
@@ -1684,7 +1684,7 @@ void DrawMouseCursor()
_cursor.draw_pos.y = y;
_cursor.draw_size.y = h;
assert(w*h < sizeof(_cursor_backup));
assert(w*h < (int) sizeof(_cursor_backup));
// Make backup of stuff below cursor
memcpy_pitch(
@@ -1740,7 +1740,7 @@ void RedrawScreenRect(int left, int top, int right, int bottom)
_video_driver->make_dirty(left, top, right-left, bottom-top);
}
void DrawDirtyBlocks()
void DrawDirtyBlocks(void)
{
byte *b = _dirty_blocks;
int x=0,y=0;
@@ -1846,7 +1846,7 @@ void SetDirtyBlocks(int left, int top, int right, int bottom)
} while (--height);
}
void MarkWholeScreenDirty()
void MarkWholeScreenDirty(void)
{
SetDirtyBlocks(0, 0, _screen.width, _screen.height);
}
@@ -1915,7 +1915,7 @@ static void SetCursorSprite(uint cursor)
cv->dirty = true;
}
static void SwitchAnimatedCursor()
static void SwitchAnimatedCursor(void)
{
CursorVars *cv = &_cursor;
const uint16 *cur;
@@ -1931,7 +1931,8 @@ static void SwitchAnimatedCursor()
SetCursorSprite(sprite);
}
void CursorTick() {
void CursorTick(void)
{
CursorVars *cv = &_cursor;
if (cv->animate_timeout && !--cv->animate_timeout)
SwitchAnimatedCursor();
+9 -9
View File
@@ -53,14 +53,14 @@ void DrawFrameRect(int left, int top, int right, int bottom, int color, int flag
uint16 GetDrawStringPlayerColor(byte player);
int GetStringWidth(const byte *str);
void LoadStringWidthTable();
void LoadStringWidthTable(void);
void DrawStringMultiCenter(int x, int y, uint16 str, int maxw);
void DrawStringMultiLine(int x, int y, uint16 str, int maxw);
void DrawDirtyBlocks();
void DrawDirtyBlocks(void);
void SetDirtyBlocks(int left, int top, int right, int bottom);
void MarkWholeScreenDirty();
void MarkWholeScreenDirty(void);
void GfxInitPalettes();
void GfxInitPalettes(void);
bool FillDrawPixelInfo(DrawPixelInfo *n, DrawPixelInfo *o, int left, int top, int width, int height);
@@ -70,14 +70,14 @@ void DrawOverlappedWindowForAll(int left, int top, int right, int bottom);
/* spritecache.c */
byte *GetSpritePtr(uint sprite);
void GfxInitSpriteMem(byte *ptr, uint32 size);
void GfxLoadSprites();
void GfxLoadSprites(void);
void SetMouseCursor(uint cursor);
void SetAnimatedMouseCursor(const uint16 *table);
void CursorTick();
void DrawMouseCursor();
void ScreenSizeChanged();
void UndrawMouseCursor();
void CursorTick(void);
void DrawMouseCursor(void);
void ScreenSizeChanged(void);
void UndrawMouseCursor(void);
bool ChangeResInGame(int w, int h);
void ToggleFullScreen(const bool full_screen);
+433 -437
View File
File diff suppressed because it is too large Load Diff
+38 -38
View File
@@ -4,31 +4,30 @@
#include "window.h"
/* main_gui.c */
void SetupColorsAndInitialWindow();
void SetupColorsAndInitialWindow(void);
void CcPlaySound10(bool success, uint tile, uint32 p1, uint32 p2);
void PlaceProc_Sign(uint tile);
/* settings_gui.c */
void ShowGameOptions();
void ShowGameDifficulty();
void ShowPatchesSelection();
void ShowNewgrf();
void ShowCustCurrency();
void ShowGameOptions(void);
void ShowGameDifficulty(void);
void ShowPatchesSelection(void);
void ShowNewgrf(void);
void ShowCustCurrency(void);
/* graph_gui.c */
void ShowOperatingProfitGraph();
void ShowIncomeGraph();
void ShowDeliveredCargoGraph();
void ShowPerformanceHistoryGraph();
void ShowCompanyValueGraph();
void ShowCargoPaymentRates();
void ShowCompanyLeagueTable();
void ShowPerformanceRatingDetail();
void ShowOperatingProfitGraph(void);
void ShowIncomeGraph(void);
void ShowDeliveredCargoGraph(void);
void ShowPerformanceHistoryGraph(void);
void ShowCompanyValueGraph(void);
void ShowCargoPaymentRates(void);
void ShowCompanyLeagueTable(void);
void ShowPerformanceRatingDetail(void);
/* news_gui.c */
void ShowLastNewsMessage();
void ShowMessageOptions();
void ShowMessageHistory();
void ShowLastNewsMessage(void);
void ShowMessageOptions(void);
void ShowMessageHistory(void);
/* traintoolb_gui.c */
void ShowBuildRailToolbar(int index, int button);
@@ -43,18 +42,18 @@ void ShowOrdersWindow(Vehicle *v);
void ShowRoadVehViewWindow(Vehicle *v);
/* road_gui.c */
void ShowBuildRoadToolbar();
void ShowBuildRoadScenToolbar();
void ShowBuildRoadToolbar(void);
void ShowBuildRoadScenToolbar(void);
void ShowPlayerRoadVehicles(int player, int station);
/* dock_gui.c */
void ShowBuildDocksToolbar();
void ShowBuildDocksToolbar(void);
void ShowPlayerShips(int player, int station);
void ShowShipViewWindow(Vehicle *v);
/* aircraft_gui.c */
void ShowBuildAirToolbar();
void ShowBuildAirToolbar(void);
void ShowPlayerAircraft(int player, int station);
/* terraform_gui.c */
@@ -62,16 +61,16 @@ void PlaceProc_DemolishArea(uint tile);
void PlaceProc_LowerLand(uint tile);
void PlaceProc_RaiseLand(uint tile);
void PlaceProc_LevelLand(uint tile);
void ShowTerraformToolbar();
void ShowTerraformToolbar(void);
/* misc_gui.c */
void PlaceLandBlockInfo();
void ShowAboutWindow();
void ShowBuildTreesToolbar();
void ShowBuildTreesScenToolbar();
void ShowTownDirectory();
void ShowIndustryDirectory();
void ShowSubsidiesList();
void PlaceLandBlockInfo(void);
void ShowAboutWindow(void);
void ShowBuildTreesToolbar(void);
void ShowBuildTreesScenToolbar(void);
void ShowTownDirectory(void);
void ShowIndustryDirectory(void);
void ShowSubsidiesList(void);
void ShowPlayerStations(int player);
void ShowPlayerFinances(int player);
void ShowPlayerCompany(int player);
@@ -82,19 +81,20 @@ void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y);
void DrawStationCoverageAreaText(int sx, int sy, uint mask,int rad);
void CheckRedrawStationCoverage(Window *w);
void ShowSmallMap();
void ShowExtraViewPortWindow();
void ShowSmallMap(void);
void ShowExtraViewPortWindow(void);
void SetVScrollCount(Window *w, int num);
void SetVScroll2Count(Window *w, int num);
void SetHScrollCount(Window *w, int num);
int HandleEditBoxKey(Window *w, int wid, WindowEvent *we);
void ShowCheatWindow();
void AskForNewGameToStart();
void ShowCheatWindow(void);
void AskForNewGameToStart(void);
void DrawEditBox(Window *w, int wid);
void HandleEditBox(Window *w, int wid);
void BuildFileList();
void BuildFileList(void);
void SetFiosType(const byte fiostype);
/* FIOS_TYPE_FILE, FIOS_TYPE_OLDFILE etc. different colours */
@@ -102,7 +102,7 @@ static const byte _fios_colors[] = {13, 9, 9, 6, 5, 6, 5};
/* network gui */
void ShowNetworkGameWindow();
void ShowNetworkGameWindow(void);
void ShowChatWindow(StringID str, StringID caption, int maxlen, int maxwidth, byte window_class, uint16 window_number);
/* bridge_gui.c */
@@ -115,9 +115,9 @@ enum {
};
bool DoZoomInOutWindow(int how, Window * w);
void ShowBuildIndustryWindow();
void ShowBuildIndustryWindow(void);
void ShowQueryString(StringID str, StringID caption, int maxlen, int maxwidth, byte window_class, uint16 window_number);
void ShowMusicWindow();
void ShowMusicWindow(void);
/* main_gui.c */
VARDEF byte _newspaper_flag;
+14 -10
View File
@@ -3,14 +3,14 @@
typedef struct {
char *(*start)(char **parm);
void (*stop)();
void (*stop)(void);
} HalCommonDriver;
typedef struct {
const char *(*start)(char **parm);
void (*stop)();
void (*stop)(void);
void (*make_dirty)(int left, int top, int width, int height);
int (*main_loop)();
int (*main_loop)(void);
bool (*change_resolution)(int w, int h);
} HalVideoDriver;
@@ -21,16 +21,16 @@ enum {
typedef struct {
char *(*start)(char **parm);
void (*stop)();
void (*stop)(void);
} HalSoundDriver;
typedef struct {
char *(*start)(char **parm);
void (*stop)();
void (*stop)(void);
void (*play_song)(const char *filename);
void (*stop_song)();
bool (*is_song_playing)();
void (*stop_song)(void);
bool (*is_song_playing)(void);
void (*set_volume)(byte vol);
} HalMusicDriver;
@@ -71,6 +71,10 @@ extern const HalMusicDriver _extmidi_music_driver;
extern const HalMusicDriver _bemidi_music_driver;
#endif
#if defined(__OS2__)
extern const HalMusicDriver _os2_music_driver;
#endif
extern const HalVideoDriver _dedicated_video_driver;
enum DriverType {
@@ -79,7 +83,7 @@ enum DriverType {
MUSIC_DRIVER = 2,
};
extern void GameLoop();
extern void GameLoop(void);
extern bool _dbg_screen_rect;
void LoadDriver(int driver, const char *name);
@@ -137,7 +141,7 @@ FiosItem *FiosGetSavegameList(int *num, int mode);
// Get a list of scenarios
FiosItem *FiosGetScenarioList(int *num, int mode);
// Free the list of savegames
void FiosFreeSavegameList();
void FiosFreeSavegameList(void);
// Browse to. Returns a filename w/path if we reached a file.
char *FiosBrowseTo(const FiosItem *item);
// Get descriptive texts.
@@ -149,6 +153,6 @@ void FiosDelete(const char *name);
// Make a filename from a name
void FiosMakeSavegameName(char *buf, const char *name);
void CreateConsole();
void CreateConsole(void);
#endif /* HAL_H */
+15 -1
View File
@@ -23,11 +23,25 @@ struct Industry {
byte color_map;
byte last_prod_year;
byte was_cargo_delivered;
uint16 index;
};
VARDEF int _total_industries; // For the AI: the amount of industries active
VARDEF Industry _industries[90];
#define DEREF_INDUSTRY(i) (&_industries[i])
VARDEF uint _industries_size;
VARDEF uint16 *_industry_sort;
static inline Industry *GetIndustry(uint index)
{
assert(index < _industries_size);
return &_industries[index];
}
#define FOR_ALL_INDUSTRIES(i) for(i = _industries; i != &_industries[_industries_size]; i++)
VARDEF bool _industry_sort_dirty;
void DeleteIndustry(Industry *is);
+102 -79
View File
@@ -49,7 +49,7 @@ typedef struct DrawIndustrySpec4Struct {
typedef struct IndustryTileTable {
TileIndexDiff ti;
TileIndexDiffC ti;
byte map5;
} IndustryTileTable;
@@ -282,7 +282,7 @@ static void DrawTile_Industry(TileInfo *ti)
uint32 image, ormod;
/* Pointer to industry */
ind = DEREF_INDUSTRY(_map2[ti->tile]);
ind = GetIndustry(_map2[ti->tile]);
ormod = (ind->color_map+0x307)<<16;
/* Retrieve pointer to the draw industry tile struct */
@@ -358,7 +358,7 @@ static void GetAcceptedCargo_Industry(uint tile, AcceptedCargo ac)
static void GetTileDesc_Industry(uint tile, TileDesc *td)
{
Industry *i = DEREF_INDUSTRY(_map2[tile]);
Industry *i = GetIndustry(_map2[tile]);
td->owner = i->owner;
td->str = STR_4802_COAL_MINE + i->type;
@@ -370,7 +370,7 @@ static void GetTileDesc_Industry(uint tile, TileDesc *td)
static int32 ClearTile_Industry(uint tile, byte flags)
{
Industry *i = DEREF_INDUSTRY(_map2[tile]);
Industry *i = GetIndustry(_map2[tile]);
/* * water can destroy industries
* in editor you can bulldoze industries
@@ -395,9 +395,11 @@ static int32 ClearTile_Industry(uint tile, byte flags)
int32 CmdDestroyIndustry(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
uint tile = TILE_FROM_XY(x,y);
Industry *i = DEREF_INDUSTRY((uint16)p1);
Industry *i = GetIndustry((uint16)p1);
Town *t = ClosestTownFromTile(tile, (uint)-1); // find closest town to penaltize (ALWAYS penaltize)
SET_EXPENSES_TYPE(EXPENSES_OTHER);
// check if you're allowed to remove the industry. Minimum amount
// of ratings to remove the industry depends on difficulty setting
if (!CheckforTownRating(tile, flags, t, INDUSTRY_REMOVE))
@@ -406,7 +408,7 @@ int32 CmdDestroyIndustry(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (flags & DC_EXEC) {
DeleteIndustry(i);
CreateEffectVehicleAbove(x + 8,y + 8, 2, EV_DEMOLISH);
ChangeTownRating(t, -1500, -1000); // penalty is 1500
ChangeTownRating(t, RATING_INDUSTRY_DOWN_STEP, RATING_INDUSTRY_MINIMUM);
}
return (_price.build_industry >> 5) * _industry_type_costs[i->type]*2;
@@ -428,7 +430,7 @@ static void TransportIndustryGoods(uint tile)
uint cw, am;
byte m5;
i = DEREF_INDUSTRY(_map2[tile]);
i = GetIndustry(_map2[tile]);
type = i->type;
cw = min(i->cargo_waiting[0], 255);
@@ -626,7 +628,7 @@ static void AnimateTile_Industry(uint tile)
static void MakeIndustryTileBiggerCase8(uint tile)
{
TileInfo ti;
FindLandscapeHeight(&ti, GET_TILE_X(tile)*16, GET_TILE_Y(tile)*16);
FindLandscapeHeight(&ti, TileX(tile) * 16, TileY(tile) * 16);
CreateEffectVehicle(ti.x + 15, ti.y + 14, ti.z + 59 + (ti.tileh != 0 ? 8 : 0), EV_INDUSTRYSMOKE);
}
@@ -690,8 +692,8 @@ static void TileLoopIndustryCase161(uint tile)
dir = Random() & 3;
v = CreateEffectVehicleAbove(
GET_TILE_X(tile)*16 + _tileloop_ind_case_161[dir + 0],
GET_TILE_Y(tile)*16 + _tileloop_ind_case_161[dir + 4],
TileX(tile) * 16 + _tileloop_ind_case_161[dir + 0],
TileY(tile) * 16 + _tileloop_ind_case_161[dir + 4],
_tileloop_ind_case_161[dir + 8],
EV_INDUSTRY_SMOKE
);
@@ -777,12 +779,12 @@ static void TileLoop_Industry(uint tile)
break;
case 49: {
CreateEffectVehicleAbove(GET_TILE_X(tile)*16 + 6, GET_TILE_Y(tile)*16 + 6, 43, EV_SMOKE_3);
CreateEffectVehicleAbove(TileX(tile) * 16 + 6, TileY(tile) * 16 + 6, 43, EV_SMOKE_3);
} break;
case 143: {
Industry *i = DEREF_INDUSTRY(_map2[tile]);
Industry *i = GetIndustry(_map2[tile]);
if (i->was_cargo_delivered) {
i->was_cargo_delivered = false;
if ((_map3_hi[tile]|_map3_lo[tile]) != 0)
@@ -821,7 +823,7 @@ static uint32 GetTileTrackStatus_Industry(uint tile, TransportType mode)
static void GetProducedCargo_Industry(uint tile, byte *b)
{
Industry *i = DEREF_INDUSTRY(_map2[tile]);
Industry *i = GetIndustry(_map2[tile]);
b[0] = i->produced_cargo[0];
b[1] = i->produced_cargo[1];
}
@@ -833,52 +835,54 @@ static void ChangeTileOwner_Industry(uint tile, byte old_player, byte new_player
void DeleteIndustry(Industry *i)
{
int index = i - _industries;
BEGIN_TILE_LOOP(tile_cur, i->width, i->height, i->xy);
if (IS_TILETYPE(tile_cur, MP_INDUSTRY)) {
if (_map2[tile_cur] == (byte)index) {
BEGIN_TILE_LOOP(tile_cur, i->width, i->height, i->xy);
if (IsTileType(tile_cur, MP_INDUSTRY)) {
if (_map2[tile_cur] == i->index) {
DoClearSquare(tile_cur);
}
} else if (IS_TILETYPE(tile_cur, MP_STATION) && _map5[tile_cur] == 0x4B) {
} else if (IsTileType(tile_cur, MP_STATION) && _map5[tile_cur] == 0x4B) {
DeleteOilRig(tile_cur);
}
END_TILE_LOOP(tile_cur, i->width, i->height, i->xy);
END_TILE_LOOP(tile_cur, i->width, i->height, i->xy);
i->xy = 0;
_industry_sort_dirty = true;
DeleteSubsidyWithIndustry(index);
DeleteWindowById(WC_INDUSTRY_VIEW, index);
DeleteSubsidyWithIndustry(i->index);
DeleteWindowById(WC_INDUSTRY_VIEW, i->index);
InvalidateWindow(WC_INDUSTRY_DIRECTORY, 0);
}
static const byte _plantfarmfield_type[] = {1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6};
static bool IsBadFarmFieldTile(uint tile)
static bool IsBadFarmFieldTile(TileIndex tile)
{
if (IS_TILETYPE(tile,MP_CLEAR)) {
byte m5 = _map5[tile] & 0x1C;
if (m5 == 0xC || m5 == 0x10)
switch (TileType(tile)) {
case MP_CLEAR: {
byte m5 = _map5[tile] & 0x1C;
return m5 == 0xC || m5 == 0x10;
}
case MP_TREES:
return false;
default:
return true;
return false;
} else if (IS_TILETYPE(tile,MP_TREES)) {
return false;
} else {
return true;
}
}
static bool IsBadFarmFieldTile2(uint tile)
static bool IsBadFarmFieldTile2(TileIndex tile)
{
if (IS_TILETYPE(tile,MP_CLEAR)) {
byte m5 = _map5[tile] & 0x1C;
if (m5 == 0x10)
switch (TileType(tile)) {
case MP_CLEAR: {
byte m5 = _map5[tile] & 0x1C;
return m5 == 0x10;
}
case MP_TREES:
return false;
default:
return true;
return false;
} else if (IS_TILETYPE(tile,MP_TREES)) {
return false;
} else {
return true;
}
}
@@ -889,7 +893,7 @@ static void SetupFarmFieldFence(uint tile, int size, byte type, int direction)
do {
tile = TILE_MASK(tile);
if (IS_TILETYPE(tile, MP_CLEAR) || IS_TILETYPE(tile, MP_TREES)) {
if (IsTileType(tile, MP_CLEAR) || IsTileType(tile, MP_TREES)) {
or = type;
if (or == 1 && (uint16)Random() <= 9362) or = 2;
@@ -980,7 +984,12 @@ static void MaybePlantFarmField(Industry *i)
static void ChopLumberMillTrees(Industry *i)
{
static const TileIndexDiff _chop_dir[4] = { TILE_XY(0,1), TILE_XY(1,0), TILE_XY(0,-1), TILE_XY(-1,0) };
static const TileIndexDiffC _chop_dir[] = {
{ 0, 1},
{ 1, 0},
{ 0, -1},
{-1, 0}
};
uint tile = i->xy;
int dir, a, j;
@@ -994,7 +1003,7 @@ static void ChopLumberMillTrees(Industry *i)
j = a;
do {
tile = TILE_MASK(tile);
if (IS_TILETYPE(tile, MP_TREES)) {
if (IsTileType(tile, MP_TREES)) {
uint old_player = _current_player;
/* found a tree */
@@ -1011,7 +1020,7 @@ static void ChopLumberMillTrees(Industry *i)
_current_player = old_player;
return;
}
tile += _chop_dir[dir];
tile += ToTileIndexDiff(_chop_dir[dir]);
} while (--j);
}
tile -= TILE_XY(1,1);
@@ -1087,7 +1096,7 @@ static void ProduceIndustryGoods(Industry *i)
}
}
void OnTick_Industry()
void OnTick_Industry(void)
{
Industry *i;
@@ -1105,7 +1114,7 @@ void OnTick_Industry()
if (_game_mode == GM_EDITOR)
return;
for(i=_industries; i != endof(_industries); i++) {
FOR_ALL_INDUSTRIES(i) {
if (i->xy != 0)
ProduceIndustryGoods(i);
}
@@ -1140,8 +1149,8 @@ static bool CheckNewIndustry_Oilwell(uint tile, int type)
if (type != IT_OIL_RIG && _game_mode == GM_EDITOR)
return true;
x = GET_TILE_X(tile);
y = GET_TILE_Y(tile);
x = TileX(tile);
y = TileY(tile);
if ( x < 15 || y < 15 || x > 238 || y > 238)
return true;
@@ -1212,10 +1221,10 @@ static CheckNewIndustryProc * const _check_new_industry_procs[] = {
static bool CheckSuitableIndustryPos(uint tile)
{
int x = GET_TILE_X(tile);
int y = GET_TILE_Y(tile);
uint x = TileX(tile);
uint y = TileY(tile);
if ( x < 2 || y < 2 || x > TILE_X_MAX - 3 || y > TILE_Y_MAX - 3) {
if ( x < 2 || y < 2 || x > MapMaxX() - 3 || y > MapMaxY() - 3) {
_error_message = STR_0239_SITE_UNSUITABLE;
return false;
}
@@ -1233,7 +1242,7 @@ static Town *CheckMultipleIndustryInTown(uint tile, int type)
if (_patches.multiple_industry_per_town)
return t;
for(i=_industries; i != endof(_industries); i++) {
FOR_ALL_INDUSTRIES(i) {
if (i->xy != 0 &&
i->type == (byte)type &&
i->town == t) {
@@ -1278,7 +1287,7 @@ static bool CheckIfIndustryTilesAreFree(uint tile, const IndustryTileTable *it,
_error_message = STR_0239_SITE_UNSUITABLE;
do {
cur_tile = tile + it->ti;
cur_tile = tile + ToTileIndexDiff(it->ti);
if (!IsValidTile(cur_tile)) {
if (it->map5 == 0xff)
continue;
@@ -1351,7 +1360,7 @@ do_clear:
}
}
}
} while ( (++it)->ti != -0x8000);
} while ((++it)->ti.x != -0x80);
return true;
}
@@ -1366,12 +1375,15 @@ static bool CheckIfTooCloseToIndustry(uint tile, int type)
if (_patches.same_industry_close && (spec->accepts_cargo[0] == 0xFF) )
return true;
for(i=_industries; i != endof(_industries); i++) {
FOR_ALL_INDUSTRIES(i) {
// check if an industry that accepts the same goods is nearby
if (i->xy != 0 &&
(GetTileDist1D(tile, i->xy) <= 14) &&
spec->accepts_cargo[0] != 0xFF &&
spec->accepts_cargo[0] == i->accepts_cargo[0]) {
spec->accepts_cargo[0] == i->accepts_cargo[0] &&
!(_game_mode == GM_EDITOR &&
_patches.same_industry_close &&
_patches.multiple_industry_per_town)) {
_error_message = STR_INDUSTRY_TOO_CLOSE;
return false;
}
@@ -1387,14 +1399,15 @@ static bool CheckIfTooCloseToIndustry(uint tile, int type)
return true;
}
static Industry *AllocateIndustry()
static Industry *AllocateIndustry(void)
{
Industry *i;
for(i=_industries; i != endof(_industries); i++) {
FOR_ALL_INDUSTRIES(i) {
if (i->xy == 0) {
int index = i - _industries;
if (index > _total_industries) _total_industries = index;
if (i->index > _total_industries)
_total_industries = i->index;
return i;
}
}
@@ -1454,24 +1467,24 @@ static void DoCreateNewIndustry(Industry *i, uint tile, int type, const Industry
i->prod_level = 0x10;
do {
cur_tile = tile + it->ti;
cur_tile = tile + ToTileIndexDiff(it->ti);
if (it->map5 != 0xFF) {
byte size;
size = GET_TILE_X((TileIndex)it->ti);
size = it->ti.x;
if (size > i->width) i->width = size;
size = GET_TILE_Y((TileIndex)it->ti);
size = it->ti.y;
if (size > i->height)i->height = size;
DoCommandByTile(cur_tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
_map_type_and_height[cur_tile] = (_map_type_and_height[cur_tile]&~0xF0) | (MP_INDUSTRY<<4);
SetTileType(cur_tile, MP_INDUSTRY);
_map5[cur_tile] = it->map5;
_map2[cur_tile] = i - _industries;
_map2[cur_tile] = i->index;
_map_owner[cur_tile] = _generating_world ? 0x1E : 0; /* maturity */
}
} while ( (++it)->ti != -0x8000);
} while ((++it)->ti.x != -0x80);
i->width++;
i->height++;
@@ -1601,7 +1614,7 @@ static void PlaceInitialIndustry(byte type, int amount)
}
}
void GenerateIndustries()
void GenerateIndustries(void)
{
const byte *b;
@@ -1704,7 +1717,7 @@ static void UpdateIndustryStatistics(Industry *i)
if ( i->produced_cargo[0] != 0xFF || i->produced_cargo[1] != 0xFF )
InvalidateWindow(WC_INDUSTRY_VIEW, i - _industries);
InvalidateWindow(WC_INDUSTRY_VIEW, i->index);
if (i->prod_level == 0)
DeleteIndustry(i);
@@ -1801,18 +1814,18 @@ add_news:
}
}
void IndustryMonthlyLoop()
void IndustryMonthlyLoop(void)
{
Industry *i;
byte old_player = _current_player;
_current_player = OWNER_NONE;
for(i=_industries; i != endof(_industries); i++) {
FOR_ALL_INDUSTRIES(i) {
if (i->xy != 0)
UpdateIndustryStatistics(i);
}
i = DEREF_INDUSTRY(RandomRange(lengthof(_industries)));
i = GetIndustry(RandomRange(_industries_size));
if (i->xy == 0) {
uint32 r;
@@ -1830,9 +1843,17 @@ void IndustryMonthlyLoop()
}
void InitializeIndustries()
void InitializeIndustries(void)
{
memset(_industries, 0, sizeof(_industries));
Industry *i;
int j;
memset(_industries, 0, sizeof(_industries[0]) * _industries_size);
j = 0;
FOR_ALL_INDUSTRIES(i)
i->index = j++;
_total_industries = 0;
_industry_sort_dirty = true;
}
@@ -1884,25 +1905,27 @@ static const byte _industry_desc[] = {
SLE_END()
};
static void Save_INDY()
static void Save_INDY(void)
{
Industry *ind;
int i;
// Write the vehicles
for(ind=_industries,i=0; i!=lengthof(_industries); ind++,i++) {
FOR_ALL_INDUSTRIES(ind) {
if (ind->xy != 0) {
SlSetArrayIndex(i);
SlSetArrayIndex(ind->index);
SlObject(ind, _industry_desc);
}
}
}
static void Load_INDY()
static void Load_INDY(void)
{
int index;
_total_industries = 0;
while ((index = SlIterateArray()) != -1) {
SlObject(DEREF_INDUSTRY(index), _industry_desc);
Industry *i = GetIndustry(index);
SlObject(i, _industry_desc);
if (index > _total_industries) _total_industries = index;
}
}
+254 -141
View File
@@ -19,6 +19,10 @@ static const byte _build_industry_types[4][12] = {
extern const byte _industry_type_costs[37];
static void UpdateIndustryProduction(Industry *i);
extern void DrawArrowButtons(int x, int y, int state);
extern void ShowQueryString(StringID str, StringID caption, int maxlen, int maxwidth, byte window_class, uint16 window_number);
static void BuildIndustryWndProc(Window *w, WindowEvent *e)
{
switch(e->event) {
@@ -53,130 +57,130 @@ static void BuildIndustryWndProc(Window *w, WindowEvent *e)
}
static const Widget _build_industry_land0_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 169, 14, 115, 0x0, STR_NULL},
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
{ WIDGETS_END},
};
static const Widget _build_industry_land1_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 169, 14, 115, 0x0, STR_NULL},
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
{ WIDGETS_END},
};
static const Widget _build_industry_land2_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 169, 14, 115, 0x0, STR_NULL},
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
{ WIDGETS_END},
};
static const Widget _build_industry_land3_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 169, 14, 115, 0x0, STR_NULL},
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 115, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
{ WIDGETS_END},
};
static const Widget _build_industry_land0_widgets_extra[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY,STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 169, 14, 187, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY,STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 187, 0x0, STR_NULL},
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0241_POWER_STATION,STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION,STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
{ WWT_CLOSEBOX, 14, 2, 167, 84, 95, STR_0240_COAL_MINE, STR_CONSTRUCT_COAL_MINE_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 97, 108, STR_0243_FOREST, STR_CONSTRUCT_FOREST_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 110, 121, STR_0245_OIL_RIG, STR_CONSTRUCT_OIL_RIG_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 123, 134, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 136, 147, STR_024A_OIL_WELLS, STR_CONSTRUCT_OIL_WELLS_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 149, 160, STR_0249_IRON_ORE_MINE, STR_CONSTRUCT_IRON_ORE_MINE_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 84, 95, STR_0240_COAL_MINE, STR_CONSTRUCT_COAL_MINE_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 97, 108, STR_0243_FOREST, STR_CONSTRUCT_FOREST_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 110, 121, STR_0245_OIL_RIG, STR_CONSTRUCT_OIL_RIG_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 123, 134, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 136, 147, STR_024A_OIL_WELLS, STR_CONSTRUCT_OIL_WELLS_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 149, 160, STR_0249_IRON_ORE_MINE, STR_CONSTRUCT_IRON_ORE_MINE_TIP},
{ WIDGETS_END},
};
static const Widget _build_industry_land1_widgets_extra[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 169, 14, 174, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 174, 0x0, STR_NULL},
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
{ WWT_CLOSEBOX, 14, 2, 167, 81+3, 92+3, STR_0240_COAL_MINE, STR_CONSTRUCT_COAL_MINE_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 94+3, 105+3, STR_0243_FOREST, STR_CONSTRUCT_FOREST_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 107+3, 118+3, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 120+3, 131+3, STR_024A_OIL_WELLS, STR_CONSTRUCT_OIL_WELLS_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 133+3, 144+3, STR_024F_GOLD_MINE, STR_CONSTRUCT_GOLD_MINE_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 81+3, 92+3, STR_0240_COAL_MINE, STR_CONSTRUCT_COAL_MINE_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 94+3, 105+3, STR_0243_FOREST, STR_CONSTRUCT_FOREST_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 107+3, 118+3, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 120+3, 131+3, STR_024A_OIL_WELLS, STR_CONSTRUCT_OIL_WELLS_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 133+3, 144+3, STR_024F_GOLD_MINE, STR_CONSTRUCT_GOLD_MINE_TIP},
{ WIDGETS_END},
};
static const Widget _build_industry_land2_widgets_extra[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 169, 14, 200, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 200, 0x0, STR_NULL},
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_CLOSEBOX, 14, 2, 167, 68, 79, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_024D_FOOD_PROCESSING_PLANT,STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
{ WWT_CLOSEBOX, 14, 2, 167, 81+3, 92+3, STR_024A_OIL_WELLS,STR_CONSTRUCT_OIL_WELLS_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 94+3, 105+3, STR_0255_DIAMOND_MINE, STR_CONSTRUCT_DIAMOND_MINE_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 107+3, 118+3, STR_0256_COPPER_ORE_MINE, STR_CONSTRUCT_COPPER_ORE_MINE_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 120+3, 131+3, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 133+3, 144+3, STR_0251_FRUIT_PLANTATION, STR_CONSTRUCT_FRUIT_PLANTATION_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 146+3, 157+3, STR_0252_RUBBER_PLANTATION,STR_CONSTRUCT_RUBBER_PLANTATION_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 159+3, 170+3, STR_0253_WATER_SUPPLY, STR_CONSTRUCT_WATER_SUPPLY_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 81+3, 92+3, STR_024A_OIL_WELLS,STR_CONSTRUCT_OIL_WELLS_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 94+3, 105+3, STR_0255_DIAMOND_MINE, STR_CONSTRUCT_DIAMOND_MINE_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 107+3, 118+3, STR_0256_COPPER_ORE_MINE, STR_CONSTRUCT_COPPER_ORE_MINE_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 120+3, 131+3, STR_0248_FARM, STR_CONSTRUCT_FARM_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 133+3, 144+3, STR_0251_FRUIT_PLANTATION, STR_CONSTRUCT_FRUIT_PLANTATION_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 146+3, 157+3, STR_0252_RUBBER_PLANTATION,STR_CONSTRUCT_RUBBER_PLANTATION_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 159+3, 170+3, STR_0253_WATER_SUPPLY, STR_CONSTRUCT_WATER_SUPPLY_TIP},
{ WIDGETS_END},
};
static const Widget _build_industry_land3_widgets_extra[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 169, 14, 187, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_0314_FUND_NEW_INDUSTRY, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 169, 14, 187, 0x0, STR_NULL},
{ WWT_CLOSEBOX, 14, 2, 167, 16, 27, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
{ WWT_CLOSEBOX, 14, 2, 167, 29, 40, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
{ WWT_CLOSEBOX, 14, 2, 167, 42, 53, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
{ WWT_CLOSEBOX, 14, 2, 167, 55, 66, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 16, 27, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 29, 40, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 42, 53, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 55, 66, STR_025E_FIZZY_DRINK_FACTORY, STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
{ WWT_CLOSEBOX, 14, 2, 167, 68+3, 79+3, STR_0257_COTTON_CANDY_FOREST,STR_CONSTRUCT_COTTON_CANDY_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 81+3, 92+3, STR_0259_BATTERY_FARM, STR_CONSTRUCT_BATTERY_FARM_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 94+3, 105+3, STR_025A_COLA_WELLS, STR_CONSTRUCT_COLA_WELLS_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 107+3, 118+3, STR_025D_PLASTIC_FOUNTAINS,STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 120+3, 131+3, STR_025F_BUBBLE_GENERATOR, STR_CONSTRUCT_BUBBLE_GENERATOR_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 133+3, 144+3, STR_0260_TOFFEE_QUARRY, STR_CONSTRUCT_TOFFEE_QUARRY_TIP},
{ WWT_CLOSEBOX, 14, 2, 167, 146+3, 157+3, STR_0261_SUGAR_MINE, STR_CONSTRUCT_SUGAR_MINE_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 68+3, 79+3, STR_0257_COTTON_CANDY_FOREST,STR_CONSTRUCT_COTTON_CANDY_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 81+3, 92+3, STR_0259_BATTERY_FARM, STR_CONSTRUCT_BATTERY_FARM_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 94+3, 105+3, STR_025A_COLA_WELLS, STR_CONSTRUCT_COLA_WELLS_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 107+3, 118+3, STR_025D_PLASTIC_FOUNTAINS,STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 120+3, 131+3, STR_025F_BUBBLE_GENERATOR, STR_CONSTRUCT_BUBBLE_GENERATOR_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 133+3, 144+3, STR_0260_TOFFEE_QUARRY, STR_CONSTRUCT_TOFFEE_QUARRY_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 167, 146+3, 157+3, STR_0261_SUGAR_MINE, STR_CONSTRUCT_SUGAR_MINE_TIP},
{ WIDGETS_END},
};
@@ -260,33 +264,37 @@ static const WindowDesc * const _industry_window_desc[2][4] = {
},
};
void ShowBuildIndustryWindow()
void ShowBuildIndustryWindow(void)
{
AllocateWindowDescFront(_industry_window_desc[_patches.build_rawmaterial_ind][_opt.landscape],0);
}
#define NEED_ALTERB (_game_mode == GM_EDITOR && i->accepts_cargo[0] == CT_INVALID)
static void IndustryViewWndProc(Window *w, WindowEvent *e)
{
Industry *i;
StringID str;
// WP(w,vp2_d).data_1 is for the editbox line
// WP(w,vp2_d).data_2 is for the clickline
// WP(w,vp2_d).data_3 is for the click pos (left or right)
switch(e->event) {
case WE_PAINT:
case WE_PAINT: {
const Industry *i;
StringID str;
// in editor, use bulldoze to destroy industry
// Destroy Industry button costing money removed per request of dominik
//w->disabled_state = (_patches.extra_dynamite && !_networking && _game_mode != GM_EDITOR) ? 0 : (1 << 6);
i = DEREF_INDUSTRY(w->window_number);
i = GetIndustry(w->window_number);
SetDParam(0, i->town->index);
SetDParam(1, i->type + STR_4802_COAL_MINE);
DrawWindowWidgets(w);
if (i->accepts_cargo[0] != 0xFF) {
if (i->accepts_cargo[0] != CT_INVALID) {
SetDParam(0, _cargoc.names_s[i->accepts_cargo[0]]);
str = STR_4827_REQUIRES;
if (i->accepts_cargo[1] != 0xFF) {
if (i->accepts_cargo[1] != CT_INVALID) {
SetDParam(1, _cargoc.names_s[i->accepts_cargo[1]]);
str++;
if (i->accepts_cargo[2] != 0xFF) {
if (i->accepts_cargo[2] != CT_INVALID) {
SetDParam(2, _cargoc.names_s[i->accepts_cargo[2]]);
str++;
}
@@ -294,34 +302,92 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
DrawString(2, 107, str, 0);
}
if (i->produced_cargo[0] != 0xFF) {
if (i->produced_cargo[0] != CT_INVALID) {
DrawString(2, 117, STR_482A_PRODUCTION_LAST_MONTH, 0);
SetDParam(1, i->total_production[0]);
SetDParam(0, _cargoc.names_long_s[i->produced_cargo[0]] + ((i->total_production[0]!=1)<<5));
SetDParam(2, i->pct_transported[0] * 100 >> 8);
DrawString(4, 127, STR_482B_TRANSPORTED, 0);
DrawString(4 + (NEED_ALTERB ? 30 : 0), 127, STR_482B_TRANSPORTED, 0);
// Let's put out those buttons..
if (NEED_ALTERB)
DrawArrowButtons(5, 127, (WP(w,vp2_d).data_2 == 1 ? WP(w,vp2_d).data_3 : 0));
if (i->produced_cargo[1] != 0xFF) {
if (i->produced_cargo[1] != CT_INVALID) {
SetDParam(1, i->total_production[1]);
SetDParam(0, _cargoc.names_long_s[i->produced_cargo[1]] + ((i->total_production[1]!=1)<<5));
SetDParam(2, i->pct_transported[1] * 100 >> 8);
DrawString(4, 137, STR_482B_TRANSPORTED, 0);
DrawString(4 + (NEED_ALTERB ? 30 : 0), 137, STR_482B_TRANSPORTED, 0);
// Let's put out those buttons..
if (NEED_ALTERB)
DrawArrowButtons(5, 137, (WP(w,vp2_d).data_2 == 2 ? WP(w,vp2_d).data_3 : 0));
}
}
DrawWindowViewport(w);
}
break;
case WE_CLICK:
case WE_CLICK: {
Industry *i;
switch(e->click.widget) {
case 5: {
int line;
int x;
byte b;
i = GetIndustry(w->window_number);
// We should only work in editor
if (_game_mode != GM_EDITOR)
return;
// And if the industry is raw-material producer
if (i->accepts_cargo[0] != CT_INVALID)
return;
x = e->click.pt.x;
line = (e->click.pt.y - 127) / 10;
if (e->click.pt.y >= 127 && IS_INT_INSIDE(line, 0, 2) && i->produced_cargo[line]) {
if (IS_INT_INSIDE(x, 5, 25) ) {
// clicked buttons
if (x < 15) {
// decrease
i->production_rate[line] /= 2;
if (i->production_rate[line] < 4)
i->production_rate[line] = 4;
} else {
// increase
b = i->production_rate[line] * 2;
if (i->production_rate[line] >= 128)
b=255;
i->production_rate[line] = b;
}
UpdateIndustryProduction(i);
SetWindowDirty(w);
w->flags4 |= 5 << WF_TIMEOUT_SHL;
WP(w,vp2_d).data_2 = line+1;
WP(w,vp2_d).data_3 = (x < 15 ? 1 : 2);
} else if (IS_INT_INSIDE(x, 34, 160)) {
// clicked the text
WP(w,vp2_d).data_1 = line;
SetDParam(0, i->production_rate[line] * 8);
ShowQueryString(STR_CONFIG_PATCHES_INT32,
STR_CONFIG_GAME_PRODUCTION,
10, 100, w->window_class,
w->window_number);
}
}
}
break;
case 6:
i = DEREF_INDUSTRY(w->window_number);
i = GetIndustry(w->window_number);
ScrollMainWindowToTile(i->xy + TILE_XY(1,1));
break;
case 7:
// Destroy Industry button costing money removed per request of dominik
//i = DEREF_INDUSTRY(w->window_number);
//i = GetIndustry(w->window_number);
/* passing only i->xy is not safe if industry has a weird shape like:
_ X X
X X X
@@ -331,21 +397,54 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
//DoCommandP(i->xy, w->window_number, 0, CcPlaySound10, CMD_DESTROY_INDUSTRY | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
break;
}
}
break;
case WE_TIMEOUT:
WP(w,vp2_d).data_2 = 0;
WP(w,vp2_d).data_3 = 0;
SetWindowDirty(w);
break;
case WE_ON_EDIT_TEXT:
if (*e->edittext.str) {
Industry *i;
int val;
int line;
i = GetIndustry(w->window_number);
line = WP(w,vp2_d).data_1;
val = atoi(e->edittext.str);
if (!IS_INT_INSIDE(val, 32, 2040)) {
if (val < 32) val = 32;
else val = 2040;
}
i->production_rate[line] = (byte)(val / 8);
UpdateIndustryProduction(i);
SetWindowDirty(w);
}
}
}
static void UpdateIndustryProduction(Industry *i)
{
if (i->produced_cargo[0] != CT_INVALID)
i->total_production[0] = 8 * i->production_rate[0];
if (i->produced_cargo[1] != CT_INVALID)
i->total_production[1] = 8 * i->production_rate[1];
}
static const Widget _industry_view_widgets[] = {
{ WWT_TEXTBTN, 9, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 9, 11, 247, 0, 13, STR_4801, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 9, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, 9, 0, 259, 14, 105, 0x0, STR_NULL},
{ WWT_6, 9, 2, 257, 16, 103, 0x0, STR_NULL},
{ WWT_IMGBTN, 9, 0, 259, 106, 147, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, 9, 0, 129, 148, 159, STR_00E4_LOCATION, STR_482C_CENTER_THE_MAIN_VIEW_ON},
{ WWT_IMGBTN, 9, 130, 259, 148, 159, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 9, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 9, 11, 247, 0, 13, STR_4801, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, RESIZE_NONE, 9, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, RESIZE_NONE, 9, 0, 259, 14, 105, 0x0, STR_NULL},
{ WWT_6, RESIZE_NONE, 9, 2, 257, 16, 103, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 9, 0, 259, 106, 147, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 9, 0, 129, 148, 159, STR_00E4_LOCATION, STR_482C_CENTER_THE_MAIN_VIEW_ON},
{ WWT_IMGBTN, RESIZE_NONE, 9, 130, 259, 148, 159, 0x0, STR_NULL},
// Destroy Industry button costing money removed per request of dominik
//{ WWT_PUSHTXTBTN, 9, 130, 259, 148, 159, STR_INDUSTRYDIR_DESTROY, STR_482C_DESTROY_INDUSTRY},
//{ WWT_PUSHTXTBTN, RESIZE_NONE, 9, 130, 259, 148, 159, STR_INDUSTRYDIR_DESTROY, STR_482C_DESTROY_INDUSTRY},
{ WIDGETS_END},
};
@@ -365,30 +464,33 @@ void ShowIndustryViewWindow(int industry)
w = AllocateWindowDescFront(&_industry_view_desc, industry);
if (w) {
w->flags4 |= WF_DISABLE_VP_SCROLL;
i = DEREF_INDUSTRY(w->window_number);
WP(w,vp2_d).data_1 = 0;
WP(w,vp2_d).data_2 = 0;
WP(w,vp2_d).data_3 = 0;
i = GetIndustry(w->window_number);
AssignWindowViewport(w, 3, 17, 0xFE, 0x56, i->xy + TILE_XY(1,1), 1);
}
}
static const Widget _industry_directory_widgets[] = {
{ WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 13, 11, 495, 0, 13, STR_INDUSTRYDIR_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 13, 496, 507, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PUSHTXTBTN, 13, 0, 100, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 13, 101, 200, 14, 25, STR_SORT_BY_TYPE, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 13, 201, 300, 14, 25, STR_SORT_BY_PRODUCTION, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 13, 301, 400, 14, 25, STR_SORT_BY_TRANSPORTED, STR_SORT_ORDER_TIP},
{ WWT_PANEL, 13, 401, 496, 14, 25, 0x0, STR_NULL},
{ WWT_IMGBTN, 13, 0, 496, 26, 189, 0x0, STR_200A_TOWN_NAMES_CLICK_ON_NAME},
{ WWT_SCROLLBAR, 13, 497, 507, 14, 189, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_TEXTBTN, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 13, 11, 495, 0, 13, STR_INDUSTRYDIR_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, RESIZE_NONE, 13, 496, 507, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 0, 100, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 101, 200, 14, 25, STR_SORT_BY_TYPE, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 201, 300, 14, 25, STR_SORT_BY_PRODUCTION, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 301, 400, 14, 25, STR_SORT_BY_TRANSPORTED, STR_SORT_ORDER_TIP},
{ WWT_PANEL, RESIZE_NONE, 13, 401, 495, 14, 25, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_BOTTOM, 13, 0, 495, 26, 189, 0x0, STR_200A_TOWN_NAMES_CLICK_ON_NAME},
{ WWT_SCROLLBAR, RESIZE_BOTTOM, 13, 496, 507, 14, 177, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_RESIZEBOX, RESIZE_TB, 13, 496, 507, 178, 189, 0x0, STR_RESIZE_BUTTON},
{ WIDGETS_END},
};
static byte _industry_sort[lengthof(_industries)];
static uint _num_industry_sort;
static char _bufcache[96];
static byte _last_industry_idx;
static uint16 _last_industry_idx;
static byte _industry_sort_order;
@@ -396,8 +498,8 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
{
char buf1[96];
byte val;
Industry *i = DEREF_INDUSTRY(*(const byte*)a);
Industry *j = DEREF_INDUSTRY(*(const byte*)b);
Industry *i = GetIndustry(*(const uint16*)a);
Industry *j = GetIndustry(*(const uint16*)b);
int r = 0;
switch (_industry_sort_order >> 1) {
@@ -441,7 +543,7 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
SetDParam(0, i->town->townnameparts);
GetString(buf1, i->town->townnametype);
if ( (val=*(const byte*)b) != _last_industry_idx) {
if ( (val=*(const uint16*)b) != _last_industry_idx) {
_last_industry_idx = val;
SetDParam(0, j->town->townnameparts);
GetString(_bufcache, j->town->townnametype);
@@ -453,19 +555,24 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
return r;
}
static void MakeSortedIndustryList()
static void MakeSortedIndustryList(void)
{
Industry *i;
int n = 0, index = 0;
int n = 0;
for(i=_industries; i != endof(_industries); i++) {
if(i->xy) _industry_sort[n++] = index;
index++;
/* Create array for sorting */
_industry_sort = realloc(_industry_sort, _industries_size * sizeof(_industry_sort[0]));
if (_industry_sort == NULL)
error("Could not allocate memory for the industry-sorting-list");
FOR_ALL_INDUSTRIES(i) {
if(i->xy)
_industry_sort[n++] = i->index;
}
_num_industry_sort = n;
_last_industry_idx = 255; // used for "cache"
_last_industry_idx = 0xFFFF; // used for "cache"
qsort(_industry_sort, n, 1, GeneralIndustrySorter);
qsort(_industry_sort, n, sizeof(_industry_sort[0]), GeneralIndustrySorter);
DEBUG(misc, 1) ("Resorting Industries list...");
}
@@ -494,7 +601,7 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
n = 0;
while (p < _num_industry_sort) {
i = DEREF_INDUSTRY(_industry_sort[p]);
i = GetIndustry(_industry_sort[p]);
SetDParam(0, i->town->index);
SetDParam(1, i->type + STR_4802_COAL_MINE);
if (i->produced_cargo[0] != 0xFF) {
@@ -515,7 +622,7 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
DrawString(4, 28+n*10, STR_INDUSTRYDIR_ITEM_NOPROD, 0);
}
p++;
if (++n == 16)
if (++n == w->vscroll.cap)
break;
}
} break;
@@ -548,14 +655,14 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
case 8: {
int y = (e->click.pt.y - 28) / 10;
byte p;
uint16 p;
Industry *c;
if (!IS_INT_INSIDE(y, 0, 16))
if (!IS_INT_INSIDE(y, 0, w->vscroll.cap))
return;
p = y + w->vscroll.pos;
if (p < _num_industry_sort) {
c = DEREF_INDUSTRY(_industry_sort[p]);
c = GetIndustry(_industry_sort[p]);
ScrollMainWindowToTile(c->xy);
}
} break;
@@ -565,6 +672,10 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
case WE_4:
SetWindowDirty(w);
break;
case WE_RESIZE:
w->vscroll.cap += e->sizing.diff.y / 10;
break;
}
}
@@ -573,14 +684,14 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
static const WindowDesc _industry_directory_desc = {
-1, -1, 508, 190,
WC_INDUSTRY_DIRECTORY,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
_industry_directory_widgets,
IndustryDirectoryWndProc
};
void ShowIndustryDirectory()
void ShowIndustryDirectory(void)
{
/* Industry List */
Window *w;
@@ -588,6 +699,8 @@ void ShowIndustryDirectory()
w = AllocateWindowDescFront(&_industry_directory_desc, 0);
if (w) {
w->vscroll.cap = 16;
w->resize.height = w->height - 6 * 10; // minimum 10 items
w->resize.step_height = 10;
SetWindowDirty(w);
}
}
+34 -32
View File
@@ -19,28 +19,28 @@ static void ShowSelectTutorialWindow()
*/
static const Widget _select_game_widgets[] = {
{ WWT_CAPTION, 13, 0, 335, 0, 13, STR_0307_OPENTTD, STR_NULL},
{ WWT_IMGBTN, 13, 0, 335, 14, 196, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, 12, 10, 167, 22, 33, STR_0140_NEW_GAME, STR_02FB_START_A_NEW_GAME},
{ WWT_PUSHTXTBTN, 12, 168, 325, 22, 33, STR_0141_LOAD_GAME, STR_02FC_LOAD_A_SAVED_GAME},
//{ WWT_PUSHTXTBTN, 12, 10, 167, 177, 188, STR_0142_TUTORIAL_DEMONSTRATION, STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS},
{ WWT_PUSHTXTBTN, 12, 10, 167, 177, 188, STR_CONFIG_PATCHES, STR_CONFIG_PATCHES_TIP},
{ WWT_PUSHTXTBTN, 12, 10, 167, 40, 51, STR_0220_CREATE_SCENARIO,STR_02FE_CREATE_A_CUSTOMIZED_GAME},
{ WWT_PUSHTXTBTN, 12, 10, 167, 136, 147, STR_SINGLE_PLAYER, STR_02FF_SELECT_SINGLE_PLAYER_GAME},
{ WWT_PUSHTXTBTN, 12, 168, 325, 136, 147, STR_MULTIPLAYER, STR_0300_SELECT_MULTIPLAYER_GAME},
{ WWT_PUSHTXTBTN, 12, 10, 167, 159, 170, STR_0148_GAME_OPTIONS, STR_0301_DISPLAY_GAME_OPTIONS},
{ WWT_PUSHTXTBTN, 12, 168, 325, 159, 170, STR_01FE_DIFFICULTY, STR_0302_DISPLAY_DIFFICULTY_OPTIONS},
{ WWT_PUSHTXTBTN, 12, 168, 325, 40, 51, STR_029A_PLAY_SCENARIO, STR_0303_START_A_NEW_GAME_USING},
{ WWT_PUSHTXTBTN, 12, 168, 325, 177, 188, STR_0304_QUIT, STR_0305_QUIT_OPENTTD},
{ WWT_PANEL_2, 12, 10, 85, 69, 122, 0x1312, STR_030E_SELECT_TEMPERATE_LANDSCAPE},
{ WWT_PANEL_2, 12, 90, 165, 69, 122, 0x1314, STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE},
{ WWT_PANEL_2, 12, 170, 245, 69, 122, 0x1316, STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE},
{ WWT_PANEL_2, 12, 250, 325, 69, 122, 0x1318, STR_0311_SELECT_TOYLAND_LANDSCAPE},
{ WWT_CAPTION, RESIZE_NONE, 13, 0, 335, 0, 13, STR_0307_OPENTTD, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 13, 0, 335, 14, 196, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 22, 33, STR_0140_NEW_GAME, STR_02FB_START_A_NEW_GAME},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 168, 325, 22, 33, STR_0141_LOAD_GAME, STR_02FC_LOAD_A_SAVED_GAME},
//{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 177, 188, STR_0142_TUTORIAL_DEMONSTRATION, STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 177, 188, STR_CONFIG_PATCHES, STR_CONFIG_PATCHES_TIP},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 40, 51, STR_0220_CREATE_SCENARIO,STR_02FE_CREATE_A_CUSTOMIZED_GAME},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 136, 147, STR_SINGLE_PLAYER, STR_02FF_SELECT_SINGLE_PLAYER_GAME},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 168, 325, 136, 147, STR_MULTIPLAYER, STR_0300_SELECT_MULTIPLAYER_GAME},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 10, 167, 159, 170, STR_0148_GAME_OPTIONS, STR_0301_DISPLAY_GAME_OPTIONS},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 168, 325, 159, 170, STR_01FE_DIFFICULTY, STR_0302_DISPLAY_DIFFICULTY_OPTIONS},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 168, 325, 40, 51, STR_029A_PLAY_SCENARIO, STR_0303_START_A_NEW_GAME_USING},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 12, 168, 325, 177, 188, STR_0304_QUIT, STR_0305_QUIT_OPENTTD},
{ WWT_PANEL_2, RESIZE_NONE, 12, 10, 85, 69, 122, 0x1312, STR_030E_SELECT_TEMPERATE_LANDSCAPE},
{ WWT_PANEL_2, RESIZE_NONE, 12, 90, 165, 69, 122, 0x1314, STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE},
{ WWT_PANEL_2, RESIZE_NONE, 12, 170, 245, 69, 122, 0x1316, STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE},
{ WWT_PANEL_2, RESIZE_NONE, 12, 250, 325, 69, 122, 0x1318, STR_0311_SELECT_TOYLAND_LANDSCAPE},
{ WIDGETS_END},
};
extern void HandleOnEditText(WindowEvent *e);
extern void HandleOnEditTextCancel();
extern void HandleOnEditTextCancel(void);
static void SelectGameWndProc(Window *w, WindowEvent *e) {
switch(e->event) {
@@ -94,7 +94,7 @@ static const WindowDesc _select_game_desc = {
SelectGameWndProc
};
void ShowSelectGameWindow()
void ShowSelectGameWindow(void)
{
AllocateWindowDesc(&_select_game_desc);
}
@@ -177,11 +177,11 @@ int32 CmdStartScenario(int x, int y, uint32 flags, uint32 p1, uint32 p2)
static const Widget _ask_abandon_game_widgets[] = {
{ WWT_TEXTBTN, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, 4, 11, 179, 0, 13, STR_00C7_QUIT, STR_NULL},
{ WWT_IMGBTN, 4, 0, 179, 14, 91, 0x0, STR_NULL},
{ WWT_TEXTBTN, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
{ WWT_TEXTBTN, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, RESIZE_NONE, 4, 11, 179, 0, 13, STR_00C7_QUIT, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 4, 0, 179, 14, 91, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
{ WIDGETS_END},
};
@@ -197,8 +197,10 @@ static void AskAbandonGameWndProc(Window *w, WindowEvent *e) {
SetDParam(0, STR_OSNAME_BEOS);
#elif defined(__MORPHOS__)
SetDParam(0, STR_OSNAME_MORPHOS);
#elif defined(__AMIGA__)
#elif defined(__AMIGA__)
SetDParam(0, STR_OSNAME_AMIGAOS);
#elif defined(__OS2__)
SetDParam(0, STR_OSNAME_OS2);
#else
SetDParam(0, STR_0134_UNIX);
#endif
@@ -230,18 +232,18 @@ static const WindowDesc _ask_abandon_game_desc = {
AskAbandonGameWndProc
};
void AskExitGame()
void AskExitGame(void)
{
AllocateWindowDescFront(&_ask_abandon_game_desc, 0);
}
static const Widget _ask_quit_game_widgets[] = {
{ WWT_TEXTBTN, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, 4, 11, 179, 0, 13, STR_0161_QUIT_GAME, STR_NULL},
{ WWT_IMGBTN, 4, 0, 179, 14, 91, 0x0, STR_NULL},
{ WWT_TEXTBTN, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
{ WWT_TEXTBTN, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, RESIZE_NONE, 4, 11, 179, 0, 13, STR_0161_QUIT_GAME, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 4, 0, 179, 14, 91, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
{ WIDGETS_END},
};
@@ -283,7 +285,7 @@ static const WindowDesc _ask_quit_game_desc = {
};
void AskExitToGameMenu()
void AskExitToGameMenu(void)
{
AllocateWindowDescFront(&_ask_quit_game_desc, 0);
}
+26 -19
View File
@@ -11,56 +11,63 @@ go to: http://www.tt-forums.net/viewtopic.php?t=9576
Of course if you have more knowledge about any of these bugs, have more
specifics, we welcome you to report them. React to the given bug indicated
by the number below on http://sourceforge.net/tracker/?group_id=103924&atid=636365
If the the bug-report is closed, it has been fixed, which then can be verified
If the the bug report is closed, it has been fixed, which then can be verified
in the latest SVN version.
Bugs for 0.3.5
Bugs for 0.3.6
------------------------------------------------------------------------
URL: http://sourceforge.net/tracker/?atid=636365&group_id=103924&func=browse
-1108615 Catchment area mis-behaving
-1108610 console logging file type
-1108442 autorenew takes precedence over autoreplace
-1107889 server crash and assertion error
-1106356 re-offered prototypes
-1104670 Vans in the depot
-1104519 train pathfinding with new patch
-1104105 script error (r1547)
-1103068 game crashes after reversing train in deport
-1101874 load savegames (and autosave) with dedicated server
-1099694 incorrect player colors
-1099233 production down before it's working
-1098696 Airport shadow remains after crashing
-1098238 Crash after lone wagon sighting
-1093191 2 problems with multiplayer savegames
-1085486 Subsidies: Only count when station is in right suburb
-1084797 building stretch leaves gap
-1084789 delivered cargo bug
-1083941 Train gui crash assertion error
-1083717 graphical glitch
-1083710 Reverse train in depot crashes OpenTTD
-1074623 bus pathfinding inadequacies
-1074610 overtaking at signals bug
-1065168 accept iron ore doesn't produce steel
-1060686 changing (load) order doesn't take effect immediately
-1053339 depot/station looping
-1050990 Buying trains sometimes accounted for incorrectly
-1040119 Flood and wagons in depot
-1034778 train breaksdown, when breaks set to none
-1033300 signal bug
-1030918 Negative city population
-1030502 Buying up a company isn't complete
-1024703 Infinite access of A: when saving and no disk in drive
-997251 Realistic acceleration: Trains don't slow down in curves
-996503 Sound volume bug
-992677 BeOS MIDI does not initialise on newer BeOS releases
-985475 Different kinds of signals in same tile? [Bug]
-980271 Realistic acceleration bug / Lev4 Chimaera becomes useless
-978372 Inconsistent stopping.
-985475 Different kinds of signals in same tile?
-978372 Inconsistent stopping
-968036 Ship blocked at the edge
Minor Bugs for 0.3.5
Minor Bugs for 0.3.6
------------------------------------------------------------------------
URL: http://sourceforge.net/tracker/?atid=669662&group_id=103924&func=browse
-1106889 Chat Interface enhancements
-1104968 void order message
-1104358 train lost message - history
-1102174 Bug if 3 people buy 25% shares in one company
-1099429 show vehicle speed, text too long
-1090495 Bridges and straight lakesides
-1087407 wrong message in history
-1084620 Minor bug considering buses/trucks
-1034310 color mauve in diagrams
-1031451 Catchment area shows when buying sign.
-1031184 Smoke visible through tunnel
-1030661 It's possible to build a tunnel under oil wells
-1009171 Canals and locks at sea level cause flooding
-998902 Annoying out-of-date message
-993516 Canal + bouy -> wrong graphics.
-987891 Large UFO destruction bug
-987884 farm fences
-987883 Aircraft landing/taking off
-987880 company league table updating
-985927 many carriages in depot
-985924 aircraft taxi speed
-980276 Overflow in factory directory
-976824 transmitter base
+88 -88
View File
@@ -45,20 +45,20 @@ uint GetTileSlope(uint tile, int *h)
uint a,b,c,d,min;
int r;
if (GET_TILE_X(tile) == TILE_X_MAX || GET_TILE_Y(tile) == TILE_Y_MAX) {
if (TileX(tile) == MapMaxX() || TileY(tile) == MapMaxY()) {
if (h)
*h = 0;
return 0;
}
assert(tile < TILES_X * TILES_Y && GET_TILE_X(tile) != TILE_X_MAX && GET_TILE_Y(tile) != TILE_Y_MAX);
assert(tile < MapSize() && TileX(tile) != MapMaxX() && TileY(tile) != MapMaxY());
min = a = _map_type_and_height[tile] & 0xF;
b = _map_type_and_height[tile+TILE_XY(1,0)] & 0xF;
min = a = TileHeight(tile);
b = TileHeight(tile + TILE_XY(1,0));
if (min >= b) min = b;
c = _map_type_and_height[tile+TILE_XY(0,1)] & 0xF;
c = TileHeight(tile + TILE_XY(0,1));
if (min >= c) min = c;
d = _map_type_and_height[tile+TILE_XY(1,1)] & 0xF;
d = TileHeight(tile + TILE_XY(1,1));
if (min >= d) min = d;
r = 0;
@@ -82,10 +82,9 @@ int GetTileZ(uint tile)
void FindLandscapeHeightByTile(TileInfo *ti, uint tile)
{
if (GET_TILE_X(tile) == TILE_X_MAX ||
GET_TILE_Y(tile) == TILE_Y_MAX) {
if (TileX(tile) == MapMaxX() || TileY(tile) == MapMaxY()) {
ti->tileh = 0;
ti->type = MP_STRANGE;
ti->type = MP_VOID;
ti->tile = 0;
ti->map5 = 0;
ti->z = 0;
@@ -94,7 +93,7 @@ void FindLandscapeHeightByTile(TileInfo *ti, uint tile)
ti->tile = tile;
ti->map5 = _map5[tile];
ti->type = GET_TILETYPE(tile);
ti->type = TileType(tile);
ti->tileh = GetTileSlope(tile, &ti->z);
// ti->z = min * 8;
}
@@ -107,9 +106,9 @@ void FindLandscapeHeight(TileInfo *ti, uint x, uint y)
ti->x = x;
ti->y = y;
if (x >= TILE_X_MAX*16-1 || y >= TILE_Y_MAX*16-1) {
if (x >= MapMaxX() * 16 - 1 || y >= MapMaxY() * 16 - 1) {
ti->tileh = 0;
ti->type = MP_STRANGE;
ti->type = MP_VOID;
ti->tile = 0;
ti->map5 = 0;
ti->z = 0;
@@ -235,7 +234,7 @@ uint GetSlopeZ(int x, int y)
// direction=true: check for foundation in east and south corner
// direction=false: check for foundation in west and south corner
bool hasFoundation(TileInfo *ti, bool direction)
static bool hasFoundation(TileInfo *ti, bool direction)
{
bool south, other; // southern corner and east/west corner
uint slope = _tile_type_procs[ti->type]->get_slope_tileh_proc(ti);
@@ -296,28 +295,28 @@ void DoClearSquare(uint tile)
uint32 GetTileTrackStatus(uint tile, TransportType mode)
{
return _tile_type_procs[GET_TILETYPE(tile)]->get_tile_track_status_proc(tile, mode);
return _tile_type_procs[TileType(tile)]->get_tile_track_status_proc(tile, mode);
}
void ChangeTileOwner(uint tile, byte old_player, byte new_player)
{
_tile_type_procs[GET_TILETYPE(tile)]->change_tile_owner_proc(tile, old_player, new_player);
_tile_type_procs[TileType(tile)]->change_tile_owner_proc(tile, old_player, new_player);
}
void GetAcceptedCargo(uint tile, AcceptedCargo ac)
{
memset(ac, 0, sizeof(AcceptedCargo));
_tile_type_procs[GET_TILETYPE(tile)]->get_accepted_cargo_proc(tile, ac);
_tile_type_procs[TileType(tile)]->get_accepted_cargo_proc(tile, ac);
}
void AnimateTile(uint tile)
{
_tile_type_procs[GET_TILETYPE(tile)]->animate_tile_proc(tile);
_tile_type_procs[TileType(tile)]->animate_tile_proc(tile);
}
void ClickTile(uint tile)
{
_tile_type_procs[GET_TILETYPE(tile)]->click_tile_proc(tile);
_tile_type_procs[TileType(tile)]->click_tile_proc(tile);
}
void DrawTile(TileInfo *ti)
@@ -327,7 +326,7 @@ void DrawTile(TileInfo *ti)
void GetTileDesc(uint tile, TileDesc *td)
{
_tile_type_procs[GET_TILETYPE(tile)]->get_tile_desc_proc(tile, td);
_tile_type_procs[TileType(tile)]->get_tile_desc_proc(tile, td);
}
/* Clear a piece of landscape
@@ -341,7 +340,7 @@ int32 CmdLandscapeClear(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
tile = TILE_FROM_XY(x,y);
return _tile_type_procs[GET_TILETYPE(tile)]->clear_tile_proc(tile, flags);
return _tile_type_procs[TileType(tile)]->clear_tile_proc(tile, flags);
}
// p1 = end tile
@@ -352,9 +351,11 @@ int32 CmdClearArea(int ex, int ey, uint32 flags, uint32 p1, uint32 p2)
int x,y;
bool success = false;
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
// make sure sx,sy are smaller than ex,ey
sx = GET_TILE_X(p1)*16;
sy = GET_TILE_Y(p1)*16;
sx = TileX(p1) * 16;
sy = TileY(p1) * 16;
if (ex < sx) intswap(ex, sx);
if (ey < sy) intswap(ey, sy);
@@ -399,7 +400,7 @@ void CDECL ModifyTile(uint tile, uint flags, ...)
va_start(va, flags);
if ((i = (flags >> 8) & 0xF) != 0) {
_map_type_and_height[tile] = (_map_type_and_height[tile]&~0xF0)|((i-1) << 4);
SetTileType(tile, i - 1);
}
if (flags & (MP_MAP2_CLEAR | MP_MAP2)) {
@@ -444,15 +445,16 @@ void SetMapExtraBits(uint tile, byte bits)
uint GetMapExtraBits(uint tile)
{
return (_map_extra_bits[tile >> 2] >> (tile&3)*2)&3;
assert(tile < MapSize());
return (_map_extra_bits[tile >> 2] >> (tile & 3) * 2) & 3;
}
#define TILELOOP_BITS 4
#define TILELOOP_SIZE (1 << TILELOOP_BITS)
#define TILELOOP_ASSERTMASK ((TILELOOP_SIZE-1) + ((TILELOOP_SIZE-1) << TILE_X_BITS))
#define TILELOOP_CHKMASK (((1 << (TILE_X_BITS - TILELOOP_BITS))-1) << TILELOOP_BITS)
#define TILELOOP_ASSERTMASK ((TILELOOP_SIZE-1) + ((TILELOOP_SIZE-1) << MapLogX()))
#define TILELOOP_CHKMASK (((1 << (MapLogX() - TILELOOP_BITS))-1) << TILELOOP_BITS)
void RunTileLoop()
void RunTileLoop(void)
{
uint tile;
uint count;
@@ -460,57 +462,59 @@ void RunTileLoop()
tile = _cur_tileloop_tile;
assert( (tile & ~TILELOOP_ASSERTMASK) == 0);
count = (TILES_X/TILELOOP_SIZE) * (TILES_Y/TILELOOP_SIZE);
count = (MapSizeX() / TILELOOP_SIZE) * (MapSizeY() / TILELOOP_SIZE);
do {
_tile_type_procs[GET_TILETYPE(tile)]->tile_loop_proc(tile);
_tile_type_procs[TileType(tile)]->tile_loop_proc(tile);
if ( GET_TILE_X(tile) < TILES_X - TILELOOP_SIZE) {
if (TileX(tile) < MapSizeX() - TILELOOP_SIZE) {
tile += TILELOOP_SIZE; /* no overflow */
} else {
tile = TILE_MASK(tile - TILELOOP_SIZE * (TILES_X/TILELOOP_SIZE-1) + TILE_XY(0, TILELOOP_SIZE)); /* x would overflow, also increase y */
tile = TILE_MASK(tile - TILELOOP_SIZE * (MapSizeX() / TILELOOP_SIZE-1) + TILE_XY(0, TILELOOP_SIZE)); /* x would overflow, also increase y */
}
} while (--count);
assert( (tile & ~TILELOOP_ASSERTMASK) == 0);
tile += 9;
if (tile & TILELOOP_CHKMASK)
tile = (tile + TILES_X) & TILELOOP_ASSERTMASK;
tile = (tile + MapSizeX()) & TILELOOP_ASSERTMASK;
_cur_tileloop_tile = tile;
}
void InitializeLandscape()
void InitializeLandscape(void)
{
uint map_size = MapSize();
int i;
uint i;
memset(_map_owner, OWNER_NONE, map_size);
memset(_map2, 0, map_size);
memset(_map2, 0, map_size * sizeof(uint16));
memset(_map3_lo, 0, map_size);
memset(_map3_hi, 0, map_size);
memset(_map_extra_bits, 0, map_size / 4);
memset(_map_type_and_height, MP_WATER << 4, map_size);
memset(_map_type_and_height, MP_CLEAR << 4, map_size);
for(i=0; i!=TILES_Y-1; i++)
memset(_map_type_and_height + i*TILES_X, 0, TILES_X-1);
// create void tiles on the border
for (i = 0; i != MapMaxY(); i++)
_map_type_and_height[ i * MapSizeX() + MapMaxY() ] = MP_VOID << 4;
memset(_map_type_and_height + MapMaxY() * MapSizeX(), MP_VOID << 4, MapSizeX());
memset(_map5, 3, map_size);
}
void ConvertGroundTilesIntoWaterTiles()
void ConvertGroundTilesIntoWaterTiles(void)
{
uint tile = 0;
int h;
while(true) {
if (IS_TILETYPE(tile, MP_CLEAR) && GetTileSlope(tile, &h) == 0 && h == 0) {
_map_type_and_height[tile] = MP_WATER << 4;
if (IsTileType(tile, MP_CLEAR) && GetTileSlope(tile, &h) == 0 && h == 0) {
SetTileType(tile, MP_WATER);
_map5[tile] = 0;
_map_owner[tile] = OWNER_WATER;
}
tile++;
if (GET_TILE_X(tile) == TILE_X_MAX) {
tile += TILE_XY(-TILE_X_MAX, 1);
if (GET_TILE_Y(tile) == TILE_Y_MAX)
if (TileX(tile) == MapMaxX()) {
tile += TILE_XY(-(int)MapMaxX(), 1);
if (TileY(tile) == MapMaxY())
break;
}
}
@@ -522,7 +526,7 @@ static const byte _genterrain_tbl_2[5] = { 0, 0, 0, 0, 33 };
static void GenerateTerrain(int type, int flag)
{
uint32 r;
int x,y;
uint x,y;
int w,h;
byte *p,*tile;
byte direction;
@@ -530,8 +534,8 @@ static void GenerateTerrain(int type, int flag)
r = Random();
p = GetSpritePtr((((r >> 24) * _genterrain_tbl_1[type]) >> 8) + _genterrain_tbl_2[type] + 4845);
x = r & TILE_X_MAX;
y = (r >> TILE_X_BITS) & TILE_Y_MAX;
x = r & MapMaxX();
y = (r >> MapLogX()) & MapMaxY();
if (x < 2 || y < 2)
@@ -563,10 +567,10 @@ static void GenerateTerrain(int type, int flag)
}
}
if (x + w >= TILE_X_MAX-1)
if (x + w >= MapMaxX() - 1)
return;
if (y + h >= TILE_Y_MAX-1)
if (y + h >= MapMaxY() - 1)
return;
tile = &_map_type_and_height[TILE_XY(x,y)];
@@ -623,41 +627,37 @@ static void GenerateTerrain(int type, int flag)
#include "table/genland.h"
static void CreateDesertOrRainForest()
static void CreateDesertOrRainForest(void)
{
uint tile;
const TileIndexDiff *data;
byte mt;
const TileIndexDiffC *data;
int i;
tile = 0;
do {
data = _make_desert_or_rainforest_data;
do {
if ((i = *data++) == MDORD_LAST) {
SetMapExtraBits(tile, 1);
break;
}
mt = _map_type_and_height[TILE_MASK(tile + i)];
} while ((mt & 0xC) == 0 && (mt >> 4) != MP_WATER);
} while (++tile != TILES_X*TILES_Y);
for (tile = 0; tile != MapSize(); ++tile) {
for (data = _make_desert_or_rainforest_data;
data != endof(_make_desert_or_rainforest_data); ++data) {
TileIndex t = tile + ToTileIndexDiff(*data);
if (TileHeight(t) >= 4 || IsTileType(t, MP_WATER)) break;
}
if (data == endof(_make_desert_or_rainforest_data))
SetMapExtraBits(tile, 1);
}
for(i=0; i!=256; i++)
RunTileLoop();
tile = 0;
do {
data = _make_desert_or_rainforest_data;
do {
if ((i = *data++) == MDORD_LAST) {
SetMapExtraBits(tile, 2);
break;
}
} while ( !IS_TILETYPE(TILE_MASK(tile+i), MP_CLEAR) || (_map5[TILE_MASK(tile + i)]&0x1C) != 0x14);
} while (++tile != TILES_X*TILES_Y);
for (tile = 0; tile != MapSize(); ++tile) {
for (data = _make_desert_or_rainforest_data;
data != endof(_make_desert_or_rainforest_data); ++data) {
TileIndex t = TILE_MASK(tile + ToTileIndexDiff(*data));
if (IsTileType(t, MP_CLEAR) && (_map5[t] & 0x1c) == 0x14) break;
}
if (data == endof(_make_desert_or_rainforest_data))
SetMapExtraBits(tile, 2);
}
}
void GenerateLandscape()
void GenerateLandscape(void)
{
int i,flag;
uint32 r;
@@ -706,15 +706,15 @@ void GenerateLandscape()
CreateDesertOrRainForest();
}
void OnTick_Town();
void OnTick_Trees();
void OnTick_Station();
void OnTick_Industry();
void OnTick_Town(void);
void OnTick_Trees(void);
void OnTick_Station(void);
void OnTick_Industry(void);
void OnTick_Players();
void OnTick_Train();
void OnTick_Players(void);
void OnTick_Train(void);
void CallLandscapeTick()
void CallLandscapeTick(void)
{
OnTick_Town();
OnTick_Trees();
@@ -731,8 +731,8 @@ TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng)
uint32 r = Random();
return TILE_XY(
GET_TILE_X(a) + ((byte)r * rn * 2 >> 8) - rn,
GET_TILE_Y(a) + ((byte)(r>>8) * rn * 2 >> 8) - rn
TileX(a) + ((byte)r * rn * 2 >> 8) - rn,
TileY(a) + ((byte)(r >> 8) * rn * 2 >> 8) - rn
);
}
@@ -744,12 +744,12 @@ TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng)
// the result will be tile + TILE_XY(addx, addy)
uint TileAddWrap(TileIndex tile, int addx, int addy)
{
int x, y;
x = GET_TILE_X(tile) + addx;
y = GET_TILE_Y(tile) + addy;
uint x, y;
x = TileX(tile) + addx;
y = TileY(tile) + addy;
// Are we about to wrap?
if (x > 0 && x < TILE_X_MAX && y > 0 && y < TILE_Y_MAX)
if (x < MapMaxX() && y < MapMaxY())
return tile + TILE_XY(addx, addy);
return TILE_WRAPPED;
@@ -757,5 +757,5 @@ uint TileAddWrap(TileIndex tile, int addx, int addy)
bool IsValidTile(uint tile)
{
return (tile < TILES_X * TILE_Y_MAX && GET_TILE_X(tile) != TILE_X_MAX);
return (tile < MapSizeX() * MapMaxY() && TileX(tile) != MapMaxX());
}
+56 -19
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Can't do this....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Can't clear this area....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Original design by Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Graphics by Simon Foster
STR_SPECIAL_THANKS :{BLACK}Special thanks go out to:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signals and Semaphores {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Foundations for Tracks on Slopes {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Canal/Lock graphics {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
STR_TRANSLATED_BY :{BLACK} Translator(s) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Imperial (miles)
STR_013A_METRIC_KILOMETERS :Metric (kilometers)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Can't change servicing interval...
STR_018B_CLOSE_WINDOW :{BLACK}Close window
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Window title - drag this to move window
STR_STICKY_BUTTON :{BLACK}Mark this window as undeletable for the 'Close All Windows' key
STR_RESIZE_BUTTON :{BLACK}Click and drag to resize this window
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolish buildings etc. on a square of land
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Lower a corner of land
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Raise a corner of land
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Changes of cargo acceptance
STR_020E_SUBSIDIES :{YELLOW}Subsidies
STR_020F_GENERAL_INFORMATION :{YELLOW}General information
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...too far from previous destination
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top companies who reached 2050{}({STRING} Level)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top companies who reached {NUMU16}{}({STRING} Level)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Company League Table in {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Businessman
STR_0214_ENTREPRENEUR :Entrepreneur
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalist
STR_0217_MAGNATE :Magnate
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon of the Century
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} achieves '{STRING}' status!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} of {STRING} achieves '{STRING}' status!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} achieves '{STRING}' status!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} of {STRING} achieves '{STRING}' status!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf settings
STR_NEWGRF_SETTINGS2 :Newgrf settings
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Close ALL windows
STR_CLOSE_ALL_WINDOWS2 :Close ALL windows
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Town names displayed
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Town names displayed
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Station names displayed
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subsidies
STR_02DE_MAP_OF_WORLD :Map of world
STR_EXTRA_VIEW_PORT :Extra viewport
STR_02DF_TOWN_DIRECTORY :Town directory
STR_TOWN_POPULATION :{BLACK}World population: {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Viewport {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copy to viewport
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copy the location of the global view to this viewport
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Fund new industry
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fund new industry
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...can only be built in towns
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...can only be built in rainforest areas
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...can only be built in desert areas
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :English
STR_TOWNNAME_ORIGINAL_ENGLISH :English
STR_TOWNNAME_FRENCH :French
STR_TOWNNAME_GERMAN :German
STR_TOWNNAME_AMERICAN :American
STR_TOWNNAME_ADDITIONAL_ENGLISH :English (Additional)
STR_TOWNNAME_LATIN_AMERICAN :Latin-American
STR_TOWNNAME_SILLY :Silly
STR_TOWNNAME_SWEDISH :Swedish
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Dutch
STR_TOWNNAME_FINNISH :Finnish
STR_TOWNNAME_POLISH :Polish
STR_TOWNNAME_SLOVAKISH :Slovakish
STR_TOWNNAME_NORWEGIAN :Norwegian
STR_TOWNNAME_HUNGARIAN :Hungarian
STR_TOWNNAME_AUSTRIAN :Austrian
STR_TOWNNAME_ROMANIAN :Romanian
STR_TOWNNAME_CZECH :Czech
STR_TOWNNAME_SWISS :Swiss
############ end of townname region
STR_CURR_GBP :Pounds ({POUNDSIGN})
@@ -981,7 +981,7 @@ STR_CONFIG_PATCHES_ON :On
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Show vehicle speed in status bar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Allow building on slopes and coasts: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Allow more realistically sized catchment areas: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Allow removal of more town-owned roads, bridges, tunnels, etc: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Allow removal of more town-owned roads, bridges, etc: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Enable building very long trains: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Enable realistic acceleration for trains: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Join train stations built next to each other: {ORANGE}{STRING}
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Autorenew vehicle when it gets
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autorenew when vehice is {ORANGE}{STRING}{LTBLUE} months before/after max age
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Autorenew minimum needed money for renew: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duration of error message: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Show town population in the town name label: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Invisible trees (with transparent buildings): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snow line height: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max station spread: {ORANGE}{STRING} {RED}Warning: High setting slows game
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Default service interval for air
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Default service interval for aircraft: {ORANGE}disabled
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Default service interval for ships: {ORANGE}{STRING} days
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Default service interval for ships: {ORANGE}disabled
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Disable servicing when breakdowns set to none: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Colored news appears in: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Starting date: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}End game in: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Enable smooth economy (more, smaller changes)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Allow buying shares from other companies
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}When dragging place signals every: {ORANGE}{STRING} tile(s)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position of main toolbar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Left
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Can't build locks here...
STR_BUILD_LOCKS_TIP :{BLACK}Build locks
STR_LANDINFO_LOCK :Lock
STR_BUOY_IS_IN_USE :{WHITE}... buoy is in use!
STR_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Select type of cargo for train to c
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Refit train to carry highlighted cargo type
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Can't refit train...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Service intervals are in percents: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Change production
TEMP_AI_IN_PROGRESS :{WHITE}Welcome to this new AI, in progress. You can expect problems. When you do, make a screenshot and post it at the forum. Enjoy!
TEMP_AI_ACTIVATED :{WHITE}Warning: this new AI is still alpha! Currently, only trucks and busses work!
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Language: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Map size: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Start date: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Current date: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Password protected!
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} We made a protocol-error and our conne
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} The revision of this client does not match the revision of the server.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Wrong password.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} The server is full
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} You are banned from this server
STR_NETWORK_ERR_KICKED :{WHITE} You are kicked out of the server
STR_NETWORK_ERR_CHEATER :{WHITE} Cheating is not allowed on this server
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Road/rail level crossing
##id 0x2000
STR_2000_TOWNS :{WHITE}Towns
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Can't sell 25% share in this company
STR_707D_OWNED_BY :{WHITE}({COMMA16}% owned by {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% owned by {STRING}{} {COMMA16}% owned by {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} has been taken over by {STRING}!
STR_7080_PROTECTED :{WHITE}This company does not trade shares yet...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Steam)
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} from {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Train {COMMA16} is waiting in depot
STR_8815_NEW_VEHICLES :{BLACK}New Vehicles
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Weight: {GOLD}{COMMA16}t{}{BLACK}Speed: {GOLD}{VELOCITY}{BLACK} Power: {GOLD}{COMMA16}hp{}{BLACK}Running Cost: {GOLD}{CURRENCY}/yr{}{BLACK}Capacity: {GOLD}{STRING}{}{BLACK}Designed: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} years{}{BLACK}Max. Reliability: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Weight: {GOLD}{COMMA16}t{}{BLACK}Speed: {GOLD}{VELOCITY}{BLACK} Power: {GOLD}{COMMA32}hp{}{BLACK}Running Cost: {GOLD}{CURRENCY}/yr{}{BLACK}Capacity: {GOLD}{STRING}{}{BLACK}Designed: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} years{}{BLACK}Max. Reliability: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Information
STR_8819_TRAIN_TOO_LONG :{WHITE}Train too long
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Trains can only be altered when stopped inside a depot
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Can't name aircraft...
STR_A032_NAME_AIRCRAFT :{BLACK}Name aircraft
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Citizens celebrate . . .{}First aircraft arrives at {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Plane Crash!{}{COMMA16} die in fireball at {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Plane Crash!{}Aircraft ran out of fuel, {COMMA16} die in fireball!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinations:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Rename
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Show all trains which have this station on
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Show all road vehicles which have this station on their schedule
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Show all aircraft which have this station on their schedule
STR_SCHEDULED_SHIPS_TIP :{BLACK}Show all ships which have this station on their schedule
STR_REPLACE_VEHICLES :{BLACK}Replace Vehicles
STR_REPLACE_VEHICLES_WHITE :{WHITE}Replace Vehicles
STR_REPLACE_VEHICLES_START :{BLACK}Start Replacing Vehicles
STR_REPLACE_VEHICLES_STOP :{BLACK}Stop Replacing Vehicles
STR_NOT_REPLACING :{BLACK}Not replacing
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}No vehicle selected
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Select the engine type to replace
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Select the new engine type you would like to use in place of the left selected engine type
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Press to stop the replacement of the engine type selected on the left
STR_REPLACE_HELP_START_BUTTON :{BLACK}Press to begin replacement of the left selected engine type with the right selected engine type
STR_REPLACE_HELP_RAILTYPE :{BLACK}Choose the railtype you want to replace engines for
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Displays which engine the left selected engine is being replaced with, if any
STR_REPLACE_HELP :{BLACK}This allows you to replace one engine type with another type, when trains of the original type enter a depot
STR_SHORT_DATE :{WHITE}{DATE_TINY}
############ Lists rail types
STR_RAIL_VEHICLES :Rail Vehicles
STR_MONORAIL_VEHICLES :Monorail Vehicles
STR_MAGLEV_VEHICLES :Maglev Vehicles
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+53 -18
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}No es pot fer aix
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}No es pot netejar l'àrea....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright Original {COPYRIGHT} 1995 Chris Sawyer, Tots els Drets reservats
STR_00B7_VERSION :{BLACK}OpenTTD versió {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Disseny Original per Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Gràfics Originals per Simon Foster
STR_SPECIAL_THANKS :{BLACK}Agreïments especials a:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Senyals i Semàfors {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fonaments per Pistes en Desnivells {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Gràfics de Canals/Rescloses {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
STR_TRANSLATED_BY :{BLACK} Traductor(s) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Britànic (milles)
STR_013A_METRIC_KILOMETERS :Mètric (kilómetres)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}No es pot canviar l'interval del man
STR_018B_CLOSE_WINDOW :{BLACK}Tancar finestra
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Títol de finestra - arrosega aixó per moure la finestra
STR_STICKY_BUTTON :{BLACK}Marca aquesta finestra com a no eliminable per a la clau 'Tancar totes les Finestres'
STR_RESIZE_BUTTON :{BLACK}Prem i arrosega per canviar el tamany de la finestra
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolició d'edificis etc. en un quadre de terreny
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Rebaixar una cantonada del terreny
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar una cantonada del terreny
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Canvis en admisi
STR_020E_SUBSIDIES :{YELLOW}Subvencions
STR_020F_GENERAL_INFORMATION :{YELLOW}Informació General
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...massa lluny del destí previ
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Principals empreses en asolir el 2050{}(Nivell {STRING})
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Principals Empreses en asolir el Nivell {NUMU16}{}({STRING} )
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Taula de Lliga d'Empreses a {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Empresari
STR_0214_ENTREPRENEUR :Emprenedor
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalista
STR_0217_MAGNATE :Magnate
STR_0218_MOGUL :Gran Magnate
STR_0219_TYCOON_OF_THE_CENTURY :Magnate del Segle
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} asoleix l'estat '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} de {STRING} asoleix l'estat '{STRING}'!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} asoleix l'estat '{STRING}' !
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} de {STRING} asoleix l'estat '{STRING}' !
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Configuracions de Newgrf
STR_NEWGRF_SETTINGS2 :Configuracions de Newgrf
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Tancar TOTES les finestres
STR_CLOSE_ALL_WINDOWS2 :Tancar TOTES les finestres
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Mostrats noms de poblacions
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Mostrats noms de poblacions
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Mostrats noms d'estacions
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Fundar nova ind
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fundar nova indústria
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...només es pot construir en poblacions
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...només es pot construir en àrees de selva tropical
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...només es pot construir en àrees de desert
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Anglès
STR_TOWNNAME_ORIGINAL_ENGLISH :Anglès
STR_TOWNNAME_FRENCH :Francès
STR_TOWNNAME_GERMAN :Alemany
STR_TOWNNAME_AMERICAN :Americà
STR_TOWNNAME_ADDITIONAL_ENGLISH :Anglès (Adicional)
STR_TOWNNAME_LATIN_AMERICAN :Latinoamericà
STR_TOWNNAME_SILLY :Tonto
STR_TOWNNAME_SWEDISH :Suec
@@ -862,10 +859,12 @@ STR_TOWNNAME_DUTCH :Holand
STR_TOWNNAME_FINNISH :Finès
STR_TOWNNAME_POLISH :Polac
STR_TOWNNAME_SLOVAKISH :Eslovac
STR_TOWNNAME_NORWEGIAN :Noruec
STR_TOWNNAME_HUNGARIAN :Húngar
STR_TOWNNAME_AUSTRIAN :Austríac
STR_TOWNNAME_ROMANIAN :Romanès
STR_TOWNNAME_CZECH :Txec
STR_TOWNNAME_SWISS :Suís
############ end of townname region
STR_CURR_GBP :Lliures ({POUNDSIGN})
@@ -1019,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Autorenova el vehicle quan sigu
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autorenova el vehicle quan tingui {ORANGE}{STRING}{LTBLUE} mesos abans/després antig. max.
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Autorenovació: mínim de diners per renovar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duració del missatge d'error: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Mostra els habitants a la etiqueta del nom de població: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Arbres invisibles (amb edificis transparents): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Alçada de la cota de neu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max extensió de estacions: {ORANGE}{STRING}{RED}Avís: Un valor alt enlenteix el joc
@@ -1044,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Interval de manteniment per defe
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Interval de manteniment per defecte de les aeronaus: {ORANGE}desactivat
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Interval de manteniment per defecte dels vaixells: {ORANGE}{STRING} díes/%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Interval de manteniment per defecte dels vaixells: {ORANGE}desactivat
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Desactivar manteniment quan les averíes s'estableixen a cap: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Les noticies en color apareixen en: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Data d'inici: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Fi del joc en: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Activar economia suau (més canvis però més petits)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permetre comprar participadions d'altres empreses
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}En arrosegant, sitúa senyals cada: {ORANGE}{STRING} quadre(s)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posició de la barra d'eines principal: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Esquerra
@@ -1137,6 +1140,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}No es pot construir resclosa aqui...
STR_BUILD_LOCKS_TIP :{BLACK}Construir rescloses
STR_LANDINFO_LOCK :Resclosa
STR_LANDINFO_COORDS :{BLACK}Coordenades: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}No es pot treure part de la estació...
@@ -1188,6 +1192,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Selecciona tipus de c
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Remodelar tren per transportar el tipus de càrrega seleccionat
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}No es pot remodelar el tren...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Els intervals de manteniment estàn en percentatges: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Canvi de producció
TEMP_AI_IN_PROGRESS :{WHITE}Benvingut a aquest nou AI, en desenvolupament. Pot ser que tinguis problemes. Quan en tinguis, fes una còpia de pantalla i publícala al forums. Disfruta!
TEMP_AI_ACTIVATED :{WHITE}Atenció: aquest nou AI encara està en versió alfa! Actualment, només funcionen els autobusos i camions!
@@ -1225,7 +1230,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Tamany del mapa: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Versió del servidor: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adreça del servidor: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adreça del servidor: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Data inicial: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Data actual: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Protegit per contrasenya!
@@ -1341,6 +1346,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} S'ha obtingut un error de protocol i s
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} La revisió d'aquest client no concorda amb la revisió del servidor.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Contrasenya incorrecta.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} El servidor és plé
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Estàs exclòs d'aquest servidor
STR_NETWORK_ERR_KICKED :{WHITE} T'han fet fora del servidor
STR_NETWORK_ERR_CHEATER :{WHITE} No es permet usar codis trampa en aquest servidor
@@ -1481,6 +1487,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Pas a nivell
##id 0x2000
STR_2000_TOWNS :{WHITE}Poblacions
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2087,6 +2094,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}No pots vendre el 25% de participaci
STR_707D_OWNED_BY :{WHITE}({COMMA16}% propietat de {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% propietat de {STRING}{} {COMMA16}% propietat de {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} ha estat absorbida per {STRING}!
STR_7080_PROTECTED :{WHITE}Aquesta Empresa ja no negocía participacions...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vapor)
@@ -2385,7 +2393,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} procedent de {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Tren {COMMA16} en espera en cotxeres
STR_8815_NEW_VEHICLES :{BLACK}Nous Vehicles
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Pes: {GOLD}{COMMA16}t{}{BLACK}Velocitat: {GOLD}{VELOCITY}{BLACK} Potència: {GOLD}{COMMA16}hp{}{BLACK}Cost de circulació: {GOLD}{CURRENCY}/any{}{BLACK}Capacitat: {GOLD}{STRING}{}{BLACK}Dissenyat en: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anys{}{BLACK}Max. Rendibilitat: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Pes: {GOLD}{COMMA16}t{}{BLACK}Velocitat: {GOLD}{VELOCITY}{BLACK} Potència: {GOLD}{COMMA32}hp{}{BLACK}Cost de Circulació: {GOLD}{CURRENCY}/any{}{BLACK}Capacitat: {GOLD}{STRING}{}{BLACK}Dissenyat: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anys{}{BLACK}Max. Rendiment: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Informació
STR_8819_TRAIN_TOO_LONG :{WHITE}Tren massa llarg
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Els trens només es poden modificar quan s'han parat dintre d'una cotxera
@@ -2666,6 +2674,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}No es pot anomenar aeronaus...
STR_A032_NAME_AIRCRAFT :{BLACK}Anomenar aeronaus
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Celebració popular . . .{}La primera aeronau arriba a {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Accident d'avió!{}{COMMA16} moren en una bola de foc a {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Accident d'aviació!{}Aeronau sense combustible, {COMMA16} morts en una bola de foc!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinacions:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Reanomena
@@ -2739,6 +2748,7 @@ STR_CURRENCY_WINDOW :{WHITE}Moneda personalitzada
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Canvi de moneda: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separador:
STR_CURRENCY_PREFIX :{LTBLUE}Prefix:
STR_CURRENCY_SUFFIX :{LTBLUE}Sufix:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Canvi a Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Canvi a Euro: {ORANGE}mai
STR_CURRENCY_PREVIEW :{LTBLUE}Vista prèvia: {ORANGE}{CURRENCY}
@@ -2758,3 +2768,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Mostra tots els trens que tinguin aquesta e
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Mostra tots els vehicles que tinguin aquesta estació al seu itinerari
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostra totes les aeronaus que tinguin aquest aeroport al seu itinerari
STR_SCHEDULED_SHIPS_TIP :{BLACK}Mostra tots els vaixells que tinguin aquest port al seu itinerari
STR_REPLACE_VEHICLES :{BLACK}Reemplaçar Vehicles
STR_REPLACE_VEHICLES_WHITE :{WHITE}Reemplaçar Vehicles
STR_REPLACE_VEHICLES_START :{BLACK}Inici de reemplaçament de Vehicles
STR_REPLACE_VEHICLES_STOP :{BLACK}Fi de reemplaçament de Vehicles
STR_NOT_REPLACING :{BLACK}No reemplaçar
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}No hi ha cap vehicle seleccionat
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Selecciona el tipus de motor a reemplaçar
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Selecciona el nou tipus de motor que vols fer servir en lloc del seleccionat
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Prem per aturar el reemplaçament del tipus de motor seleccionat a l'esquerra
STR_REPLACE_HELP_START_BUTTON :{BLACK}Prem per iniciar el reemplaçament del tipus de motor seleccionat a l'esquerra pel seleccionat a la dreta
STR_REPLACE_HELP_RAILTYPE :{BLACK}Tria el tipus de via pel que vols reemplaçar motors
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Mosyta quin motor dels seleccionats a l'esquerra es reemplaça, si hi ha
STR_REPLACE_HELP :{BLACK}Et permet reemplaçar un tipus de motor amb un altre, quan els trens del tipus original entrin a cotxeres
############ Lists rail types
STR_RAIL_VEHICLES :Trens
STR_MONORAIL_VEHICLES :Monorrails
STR_MAGLEV_VEHICLES :Vehicles Maglev
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+62 -25
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Tohle neumuzes udelat...
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Nemuzes vycistit tuto oblast...
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Puvodni copyright: {COPYRIGHT} 1995 Chris Sawyer, vsechna práva vyhrazena
STR_00B7_VERSION :{BLACK}OpenTTD verze {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Puvodni design: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Puvodni grafika: Simon Foster
STR_SPECIAL_THANKS :{BLACK}Zvlastni podekovani:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signals (predo-navesti) a semafory {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Podklady pro trate a silnice na svazích: {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Grafika pro umele pruplavy a zdymadla: {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 Tým OpenTTD
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Tým OpenTTD
STR_TRANSLATED_BY :{BLACK} Prekladatel(e) - Hadez, iSteve (kdo jste byli driv, napiste Hádovi PM na tt-forums.net)
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Imperiální (míle)
STR_013A_METRIC_KILOMETERS :Metrické (kilometry)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nelze zmenit interval oprav...
STR_018B_CLOSE_WINDOW :{BLACK}Zavrit okno
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titulek okna - tahej pro posun okna
STR_STICKY_BUTTON :{BLACK}Oznacit toto okno, aby se nedalo zavrit klávesou 'Zavrit vsechna okna'
STR_RESIZE_BUTTON :{BLACK}Pro zmenu velikosti okna tady uchop a táhni
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolice budov, atd.
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Snizit roh zeme
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Zvysit roh zeme
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Zmeny prijmu zbozi
STR_020E_SUBSIDIES :{YELLOW}Dotace
STR_020F_GENERAL_INFORMATION :{YELLOW}Obecné informace
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...prilis daleko od predchazejiciho cile
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Nejlepsi spolecnosti, které dosáhly roku 2050{}({STRING} uroven)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Nejlepsi spolecnosti, které dosáhly {NUMU16}{}({STRING} uroven)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Tabulka spolecnosti v roce {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Obchodník
STR_0214_ENTREPRENEUR :Manazer
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalista
STR_0217_MAGNATE :Magnát
STR_0218_MOGUL :Velemagnát
STR_0219_TYCOON_OF_THE_CENTURY :Magnát století
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} dosahuje hodnosti '{STRING}' !
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} z {STRING} dosahuje hodnosti '{STRING}' !
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} získal oznaceni '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} z {STRING} získal oznaceni '{STRING}' status!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Nastaven
STR_NEWGRF_SETTINGS2 :Nastavení newgrf
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Zavrit VSECHNA okna
STR_CLOSE_ALL_WINDOWS2 :Zavrit VSECHNA okna
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazení jmen mest
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Zobrazení jmen mest
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazení jmen stanic
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Dotace
STR_02DE_MAP_OF_WORLD :Mapa sveta
STR_EXTRA_VIEW_PORT :Dalsi pohled
STR_02DF_TOWN_DIRECTORY :Seznam mest
STR_TOWN_POPULATION :{BLACK}Populace sveta: {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pohled {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Nastavit jako pohled
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Nastavit soucasne zorné pole jako pohled
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Investovat do prumyslu
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Investovat do prumyslu
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...muze být budováno jen ve mestech
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...muze být budováno jen v pralesech
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...muze být budováno jen v poustich
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Anglická
STR_TOWNNAME_ORIGINAL_ENGLISH :Anglická (puvodni)
STR_TOWNNAME_FRENCH :Francouzská
STR_TOWNNAME_GERMAN :Nemecka
STR_TOWNNAME_AMERICAN :Americká
STR_TOWNNAME_ADDITIONAL_ENGLISH :Anglická (dalsi)
STR_TOWNNAME_LATIN_AMERICAN :Latinskoamerická
STR_TOWNNAME_SILLY :Legracni (anglická)
STR_TOWNNAME_SWEDISH :Svedska
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Holandsk
STR_TOWNNAME_FINNISH :Finská
STR_TOWNNAME_POLISH :Polská
STR_TOWNNAME_SLOVAKISH :Slovenská
STR_TOWNNAME_NORWEGIAN :Norská
STR_TOWNNAME_HUNGARIAN :Madarska
STR_TOWNNAME_AUSTRIAN :Rakouská
STR_TOWNNAME_ROMANIAN :Rumunská
STR_TOWNNAME_CZECH :Ceska
STR_TOWNNAME_SWISS :Svycarska
############ end of townname region
STR_CURR_GBP :Libry ({POUNDSIGN})
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automaticky obnovit dopravn
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Obnovit vozidlo {ORANGE}{STRING}{LTBLUE} mesicu pred / po dosazeni maximálního stari
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minimální castka pro automatické obnovení: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Doba zobrazení chybové zprávy: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Zobrazovat populaci mesta v jeho popisku: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Neviditelné stromy (spolecne s pruhlednymi budovami): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Vyska snehove cary: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Nejvetsi rozsah stanice: {ORANGE}{STRING} {RED}Varování: Vysoké nastavení zpomaluje hru
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Z
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Základní servisní interval pro letadla: {ORANGE}vypnuto
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Základní servisní interval pro lode: {ORANGE}{STRING} dní
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Základní servisní interval pro lode: {ORANGE}vypnuto
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Vypnout servisy kdyz jsou vypnuty poruchy: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Barevné noviny se objeví: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Pocatecni datum: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Ukoncit hru v roce: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Plynulé zmeny ekonomiky (více mensich zmen)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Povolit kupování podilu z ostatních spolecnosti
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Pri tazeni umistovat signály kazdych(e): {ORANGE}{STRING} dilku(y)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Umisteni hlavní listy: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Vlevo
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Zde nemohu postavit zdymadlo...
STR_BUILD_LOCKS_TIP :{BLACK}Stavet zdymadlo
STR_LANDINFO_LOCK :Zdymadlo
STR_BUOY_IS_IN_USE :{WHITE}... bojka je pouzivana!
STR_LANDINFO_COORDS :{BLACK}Souradnice: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Nemohu odstranit cast stanice...
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Zvolit typ n
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Prestavet vlak na oznaceny typ nákladu
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Nelze prestavet vlak...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Intervaly servisu v procentech: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Zmenit produkci
TEMP_AI_IN_PROGRESS :{WHITE}Predstavujeme ti novou umelou inteligenci (pracovní). Není jeste OK, takze s ním jsou jeste problémy. Kdykoli muzes, udelej screenshot a prispej s ním do fóra. At se ti líbí!
TEMP_AI_ACTIVATED :{WHITE}Pozor: tato nová umela inteligence je jeste v alpha verzi (= nebyla moc testována)! Zatím umí pracovat jen se silnicnimi vozidly!
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Jazyk: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Prostredi: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Velikost mapy: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Verze hry na serveru: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa serveru: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa serveru: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Pocatecni datum: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Momentální datum: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Chraneno heslem!
@@ -1334,13 +1341,14 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE} Server neodpovedel na pozadavek
STR_NETWORK_ERR_DESYNC :{WHITE} Sit - synchronizace hry selhala
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Sit - spojení ztraceno
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Nemohu nahrát ulozenou hru ze serveru
STR_NETWORK_ERR_SERVER_START :{WHITE} Nemohu spustit server.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Nemohu se pripojit.
STR_NETWORK_ERR_TIMEOUT :{WHITE} U spojení c. {NUMU16} byl prekrocen cekaci limit.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Vznikla chyba v protokolu a nase spojení je preruseno.
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Revize hry tohoto klienta neodpovídá revizi hry na serveru.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Spatne heslo.
STR_NETWORK_ERR_SERVER_START :{WHITE} Nemohu spustit server
STR_NETWORK_ERR_CLIENT_START :{WHITE} Nemohu se pripojit
STR_NETWORK_ERR_TIMEOUT :{WHITE} U spojení c. {NUMU16} byl prekrocen cekaci limit
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Vznikla chyba v protokolu a nase spojení je preruseno
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Revize hry tohoto klienta neodpovídá revizi hry na serveru
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Spatne heslo
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Server je plný
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Jsi blokován serverem
STR_NETWORK_ERR_KICKED :{WHITE} Byl jsi vyhozen ze hry
STR_NETWORK_ERR_CHEATER :{WHITE} Pouzivani cheatu není na tomto serveru povoleno
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Zeleznicni prejezd
##id 0x2000
STR_2000_TOWNS :{WHITE}Mesta
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Nemohu prodat 25% pod
STR_707D_OWNED_BY :{WHITE}({COMMA16}% vlastneno {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% vlastneno {STRING}{} {COMMA16}% vlastneno {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} byla prevzata {STRING}!
STR_7080_PROTECTED :{WHITE}Tato spolecnost zatím neobchoduje s akciemi...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (parní)
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} z {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Vlak {COMMA16} ceka v depu
STR_8815_NEW_VEHICLES :{BLACK}Nová vozidla
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} Hmotnost: {GOLD}{COMMA16}t{}{BLACK}Rychlost: {GOLD}{VELOCITY}{BLACK} Výkon: {GOLD}{COMMA16} koní{}{BLACK}Provoz stojí: {GOLD}{CURRENCY} rocne{}{BLACK}Kapacita: {GOLD}{STRING}{}{BLACK}Vyvinuto: {GOLD}{NUMU16}{BLACK} Zivotnost: {GOLD}{COMMA16} let{}{BLACK}Max. spolehlivost: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} Hmotnost: {GOLD}{COMMA16}t{}{BLACK}Rychlost: {GOLD}{VELOCITY}{BLACK} Výkon: {GOLD}{COMMA32} koní{}{BLACK}Provoz stojí: {GOLD}{CURRENCY} rocne{}{BLACK}Kapacita: {GOLD}{STRING}{}{BLACK}Vyvinuto: {GOLD}{NUMU16}{BLACK} Zivotnost: {GOLD}{COMMA16} let{}{BLACK}Max. spolehlivost: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Informace
STR_8819_TRAIN_TOO_LONG :{WHITE}Prilis dlouhý vlak
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Vlaky lze menit, jen kdyz stojí uvnitr depa
@@ -2447,7 +2457,7 @@ STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Uk
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Ukázat detaily jednotlivých vagonu
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Ukázat kapacity jednotlivých vagonu
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Ukázat celkovou kapacitu vlaku, rozdelenou dle nákladu
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Seznam prikazu - stiskni prikaz pro oznaceni
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Seznam prikazu - stiskni prikaz pro oznaceni. Kliknutím na prikaz se stisknutým CTRL se nastaví pohled na stanici
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Preskocit prikaz a jit na dalsi
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Smazat oznaceny prikaz
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Provest oznaceny prikaz bez zastaveni
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Nelze prejmenovat letadlo
STR_A032_NAME_AIRCRAFT :{BLACK}Prejmenovat letadlo
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První letadlo pristalo v {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Pád letadla!{}{COMMA16} zahynulo v plamenech v {STATION}.
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Letecká havárie!{}Kvuli vycerpani paliva zemrelo {COMMA16} lidí v ohnivém pekle!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Cíle:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Prejmenovat
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Zobrazit vsechny vlaky, kter
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Zobrazit vsechna silnicni vozidla, která mají tuto stanici v jízdním radu
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Zobrazit vsechna letadla, která mají tuto stanici v jízdním radu
STR_SCHEDULED_SHIPS_TIP :{BLACK}Zobrazit vsechny lode, které mají tuto stanici v jízdním radu
STR_REPLACE_VEHICLES :{BLACK}Vymenovani vozidel
STR_REPLACE_VEHICLES_WHITE :{WHITE}Vymenovani vozidel
STR_REPLACE_VEHICLES_START :{BLACK}Zapnout zamenovani
STR_REPLACE_VEHICLES_STOP :{BLACK}Vypnout zamenovani
STR_NOT_REPLACING :{BLACK}(nezamenuje se)
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Není oznaceno zadne vozidlo
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vyber typ lokomotivy na vymenu
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vyber typ nové lokomotivy, kterou chces pouzit místo vybrané v levém seznamu
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Zmackni toto tlacitko, kdyz nechces zamenovat typ lokomotivy vybraný v levém seznamu
STR_REPLACE_HELP_START_BUTTON :{BLACK}Zmackni toto tlacitko, kdyz chces zamenovat typ lokomotivy vybraný v levém seznamu lokomotivou vybranou v pravém seznamu
STR_REPLACE_HELP_RAILTYPE :{BLACK}Vyber typ kolejí, pro které chces vybírat lokomotivy na zamenu
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Tady je zobrazeno, za jakou lokomotivu se ta v levém seznamu zamenuje
STR_REPLACE_HELP :{BLACK}Tato moznost hry ti umoznuje vybrat typ lokomotivy, který nechá vymenit za jiný. To se bude automaticky provadet, kdyz lokomotiva zajede do depa.
STR_SHORT_DATE :{WHITE}{DATE_TINY}
############ Lists rail types
STR_RAIL_VEHICLES :Zeleznicni lokomotivy
STR_MONORAIL_VEHICLES :Lokomotivy pro monorail
STR_MAGLEV_VEHICLES :Lokomotivy pro maglev
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+84 -18
View File
@@ -145,7 +145,36 @@ STR_008B_BATTERIES :{COMMA16} batterier
STR_008C_OF_PLASTIC :{VOLUME} plastik
STR_008D_FIZZY_DRINKS :{COMMA16} sodavand
STR_008E :
STR_008F_PS :{TINYFONT}PS
STR_0090_CL :{TINYFONT}CL
STR_0091_ML :{TINYFONT}ML
STR_0092_OL :{TINYFONT}OL
STR_0093_LV :{TINYFONT}LV
STR_0094_GD :{TINYFONT}GD
STR_0095_GR :{TINYFONT}GR
STR_0096_WD :{TINYFONT}WD
STR_0097_OR :{TINYFONT}OR
STR_0098_ST :{TINYFONT}ST
STR_0099_VL :{TINYFONT}VL
STR_009A_CO :{TINYFONT}CO
STR_009B_MZ :{TINYFONT}MZ
STR_009C_FT :{TINYFONT}FT
STR_009D_DM :{TINYFONT}DM
STR_009E_FD :{TINYFONT}FD
STR_009F_PR :{TINYFONT}PR
STR_00A0_GD :{TINYFONT}GD
STR_00A1_WR :{TINYFONT}WR
STR_00A2_WH :{TINYFONT}WH
STR_00A3_RB :{TINYFONT}RB
STR_00A4_SG :{TINYFONT}SG
STR_00A5_TY :{TINYFONT}TY
STR_00A6_SW :{TINYFONT}SW
STR_00A7_CL :{TINYFONT}CL
STR_00A8_CF :{TINYFONT}CF
STR_00A9_BU :{TINYFONT}BU
STR_00AA_TF :{TINYFONT}TF
STR_00AB_BA :{TINYFONT}BA
STR_00AC_PL :{TINYFONT}PL
STR_00AD_FZ :{TINYFONT}FZ
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
@@ -157,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Det kan jeg ikke....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan ikke rydde området....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, Alle retigheder reserveret
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Originalt design af Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafik af Simon Foster
STR_SPECIAL_THANKS :{BLACK}En speciel tak går til:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Forsignal og armsignal grafik {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fundament for skinner på skråninger {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal/Sluse grafik {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
STR_TRANSLATED_BY :{BLACK} Oversætter(e) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -282,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Imperial (miles)
STR_013A_METRIC_KILOMETERS :Meter (kilometer)
@@ -391,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikke
STR_018B_CLOSE_WINDOW :{BLACK}Luk vindue
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Vindue title - træk her for at flytte vindue
STR_STICKY_BUTTON :{BLACK}Marker dette vindue som ulukkeligt af 'Luk ALLE vinduer' tasten
STR_RESIZE_BUTTON :{BLACK}Klik og træk for at ændre vinduets størrelse
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}nedriver bygning osv. på et stykke land
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Sænk et hjørne af landet
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Hæv et hjørne af landet
@@ -538,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}
STR_020E_SUBSIDIES :{YELLOW}Special aftaler
STR_020F_GENERAL_INFORMATION :{YELLOW}General information
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...for langt fra forrige destination
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Bedste firmaer der nåede til år 2050{}({STRING} Level)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Bedste virksomheder, som har nået {NUMU16}{}({STRING} Niveau)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Selskabsoversigt i {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Forretningsmand
STR_0214_ENTREPRENEUR :Entreprenør
@@ -547,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalist
STR_0217_MAGNATE :Magnat
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Århundredes Matador
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} opnår '{STRING}' status!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} af {STRING} opnår '{STRING}' status!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} får '{STRING}' status!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} fra {STRING} får '{STRING}' status!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -713,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf indstillinger
STR_NEWGRF_SETTINGS2 :Newgrf indstillinger
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Luk ALLE vinduer
STR_CLOSE_ALL_WINDOWS2 :Luk ALLE vinduer
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Bynavne vist
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Bynavne vist
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stationsnavne vist
@@ -746,6 +772,7 @@ STR_02DD_SUBSIDIES :Specialaftaler
STR_02DE_MAP_OF_WORLD :Kort over verden
STR_EXTRA_VIEW_PORT :Flere lokalitetsvinduer
STR_02DF_TOWN_DIRECTORY :Byoversigt
STR_TOWN_POPULATION :{BLACK}Verdens befolkning: {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Lokalitetsvinduer {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Gå til lokalitetsvindue
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Hent lokalitet fra global visning
@@ -800,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Opf
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Opfør ny industri
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan kun bygges i byer
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan kun bygges i regnskovsområder
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan kun bygges i ørkenområder
@@ -822,10 +849,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Engelske
STR_TOWNNAME_ORIGINAL_ENGLISH :Engelske
STR_TOWNNAME_FRENCH :Franske
STR_TOWNNAME_GERMAN :Tyske
STR_TOWNNAME_AMERICAN :Amerikanske
STR_TOWNNAME_ADDITIONAL_ENGLISH :Engelske (ekstra)
STR_TOWNNAME_LATIN_AMERICAN :Latin-Amerikanske
STR_TOWNNAME_SILLY :Fjollede
STR_TOWNNAME_SWEDISH :Svenske
@@ -833,10 +860,12 @@ STR_TOWNNAME_DUTCH :Hollandske
STR_TOWNNAME_FINNISH :Finske
STR_TOWNNAME_POLISH :Polske
STR_TOWNNAME_SLOVAKISH :Slovakiske
STR_TOWNNAME_NORWEGIAN :Norske
STR_TOWNNAME_HUNGARIAN :Ungarske
STR_TOWNNAME_AUSTRIAN :Østrigske
STR_TOWNNAME_ROMANIAN :Rumænske
STR_TOWNNAME_CZECH :Tjekkiske
STR_TOWNNAME_SWISS :Schweiziske
############ end of townname region
STR_CURR_GBP :Pund ({POUNDSIGN})
@@ -990,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automatisk fornyelse af k
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Automatisk fornyelse når køretøj er {ORANGE}{STRING}{LTBLUE} måneder under/over max alder
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Antal penge i banken før automatisk fornyelse af køretøjer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Levetid for fejlmeddelser: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Vis byens indbyggertal i bynavnet: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Usynlige træer (med gennemsigtige bygninger): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snelinjehøjden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max station udbreddelse: {ORANGE}{STRING} {RED}Advarsel: Høj værdi gør spillet langsomt
@@ -1015,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard service interval for fl
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Standard service interval for fly: {ORANGE}slået fra
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard service interval for skibe: {ORANGE}{STRING} dage/%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Standard service interval for skibe: {ORANGE}slået fra
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Slå service fra, når nedbrud er sat til ingen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Farvede nyheder dukker op i: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Start dato: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Afslut spillet i: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Aktiver rolig økonomi (flere små ændringer)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Tillad at købe aktier i andre selskaber
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}When dragging place signals every: {ORANGE}{STRING} tile(s)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Placering af værktøjslinie: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Venstre
@@ -1108,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Kan ikke bygge en sluse her...
STR_BUILD_LOCKS_TIP :{BLACK}Byg sluser
STR_LANDINFO_LOCK :Sluse
STR_BUOY_IS_IN_USE :{WHITE}... bøjen er i brug!
STR_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kan ikke fjerne en del af en station...
@@ -1159,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}V
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Ombyg toget til at køre med den markerede slags last
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan ikke ombygge toget...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Service intervaller er i procent: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Skift produktion
TEMP_AI_IN_PROGRESS :{WHITE}Velkommen til den nye kunstige intelligents, der er under udarbejdelse. Du kan forvente problemer. Når det sker, så lav et screenshot og sæt det på forummet
TEMP_AI_ACTIVATED :{WHITE}Advarsel: den nye kunstige intelligents er i et tidligt stadie! Lige nu virker den kun med busser og lastbiler!
@@ -1196,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Sprog: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Klima: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Størrelse: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server adresse: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Serveradresse: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Start dato: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Nuværende dato: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Beskyttet af kodeord!
@@ -1312,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Der opstod en protokol-fejl og forbind
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Revisionen af denne klient passer ikke sammen med serverens revision
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Forkert kodeord
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Serveren er fuld
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Du har forbud mod at bruge denne server
STR_NETWORK_ERR_KICKED :{WHITE} Du blev smidt ud af spillet
STR_NETWORK_ERR_CHEATER :{WHITE} Snyderi er ikke tilladt på denne server
@@ -1452,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Jernbaneoversk
##id 0x2000
STR_2000_TOWNS :{WHITE}Byer
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2058,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan ikke s
STR_707D_OWNED_BY :{WHITE}({COMMA16}% ejes af {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% ejes af {STRING}{} {COMMA16}% ejes af {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} er blevet overtaget af {STRING}!
STR_7080_PROTECTED :{WHITE}Dette selskab sælger ikke aktier endnu...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Damp)
@@ -2356,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} fra {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Tog {COMMA16} Venter i depot
STR_8815_NEW_VEHICLES :{BLACK}Nye køretøjer
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Pris: {GOLD}{CURRENCY}{BLACK} Vægt: {GOLD}{COMMA16}t{}{BLACK}Hastighed: {GOLD}{VELOCITY}{BLACK} Styrke: {GOLD}{COMMA16}hp{}{BLACK}Kørselsomkostninger: {GOLD}{CURRENCY}/år{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designet: {GOLD}{NUMU16}{BLACK} Levetid: {GOLD}{COMMA16} år{}{BLACK}Maks pålidelighed: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Pris: {GOLD}{CURRENCY}{BLACK} Vægt: {GOLD}{COMMA16}t{}{BLACK}Hastighed: {GOLD}{VELOCITY}{BLACK} Styrke: {GOLD}{COMMA32}hp{}{BLACK}Kørselsomkostninger: {GOLD}{CURRENCY}/år{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designet: {GOLD}{NUMU16}{BLACK} Levetid: {GOLD}{COMMA16} år{}{BLACK}Maks pålidelighed: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Information
STR_8819_TRAIN_TOO_LONG :{WHITE}Toget er for langt
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Tog kan kun ændres når de er stoppet i et depot
@@ -2637,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Kan ikke navngive flyet...
STR_A032_NAME_AIRCRAFT :{BLACK}Navngiv fluet
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Indbyggerene fester . . .{}Første fly ankommer til{STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Flystyrt!{}{COMMA16} dør i flammerne ved {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Flystyrt!{}Fly løb tør for brændstof, {COMMA16} døde i ildhelvede!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinationer:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Omdøb
@@ -2730,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Vis alle tog, som har denne station i deres
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Vis alle køretøjer, som har denne station i deres køreplan
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Vis alle fly, som har denne lufthavn i deres ruteplan
STR_SCHEDULED_SHIPS_TIP :{BLACK}Vis alle skibe, som har denne station i deres ruteplan
STR_REPLACE_VEHICLES :{BLACK}Udskift Køretøjer
STR_REPLACE_VEHICLES_WHITE :{WHITE}Udskift Køretøjer
STR_REPLACE_VEHICLES_START :{BLACK}Start udskiftning
STR_REPLACE_VEHICLES_STOP :{BLACK}Stop udskiftning
STR_NOT_REPLACING :{BLACK}Udskifter ikke
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Intet køretøj valgt
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vælg en køretøjstype, som du ønsker udskiftet
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vælg en køretøjstype, som du ønker at få i stedet for den type, du har valgt i venste side
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tryk for at stoppe udskiftningen at den køretøjstype, som du har valgt til venstre
STR_REPLACE_HELP_START_BUTTON :{BLACK}Tryk for at begynde at udskifte køretøjet til venstre med køretøjet til højre
STR_REPLACE_HELP_RAILTYPE :{BLACK}Vælg den skinnetype, hvor du vil udskifte lokomotiver
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Viser hvilket køretøj at det valgte køretøj til venstre bliver udskiftet med, hvis det bliver udskiftet
STR_REPLACE_HELP :{BLACK}Dette giver dig mulighed for at udskifte en køretøjstype med en anden, når et køretøj af den oprindelige type kører i depot
STR_SHORT_DATE :{WHITE}{DATE_TINY}
############ Lists rail types
STR_RAIL_VEHICLES :Jernbane
STR_MONORAIL_VEHICLES :Monorail
STR_MAGLEV_VEHICLES :Magnetskinnetog
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+55 -18
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Kan dit niet uitvoeren....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan gebied niet ontruimen....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Origineel copyright {COPYRIGHT} 1995 Chris Sawyer, Alle rechten voorbehouden
STR_00B7_VERSION :{BLACK}OpenTTD versie {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Origineel ontworpen door Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafisch design door Simon Foster
STR_SPECIAL_THANKS :{BLACK}Speciale dank gaat uit naar:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Voorseinen en seinpalen {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Funderingen voor sporen op hellingen {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanaal/sluis afbeeldingen {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 Het OpenTTD team
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Het OpenTTD team
STR_TRANSLATED_BY :{BLACK} Vertaler(s) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Imperiaal (mijlen)
STR_013A_METRIC_KILOMETERS :S.I. (kilometers)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan onderhoudsinterval niet aanpasse
STR_018B_CLOSE_WINDOW :{BLACK}Sluit venster
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Vensternaam - sleep om venster te verplaatsen
STR_STICKY_BUTTON :{BLACK}Markeer dit venster als niet-verwijderbaar door de 'Sluit Alle Vensters' knop
STR_RESIZE_BUTTON :{BLACK}Klik en sleep om dit venster van grootte te veranderen
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Sloop gebouwen etc. op een stuk land
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Verlaag een hoek van het land
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Verhoog een hoek van het land
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Verandering geaccepteerde goede
STR_020E_SUBSIDIES :{YELLOW}Subsidies
STR_020F_GENERAL_INFORMATION :{YELLOW}Algemene informatie
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...te ver van vorige bestemming
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Beste bedrijven die 2050 bereikten{}({STRING} Level)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top bedrijven die {NUMU16} bereikt hebben{}({STRING} Niveau)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Bedrijfswedstrijdtabel in {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Zakenman
STR_0214_ENTREPRENEUR :Entrepreneur
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalist
STR_0217_MAGNATE :Magnaat
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon van de Eeuw
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} heeft de '{STRING}' status bereikt!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} van {STRING} heeft de '{STRING}' status bereikt!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} bereikt '{STRING}' status!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} van {STRING} bereikt '{STRING}' status!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf instellingen
STR_NEWGRF_SETTINGS2 :Newgrf instellingen
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Sluit ALLE vensters
STR_CLOSE_ALL_WINDOWS2 :Sluit ALLE vensters
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Geef stadsnamen weer
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Geef stadsnamen weer
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Geef stationsnamen weer
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subsidies
STR_02DE_MAP_OF_WORLD :Kaart
STR_EXTRA_VIEW_PORT :Extra kijkvenster
STR_02DF_TOWN_DIRECTORY :Stedenlijst
STR_TOWN_POPULATION :{BLACK}Wereld populatie: {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Kijkvenster {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopieer naar kijkvenster
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopieer de lokatie van het algemene scherm naar dit kijkvenster
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Subsidieer nieuwe industrie
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Betaal nieuwe industrie
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan alleen in steden gebouwd worden
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan alleen in het regenwoud gebouwd worden
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan alleen in woestijngebieden gebouwd worden
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Engels
STR_TOWNNAME_ORIGINAL_ENGLISH :Engels (Origineel)
STR_TOWNNAME_FRENCH :Frans
STR_TOWNNAME_GERMAN :Duits
STR_TOWNNAME_AMERICAN :Amerikaans
STR_TOWNNAME_ADDITIONAL_ENGLISH :Engels (Extra)
STR_TOWNNAME_LATIN_AMERICAN :Latijns-Amerikaans
STR_TOWNNAME_SILLY :Zot
STR_TOWNNAME_SWEDISH :Zweeds
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Nederlands
STR_TOWNNAME_FINNISH :Fins
STR_TOWNNAME_POLISH :Pools
STR_TOWNNAME_SLOVAKISH :Slowaaks
STR_TOWNNAME_NORWEGIAN :Noors
STR_TOWNNAME_HUNGARIAN :Hongaars
STR_TOWNNAME_AUSTRIAN :Oostenrijks
STR_TOWNNAME_ROMANIAN :Roemeens
STR_TOWNNAME_CZECH :Tsjechisch
STR_TOWNNAME_SWISS :Zwitsers
############ end of townname region
STR_CURR_GBP :Pond ({POUNDSIGN})
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Vernieuw voertuig automatisch w
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Vernieuw voertuig automatisch {ORANGE}{STRING}{LTBLUE} maanden voor/na max. leeftijd
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minimum benodigd geld voor automatisch vernieuwen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duur van foutmeldingen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Geef het inwoneraantal bij een stad weer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Onzichtbare bomen (met transparante gebouwen): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Sneeuwhoogte: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maximale stationsomvang: {ORANGE}{STRING} {RED}Pas op: Hoge waarde vertraagt spel
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standaard reparatie interval bij
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Standaard reparatie interval voor vliegtuigen: {ORANGE}uit
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standaard reparatie interval bij schepen: {ORANGE}{STRING} dagen
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Standaard reparatie interval voor schepen: {ORANGE}uit
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Schakel onderhoud uit wanneer defecten uit staan: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Kleurenfoto's komen in: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Beginjaar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Stop spel in: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Vloeiende economie inschakelen (meer, kleinere veranderingen)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Sta het kopen van aandelen toe
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Bij slepen, plaats seinen elke: {ORANGE}{STRING} tegel(s)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Positie van hoofd knoppenbalk: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Links
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Kan hier geen sluis bouwen...
STR_BUILD_LOCKS_TIP :{BLACK}Bouw sluis
STR_LANDINFO_LOCK :Sluis
STR_BUOY_IS_IN_USE :{WHITE}... boei is in gebruik!
STR_LANDINFO_COORDS :{BLACK}Coördinaten: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kan deel van station niet weghalen...
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Kies type lading om te transportere
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Bouw trein om voor geselecteerde ladingtype
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan trein niet ombouwen...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Reparatie intervallen zijn in percentages: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Verander productie
TEMP_AI_IN_PROGRESS :{WHITE}Welkom bij deze nieuwe AI, in aanbouw. Je kan problemen verwachten. Gebeurt dat, maak een screenshot en plaats die op het forum. Veel plezier!
TEMP_AI_ACTIVATED :{WHITE}Waarschuwing: deze nieuwe AI is nog steeds alpha! Momenteel werken alleen vrachtwagens en bussen!
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Taal: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Klimaat: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Kaartgrootte: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Server versie: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server adres4: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server adres: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Start datum: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Huidige datum: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Beveiligd met wachtwoord!
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Er is een protocol-fout gemaakt en onz
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} De revisie van deze client komt niet overeen met de revisie van de server.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Ongeldig wachtwoord.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} De server is vol
STR_NETWORK_ERR_SERVER_BANNED :{WHITE}Je bent verbannen van deze server
STR_NETWORK_ERR_KICKED :{WHITE} Je bent van de server geschopt
STR_NETWORK_ERR_CHEATER :{WHITE} Valsspelen is niet toegestaan op deze server
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Gelijke weg/spoorweg kruising
##id 0x2000
STR_2000_TOWNS :{WHITE}Steden
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan geen 25% aandeel in dit bedrijf
STR_707D_OWNED_BY :{WHITE}({COMMA16}% eigendom van {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% eigendom van {STRING}{} {COMMA16}% eigendom van {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} is overgenomen door {STRING}!
STR_7080_PROTECTED :{WHITE}Dit bedrijf verhandelt nog geen aandelen...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Stoom)
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} van {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Trein {COMMA16} wacht in depot
STR_8815_NEW_VEHICLES :{BLACK}Nieuwe voertuigen
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kosten: {GOLD}{CURRENCY}{BLACK} Gewicht: {GOLD}{COMMA16}t{}{BLACK}Snelheid: {GOLD}{VELOCITY}{BLACK} Kracht: {GOLD}{COMMA16}pk{}{BLACK}Brandstofkosten: {GOLD}{CURRENCY}/jr{}{BLACK}Capaciteit: {GOLD}{STRING}{}{BLACK}Ontworpen: {GOLD}{NUMU16}{BLACK} Leeftijd: {GOLD}{COMMA16} jaren{}{BLACK}Max. betrouwbaarheid: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kosten: {GOLD}{CURRENCY}{BLACK} Gewicht: {GOLD}{COMMA16}t{}{BLACK}Snelheid: {GOLD}{VELOCITY}{BLACK} Kracht: {GOLD}{COMMA32}pk{}{BLACK}Brandstofkosten: {GOLD}{CURRENCY}/jr{}{BLACK}Capaciteit: {GOLD}{STRING}{}{BLACK}Ontworpen: {GOLD}{NUMU16}{BLACK} Leeftijd: {GOLD}{COMMA16} jaren{}{BLACK}Max. betrouwbaarheid: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Informatie
STR_8819_TRAIN_TOO_LONG :{WHITE}Trein te lang
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Treinen kunnen alleen aangepast worden wanneer ze gestopt zijn binnen een depot
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Kan vliegtuig niet hernoemen...
STR_A032_NAME_AIRCRAFT :{BLACK}Hernoem vliegtuig
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Inwoners feesten...{}Eerste vliegtuig arriveert in {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Vliegtuig neergestort!{}{COMMA16} sterven in een vuurbal bij {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Vliegtuig Neergestort!{}Vliegtuig had brandstoftekort, {COMMA16} komen om in explosie!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Doelen:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Hernoem
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Geef alle treinen weer die dit station in h
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Geef alle wegvoertuigen weer die dit station in hun opdrachtenlijst hebben
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Geef alle vliegtuigen weer die dit station in hun opdrachtenlijst hebben
STR_SCHEDULED_SHIPS_TIP :{BLACK}Geef alle schepen weer die dit station in hun opdrachtenlijst hebben
STR_REPLACE_VEHICLES :{BLACK}Vervang Voertuigen
STR_REPLACE_VEHICLES_WHITE :{WHITE}Vervang Voertuigen
STR_REPLACE_VEHICLES_START :{BLACK}Start het Vervangen
STR_REPLACE_VEHICLES_STOP :{BLACK}Stop het Vervangen
STR_NOT_REPLACING :{BLACK}Niet aan het vervangen
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Geen voertuig geselecteerd
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Selecteer het type locmotief om te vervangen
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Selecteer een nieuw type locomotief die je wil gebruiken om het links geselecteerde type locomotief te vervangen
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klik op deze knop als je de aan de linkerkant geselecteerde locomotief niet wil vervangen
STR_REPLACE_HELP_START_BUTTON :{BLACK}Klik op deze knop als je de aan de linkerkant geseleteerde locomotief wil vervangen met die aan de rechterkant
STR_REPLACE_HELP_RAILTYPE :{BLACK}Selecteer een railtype waar je locomotieven voor wil selecteren
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Dit geeft weer waarmee de aan de linkerkant geselecteerde locomotief mee vervangen wordt
STR_REPLACE_HELP :{BLACK}Deze optie stelt je in staat om een type locomotief te selecteren en die te vervangen door een andere. Dit zal automatisch gebeuren zodra de voertuigen een depot inrijden
STR_SHORT_DATE :{WHITE}{DATE_TINY}
############ Lists rail types
STR_RAIL_VEHICLES :Treinstellen
STR_MONORAIL_VEHICLES :Monorail Voertuigen
STR_MAGLEV_VEHICLES :Maglev Voertuigen
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+61 -24
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Can't do this....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Can't clear this area....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Original design by Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Original graphics by Simon Foster
STR_SPECIAL_THANKS :{BLACK}Special thanks go out to:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signals and Semaphores {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Foundations for Tracks on Slopes {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Canal/Lock graphics {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
STR_TRANSLATED_BY :{BLACK} Translator(s) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Imperial (miles)
STR_013A_METRIC_KILOMETERS :Metric (kilometers)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Can't change servicing interval...
STR_018B_CLOSE_WINDOW :{BLACK}Close window
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Window title - drag this to move window
STR_STICKY_BUTTON :{BLACK}Mark this window as uncloseable by the 'Close All Windows' key
STR_RESIZE_BUTTON :{BLACK}Click and drag to resize this window
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolish buildings etc. on a square of land
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Lower a corner of land
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Raise a corner of land
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Changes to cargo acceptance
STR_020E_SUBSIDIES :{YELLOW}Subsidies
STR_020F_GENERAL_INFORMATION :{YELLOW}General information
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...too far from previous destination
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top companies who reached 2050{}({STRING} Level)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top companies who reached {NUMU16}{}({STRING} Level)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Company League Table in {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Businessman
STR_0214_ENTREPRENEUR :Entrepreneur
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalist
STR_0217_MAGNATE :Magnate
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon of the Century
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} achieves '{STRING}' status!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} of {STRING} achieves '{STRING}' status!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} achieves '{STRING}' status!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} of {STRING} achieves '{STRING}' status!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf settings
STR_NEWGRF_SETTINGS2 :Newgrf settings
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Close ALL windows
STR_CLOSE_ALL_WINDOWS2 :Close ALL windows
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Town names displayed
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Town names displayed
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Station names displayed
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subsidies
STR_02DE_MAP_OF_WORLD :Map of world
STR_EXTRA_VIEW_PORT :Extra viewport
STR_02DF_TOWN_DIRECTORY :Town directory
STR_TOWN_POPULATION :{BLACK}World population: {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Viewport {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copy to viewport
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copy the location of the global view to this viewport
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Fund new industry
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fund new industry
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...can only be built in towns
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...can only be built in rainforest areas
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...can only be built in desert areas
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :English
STR_TOWNNAME_ORIGINAL_ENGLISH :English (Original)
STR_TOWNNAME_FRENCH :French
STR_TOWNNAME_GERMAN :German
STR_TOWNNAME_AMERICAN :American
STR_TOWNNAME_ADDITIONAL_ENGLISH :English (Additional)
STR_TOWNNAME_LATIN_AMERICAN :Latin-American
STR_TOWNNAME_SILLY :Silly
STR_TOWNNAME_SWEDISH :Swedish
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Dutch
STR_TOWNNAME_FINNISH :Finnish
STR_TOWNNAME_POLISH :Polish
STR_TOWNNAME_SLOVAKISH :Slovakish
STR_TOWNNAME_NORWEGIAN :Norwegian
STR_TOWNNAME_HUNGARIAN :Hungarian
STR_TOWNNAME_AUSTRIAN :Austrian
STR_TOWNNAME_ROMANIAN :Romanian
STR_TOWNNAME_CZECH :Czech
STR_TOWNNAME_SWISS :Swiss
############ end of townname region
STR_CURR_GBP :Pounds ({POUNDSIGN})
@@ -981,7 +981,7 @@ STR_CONFIG_PATCHES_ON :On
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Show vehicle speed in status bar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Allow building on slopes and coasts: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Allow more realistically sized catchment areas: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Allow removal of more town-owned roads, bridges, tunnels, etc: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Allow removal of more town-owned roads, bridges, etc: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Enable building very long trains: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Enable realistic acceleration for trains: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Join train stations built next to each other: {ORANGE}{STRING}
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Autorenew vehicle when it gets
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autorenew when vehice is {ORANGE}{STRING}{LTBLUE} months before/after max age
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Autorenew minimum needed money for renew: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duration of error message: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Show town population in the town name label: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Invisible trees (with transparent buildings): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snow line height: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max station spread: {ORANGE}{STRING} {RED}Warning: High setting slows game
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Default service interval for air
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Default service interval for aircraft: {ORANGE}disabled
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Default service interval for ships: {ORANGE}{STRING} days/%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Default service interval for ships: {ORANGE}disabled
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Disable servicing when breakdowns set to none: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Coloured news appears in: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Starting date: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}End game in: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Enable smooth economy (more, smaller changes)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Allow buying shares from other companies
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}When dragging, place signals every: {ORANGE}{STRING} tile(s)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position of main toolbar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Left
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Can't build locks here...
STR_BUILD_LOCKS_TIP :{BLACK}Build locks
STR_LANDINFO_LOCK :Lock
STR_BUOY_IS_IN_USE :{WHITE}...buoy is in use!
STR_LANDINFO_COORDS :{BLACK}Coordinates: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Select type of cargo for train to c
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Refit train to carry highlighted cargo type
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Can't refit train...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Service intervals are in percents: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Change production
TEMP_AI_IN_PROGRESS :{WHITE}Welcome to this new AI, a work in progress. You should expect problems. When you happen take a screenshot and post it in the forum. Enjoy!
TEMP_AI_ACTIVATED :{WHITE}Warning: this new AI is still alpha! Currently, only trucks and busses work!
@@ -1199,7 +1206,7 @@ STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
STR_NETWORK_PLAYER_NAME :{BLACK}Player name:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}This is the name other players will identify you by
STR_NETWORK_CONNECTION :{BLACK}Connection:
STR_NETWORK_CONNECTION_TIP :{BLACK}Choose between an internet game or a local area network game
STR_NETWORK_CONNECTION_TIP :{BLACK}Choose between an internet game or a Local Area Network (LAN) game
STR_NETWORK_START_SERVER :{BLACK}Start server
STR_NETWORK_START_SERVER_TIP :{BLACK}Start your own server
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Language: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Map size: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server address: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Start date: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Current date: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Password protected!
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} A protocol-error was made and the conn
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} The revision of this client does not match the server's revision
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Wrong password
STR_NETWORK_ERR_SERVER_FULL :{WHITE} The server is full
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} You are banned from this server
STR_NETWORK_ERR_KICKED :{WHITE} You were kicked out of the game
STR_NETWORK_ERR_CHEATER :{WHITE} Cheating is not allowed on this server
@@ -1368,7 +1376,7 @@ STR_NETWORK_CHAT_TO_COMPANY :[Team] To {STRING}:
STR_NETWORK_CHAT_CLIENT :[Private] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Private] To {STRING}:
STR_NETWORK_CHAT_ALL :[All] {STRING}:
STR_NETWORK_NAME_CHANGE :has changed his name to
STR_NETWORK_NAME_CHANGE :has changed his/her name to
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} The server closed the session
STR_NETWORK_SERVER_REBOOT :{WHITE} The server is restarting...{}Please wait...
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Road/rail level crossing
##id 0x2000
STR_2000_TOWNS :{WHITE}Towns
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -1786,7 +1795,7 @@ STR_5004 :
STR_5005_UNABLE_TO_EXCAVATE_LAND :{WHITE}Unable to excavate land for other end of tunnel
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Must demolish tunnel first
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Must demolish bridge first
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Cannot start and end in same spot
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Cannot start and end in the same spot
STR_5009_LEVEL_LAND_OR_WATER_REQUIRED :{WHITE}Level land or water required under bridge
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Start and end must be in line
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Site unsuitable for tunnel entrance
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Can't sell 25% share in this company
STR_707D_OWNED_BY :{WHITE}({COMMA16}% owned by {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% owned by {STRING}{} {COMMA16}% owned by {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} has been taken over by {STRING}!
STR_7080_PROTECTED :{WHITE}This company is not old enough to trade shares yet...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Steam)
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} from {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Train {COMMA16} is waiting in depot
STR_8815_NEW_VEHICLES :{BLACK}New Vehicles
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Weight: {GOLD}{COMMA16}t{}{BLACK}Speed: {GOLD}{VELOCITY}{BLACK} Power: {GOLD}{COMMA16}hp{}{BLACK}Running Cost: {GOLD}{CURRENCY}/yr{}{BLACK}Capacity: {GOLD}{STRING}{}{BLACK}Designed: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} years{}{BLACK}Max. Reliability: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Weight: {GOLD}{COMMA16}t{}{BLACK}Speed: {GOLD}{VELOCITY}{BLACK} Power: {GOLD}{COMMA32}hp{}{BLACK}Running Cost: {GOLD}{CURRENCY}/yr{}{BLACK}Capacity: {GOLD}{STRING}{}{BLACK}Designed: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} years{}{BLACK}Max. Reliability: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Information
STR_8819_TRAIN_TOO_LONG :{WHITE}Train too long
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Trains can only be altered when stopped inside a depot
@@ -2447,7 +2457,7 @@ STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Show details of cargo carried
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Show details of train vehicles
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Show capacities of each vehicle
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Show total capacity of train, split by cargo type
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Orders list - click on an order to highlight it
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Orders list - click on an order to highlight it. CTRL + click scrolls to the station
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Skip the current order, and start the next
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Delete the highlighted order
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Make the highlighted order non-stop
@@ -2593,7 +2603,7 @@ STR_982F_NAME_SHIP :{BLACK}Name ship
STR_9831_NAME_SHIP :{WHITE}Name ship
STR_9832_CAN_T_NAME_SHIP :{WHITE}Can't name ship...
STR_9833_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Citizens celebrate . . .{}First ship arrives at {STATION}!
STR_9834_POSITION_BUOY_WHICH_CAN :{BLACK}Place a buoy, which can be used as a waypoint
STR_9834_POSITION_BUOY_WHICH_CAN :{BLACK}Place a buoy which can be used as a waypoint
STR_9835_CAN_T_POSITION_BUOY_HERE :{WHITE}Can't place buoy here...
STR_9836_RENAME :{BLACK}Rename
STR_9837_RENAME_SHIP_TYPE :{BLACK}Rename ship type
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Can't name aircraft...
STR_A032_NAME_AIRCRAFT :{BLACK}Name aircraft
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Citizens celebrate . . .{}First aircraft arrives at {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Plane Crash!{}{COMMA16} die in fireball at {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Plane Crash!{}Aircraft ran out of fuel, {COMMA16} die in fireball!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinations:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Rename
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Show all trains which have this station on
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Show all road vehicles which have this station on their schedule
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Show all aircraft which have this station on their schedule
STR_SCHEDULED_SHIPS_TIP :{BLACK}Show all ships which have this station on their schedule
STR_REPLACE_VEHICLES :{BLACK}Replace Vehicles
STR_REPLACE_VEHICLES_WHITE :{WHITE}Replace Vehicles
STR_REPLACE_VEHICLES_START :{BLACK}Start Replacing Vehicles
STR_REPLACE_VEHICLES_STOP :{BLACK}Stop Replacing Vehicles
STR_NOT_REPLACING :{BLACK}Not replacing
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}No vehicle selected
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Select the engine type to replace
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Select the new engine type you would like to use in place of the left selected engine type
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Press to stop the replacement of the engine type selected on the left
STR_REPLACE_HELP_START_BUTTON :{BLACK}Press to begin replacement of the left selected engine type with the right selected engine type
STR_REPLACE_HELP_RAILTYPE :{BLACK}Choose the railtype you want to replace engines for
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Displays which engine the left selected engine is being replaced with, if any
STR_REPLACE_HELP :{BLACK}This allows you to replace one engine type with another type, when trains of the original type enter a depot
STR_SHORT_DATE :{WHITE}{DATE_TINY}
############ Lists rail types
STR_RAIL_VEHICLES :Rail Vehicles
STR_MONORAIL_VEHICLES :Monorail Vehicles
STR_MAGLEV_VEHICLES :Maglev Vehicles
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+80 -16
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}N
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Aluetta ei voi puhdistaa....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Alkuperäinen {COPYRIGHT} 1995 Chris Sawyer, kaikki oikeudet pidätetään
STR_00B7_VERSION :{BLACK}OpenTTD versio {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Alkuperäinen suunnittelu: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Alkuperäiset grafiikat: Simon Foster
STR_SPECIAL_THANKS :{BLACK}Erityiskiitokset:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Esiopastimet ja opastimet {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Perustat radoille rinteissä {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanaali/sulkugrafiikat {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD-ryhmä
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 OpenTTD-ryhmä
STR_TRANSLATED_BY :{BLACK} Kääntäjä(t) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Brittiläinen (mailit)
STR_013A_METRIC_KILOMETERS :Metrinen (kilometrit)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Huoltov
STR_018B_CLOSE_WINDOW :{BLACK}Sulje ikkuna
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Ikkunan otsake - vedä tästä siirtääksesi ikkunaa
STR_STICKY_BUTTON :{BLACK}Merkitse tämä ikkuna ei-suljettavaksi 'Sulje kaikki ikkunat' näppäimelle
STR_RESIZE_BUTTON :{BLACK}Klikkaa ja vedä muuttaaksesi tämän ikkunan kokoa
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Tuhoa rakennuksia jne. maa-alaruudulla
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Madalla maanurkkausta
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Korota maanurkkausta
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Rahdin vastaanottamisen muutoks
STR_020E_SUBSIDIES :{YELLOW}Alennukset
STR_020F_GENERAL_INFORMATION :{YELLOW}Yleistä tietoa
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...liian kaukana edellisestä määränpäästä
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Parhaat yhtiöt, jotka saavuttivat vuoden 2050{}({STRING} taso)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Parhaat yhtiöt, jotka ylsivät {NUMU16}{}(taso: {STRING})
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Yhtiökilpailutaulukko vuonna {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Liikemies
STR_0214_ENTREPRENEUR :Yrittäjä
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalisti
STR_0217_MAGNATE :Magnaatti
STR_0218_MOGUL :Moguli
STR_0219_TYCOON_OF_THE_CENTURY :Vuosisadan pohatta
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} saavuttaa tilan '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} {STRING}:sta saavuttaa tilan '{STRING}'! ##
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} saavuttaa arvon '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} yhtiöstä {STRING} saavuttaa arvon '{STRING}'!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -827,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Rahoita uutta teollisuutta
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Rahoita uutta teollisuutta
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...voidaan rakentaa vian kaupunkeihin
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...voidaan rakentaa vain sademetsäalueisiin
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...voidaan rakentaa vain aavikkoalueisiin
@@ -849,10 +848,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Englantilainen
STR_TOWNNAME_ORIGINAL_ENGLISH :Englantilainen
STR_TOWNNAME_FRENCH :Ranskalainen
STR_TOWNNAME_GERMAN :Saksalainen
STR_TOWNNAME_AMERICAN :Amerikkalainen
STR_TOWNNAME_ADDITIONAL_ENGLISH :Englanti (lisäke)
STR_TOWNNAME_LATIN_AMERICAN :Latinalais-Amerikkalainen
STR_TOWNNAME_SILLY :Hassu
STR_TOWNNAME_SWEDISH :Ruotsalainen
@@ -860,29 +859,39 @@ STR_TOWNNAME_DUTCH :Hollantilainen
STR_TOWNNAME_FINNISH :Suomalainen
STR_TOWNNAME_POLISH :Puolalainen
STR_TOWNNAME_SLOVAKISH :Slovakialainen
STR_TOWNNAME_NORWEGIAN :Norja
STR_TOWNNAME_HUNGARIAN :Unkarilainen
STR_TOWNNAME_AUSTRIAN :Itävaltalainen
STR_TOWNNAME_ROMANIAN :Romania
STR_TOWNNAME_CZECH :Tsekki
STR_TOWNNAME_SWISS :Sveitsiläinen
############ end of townname region
STR_CURR_GBP :Puntaa ({POUNDSIGN})
STR_CURR_USD :Dollaria ($)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Jeni ({YENSIGN})
STR_CURR_ATS :Itävallan shillinki (ATS)
STR_CURR_BEF :Belgian frankki (BEF)
STR_CURR_CHF :Sveitsin frankki (CHF)
STR_CURR_CZK :Tsekin kruunu (CZK)
STR_CURR_DEM :Saksanmarkkaa (DEM)
STR_CURR_DKK :Tanskan kruunu (DKK)
STR_CURR_ESP :Pesetaa (ESP)
STR_CURR_FIM :Suomen markka (FIM)
STR_CURR_FRF :Frankkia (FRF)
STR_CURR_GRD :Kreikan drakma (GRD)
STR_CURR_HUF :Unkarin forintia (HUF)
STR_CURR_ISK :Islannin kruunu (ISK)
STR_CURR_ITL :Italian liira (ITL)
STR_CURR_NLG :Hollannin guildeni (NLG)
STR_CURR_NOK :Norjan kruunu (NOK)
STR_CURR_PLN :Puolan zlotya (PLN)
STR_CURR_ROL :Romanian leu (lei)
STR_CURR_RUR :Venjän rupla (rur)
STR_CURR_SEK :Ruotsin kruunu (SEK)
STR_CURR_CUSTOM :Oma...
STR_OPTIONS_LANG :{BLACK}Kieli
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1009,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Itseuudista ajoneuvo, kun se va
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Itseuudista {ORANGE}{STRING}{LTBLUE} kuukautta maksimi-ikää ennen/-iän jälkeen
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Itseuudistuksen pienin tarvittava rahamäärä: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Virheilmoituksen kesto: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Näytä kaupungin asukasluku kaupungin nimessä: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Näkymättömät puut (näkymättömillä rakennuksilla): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Lumirajan korkeus: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Suurin aseman levittäytyminen: {ORANGE}{STRING} {RED}Varoitus, korkea asetus hidastaa peliä
@@ -1034,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Oletushuoltov
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Oletushuoltoväli lentokoneillet: {ORANGE}pois päältä
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Oletushuoltoväli laivoille: {ORANGE}{STRING} päivää
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Oletushuoltoväli laivoille: {ORANGE}pois päältä
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Huollot pois käytöstä, kun rikkoutumiset on pois: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Värjätty uutinen esiintyy: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Aloituspäivämäärä: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Lopeta peli: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Tasainen talous (enemmän pieniä muutoksia)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Salli osakkeiden ostaminen yhtiöistä
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Vedettäessä aseta opastimien väleiksi: {ORANGE}{STRING} ruutu(a)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Päätyökalupalkin sijainti: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Vasen
@@ -1081,6 +1094,7 @@ STR_HEADING_FOR_WAYPOINT :{LTBLUE}Kohteena {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Kohteena {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Kierrä rastin {WAYPOINT} kautta
STR_GO_NON_STOP_TO_WAYPOINT :Mene pysäht. pisteen {WAYPOINT} kautta
STR_WAYPOINTNAME_CITY :Rasti: {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Rasti: {TOWN} #{COMMA16}
@@ -1126,6 +1140,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}Sulkua ei voi rakentaa t
STR_BUILD_LOCKS_TIP :{BLACK}Rakenna sulku
STR_LANDINFO_LOCK :Sulku
STR_LANDINFO_COORDS :{BLACK}Koordinaatit: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Asemasta ei voi poistaa osaa...
@@ -1177,6 +1192,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Valitse junan rahtityyppi
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Sovita juna kuljettamaan korostettua rahtityyppiä
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Junaa ei voi sovittaa...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Huoltovälit ovat prosentteina: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Aloita tuotanto
TEMP_AI_IN_PROGRESS :{WHITE}Tervetuloa uuteen tekoälyyn (työn alla). Odota ongelmia. Kun sellainen tulee vastaan, ota kuvankaappaus ja lähetä keskustelualueelle. Nauti!
TEMP_AI_ACTIVATED :{WHITE}Varoitus: uusi tekoäly on vielä alpha-koodia! Tällä hetkellä vain rekat ja linja-autot toimivat!
@@ -1214,7 +1230,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Kieli: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Ruudusto: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Kartan koko: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Palvelimen versio: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Palvelimen osoite: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Palvelimen osoite: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Aloituspäivä: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Päivä nyt: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Salasanasuojattu!
@@ -1236,6 +1252,8 @@ STR_NETWORK_SELECT_MAP_TIP :{BLACK}Mit
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maksimimäärä asiakkaita:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Valitse asiakkaiden maksimimäärä. Kaikkiin lokeroihin ei tarvita välttämättä pelaajia.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :Lähiverkko
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :Lähiverkko / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (mainosta)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1328,6 +1346,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Teimme protokollavirheen ja yhteys kat
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Tämän asiakkaan revisio ei vastaa palvelimen revisiota.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Väärä salasana.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Palvelin on täynnä
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Sinut on suljettu pois palvelimelta
STR_NETWORK_ERR_KICKED :{WHITE} Sinut potkittiin pihalle palvelimelta
STR_NETWORK_ERR_CHEATER :{WHITE} Huijaaminen ei ole sallittua tällä palvelimella
@@ -1350,6 +1369,11 @@ STR_NETWORK_ERR_CLIENT_CHEATER :yritti k
STR_NETWORK_CLIENT_JOINED :liittyi peliin
STR_NETWORK_GIVE_MONEY :antoi sinulle rahaa ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :annoit {STRING}:lle hieman rahaa ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Joukkue] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Joukkue] To {STRING}:
STR_NETWORK_CHAT_CLIENT :[Yksityinen] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Yksityinen] To {STRING}:
STR_NETWORK_CHAT_ALL :[Kaikki] {STRING}:
STR_NETWORK_NAME_CHANGE :on vaihtanut nimensä:
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Palvelin sulki istunnon
STR_NETWORK_SERVER_REBOOT :{WHITE} Palvelin käynnistyy uudelleen...{}Odota, ole hyvä...
@@ -1463,6 +1487,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Tie/rautatietasoliittym
##id 0x2000
STR_2000_TOWNS :{WHITE}Kaupungit
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2053,6 +2078,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Rakenna yhti
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Yhtiön päärakennusta ei voi rakentaa...
STR_7072_VIEW_HQ :{BLACK}Näytä päämaja
STR_RELOCATE_HQ :{BLACK}Sijoita päämaja
STR_COMPANY_PASSWORD :{BLACK}Salasana
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Salasanalla voit suojata yhtiösi, jotta kukaan vieras ei pääse liittymään.
STR_SET_COMPANY_PASSWORD :Aseta yhtiön salasana
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Maailmallinen laskukausi!{}{}Rahoitusasiantuntijat pelkäävät pahinta talouden laskiessa!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Laskuakusi ohi!{}{}Kaupankäynnin käänne parempaan lisää luottamusta teollisuuteen talouden vahvistuessa!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Suuri/pieni ikkunan koko
@@ -2066,6 +2094,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}T
STR_707D_OWNED_BY :{WHITE}({COMMA16}%:n omistus: {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}%:n omistus: {STRING}{} {COMMA16}%:n omistus {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}Yhtiön {STRING} on ottanut haltuun {STRING}!
STR_7080_PROTECTED :{WHITE}Tällä yhtiöllä ei ole vielä osakkeita...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (höyry)
@@ -2364,7 +2393,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} asemalta {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Juna {COMMA16} odottaa veturitallilla
STR_8815_NEW_VEHICLES :{BLACK}Uusia ajoneuvoja
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Hinta: {GOLD}{CURRENCY}{BLACK} Paino: {GOLD}{COMMA16}t{}{BLACK}Nopeus: {GOLD}{VELOCITY}{BLACK} Teho: {GOLD}{COMMA16}hv{}{BLACK}Käyttökustannukset: {GOLD}{CURRENCY}/yr{}{BLACK}Kapasiteetti: {GOLD}{STRING}{}{BLACK}Suunniteltu: {GOLD}{NUMU16}{BLACK} Käyttöikä: {GOLD}{COMMA16} vuotta{}{BLACK}Maksimitoimintavarmuus: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Hinta: {GOLD}{CURRENCY}{BLACK} Paino: {GOLD}{COMMA16}t{}{BLACK}Nopeus: {GOLD}{VELOCITY}{BLACK} Teho: {GOLD}{COMMA32}hv{}{BLACK}Käyttökustannukset: {GOLD}{CURRENCY}/yr{}{BLACK}Kapasiteetti: {GOLD}{STRING}{}{BLACK}Suunniteltu: {GOLD}{NUMU16}{BLACK} Käyttöikä: {GOLD}{COMMA16} vuotta{}{BLACK}Maksimitoimintavarmuus: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Tietoja
STR_8819_TRAIN_TOO_LONG :{WHITE}Juna liian pitkä
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Junia voi muunnella vain, kun pysähdyksissä veturitallilla
@@ -2645,6 +2674,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Lentokonetta ei voi nimet
STR_A032_NAME_AIRCRAFT :{BLACK}Nimeä lentokone
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Kaupunkilaiset juhlivat . . .{}Ensimmäinen lentokone saapuu asemalle ({STATION})!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Lento-onnettomuus!{}{COMMA16} kuolee tulipallossa asemalla {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Lentokoneonnettomuus!{}Lentokoneelta loppui polttoaine, {COMMA16} kuolee tulipallossa!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Kohteet:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Uudelleennimeä
@@ -2714,6 +2744,15 @@ STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Yht
STR_NEWGRF_FILENAME :{BLACK}Tiedostonimi:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Oma valuutta
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Vaihtokurssi: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Välimerkki:
STR_CURRENCY_PREFIX :{LTBLUE}Etuliite:
STR_CURRENCY_SUFFIX :{LTBLUE}Jälkiliite:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Vaihda euroon: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Vaihda euroon: {ORANGE}ei koskaan
STR_CURRENCY_PREVIEW :{LTBLUE}Esikatselu: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Vaihda oman valuutan parametria
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
@@ -2729,3 +2768,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}N
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Näytä kaikki autot, joilla on asema aikataulussaan
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Näytä kaikki lentokoneet, joilla on asema aikataulussaan
STR_SCHEDULED_SHIPS_TIP :{BLACK}Näytä kaikki laivat, joilla on asema aikataulussaan
STR_REPLACE_VEHICLES :{BLACK}Korvaa ajoneuvoja
STR_REPLACE_VEHICLES_WHITE :{WHITE}Korvaa ajoneuvoja
STR_REPLACE_VEHICLES_START :{BLACK}Aloita ajoneuvojen korvaaminen
STR_REPLACE_VEHICLES_STOP :{BLACK}Lopeta ajoneuvojen korvaaminen
STR_NOT_REPLACING :{BLACK}Ei korvata
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Ajoneuvoa ei valittuna
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Valitse korvattava veturityyppi
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Valitse vasemmalla näkyvän veturityypinn korvaava uusi veturityyppi
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Paina pysäyttääksesi vasemmalta valitun veturityypin korvauksen
STR_REPLACE_HELP_START_BUTTON :{BLACK}Paina aloittaaksesi vasemmalta valitun veturityypin korvauksen oikealta valitulla veturityypillä
STR_REPLACE_HELP_RAILTYPE :{BLACK}Valitse rautatietyyppi, jolle veturikorvaukset tehdään
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Näyttää, millä vasemmalta valittu veturi korvataan, jos millään
STR_REPLACE_HELP :{BLACK}Tällä voit korvata yhden veturityypin toisella, kun alkuperäisen tyypin junat menevät varikolle
############ Lists rail types
STR_RAIL_VEHICLES :Rautatiejunat
STR_MONORAIL_VEHICLES :Yksiraidejunat
STR_MAGLEV_VEHICLES :Maglev-junat
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+55 -18
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Impossible d'ex
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Impossible de balayer....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright originel {COPYRIGHT} 1995 Chris Sawyer, Tous droits réservés
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Design original par Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Graphismes par Simon Foster
STR_SPECIAL_THANKS :{BLACK}Remerciements particuliers pour:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signaux et Sémaphores {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fondations pour les voies sur plan incliné {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Graphiques des Canaux/Ecluses {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
STR_TRANSLATED_BY :{BLACK} Traducteur(s) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Impérial (miles)
STR_013A_METRIC_KILOMETERS :Métrique (kilomètres)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Impossible de modifier l'intervalle
STR_018B_CLOSE_WINDOW :{BLACK}Fermer la fenêtre
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titre de fenêtre - Glissez ceci pour déplacer la fenêtre
STR_STICKY_BUTTON :{BLACK}Marquer cette fenêtre comme ineffaçable pour la touche 'Fermer toutes les fenêtres'
STR_RESIZE_BUTTON :{BLACK}Cliquez et glissez pour redimensionner cette fenêtre
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Démolir les constructions sur un carré de terrain
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Abaisser le terrain
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Élever le terrain
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Changements d'acceptance de car
STR_020E_SUBSIDIES :{YELLOW}Subventions
STR_020F_GENERAL_INFORMATION :{YELLOW}Information génerale
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...trop loin de la destination précédente
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Meilleures compagnies qui ont atteint 2050{}({STRING} Niveau)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Meilleures compagnies, qui ont atteint {NUMU16}{}({STRING} niveau)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Tableau du Championnat des compagnies en {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Homme d'affaires
STR_0214_ENTREPRENEUR :Entrepreneur
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitaliste
STR_0217_MAGNATE :Magnat
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon du Siècle
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} atteint le statut de '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} de {STRING} atteint le statut de '{STRING}'!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} atteint le niveau de '{STRING}' !
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} de {STRING} atteint le niveau de '{STRING}' !
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Param
STR_NEWGRF_SETTINGS2 :Paramètres Newgrf
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Fermer TOUTES les fenêtres
STR_CLOSE_ALL_WINDOWS2 :Fermer TOUTES les fenêtres
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afficher le nom des villes
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Afficher le nom des villes
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afficher le nom des stations
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subventions
STR_02DE_MAP_OF_WORLD :Carte du monde
STR_EXTRA_VIEW_PORT :Vue supplémentaire
STR_02DF_TOWN_DIRECTORY :Annuaire des villes
STR_TOWN_POPULATION :{BLACK}Population mondiale : {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vue {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copier vers la vue
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copie l'emplacement de la vue globale vers cette vue
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Financer une nouvelle industrie
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Financer une nouvelle industrie
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...peut seulement être construit en ville
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...peut seulement être construit en forêt tropicale
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...peut seulement être construit dans les endroits désertiques
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Anglais
STR_TOWNNAME_ORIGINAL_ENGLISH :Anglais (Originaux)
STR_TOWNNAME_FRENCH :Français
STR_TOWNNAME_GERMAN :Allemand
STR_TOWNNAME_AMERICAN :Américan
STR_TOWNNAME_ADDITIONAL_ENGLISH :Anglais (Additionels)
STR_TOWNNAME_LATIN_AMERICAN :Latino-Americain
STR_TOWNNAME_SILLY :Drôles
STR_TOWNNAME_SWEDISH :Suédois
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Hollandais
STR_TOWNNAME_FINNISH :Finnish
STR_TOWNNAME_POLISH :Polonais
STR_TOWNNAME_SLOVAKISH :Slovaques
STR_TOWNNAME_NORWEGIAN :Norvégiens
STR_TOWNNAME_HUNGARIAN :Hongrois
STR_TOWNNAME_AUSTRIAN :Autrichiens
STR_TOWNNAME_ROMANIAN :Roumain
STR_TOWNNAME_CZECH :Tchèques
STR_TOWNNAME_SWISS :Suisse
############ end of townname region
STR_CURR_GBP :Livres ({POUNDSIGN})
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Renouveller automatiquement les
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Auto-renouveller les véhicules {ORANGE}{STRING}{LTBLUE} mois avant/après l'âge maximum
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Argent nécessaire pour l'auto-renouvellement : {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Temps d'affichage des messages d'erreur: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Montrer la population d'une ville dans son label : {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Arbres invisibles (quand les bâtiments sont transparents) : {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Altitude d'enneigement: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Etendue max. des stations: {ORANGE}{STRING} {RED}Attention: Valeur élevée = jeu lent
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Maintenance des a
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Maintenance des aéronefs tous les: {ORANGE}désactivé
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Maintenance des navires tous les: {ORANGE}{STRING} jours
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Maintenance des navires tous les: {ORANGE}désactivé
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Désactiver les réparations quand les pannes sont désactivées: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Les journeaux en couleurs apparaissent en: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Date de départ: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Finir le jeu en : {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Permettre une économie stable (plus de petits changements)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permettre d'acheter des actions d'autres compagnies
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Espacements des signaux en mode drag & drop : {ORANGE}{STRING} case(s)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position de la barre d'outils principale: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Gauche
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Impossible de construire un
STR_BUILD_LOCKS_TIP :{BLACK}Construire des écluses
STR_LANDINFO_LOCK :Ecluse
STR_BUOY_IS_IN_USE :{WHITE}... bouée utilisée !
STR_LANDINFO_COORDS :{BLACK}Coordonnées: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Impossible de supprimer une partie de la gare...
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Choix du type de marchandises
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Réaménager le train pour les marchandises sélectionnées
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Impossible de réaménager le train...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Les intervalles de service sont en pourcentage: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Changer la production
TEMP_AI_IN_PROGRESS :{WHITE}Bienvenue dans cette nouvelle IA, en cours d'élaboration. Vous pouvez vous attendre à rencontrer des problèmes. Dans ce cas, faites une capture d'écran et postez-la sur le forum. Amusez-vous bien !
TEMP_AI_ACTIVATED :{WHITE}Attention: cette nouvelle IA est en version alpha ! Pour le moment seuls les camions et les bus fonctionnent !
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Langue: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Terrain: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Taille de la carte : {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Version du serveur : {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresse du serveur : {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresse du serveur : {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Date de début : {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Date courante : {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Protégée par mot de passe !
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Il y a eu une erreur de protocole et l
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} La révision de ce client ne correspond pas à celle du serveur.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Mot de passe incorrect.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Le serveur est plein
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Vous êtes bannis de ce serveur
STR_NETWORK_ERR_KICKED :{WHITE} Vous avez été jeté du serveur
STR_NETWORK_ERR_CHEATER :{WHITE} Tricher n'est pas autorisé sur ce serveur
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Route/rail Croisement
##id 0x2000
STR_2000_TOWNS :{WHITE}Villes
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Impossible de vendre des parts...
STR_707D_OWNED_BY :{WHITE}({COMMA16}% détenus par {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% détenus par {STRING}{} {COMMA16}% détenus par {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} a été rachetée par {STRING}!
STR_7080_PROTECTED :{WHITE}Cette compagnie ne vend pas d'actions pour le moment...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vapeur)
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} de {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Le train {COMMA16} est en attente au dépôt
STR_8815_NEW_VEHICLES :{BLACK}Nouveaux véhicules
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Prix: {GOLD}{CURRENCY}{BLACK} Poids: {GOLD}{COMMA16}t{}{BLACK}Vitesse: {GOLD}{VELOCITY}{BLACK} Puissance: {GOLD}{COMMA16}ch{}{BLACK}Coût d'entretien: {GOLD}{CURRENCY}/an{}{BLACK}Capacité: {GOLD}{STRING}{}{BLACK}Conçu en: {GOLD}{NUMU16}{BLACK} Durée de vie: {GOLD}{COMMA16} ans{}{BLACK}Fiabilité max.: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Prix: {GOLD}{CURRENCY}{BLACK} Poids: {GOLD}{COMMA16}t{}{BLACK}Vitesse: {GOLD}{VELOCITY}{BLACK} Puissance: {GOLD}{COMMA32}ch{}{BLACK}Coût d'entretien: {GOLD}{CURRENCY}/an{}{BLACK}Capacité: {GOLD}{STRING}{}{BLACK}Conçu en: {GOLD}{NUMU16}{BLACK} Durée de vie: {GOLD}{COMMA16} ans{}{BLACK}Fiabilité max.: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Information
STR_8819_TRAIN_TOO_LONG :{WHITE}Train trop long
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Les trains peuvent être manipulés qu'une fois stoppés au dépôt
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Impossible de nommer l'a
STR_A032_NAME_AIRCRAFT :{BLACK}Nommer l'aéronef
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Les habitants célèbrent . . .{}Arrivée du premier aéronef à {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Écrasement d'un aéronef!{}{COMMA16} meurent brulés vifs à {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Crash d'avion !{}L'aéronef n'avait plus de carburant, {COMMA16} meurent de manière horrible !
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinations:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Renommer
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Montre tous les trains qui ont cette statio
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Montre tous les véhicules routiers qui ont cette station dans leur itinéraire
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Montre tous les aéronefs qui ont cette station dans leur itinéraire
STR_SCHEDULED_SHIPS_TIP :{BLACK}Montre tous les navires qui ont cette station dans leur itinéraire
STR_REPLACE_VEHICLES :{BLACK}Remplacement véhicules
STR_REPLACE_VEHICLES_WHITE :{WHITE}Remplacer des Véhicules
STR_REPLACE_VEHICLES_START :{BLACK}Commencer le remplacement
STR_REPLACE_VEHICLES_STOP :{BLACK}Stopper le remplacement
STR_NOT_REPLACING :{BLACK}Pas en cours de remplacement
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Aucun véhicule selectionné
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Choisissez le type de locomotive à remplacer
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Choisissez le nouveau type de locomotive que vous voudriez utiliser à la place du type de locomotive sélectionné à gauche
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Appuyez sur ce bouton si vous ne voulez pas remplacer la locomotive que vous avez choisi à gauche
STR_REPLACE_HELP_START_BUTTON :{BLACK}Appuyez sur ce bouton si vous voulez remplacer la locomotive de gauche par celle sélectionnée à droite
STR_REPLACE_HELP_RAILTYPE :{BLACK}Choisissez un type de rail pour le remplacement de locomotives
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Ceci affiche par quelle locomotive celle qui est sélectionnée à gauche sera remplacée
STR_REPLACE_HELP :{BLACK}Cette caractéristique permet de choisir un type de locomotive et de le remplacer par un autre. Ceci sera fait automatiquement quand le véhicule rentre dans un dépôt
STR_SHORT_DATE :{WHITE}{DATE_TINY}
############ Lists rail types
STR_RAIL_VEHICLES :Véhicules sur rail
STR_MONORAIL_VEHICLES :Véhicules sur monorail
STR_MAGLEV_VEHICLES :Véhicules sur Maglev
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+144 -77
View File
@@ -77,7 +77,7 @@ STR_0047_COLA :Cola
STR_0048_COTTON_CANDY :Algodón de Azucre
STR_0049_BUBBLE :Burbulla
STR_004A_TOFFEE :Toffee
STR_004B_BATTERY :Battería
STR_004B_BATTERY :Batería
STR_004C_PLASTIC :Plástico
STR_004D_FIZZY_DRINK :Bebida Gaseosa
STR_004E :
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Non podes facer eso....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Non podes limpar esta área....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright Orixinal {COPYRIGHT} 1995 Chris Sawyer, Tódolos dereitos reservados
STR_00B7_VERSION :{BLACK}OpenTTD versión {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Deseño orixinal de Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Gráficos de Simon Foster
STR_SPECIAL_THANKS :{BLACK}Agradecementos especiais para:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Sinais e Semáforos {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Bases para Pistas en Pendentes {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Gráficos dos Canais/Peches {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
STR_TRANSLATED_BY :{BLACK} Traductor(es) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -243,9 +238,9 @@ STR_00F2_300M :{BLACK}{TINYFONT}300m
STR_00F3_400M :{BLACK}{TINYFONT}400m
STR_00F4_500M :{BLACK}{TINYFONT}500m
STR_00F5_TRAINS :{BLACK}{TINYFONT}Trens
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Vehículos de estrada
STR_00F7_SHIPS :{BLACK}{TINYFONT}Barcos
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Avións
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Camións/Buses
STR_00F7_SHIPS :{BLACK}{TINYFONT}Navíos
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Aeronaves
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Rutas de transporte
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Mina de Carbón
STR_00FB_POWER_STATION :{BLACK}{TINYFONT}Estación Enerxética
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Imperial (millas)
STR_013A_METRIC_KILOMETERS :Métrico (quilómetros)
@@ -404,7 +400,7 @@ STR_017A_DISPLAY_COMPANY_LEAGUE :{BLACK}Amosa-la t
STR_017B_DISPLAY_LIST_OF_COMPANY :{BLACK}Amosa-la lista dos trens da compañía
STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}Amosa-la lista dos vehículos de estrada da compañía
STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}Amosa-la lista dos barcos da compañía
STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}Amosa-la lista dos avións da compañía
STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}Amosa-la lista das aeronaves da compañía
STR_017F_ZOOM_THE_VIEW_IN :{BLACK}Achega-la vista
STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Alonxa-la vista
STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Construír elementos do ferrocarril
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Non se pode cambia-lo intervalo de s
STR_018B_CLOSE_WINDOW :{BLACK}Pechar fiestra
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Título da fiestra - arrástrao para move-la fiestra
STR_STICKY_BUTTON :{BLACK}Marcar esta fiestra coma non pechable pola tecla de 'Pechar tódalas fiestras'
STR_RESIZE_BUTTON :{BLACK}Pincha e arrastra para redimensiona-la fiestra
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoler edificios, etc. nun cadrado de terreo
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Baixar unha esquina de terreo
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Elevar unha esquina de terreo
@@ -440,7 +437,7 @@ STR_019B_YEARS :{RED}{COMMA16} anos ({COMMA16})
############ range for service numbers ends
STR_019C_ROAD_VEHICLE :Vehículo de estrada
STR_019D_AIRCRAFT :Avión
STR_019D_AIRCRAFT :Aeronave
STR_019E_SHIP :Barco
STR_019F_TRAIN :Tren
STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA16} estase volvendo vello
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Cambios na aceptaci
STR_020E_SUBSIDIES :{YELLOW}Subsidios
STR_020F_GENERAL_INFORMATION :{YELLOW}Información xeral
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...Demasiado lonxe do destino anterior
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Mellores compañías que chegaron ó 2050{}(Nivel {STRING})
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Mellores compañías que chegaron ó {NUMU16}{}(Nivel {STRING})
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Táboa da Liga de Compañías en {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Home de negocios
STR_0214_ENTREPRENEUR :Empresario
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalista
STR_0217_MAGNATE :Magnate
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Magnate da Centuria
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :¡{BIGFONT}{STRING}{STRING} consegue o status de '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :¡{BIGFONT}{STRING}{STRING} de {STRING} consegue o status de '{STRING}'!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}¡{STRING} logra o status de '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}¡{STRING} de {STRING} logra o status '{STRING}'!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Configuraci
STR_NEWGRF_SETTINGS2 :Configuración de Newgrf
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Pechar TÓDALAS Fiestras
STR_CLOSE_ALL_WINDOWS2 :Pechar TÓDALAS Fiestras
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Amosar nomes de cidades
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Amosar nomes de cidades
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Amosar nomes de estacións
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Fundar unha nova industria
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fundar unha nova industria
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...só se pode construír en cidades
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...só se pode construír en zonas de selva tropical
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...só se pode construír en zonas desérticas
@@ -841,7 +838,7 @@ STR_031C_SCREENSHOT_FAILED :{WHITE}
STR_0329_PURCHASE_LAND_FOR_FUTURE :{BLACK}Comprar terreo para futuro uso
STR_032A_1_ROAD_VEHICLE_SERVICE :{BLACK}1: Servicio a vehículo de estrada
STR_032B_2_RAILROAD_SERVICE :{BLACK}2: Servicio a ferrocarril
STR_032C_3_AIR_SERVICE :{BLACK}3: Servicio a avión
STR_032C_3_AIR_SERVICE :{BLACK}3: Servicio a aeronave
STR_032D_4_SHIP_SERVICE :{BLACK}4: Servicio a barco
STR_032E_5_RAILROAD_SERVICE_ADVANCED :{BLACK}5: Servicio a ferrocarril (avanzado)
STR_032F_AUTOSAVE :{RED}AUTOGUARDADO
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Inglés
STR_TOWNNAME_ORIGINAL_ENGLISH :Inglés
STR_TOWNNAME_FRENCH :Francés
STR_TOWNNAME_GERMAN :Alemán
STR_TOWNNAME_AMERICAN :Americano
STR_TOWNNAME_ADDITIONAL_ENGLISH :Inglés (Adicional)
STR_TOWNNAME_LATIN_AMERICAN :Latino-Americano
STR_TOWNNAME_SILLY :Estúpido
STR_TOWNNAME_SWEDISH :Sueco
@@ -862,6 +859,7 @@ STR_TOWNNAME_DUTCH :Holand
STR_TOWNNAME_FINNISH :Finés
STR_TOWNNAME_POLISH :Polaco
STR_TOWNNAME_SLOVAKISH :Eslovaco
STR_TOWNNAME_NORWEGIAN :Noruegués
STR_TOWNNAME_HUNGARIAN :Húngaro
STR_TOWNNAME_AUSTRIAN :Austríaco
STR_TOWNNAME_ROMANIAN :Rumano
@@ -961,16 +959,16 @@ STR_SHIP_HAS_TOO_FEW_ORDERS :{WHITE}O barco {COMMA16} ten moi poucas ordes n
STR_SHIP_HAS_VOID_ORDER :{WHITE}O barco {COMMA16} ten unha orde inválida
STR_SHIP_HAS_DUPLICATE_ENTRY :{WHITE}O barco {COMMA16} ten ordes duplicadas
STR_SHIP_HAS_INVALID_ENTRY :{WHITE}O Barco {COMMA16} ten unha estación non válida nas ordes
STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}O avión {COMMA16} ten moi poucas ordes no seu programa
STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}O avión {COMMA16} ten unha orde inválida
STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}O avión {COMMA16} ten ordes duplicadas
STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}O Avión {COMMA16} ten unha estación non válida nas ordes
STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}A aeronave {COMMA16} ten moi poucas ordes no seu programa
STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}A aeronave {COMMA16} ten unha orde inválida
STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}A aeronave {COMMA16} ten ordes duplicadas
STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}A aeronave {COMMA16} ten unha estación non válida nas ordes
# end of order system
STR_TRAIN_AUTORENEW_FAILED :{WHITE}Autorenovación fallida para o tren {COMMA16} (límite de diñeiro)
STR_ROADVEHICLE_AUTORENEW_FAILED :{WHITE}Autorenovación fallida para o vehículo de estrada {COMMA16} (límite de diñeiro)
STR_SHIP_AUTORENEW_FAILED :{WHITE}Autorenovación fallida para o barco {COMMA16} (límite de diñeiro)
STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Autorenovación fallida para o avión {COMMA16} (límite de diñeiro)
STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Autorenovación fallida para a aeronave {COMMA16} (límite de diñeiro)
STR_CONFIG_PATCHES :{BLACK}Configuración dos Parches
STR_CONFIG_PATCHES_TIP :{BLACK}Configura-los parches
@@ -1019,6 +1017,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Autorenova-los veh
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autorenovar {ORANGE}{STRING}{LTBLUE} meses antes/despois da idade máxima
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Diñeiro mínimo necesario para a autorenovación: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duración das mensaxes de error: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Mostra-la poboación da cidade na etiqueta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Árbores invisibles (con edificios transparentes): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Altura da liña de neve: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Extensión Max. Estación: {ORANGE}{STRING} {RED}Aviso: Valores altos reducen rendemento
@@ -1026,12 +1025,12 @@ STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Face-lo servicio os helic
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Nº máximo de trens por xogador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Nº máximo de vehículos de estrada por xogador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Nº máximo de avións por xogador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Nº máximo de aeronaves por xogador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_SHIPS :{LTBLUE}Nº máximo de barcos por xogador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_TRAINS :{LTBLUE}Deshabilita-los trens para o ordenador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}Deshabilita-los vehículos de estrada para o ordenador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Deshabilita-los avións para o ordenador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Deshabilita-las aeronaves para o ordenador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}Deshabilita-los barcos para o ordenador: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Activar nova AI (alpha): {ORANGE}{STRING}
@@ -1040,14 +1039,16 @@ STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Intervalo de servicio para os tren
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Intervalo de servicio para os trens: {ORANGE}deshabilitado
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Intervalo de servicio para os vehículos de estrada: {ORANGE}{STRING} días
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Intervalo de servicio para os vehículos de estrada: {ORANGE}deshabilitado
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Intervalo de servicio para os avións: {ORANGE}{STRING} días
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Intervalo de servicio para os avións: {ORANGE}deshabilitado
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Intervalo de servicio para as aeronaves: {ORANGE}{STRING} días
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Intervalo de servicio para as aeronaves: {ORANGE}deshabilitado
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Intervalo de servicio para os barcos: {ORANGE}{STRING} días
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Intervalo de servicio para os barcos: {ORANGE}deshabilitado
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Data de aparición das noticias en color: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Data de comezo: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Terminar partida en: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Habilita-la economía "suave"(máis cambios, pero máis pequenos)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permiti-la compra de accións por outras compañías
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Cando se arrastre, colocar siniais cada: {ORANGE}{STRING} cadrado(s)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posición da barra de ferramentas principal: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Esquerda
@@ -1121,6 +1122,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Varias industrias aleatorias
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cubri-lo mapa con industrias colocadas aleatoriamente
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Non se poden xera-las industrias...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Abri-la ferramenta de terreo para subir/baixar terreo, plantar árbores, etc.
STR_LANDSCAPING_TOOLBAR :{WHITE}Modifica-lo terreo
STR_LEVEL_LAND_TOOLTIP :{BLACK}Nivelar terreo
@@ -1136,6 +1138,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}Non se pode constru
STR_BUILD_LOCKS_TIP :{BLACK}Construír peches
STR_LANDINFO_LOCK :Peche
STR_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Non se pode eliminar parte da estación...
@@ -1187,7 +1190,9 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Selecciona o tipo de carga que leva
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Reaxusta-lo tren para o tipo de carga seleccionado
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}No se pode reaxusta-lo tren...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Intervalos de servicio en porcentaxes: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Cambiar producción
TEMP_AI_ACTIVATED :{WHITE}¡Advertencia: esta nova AI esta en estado alfa! ¡ Neste momento só funcionan os camións e os buses!
############ network gui strings
@@ -1222,7 +1227,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Set de Terreo: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Tamaño: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Versión do servidor: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Dirección do servidor: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Dirección do servidor: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Data de comezo: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Data actual: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}¡Protexido con clave!
@@ -1334,8 +1339,10 @@ STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Non se pode carga-la partida
STR_NETWORK_ERR_SERVER_START :{WHITE} Non se pode arrinca-lo servidor
STR_NETWORK_ERR_CLIENT_START :{WHITE} Non se pode conectar
STR_NETWORK_ERR_TIMEOUT :{WHITE} Conexión #{NUMU16} fora de tempo
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} A revisión deste cliente no e igual ca revisión do servidor.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Contrasinal errónea
STR_NETWORK_ERR_SERVER_FULL :{WHITE} O servidor está cheo
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Fuches
STR_NETWORK_ERR_KICKED :{WHITE} Fuches pateado da partida
STR_NETWORK_ERR_CHEATER :{WHITE} Non se permite facer trampas neste servidor
@@ -1347,16 +1354,24 @@ STR_NETWORK_ERR_CLIENT_SAVEGAME :no se pode carga-lo mapa
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :coneción perdida
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :error de protocolo
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :Non Autorizado
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :recibiuse un paquete extraño
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :revisión errónea
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :o nome xa está en uso
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :contrasinal incorrecta
STR_NETWORK_ERR_CLIENT_KICKED :pateado polo servidor
STR_NETWORK_ERR_CLIENT_CHEATER :intentaba usar un truco
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :uniuse á partida
STR_NETWORK_GIVE_MONEY :deu a túa compañía algún diñeiro ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :diches a {STRING} algún diñeiro ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Equipo] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Equipo] A {STRING}:
STR_NETWORK_CHAT_CLIENT :[Privado] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Privado] A {STRING}:
STR_NETWORK_CHAT_ALL :[Todos] {STRING}:
STR_NETWORK_NAME_CHANGE :cambiou o seu nome por
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} O servidor pechou a conexión
STR_NETWORK_SERVER_REBOOT :{WHITE} O servidor estase a reiniciar...{}Espera por favor...
STR_NETWORK_SERVER :Servidor
STR_NETWORK_CLIENT :Cliente
@@ -1364,8 +1379,12 @@ STR_NETWORK_CLIENT :Cliente
STR_NETWORK_CLIENTLIST_NONE :(ningún)
STR_NETWORK_CLIENTLIST_KICK :Patear
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dar diñeiro
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Falar a todos
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Falar con compañía
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mensaxe privada
STR_NETWORK_SEND :{BLACK}Enviar
############ end network gui strings
@@ -1463,6 +1482,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Paso a nivel para estrada/ferrocarril
##id 0x2000
STR_2000_TOWNS :{WHITE}Cidades
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -1647,7 +1667,7 @@ STR_305B_SIZE :{BLACK}Tama
STR_305C_0 :{STATION} {STRINL 0x30D1}
STR_305D_0 :{TINYFONT}{BLACK}{STATION} {STRINL 0x30D1}
STR_305E_RAILROAD_STATION :Estación de ferrocarril
STR_305F_AIRCRAFT_HANGAR :Hangar de avións
STR_305F_AIRCRAFT_HANGAR :Hangar de aeronaves
STR_3060_AIRPORT :Aeroporto
STR_3061_TRUCK_LOADING_AREA :Área de carga de camións
STR_3062_BUS_STATION :Estación de autobús
@@ -1823,7 +1843,7 @@ STR_SV_UNNAMED :Sen Nome{SKIP}
STR_SV_TRAIN_NAME :Tren {COMMA16}
STR_SV_ROADVEH_NAME :Vehículo de estrada {COMMA16}
STR_SV_SHIP_NAME :Barco {COMMA16}
STR_SV_AIRCRAFT_NAME :Avión {COMMA16}
STR_SV_AIRCRAFT_NAME :Aeronave {COMMA16}
STR_SV_STNAME :{STRING}
STR_SV_STNAME_NORTH :{STRING} Norte
@@ -1955,12 +1975,12 @@ STR_7011_CONSTRUCTION :{GOLD}Construccci
STR_7012_NEW_VEHICLES :{GOLD}Novos Vehículos
STR_7013_TRAIN_RUNNING_COSTS :{GOLD}Mantemento dos Trens
STR_7014_ROAD_VEH_RUNNING_COSTS :{GOLD}Mantemento dos Vehículos
STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Mantemendo dos Avións
STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Mantemendo das Aeronaves
STR_7016_SHIP_RUNNING_COSTS :{GOLD}Mantemento dos Barcos
STR_7017_PROPERTY_MAINTENANCE :{GOLD}Mantemento das Propiedades
STR_7018_TRAIN_INCOME :{GOLD}Ingresos dos Trens
STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Ingresos dos Vehículos
STR_701A_AIRCRAFT_INCOME :{GOLD}Ingresos dos Avións
STR_701A_AIRCRAFT_INCOME :{GOLD}Ingresos das Aeronaves
STR_701B_SHIP_INCOME :{GOLD}Ingresos dos Barcos
STR_701C_LOAN_INTEREST :{GOLD}Interese do Préstamo
STR_701D_OTHER :{GOLD}Outros
@@ -1998,8 +2018,8 @@ STR_703A_TRAIN :{WHITE}{COMMA16} tren
STR_703B_TRAINS :{WHITE}{COMMA16} trens
STR_703C_ROAD_VEHICLE :{WHITE}{COMMA16} vehículo de estrada
STR_703D_ROAD_VEHICLES :{WHITE}{COMMA16} vehículos de estrada
STR_703E_AIRCRAFT :{WHITE}{COMMA16} avión
STR_703F_AIRCRAFT :{WHITE}{COMMA16} avións
STR_703E_AIRCRAFT :{WHITE}Aeronave {COMMA16}
STR_703F_AIRCRAFT :{WHITE}Aeronave {COMMA16}
STR_7040_SHIP :{WHITE}{COMMA16} barco
STR_7041_SHIPS :{WHITE}{COMMA16} barcos
STR_7042_NONE :{WHITE}Ningún
@@ -2049,9 +2069,13 @@ STR_706D_PRESIDENT :Presidente
STR_706E_TYCOON :Magnate
STR_706F_BUILD_HQ :{BLACK}Construír CX
STR_7070_BUILD_COMPANY_HEADQUARTERS :{BLACK}Construír/ver cuartel xeral da compañía
STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Recontruí-lo cuartel xeral da compañía en calquer lugar cun coste do 1% do valor da compañía
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Non se pode construí-lo cuartel xeral...
STR_7072_VIEW_HQ :{BLACK}Ve-lo CX
STR_RELOCATE_HQ :{BLACK}Reposicionar CX
STR_COMPANY_PASSWORD :{BLACK}Contrasinal
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Protexe a atúa compañía cun contrasinal para evitar que usuarios non autorizados se unan
STR_SET_COMPANY_PASSWORD :Establece o contrasinal da compañía
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}¡Recesión Mundial!{}{}¡Os expertos en finanzas témense o peor a medida que a economía afúndese!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}¡Fin da Recesión!{}{}¡A mellora no comercio inspira confianza nas industrias a media que a economía reforzase!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Intercambiar entre fiestra grande/pequena
@@ -2065,6 +2089,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Non se pode vender un 25% das acci
STR_707D_OWNED_BY :{WHITE}({COMMA16}% propiedade de {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% propiedade de {STRING}{} {COMMA16}% propiedade de {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} comprada por {STRING}!
STR_7080_PROTECTED :{WHITE}Esta compañía todavía non comercia con accións...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vapor)
@@ -2327,7 +2352,7 @@ STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE :{WHITE}Mensaxe dun fabricante de ve
STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Rematamo-lo deseño dun/dunha nov@ {STRING} - ¿Interésache probar este vehículo en exclusiva durante un ano, para comproba-lo seu rendemento antes de facelo dispoñible para todos?
STR_8102_RAILROAD_LOCOMOTIVE :locomotora de ferrocarril
STR_8103_ROAD_VEHICLE :vehículo de estrada
STR_8104_AIRCRAFT :avión
STR_8104_AIRCRAFT :aeronave
STR_8105_SHIP :barco
STR_8106_MONORAIL_LOCOMOTIVE :locomotora de monoraíl
STR_8107_MAGLEV_LOCOMOTIVE :locomotora de maglev
@@ -2363,7 +2388,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} de {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}O tren {COMMA16} está a esperar no depósito
STR_8815_NEW_VEHICLES :{BLACK}Novos Vehículos
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Coste: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocidade: {GOLD}{VELOCITY}{BLACK} Potencia: {GOLD}{COMMA16}hp{}{BLACK}Coste mantemento: {GOLD}{CURRENCY}/ano{}{BLACK}Capacidade: {GOLD}{STRING}{}{BLACK}Deseñado: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anos{}{BLACK}Fiabilidade Máx.: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Coste: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocidade: {GOLD}{VELOCITY}{BLACK} Potencia: {GOLD}{COMMA32}hp{}{BLACK}Coste mantemento: {GOLD}{CURRENCY}/ano{}{BLACK}Capacidade: {GOLD}{STRING}{}{BLACK}Deseñado: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anos{}{BLACK}Fiabilidade Máx.: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Información
STR_8819_TRAIN_TOO_LONG :{WHITE}O tren é demasiado longo
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Os trens só se poden alterar cando estean parados nunha estación
@@ -2590,15 +2615,16 @@ STR_GO_TO_SHIP_DEPOT :Ir
SERVICE_AT_SHIP_DEPOT :Face-lo servicio no Depósito de Barcos de {TOWN}
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Aeroportos
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nonse pode construí-lo aeroporto aí...
STR_A002_AIRCRAFT_HANGAR :{WHITE}Nagar de Avións de {STATION}
STR_A003_NEW_AIRCRAFT :{BLACK}Novo Avión
STR_A002_AIRCRAFT_HANGAR :{WHITE}Hangar de Aeronaves de {STATION}
STR_A003_NEW_AIRCRAFT :{BLACK}Nova Aeronave
STR_A004_INFORMATION :{BLACK}Información
STR_A005_NEW_AIRCRAFT :{WHITE}Novo Avión
STR_A006_BUILD_AIRCRAFT :{BLACK}Construír Avión
STR_A005_NEW_AIRCRAFT :{WHITE}Nova Aeronave
STR_A006_BUILD_AIRCRAFT :{BLACK}Construír Aeronave
STR_A007_COST_SPEED_CAPACITY_PASSENGERS :{BLACK}Coste: {GOLD}{CURRENCY}{BLACK} Velocidade: {GOLD}{VELOCITY}{}{BLACK}Capacidade: {GOLD}{COMMA16} pasaxeiros, {COMMA16} sacos de correo{}{BLACK}Coste de Mantemento: {GOLD}{CURRENCY}/ano{}{BLACK}Deseñado: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anos{}{BLACK}Fiabilidade Máx.: {GOLD}{COMMA8}%
STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}Non se pode construí-lo avíon...
STR_A009_AIRCRAFT :{WHITE}{STRING} - {COMMA16} Avión
STR_A009_AIRCRAFT :{WHITE}{STRING} - {COMMA16} Aeronave
STR_A00A :{WHITE}{STRING}
STR_A00B_ORDERS :{WHITE}{STRING} (Ordes)
STR_A00C_DETAILS :{WHITE}{STRING} (Detalles)
@@ -2607,56 +2633,57 @@ STR_A00E_MAX_SPEED :{BLACK}Velocidade M
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Beneficio este ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilidade: {LTBLUE}{COMMA8}% {BLACK}Roturas dende o último serivicio: {LTBLUE}{COMMA16}
STR_A011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Construído: {LTBLUE}{NUMU16}{BLACK} Valor: {LTBLUE}{CURRENCY}
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Non se pode envia-lo avión ó hangar...
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Non se pode envia-la aeronave ó hangar...
STR_HEADING_FOR_HANGAR :{LTBLUE}Diríxese ó hangar de {STATION}
STR_HEADING_FOR_HANGAR_VEL :{LTBLUE}Diríxese ó hangar de {STATION}, {VELOCITY}
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}O avión {COMMA16} está a esperar no hangar
STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Avión en camiño
STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Non se pode parar/arrincar o avión...
STR_A017_AIRCRAFT_IS_IN_FLIGHT :{WHITE}O avión esta voando
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}A aeronave {COMMA16} está a esperar no hangar
STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Aeronave no camiño
STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Non se pode parar/arrincar a aeronave...
STR_A017_AIRCRAFT_IS_IN_FLIGHT :{WHITE}A aeronave esta voando
STR_A018_MUST_BUILD_AIRPORT_FIRST :{WHITE}Debes construír un aeroporto primeiro
STR_A019_CAPACITY :{BLACK}Capacidade: {LTBLUE}{STRING}, {STRING}
STR_A01A_CAPACITY :{BLACK}Capacidade: {LTBLUE}{STRING}
STR_A01B_AIRCRAFT_MUST_BE_STOPPED :{WHITE}O avión debe estar parado no hangar
STR_A01C_CAN_T_SELL_AIRCRAFT :{WHITE}Non se pode vende-lo avión...
STR_A01B_AIRCRAFT_MUST_BE_STOPPED :{WHITE}A aeronave debe estar parada no hangar
STR_A01C_CAN_T_SELL_AIRCRAFT :{WHITE}Non se pode vende-la aeronave...
STR_A01D_AIRPORT_CONSTRUCTION :Construcción de Aeroporto
STR_A01E_BUILD_AIRPORT :{BLACK}Construír aeroporto
STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Avións - pincha no avión para máis información
STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES :{BLACK}Construír novo avión (necesitas un aeroporto con hangar)
STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Avións - pincha no avión para máis información
STR_A022_BUILD_NEW_AIRCRAFT :{BLACK}Construír novo avión
STR_A023_DRAG_AIRCRAFT_TO_HERE_TO :{BLACK}Arrastra o avión aquí para vendelo
STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Aeronaves - pincha na aeronave para máis información
STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES :{BLACK}Construír nova aeronave (necesitas un aeroporto con hangar)
STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Aeronaves - pincha na aeronave para máis información
STR_A022_BUILD_NEW_AIRCRAFT :{BLACK}Construír nova aeronave
STR_A023_DRAG_AIRCRAFT_TO_HERE_TO :{BLACK}Arrastra a aeronave aquí para vendela
STR_A024_CENTER_MAIN_VIEW_ON_HANGAR :{BLACK}centra-la vista principal na situación do hangar
STR_A025_AIRCRAFT_SELECTION_LIST :{BLACK}Lista de selección de avións - pincha nun avión para máis información
STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT :{BLACK}Construí-lo avión seleccionado
STR_A027_CURRENT_AIRCRAFT_ACTION :{BLACK}Tarea actual do avión - pincha aquí para parar/arrincar o avión
STR_A025_AIRCRAFT_SELECTION_LIST :{BLACK}Lista de selección de aeronaves - pincha nunha aeronave para máis información
STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT :{BLACK}Construí-la aeronave seleccionado
STR_A027_CURRENT_AIRCRAFT_ACTION :{BLACK}Tarea actual da aeronave - pincha aquí para parar/arrincar a aeronave
STR_A028_SHOW_AIRCRAFT_S_ORDERS :{BLACK}Mostra-las ordes do avíon
STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT :{BLACK}Centra-la vista principal na situación do avión
STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Envia-lo avión ó hangar
STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Mostra-los detalles do avión
STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE :{BLACK}{BIGFONT}¡Novo avión dispoñible!
STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT :{BLACK}Centra-la vista principal na situación da aeronave
STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Envia-la aeronave ó hangar
STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Mostra-los detalles da aeronave
STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE :{BLACK}{BIGFONT}¡Nova aeronave dispoñible!
STR_A02D :{BLACK}{BIGFONT}{STRING}
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Coste: {CURRENCY} Velocidade Máx.: {VELOCITY}{}Capacidade: {COMMA16} pasaxeiros, {COMMA16} sacos de correo{}Coste de Mantemento: {CURRENCY}/ano
STR_A030_NAME_AIRCRAFT :{WHITE}Renomear avión
STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Non se pode renomea-lo avión...
STR_A032_NAME_AIRCRAFT :{BLACK}Renomear avión
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Celebración cidadá . . .{}¡Chega o primeiro avión a {STATION}!
STR_A030_NAME_AIRCRAFT :{WHITE}Renomear aeronave
STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Non se pode renomea-la aeronave...
STR_A032_NAME_AIRCRAFT :{BLACK}Renomear aeronave
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Celebración cidadá . . .{}¡Chega a primeira aeronave a {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Plane Crash!{}{COMMA16} die in fireball at {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}¡Accidente de Aeronave!¡A aeronave {} quedou sen combustible, hai {COMMA16} mortos na explosión!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinos:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Renomear
STR_A038_RENAME_AIRCRAFT_TYPE :{BLACK}Renomea-lo tipo de avión
STR_A039_RENAME_AIRCRAFT_TYPE :{WHITE}Renomea-lo tipo de avión
STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Non se pode renomea-lo tipo de avión...
STR_A03B_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Reaxusta-lo avión para levar un tipo distinto de carga
STR_A038_RENAME_AIRCRAFT_TYPE :{BLACK}Renomea-lo tipo de aeronave
STR_A039_RENAME_AIRCRAFT_TYPE :{WHITE}Renomea-lo tipo de aeronave
STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Non se pode renomea-lo tipo de aeronave...
STR_A03B_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Reaxusta-la aeronave para levar un tipo distinto de carga
STR_A03C_REFIT :{WHITE}{STRING} (Reaxustar)
STR_A03D_REFIT_AIRCRAFT :{BLACK}Reaxustar avión
STR_A03D_REFIT_AIRCRAFT :{BLACK}Reaxustar aeronave
STR_A03E_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Selecciona o tipo de carga que levará
STR_A03F_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Reaxusta-lo avión para levar o tipo de carga seleccionada
STR_A03F_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Reaxusta-la aeronave para levar o tipo de carga seleccionada
STR_A040_SELECT_CARGO_TYPE_TO_CARRY :{GOLD}Selecciona o tipo de carga a levar:-
STR_A041_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova capacidade: {GOLD}{STRING}{}{BLACK}Cose do reaxuste: {GOLD}{CURRENCY}
STR_A042_CAN_T_REFIT_AIRCRAFT :{WHITE}Non se pode reaxusta-lo avión...
STR_A042_CAN_T_REFIT_AIRCRAFT :{WHITE}Non se pode reaxusta-la aeronave...
STR_A043_REFITTABLE :(reax.)
STR_GO_TO_AIRPORT_HANGAR :Ir ó hangar de {STATION}
SERVICE_AT_AIRPORT_HANGAR :Face-lo servicio no hangar de {STATION}
@@ -2674,6 +2701,7 @@ STR_BRIBE_FAILED_2 :{WHITE}descuberto por un investigador rexional.
STR_BUILD_DATE :{BLACK}construído: {LTBLUE}{DATE_LONG}
STR_MULTIPLAYER_PAUSED :{WHITE}Xogo en pausa.{}Non se pode executa-lo comando
STR_PERFORMANCE_DETAIL :{WHITE}Punt. rendemento detallada
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detalle
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
@@ -2691,16 +2719,55 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Di
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Crédito:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Número de vehículos; inclúe camións/buses, trens, navíos e aeronaves
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Unidades de carga levadas nos últimos catro quartos
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Número de tipos de carga levados no último cuarto
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Amount of cash on hand
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Valor do préstamo que ten a compañía
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Puntos totais de puntos posibles
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Configuración Newgrf
STR_NEWGRF_APPLY_CHANGES :{BLACK}Aplica-los cambios
STR_NEWGRF_SET_PARAMETERS :{BLACK}Conf. parámetros
STR_NEWGRF_TIP :{BLACK}Unha lista de tódolos sets Newgrf que tes instalados. Pincha nun set para cambia-la configuración
STR_NEWGRF_FILENAME :{BLACK}Ficheiro:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Moeda persoalizada
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Taxa de cambio: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separador:
STR_CURRENCY_PREFIX :{LTBLUE}Prefixo:
STR_CURRENCY_SUFFIX :{LTBLUE}Sufixo:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Cambiar a Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Camiar a Euro: {ORANGE}nunca
STR_CURRENCY_PREVIEW :{LTBLUE}Vista previa: {ORANGE}{CURRENCY}
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Trens
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Camións/Buses
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Aeronaves
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Navíos
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Mostrar tódolos vehículos de estrada que teñen esta estación nas súas ordes
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostrar tódolos avións que teñen esta estación nas súas ordes
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostrar tódolas aeronaves que teñen esta estación nas súas ordes
STR_SCHEDULED_SHIPS_TIP :{BLACK}Mostrar tódolos barcos que teñen esta estación nas súas ordes
STR_REPLACE_VEHICLES :{BLACK}Reemplazar Vehículos
STR_REPLACE_VEHICLES_WHITE :{WHITE}Reemplazar vehículos
STR_REPLACE_VEHICLES_START :{BLACK}Comezar a Reemplazar Vehículos
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Non hai vehículos seleccionados
############ Lists rail types
STR_RAIL_VEHICLES :Vehículos Raíl
STR_MONORAIL_VEHICLES :Vehículos Monoraíl
STR_MAGLEV_VEHICLES :Vehículos Maglev
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+55 -18
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Kann dies nicht tun....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Kann das Gebiet nicht räumen....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, Alle Rechte vorbehalten
STR_00B7_VERSION :{BLACK}OpenTTD Version {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Original Design: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafiken: Simon Foster
STR_SPECIAL_THANKS :{BLACK}Spezieller Dank gebührt:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Vorsignale und Semaphoren {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Grundlagen für Schienen auf Abhängen {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal/Schleusen Grafiken {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD-Team
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 OpenTTD-Team
STR_TRANSLATED_BY :{BLACK} Übersetzer -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Imperial (Meilen)
STR_013A_METRIC_KILOMETERS :Metrisch (Kilometer)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Das Wartungsintervall kann nicht ge
STR_018B_CLOSE_WINDOW :{BLACK}Fenster schließen
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titelleiste verschieben um das Fenster zu bewegen
STR_STICKY_BUTTON :{BLACK}Diese Fenster markieren, damit es nicht durch die
STR_RESIZE_BUTTON :{BLACK}Klicken und Ziehen zum Größe ändern
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Gebäude usw. auf einem Planquadrat abreißen
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Land absenken
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Land anheben
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}
STR_020E_SUBSIDIES :{YELLOW}Subventionen
STR_020F_GENERAL_INFORMATION :{YELLOW}Allgemeine Nachrichten
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...zu weit vom vorherigen Bestimmungsort entfernt
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Die besten Firmen, die das Jahr 2050 erreichten{}({STRING} Level)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Beste Unternehmen, die {NUMU16} erreichten{}(Schwierigkeitsgrad {STRING})
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Firmentabelle in {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Geschäftsmann
STR_0214_ENTREPRENEUR :Unternehmer
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalist
STR_0217_MAGNATE :Magnat
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon des Jahrhunderts
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} erreicht '{STRING}'-Status!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} zu {STRING} erreichender '{STRING}' Status!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} erreicht '{STRING}' Status!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} von {STRING} erreicht '{STRING}' Status!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf-Einstellungen
STR_NEWGRF_SETTINGS2 :Newgrf-Einstellungen
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :ALLE Fenster schließen
STR_CLOSE_ALL_WINDOWS2 :ALLE Fenster schließen
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Städtenamen anzeigen
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Städtenamen anzeigen
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stationsnamen anzeigen
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subventionen
STR_02DE_MAP_OF_WORLD :Weltkarte
STR_EXTRA_VIEW_PORT :Zusatzansicht
STR_02DF_TOWN_DIRECTORY :Städteverzeichnis
STR_TOWN_POPULATION :{BLACK}Weltbevölkerung: {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Ansicht {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}In Zusatzansicht
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopieren der Position im Hauptfenster in diese Zusatzansicht
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Neue Industrie finanzieren
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Neue Industrie finanzieren
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kann nur in Städten errichtet werden
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kann nur im Regenwaldgebiet errichtet werden
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kann nur im Wüstengebiet errichtet werden
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Englisch
STR_TOWNNAME_ORIGINAL_ENGLISH :Englisch
STR_TOWNNAME_FRENCH :Französisch
STR_TOWNNAME_GERMAN :Deutsch
STR_TOWNNAME_AMERICAN :Amerikanisch
STR_TOWNNAME_ADDITIONAL_ENGLISH :English (Zusätzlich)
STR_TOWNNAME_LATIN_AMERICAN :Lateinamerikanisch
STR_TOWNNAME_SILLY :Verrückt
STR_TOWNNAME_SWEDISH :Schwedisch
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Niederl
STR_TOWNNAME_FINNISH :Finnisch
STR_TOWNNAME_POLISH :Polnisch
STR_TOWNNAME_SLOVAKISH :Slovakisch
STR_TOWNNAME_NORWEGIAN :Norwegisch
STR_TOWNNAME_HUNGARIAN :Ungarisch
STR_TOWNNAME_AUSTRIAN :Österreichisch
STR_TOWNNAME_ROMANIAN :Rumänisch
STR_TOWNNAME_CZECH :Tschechisch
STR_TOWNNAME_SWISS :Schweizerisch
############ end of townname region
STR_CURR_GBP :Pfund ({POUNDSIGN})
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Fahrzeug erneuern, wenn es vera
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Erneuere Fahrzeug {ORANGE}{STRING}{LTBLUE} Monate vor/nach Maximalalter
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minimaler Kontostand für automatisches Erneuern: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Dauer der Fehlermeldungen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Zeige die Einwohnerzahl der Stadt im Label: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Unsichtbare Bäume (bei transparenten Gebäuden): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Höhe der Schneegrenze: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maximale Stationsgröße: {ORANGE}{STRING} {RED}Achtung: Große Werte verlangsamen das Spiel
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Vorgegebener Wartungsintervall f
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Vorgegebener Wartungsintervall für Flugzeuge: {ORANGE}abgeschaltet
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Vorgegebener Wartungsintervall für Schiffe: {ORANGE}{STRING} Tage
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Vorgegebener Wartungsintervall für Schiffe: {ORANGE}abgeschaltet
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Wartung deaktivieren, wenn Pannen abgeschaltet: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Farbige Nachrichten erscheinen ab: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Startdatum: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Spiel beenden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Feinere Wirtschaft aktivieren (mehrere, kleinere Veränderungen)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Erlaube anteile an anderen Firmen zu kaufen
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Errichte Signale alle {ORANGE}{STRING} Felder beim Ziehen mit der Maus
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position der Haupttoolbar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Links
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Kann hier keine Schleuse bauen...
STR_BUILD_LOCKS_TIP :{BLACK}Schleusen bauen
STR_LANDINFO_LOCK :Schleuse
STR_BUOY_IS_IN_USE :{WHITE}... Boje wird gebraucht!
STR_LANDINFO_COORDS :{BLACK}Koordinaten: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kann den Teil des Bahnhofs nicht entfernen...
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}W
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Umrüstung des Zuges auf die ausgewählte Frachtart
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kann den Zug nicht umrüsten...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Wartungsintervalle in Prozent: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Produktion ändern
TEMP_AI_IN_PROGRESS :{WHITE}Willkommen bei der neuen KI. Erwarte Fehler. Falls du einen findest, mache einen Screenshot und berichte im Forum. Viel Spaß!
TEMP_AI_ACTIVATED :{WHITE}Achtung: Die neue KI ist noch im Alpha-Stadium. Derzeit funktionieren nur Straßenfahrzeuge.
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Sprache: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Mapgröße: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Serverversion: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Serveradresse: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Server Adresse: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Startdatum: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Aktuelles Datum: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Passwort geschützt!
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Protokollfehler: Die Verbindung musste
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Ihre Version entspricht nicht der Serverversion.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Falsches Passwort.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Der Server ist voll.
STR_NETWORK_ERR_SERVER_BANNED :{WHITE}Du bist von diesem Server verbannt
STR_NETWORK_ERR_KICKED :{WHITE} Sie wurden vom Server gekickt.
STR_NETWORK_ERR_CHEATER :{WHITE} Cheating ist auf diesem Server nicht erlaubt
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Bahn
##id 0x2000
STR_2000_TOWNS :{WHITE}Städte
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Kann 25% Anteil an dieser Firma nich
STR_707D_OWNED_BY :{WHITE}({COMMA16}% Eigentum von {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% Eigentum von {STRING}{} {COMMA16}% Eigentum von {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} wurde von {STRING} übernommen!
STR_7080_PROTECTED :{WHITE}Dieses Unternehmen handelt noch nicht mit Anteilen...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Dampf)
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} von {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Zug {COMMA16} wartet im Depot
STR_8815_NEW_VEHICLES :{BLACK}Neue Fahrzeuge
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kosten: {GOLD}{CURRENCY}{BLACK} Gewicht: {GOLD}{COMMA16}t{}{BLACK}Geschwindigk.: {GOLD}{VELOCITY}{BLACK} Leistung: {GOLD}{COMMA16} PS {}{BLACK}Betriebskosten: {GOLD}{CURRENCY}/Jahr{}{BLACK}Kapazität: {GOLD}{STRING}{}{BLACK}Entwurf: {GOLD}{NUMU16}{BLACK} Lebensdauer: {GOLD}{COMMA16} Jahre{}{BLACK}Max. Zuverlässigkeit: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kosten: {GOLD}{CURRENCY}{BLACK} Gewicht: {GOLD}{COMMA16}t{}{BLACK}Geschwindigk.: {GOLD}{VELOCITY}{BLACK} Leistung: {GOLD}{COMMA32} PS{}{BLACK}Betriebskosten: {GOLD}{CURRENCY}/Jahr{}{BLACK}Kapazität: {GOLD}{STRING}{}{BLACK}Entwurf: {GOLD}{NUMU16}{BLACK} Lebensdauer: {GOLD}{COMMA16} Jahre{}{BLACK}Max. Zuverlässigkeit: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Information
STR_8819_TRAIN_TOO_LONG :{WHITE}Zug zu lang
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Züge können nur verändert werden, wenn sie im Depot halten
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Kann Flugzeugname nicht vergeben...
STR_A032_NAME_AIRCRAFT :{BLACK}Flugzeugname
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Die Stadt feiert . . .{}Erstes Flugzeug landet auf {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Flugzeugabsturz!{}{COMMA16} sterben in einem Feuerball auf {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Flugzeugabsturz!{}Dem Flugzeug ging der Treibstoff aus, {COMMA16} sterben in einem Feuerball!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Bestimmungsort:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Umbenennen
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Zeige alle Z
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Zeige alle Fahrzeuge, die diese Station anfahren
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Zeige alle Flugzeuge, die diesen Flughafen anfliegen
STR_SCHEDULED_SHIPS_TIP :{BLACK}Zeige alle Schiffe, die diesen Hafen ansteuern
STR_REPLACE_VEHICLES :{BLACK}Ersetze Fahrzeuge
STR_REPLACE_VEHICLES_WHITE :{WHITE}Ersetze Fahrzeuge
STR_REPLACE_VEHICLES_START :{BLACK}Fahrzeugersetzung aktivieren
STR_REPLACE_VEHICLES_STOP :{BLACK}Fahrzeugersetzung deaktivieren
STR_NOT_REPLACING :{BLACK}Keine Ersetzung
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Kein Fahrzeug gewählt
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Wähle das zu ersetzende Fahrzeug
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Wähle den Fahrzeugtyp, der an Stelle des links gewählten Fahrzeugs verwendet werden soll
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Drücke diesen Button, wenn das Fahrzeug auf der linken Seite nicht ersetzt werden soll
STR_REPLACE_HELP_START_BUTTON :{BLACK}Drücke diesen Button, wenn das Fahrzeug auf der linken Seite durch das auf der rechten Seite gewählte ersetzt werden soll
STR_REPLACE_HELP_RAILTYPE :{BLACK}Wähle einen Schienentyp für den Loks ersetzt werden sollen
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Hier wird angezeigt, gegen welches Fahrzeug das auf der linken Seite gewählte ersetzt wird
STR_REPLACE_HELP :{BLACK}Dieses Feature ermöglicht es, einen Fahrzeugtyp auszuwählen und ihn durch einen anderen ersetzen zu lassen. Dies geschieht automatisch, wenn das Fahrzeug regulär das Depot besucht.
STR_SHORT_DATE :{WHITE}{DATE_TINY}
############ Lists rail types
STR_RAIL_VEHICLES :Eisenbahn
STR_MONORAIL_VEHICLES :Monorail
STR_MAGLEV_VEHICLES :Magnetschwebebahn
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+57 -20
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Nem teheted ezt...
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Nem tisztíthatod meg a területet...
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright {COPYRIGHT} 1995 Chris Sawyer, Minden jog fenntartva
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Eredeti tervek: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafika: Simon Foster
STR_SPECIAL_THANKS :{BLACK}Külön köszönet nekik:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Elõszignálok és szemaforok {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Lejtõs sinek alapzata {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Csatorna/Zsilip grafika {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Az OpenTTD csapat
STR_TRANSLATED_BY :{BLACK} Fordítók -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Mérföld
STR_013A_METRIC_KILOMETERS :Kilométer
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nem v
STR_018B_CLOSE_WINDOW :{BLACK}Az ablak bezárása
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Az ablak címsora - húzd ezt a mozgatáshoz
STR_STICKY_BUTTON :{BLACK}Ez az ablak akkor se legyen becsukható ha az összes ablakot bezárjuk (Delete gomb)
STR_RESIZE_BUTTON :{BLACK}Fogd és húzd hogy átméretezd az ablakot
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Tárgyak lerombolása egy mezõrõl
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Egy pont lesüllyesztése
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Egy pont megemelése
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}
STR_020E_SUBSIDIES :{YELLOW}Támogatások
STR_020F_GENERAL_INFORMATION :{YELLOW}Általános információk
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...túl távol van az elõzõ céltól
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}A legjobb cégek, akik elérték 2050-et{}({STRING} szinten)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Legjobb cégek melyek elérték a {NUMU16}{}({STRING} Szintet)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Cégdicsõség tábla {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Üzletember
STR_0214_ENTREPRENEUR :Vállalkozó
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :T
STR_0217_MAGNATE :Mágnás
STR_0218_MOGUL :Fejes
STR_0219_TYCOON_OF_THE_CENTURY :Az évszázad iparmágnása
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} '{STRING}' rangot ért el!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING}, a közismert {STRING} cég elnöke '{STRING}' rangot ért el!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} elérte a '{STRING}' rangot!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} - {STRING} elérte a '{STRING}' rangot!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf be
STR_NEWGRF_SETTINGS2 :Newgrf beállítások
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Összes ablak bezárása
STR_CLOSE_ALL_WINDOWS2 :Összes ablak bezárása
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Városnevek mutatása
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Városnevek mutatása
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Állomásnevek mutatása
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :T
STR_02DE_MAP_OF_WORLD :Világtérkép
STR_EXTRA_VIEW_PORT :Extra látkép
STR_02DF_TOWN_DIRECTORY :Városlista
STR_TOWN_POPULATION :{BLACK}Világnépesség: {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}{COMMA16}. látkép
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Látkép aktualizálása
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Beállítja a globális látkép pozicióját erre a látképre
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Új gazdasági épület
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...csak városban építhetõ
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...csak esõerdõben építhetõ
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...csak sivatagban építhetõ
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Angol
STR_TOWNNAME_ORIGINAL_ENGLISH :Angol (Eredeti)
STR_TOWNNAME_FRENCH :Francia
STR_TOWNNAME_GERMAN :Német
STR_TOWNNAME_AMERICAN :Amerikai
STR_TOWNNAME_ADDITIONAL_ENGLISH :Angol (További)
STR_TOWNNAME_LATIN_AMERICAN :Latin-Amerikai
STR_TOWNNAME_SILLY :Komolytalan
STR_TOWNNAME_SWEDISH :Svéd
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Holland
STR_TOWNNAME_FINNISH :Finn
STR_TOWNNAME_POLISH :Lengyel
STR_TOWNNAME_SLOVAKISH :Szlovák
STR_TOWNNAME_NORWEGIAN :Norvég
STR_TOWNNAME_HUNGARIAN :Magyar
STR_TOWNNAME_AUSTRIAN :Osztrák
STR_TOWNNAME_ROMANIAN :Romániai
STR_TOWNNAME_CZECH :Cseh
STR_TOWNNAME_SWISS :Svájci
############ end of townname region
STR_CURR_GBP :Font ({POUNDSIGN})
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automat
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Automatán felújítja a jármûvet {ORANGE}{STRING}{LTBLUE} hónappal a max életkora elõtt/után
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Automata megújításhoz szükséges minimális pénz: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Hibaüzenetek megjelenítési ideje: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Mutassa a lakosságot a feliratban: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Láthatatlan fák (átlátszó épületekkel): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Hóhatár magassága: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Állomások legnagyobb kiterjedése: {ORANGE}{STRING} {RED}Figyelem: magas érték lelassítja a játékot
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Alap
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Alap szervízelési idõ a repülõkre: {ORANGE}kikapcsolva
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Alapértelmezett szervízelés hajóknak: {ORANGE}{STRING} naponta
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Alap szervízelési idõ a hajókra: {ORANGE}kikapcsolva
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Ne legyen szervízelés ha lerobbanások sincsenek: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Színes újságcikkek megjelenése: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Játék induló dátuma: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Játék befejezésének az éve: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Egyenletes gazdaság (több, kisebb változás)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Másik cégekbõl részvényt lehet vásárolni
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Amikor megragadom helyezzen lámpákat minden {ORANGE}{STRING}. mezõre
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}A fõ eszközsor helye: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Balra
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Nem lehet zsilipet
STR_BUILD_LOCKS_TIP :{BLACK}Zsilip építése
STR_LANDINFO_LOCK :Zsilip
STR_BUOY_IS_IN_USE :{WHITE}... a bóját használják!
STR_LANDINFO_COORDS :{BLACK}Koordináták: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}V
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}A vonat átalakítása a kijelölt áru szállítására
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Nem alakíthatod át a vonatot...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Szervízintervallumok százalékban: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Termelés megváltoztatása
TEMP_AI_IN_PROGRESS :{WHITE}Üdv, ez itt az új, fejlesztés alatt álló MI. Elõfordulhatnak gondok, problémák. Ha belefutsz egybe, kérlek készíts képernyõmentést küld be a fórumra. Jó játékot!
TEMP_AI_ACTIVATED :{WHITE}Figyelem: az új MI fejlesztés alatt áll! Jelenleg csak a teherautók és a buszok mûködnek!
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Nyelv: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tájtípus: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}A pálya nagysága: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Szerver verzió: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}A szerver címe: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}A szerver címe: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Kezdési dátum: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Jelenlegi dátum: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Jelszóval védve!
@@ -1317,7 +1324,7 @@ STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Regisztr
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Játékinfó lekérése..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Céginfó lekérése..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} kliens velünk szemben
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} kliensre várunk, hogy befejezze
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kilobájt lett eddig letöltve
STR_NETWORK_DISCONNECT :{BLACK}Lebontás
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Protokoll-hib
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} A te gépeden lévõ és a szerveren lévõ programnak nem egyezik meg a verziója.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Rossz jelszó.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} A szerver tele van
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Ki vagy tiltva errõl a szerverrõl
STR_NETWORK_ERR_KICKED :{WHITE} Ki lettél rúgva a szerverrõl
STR_NETWORK_ERR_CHEATER :{WHITE} Ez a szerver nem engedi a csalást
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :
##id 0x2000
STR_2000_TOWNS :{WHITE}Városok
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -1896,7 +1905,7 @@ STR_6806_COMPETITOR_START_TIME :{LTBLUE}Ellenfelek kezd
STR_6807_NO_OF_TOWNS :{LTBLUE}Városok száma: {ORANGE}{STRING}
STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Gazdasági épületek száma: {ORANGE}{STRING}
STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Kezdeti kölcsön: {ORANGE}{CURRENCY}
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Kezdõ kamatláb: {ORANGE}{COMMA16}%
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Éves kamatláb: {ORANGE}{COMMA16}%
STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Jármû fenntartási költség: {ORANGE}{STRING}
STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Ellenfelek építkezési sebessége: {ORANGE}{STRING}
STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Ellenfelek intelligenciája: {ORANGE}{STRING}
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Nem adhatsz el 25%-ot ebb
STR_707D_OWNED_BY :{WHITE}({COMMA16}% {STRING} tulajdona)
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% {STRING} tulajdona{} {COMMA16}% {STRING} tulajdona)
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} céget felvásárolta {STRING}!
STR_7080_PROTECTED :{WHITE}Ez a cég egyelõre még nem rendelkezik részvényekkel...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Gõz)
@@ -2385,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}{COMMA16}. vonat a jármûtelepen várakozik
STR_8815_NEW_VEHICLES :{BLACK}Új jármûvek
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Ár: {GOLD}{CURRENCY}{BLACK} Súly: {GOLD}{COMMA16}t{}{BLACK}Sebesség:{GOLD}{VELOCITY}{BLACK} Teljesítmény:{GOLD}{COMMA16}le{}{BLACK}Mûködtetési költség: {GOLD}{CURRENCY}/év{}{BLACK}Kapacitás: {GOLD}{STRING}{}{BLACK}Tervezés éve: {GOLD}{NUMU16}{BLACK} Élettartam: {GOLD}{COMMA16} év{}{BLACK}Legnagyobb megbízhatóság: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Ár: {GOLD}{CURRENCY}{BLACK} Súly: {GOLD}{COMMA16}t{}{BLACK}Sebesség: {GOLD}{VELOCITY}{BLACK} Teljesítmény: {GOLD}{COMMA32}lóerõ{}{BLACK}Üzemeltetési Költség: {GOLD}{CURRENCY}/év{}{BLACK}Kapacitás: {GOLD}{STRING}{}{BLACK}Tervezés éve: {GOLD}{NUMU16}{BLACK} Élettartam: {GOLD}{COMMA16} év{}{BLACK}Legnagyobb megbízhatóság: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Információk
STR_8819_TRAIN_TOO_LONG :{WHITE}Túl hosszú a vonat
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Csak a jármûtelepen álló vonatokat lehet megváltoztatni
@@ -2666,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Nem nevezheted
STR_A032_NAME_AIRCRAFT :{BLACK}Repülõgép átnevezése
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Az emberek ünnepelnek . . .{}Megérkezett az elsõ repülõgép {STATION} állomásra!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Lezuhant egy repülõgép!{}{COMMA16} ember halt meg a zuhanás után {STATION} állomáson
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Repülõ baleset!{}A repülõnek elfogyott az üzemanyaga, {COMMA16} ember halt meg a zuhanásban!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Célpontok:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Átnevez
@@ -2759,3 +2770,29 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Kilist
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Kilistázza az összes közúti jármûvet, aminek a menetrendjében szerepel ez az állomás
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Kilistázza az összes repülõt, aminek a menetrendjében szerepel ez az állomás
STR_SCHEDULED_SHIPS_TIP :{BLACK}Kilistázza az összes hajót, aminek a menetrendjében szerepel ez az állomás
STR_REPLACE_VEHICLES :{BLACK}Jármûvek lecserélése
STR_REPLACE_VEHICLES_WHITE :{WHITE}Jármûcsere
STR_REPLACE_VEHICLES_START :{BLACK}Jármûcsere elkezdése
STR_REPLACE_VEHICLES_STOP :{BLACK}Jármûcsere befejezése
STR_NOT_REPLACING :{BLACK}Nem cserélendõ
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nincs kiválasztva jármû
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Válaszd ki mely mozdonyokat cseréljük
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}A bal oldalon kiválasztott mozdonyok ilyen típusuakra lesznek lecserélve
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Nyomd meg ezt a gombot, ha nem akarod kicserélni a mozdonyt a bal oldalon kiválasztottakra
STR_REPLACE_HELP_START_BUTTON :{BLACK}Nyomd meg ezt a gombot hogy a bal oldalon kiválasztott mozdonyokat lecseréld a jobb oldalon kiválasztottra
STR_REPLACE_HELP_RAILTYPE :{BLACK}Válaszd ki a cserélendõ vasúttípust
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Megmutatja, hogy melyik bal oldali mozdonyt akarod kicserélni
STR_REPLACE_HELP :{BLACK}Ez az opció lehetõve teszi, hogy kiválassz mozdonytípust és lecseréld másfajtára. Ez aztán automatikusan fog megtörténni, amikor a jármû karbantartásra a depóba megy
STR_SHORT_DATE :{WHITE}{DATE_TINY}
############ Lists rail types
STR_RAIL_VEHICLES :Normál Vasutak
STR_MONORAIL_VEHICLES :Egysínû Vasutak
STR_MAGLEV_VEHICLES :Maglev Vasutak
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+294 -125
View File
@@ -25,7 +25,7 @@ STR_0013_LIVESTOCK :Nautgripir
STR_0014_GOODS :Vörur
STR_0015_GRAIN :Korn
STR_0016_WOOD :Timbur
STR_0017_IRON_ORE :Járn
STR_0017_IRON_ORE :Járngrýti
STR_0018_STEEL :Stál
STR_0019_VALUABLES :Verðmæti
STR_001A_COPPER_ORE :Kopar
@@ -42,7 +42,7 @@ STR_0024_SUGAR :Sykur
STR_0025_TOYS :Leikföng
STR_0026_CANDY :Sælgæti
STR_0027_COLA :Kóladrykkir
STR_0028_COTTON_CANDY :Kandís
STR_0028_COTTON_CANDY :Sykurfrauð
STR_0029_BUBBLES :Kúlur
STR_002A_TOFFEE :Toffý
STR_002B_BATTERIES :Rafhlöður
@@ -57,7 +57,7 @@ STR_0033_LIVESTOCK :Nautgripur
STR_0034_GOODS :Vörur
STR_0035_GRAIN :Korn
STR_0036_WOOD :Timbur
STR_0037_IRON_ORE :Járn
STR_0037_IRON_ORE :Járngrýti
STR_0038_STEEL :Stál
STR_0039_VALUABLES :Verðmæti
STR_003A_COPPER_ORE :Kopar
@@ -74,7 +74,7 @@ STR_0044_SUGAR :Sykur
STR_0045_TOY :Leikfang
STR_0046_CANDY :Sælgæti
STR_0047_COLA :Kóladrykkur
STR_0048_COTTON_CANDY :Kandís
STR_0048_COTTON_CANDY :Sykurfrauð
STR_0049_BUBBLE :Kúla
STR_004A_TOFFEE :Toffý
STR_004B_BATTERY :Rafhlaða
@@ -89,7 +89,7 @@ STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} nautgripur
STR_0054_CRATE_OF_GOODS :{COMMA16} kassi af vörum
STR_0055_TON_OF_GRAIN :{COMMA16} tonn af korni
STR_0056_TON_OF_WOOD :{COMMA16} tonn af timbri
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonn af járni
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonn af járngrýti
STR_0058_TON_OF_STEEL :{COMMA16} tonn af stáli
STR_0059_BAG_OF_VALUABLES :{COMMA16} poki af verðmætum
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tonn af kopar
@@ -106,7 +106,7 @@ STR_0064_TON_OF_SUGAR :{COMMA16} tonn af sykri
STR_0065_TOY :{COMMA16} leikfang
STR_0066_BAG_OF_CANDY :{COMMA16} poki af sælgæti
STR_0067_OF_COLA :{VOLUME} af kóladrykk
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} tonn af kandís
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} tonn af sykurfrauði
STR_0069_BUBBLE :{COMMA16} kúla
STR_006A_TON_OF_TOFFEE :{COMMA16} tonn af toffý
STR_006B_BATTERY :{COMMA16} rafhlaða
@@ -121,7 +121,7 @@ STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} nautgripir
STR_0074_CRATES_OF_GOODS :{COMMA16} kassar af vörum
STR_0075_TONS_OF_GRAIN :{COMMA16} tonn af korni
STR_0076_TONS_OF_WOOD :{COMMA16} tonn af timbri
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonn af járni
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonn af járngrýti
STR_0078_TONS_OF_STEEL :{COMMA16} tonn af stáli
STR_0079_BAGS_OF_VALUABLES :{COMMA16} pokar af verðmætum
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tonn af kopar
@@ -138,7 +138,7 @@ STR_0084_TONS_OF_SUGAR :{COMMA16} tonn af sykri
STR_0085_TOYS :{COMMA16} leikföng
STR_0086_BAGS_OF_CANDY :{COMMA16} pokar af sælgæti
STR_0087_OF_COLA :{VOLUME} af kóla
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} tonn af kandís
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} tonn af sykurfrauði
STR_0089_BUBBLES :{COMMA16} kúlur
STR_008A_TONS_OF_TOFFEE :{COMMA16} tonn af toffý
STR_008B_BATTERIES :{COMMA16} rafhlöður
@@ -186,11 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Get ekki gert
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Get ekki hreinsað þetta svæði....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Upphaflegur höfundarréttur {COPYRIGHT} 1995 Chris Sawyer, Öll réttindi áskilin
STR_00B7_VERSION :{BLACK}OpenTTD útgáfa {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Upphafleg hönnun: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Upphafleg grafík: Simon Foster
STR_SPECIAL_THANKS :{BLACK}Sérstakar þakkir:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Forljós og lestaskilti {COPYRIGHT} 2003 Michael Blunck
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD hópurinn
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 OpenTTD hópurinn
STR_TRANSLATED_BY :{BLACK} Þýðendur -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -259,15 +256,15 @@ STR_0104_STEEL_MILL :{BLACK}{TINYFONT}St
STR_0105_BANK :{BLACK}{TINYFONT}Banki
STR_0106_PAPER_MILL :{BLACK}{TINYFONT}Pappírsverksmiðja
STR_0107_GOLD_MINE :{BLACK}{TINYFONT}Gullnáma
STR_0108_FOOD_PROCESSING_PLANT :{BLACK}{TINYFONT}Matvælaverksmiðja
STR_0108_FOOD_PROCESSING_PLANT :{BLACK}{TINYFONT}Matvinnslufyrirtæki
STR_0109_DIAMOND_MINE :{BLACK}{TINYFONT}Demantanáma
STR_010A_COPPER_ORE_MINE :{BLACK}{TINYFONT}Koparnáma
STR_010B_FRUIT_PLANTATION :{BLACK}{TINYFONT}Ávaxtaplantekra
STR_010C_RUBBER_PLANTATION :{BLACK}{TINYFONT}Gúmmíplantekra
STR_010D_WATER_SUPPLY :{BLACK}{TINYFONT}Vatnsbirgir
STR_010D_WATER_SUPPLY :{BLACK}{TINYFONT}Vatnsbirgi
STR_010E_WATER_TOWER :{BLACK}{TINYFONT}Vatnsturn
STR_010F_LUMBER_MILL :{BLACK}{TINYFONT}Timburverksmiðja
STR_0110_COTTON_CANDY_FOREST :{BLACK}{TINYFONT}Kandísskógur
STR_0110_COTTON_CANDY_FOREST :{BLACK}{TINYFONT}Sykurfrauðsskógur
STR_0111_CANDY_FACTORY :{BLACK}{TINYFONT}Sælgætisverksmiðja
STR_0112_BATTERY_FARM :{BLACK}{TINYFONT}Rafhlöðubýli
STR_0113_COLA_WELLS :{BLACK}{TINYFONT}Kólalindir
@@ -279,7 +276,7 @@ STR_0118_BUBBLE_GENERATOR :{BLACK}{TINYFONT}K
STR_0119_TOFFEE_QUARRY :{BLACK}{TINYFONT}Toffýæð
STR_011A_SUGAR_MINE :{BLACK}{TINYFONT}Sykurnáma
STR_011B_RAILROAD_STATION :{BLACK}{TINYFONT}Lestarstöð
STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Trukkaskýli
STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Vörubílastöð
STR_011D_BUS_STATION :{BLACK}{TINYFONT}Strætóstoppistöð
STR_011E_AIRPORT_HELIPORT :{BLACK}{TINYFONT}Flugvöllur/Þyrlupallur
STR_011F_DOCK :{BLACK}{TINYFONT}Bryggja
@@ -309,6 +306,7 @@ STR_0135_OSX :OS X
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Amerískt (mílur)
STR_013A_METRIC_KILOMETERS :Metrakerfið (kílómetrar)
@@ -352,6 +350,7 @@ STR_015F_QUIT :H
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Ertu viss um að þú viljir hætta í þessum leik ?
STR_0161_QUIT_GAME :{WHITE}Hætta leik
STR_SORT_ORDER_TIP :{BLACK}Velja uppröðun (minnkandi/stækkandi)
STR_SORT_CRITERIA_TIP :{BLACK}Velja uppröðun
SRT_SORT_BY :{BLACK}Flokka eftir
STR_SORT_BY_POPULATION :{BLACK}Fólksfjöldi
@@ -408,7 +407,7 @@ STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Leggja lestartein
STR_0182_BUILD_ROADS :{BLACK}Leggja veg
STR_0183_BUILD_SHIP_DOCKS :{BLACK}Byggja höfn
STR_0184_BUILD_AIRPORTS :{BLACK}Byggja flugvöll
STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}Planta trjám, setja skilti o.s.frv.
STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}Gróðursetja tré, setja skilti o.s.frv.
STR_0186_LAND_BLOCK_INFORMATION :{BLACK}Landssvæðisupplýsingar
STR_0187_OPTIONS :{BLACK}Stillingar
STR_0188 :{BLACK}{SMALLUPARROW}
@@ -417,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Get ekki breytt vi
STR_018B_CLOSE_WINDOW :{BLACK}Loka glugga
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titill glugga - dragðu þetta til að færa gluggann
STR_STICKY_BUTTON :{BLACK}Merkja þennan glugga sem ólokanlegan fyrir
STR_RESIZE_BUTTON :{BLACK}Ýttu og dragðu til að breyta stærð gluggans
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Eyða byggingum o.s.frv. á lóðarreiti
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Lækka horn af landssvæði
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Lyfta horni af landssvæði
@@ -436,14 +436,14 @@ STR_019A_YEARS :{COMMA16}
STR_019B_YEARS :{RED}{COMMA16} ár ({COMMA16})
############ range for service numbers ends
STR_019C_ROAD_VEHICLE :Götufarartæki
STR_019C_ROAD_VEHICLE :Bifreið
STR_019D_AIRCRAFT :Flugvél
STR_019E_SHIP :Skip
STR_019F_TRAIN :Lest
STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA16} er að eldast
STR_01A1_IS_GETTING_VERY_OLD :{WHITE}{STRING} {COMMA16} er að eldast um of
STR_01A2_IS_GETTING_VERY_OLD_AND :{WHITE}{STRING} {COMMA16} er að eldast um of og þarfnast nauðsynlega endurnýjunar
STR_01A3_LAND_AREA_INFORMATION :{WHITE}Landssvæðisupplýsingar
STR_01A3_LAND_AREA_INFORMATION :{WHITE}Landsvæðisupplýsingar
STR_01A4_COST_TO_CLEAR_N_A :{BLACK}Kostnaður við hreinsun: {LTBLUE}N/A
STR_01A5_COST_TO_CLEAR :{BLACK}Kostnaður við hreinsun: {LTBLUE}{CURRENCY}
STR_01A6_N_A :Ekki til
@@ -535,7 +535,7 @@ STR_01F1_SAVE :{TINYFONT}{BLACK}Vista
STR_01F2_CURRENT_PROGRAM_OF_MUSIC :{BLACK}Núverandi lagalisti
STR_01F3_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Velja 'öll lög' listann
STR_01F4_SELECT_OLD_STYLE_MUSIC :{BLACK}Velja 'gamli stíll' listann
STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Velja 'nýji stíll' listann
STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Velja 'nýi stíll' listann
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Velja 'Sérval 1' (valið af notanda) listann
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Velja 'Sérval 2' (valið af notanda) listann
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Hreinsa núverandi lista (aðeins Sérval1 eða Sérval2)
@@ -564,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Breyting
STR_020E_SUBSIDIES :{YELLOW}Samstarfssamningar
STR_020F_GENERAL_INFORMATION :{YELLOW}Almennar upplýsingar
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...of langt frá fyrrverandi stað
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Topp fyrirtæki sem störfuðu til ársins 2050{}({STRING} Metorðastig)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Efstu fyrirtæki sem náðu {NUMU16}{}({STRING} stig)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Sambandstafla fyrirtækis í {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Viðskiptamaður
STR_0214_ENTREPRENEUR :Athafnamaður
@@ -573,9 +574,10 @@ STR_0216_CAPITALIST :Kap
STR_0217_MAGNATE :Áhrifamaður
STR_0218_MOGUL :Stórlax
STR_0219_TYCOON_OF_THE_CENTURY :Viðskiptajöfur aldarinnar
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} öðlast '{STRING}' titil!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} úr {STRING} öðlast '{STRING}' titil!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} öðlast '{STRING}' titil!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} úr {STRING} öðlast '{STRING}' titil!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -623,18 +625,18 @@ STR_0248_FARM :{BLACK}B
STR_0249_IRON_ORE_MINE :{BLACK}Járnnáma
STR_024A_OIL_WELLS :{BLACK}Olíulindir
STR_024B_BANK :{BLACK}Banki
STR_024C_PAPER_MILL :{BLACK}Pappírsvinnsla
STR_024C_PAPER_MILL :{BLACK}Pappírsverksmiðja
STR_024D_FOOD_PROCESSING_PLANT :{BLACK}Matvinnslufyrirtæki
STR_024E_PRINTING_WORKS :{BLACK}Prentsmiðja
STR_024F_GOLD_MINE :{BLACK}Gullnáma
STR_0250_LUMBER_MILL :{BLACK}Timburverksmiðja
STR_0251_FRUIT_PLANTATION :{BLACK}Ávaxtaekra
STR_0251_FRUIT_PLANTATION :{BLACK}Ávaxtaplantekra
STR_0252_RUBBER_PLANTATION :{BLACK}Gúmmíplantekra
STR_0253_WATER_SUPPLY :{BLACK}Vatnsbirgir
STR_0253_WATER_SUPPLY :{BLACK}Vatnsbirgi
STR_0254_WATER_TOWER :{BLACK}Vatnsturn
STR_0255_DIAMOND_MINE :{BLACK}Demantanáma
STR_0256_COPPER_ORE_MINE :{BLACK}Koparnáma
STR_0257_COTTON_CANDY_FOREST :{BLACK}Kandísskógur
STR_0257_COTTON_CANDY_FOREST :{BLACK}Sykurfrauðsskógur
STR_0258_CANDY_FACTORY :{BLACK}Sælgætisverksmiðja
STR_0259_BATTERY_FARM :{BLACK}Rafhlöðubýli
STR_025A_COLA_WELLS :{BLACK}Kólalindir
@@ -647,29 +649,29 @@ STR_0260_TOFFEE_QUARRY :{BLACK}Toff
STR_0261_SUGAR_MINE :{BLACK}Sykurnáma
STR_0262_CONSTRUCT_COAL_MINE :{BLACK}Byggja Kolanámu
STR_0263_CONSTRUCT_POWER_STATION :{BLACK}Byggja Rafmagnsstöð
STR_0264_CONSTRUCT_SAWMILL :{BLACK}Reisa timburverksmiðju
STR_0265_PLANT_FOREST :{BLACK}Planta Skógi
STR_0264_CONSTRUCT_SAWMILL :{BLACK}Reisa Timburverksmiðju
STR_0265_PLANT_FOREST :{BLACK}Gróðursetja Skóg
STR_0266_CONSTRUCT_OIL_REFINERY :{BLACK}Byggja Olíuhreinsunarstöð
STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY :{BLACK}Byggja Olíuborpall (aðeins hægt að byggja við brúnir kortsins)
STR_0268_CONSTRUCT_FACTORY :{BLACK}Byggja Verksmiðju
STR_0269_CONSTRUCT_STEEL_MILL :{BLACK}Byggja Stálbræðslu
STR_026A_CONSTRUCT_FARM :{BLACK}Byggja Býli
STR_026B_CONSTRUCT_IRON_ORE_MINE :{BLACK}Byggja Járnnámu
STR_026B_CONSTRUCT_IRON_ORE_MINE :{BLACK}Grafa Járnnámu
STR_026C_CONSTRUCT_OIL_WELLS :{BLACK}Byggja Olíulindir
STR_026D_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Byggja Banka (aðeins hægt að byggja í bæjum með fleiri en 1200 íbúum)
STR_026E_CONSTRUCT_PAPER_MILL :{BLACK}Byggja Pappírsvinnslu
STR_026F_CONSTRUCT_FOOD_PROCESSING :{BLACK}Reisa matvinnslufyrirtæki
STR_026E_CONSTRUCT_PAPER_MILL :{BLACK}Reisa pappírsverksmiðju
STR_026F_CONSTRUCT_FOOD_PROCESSING :{BLACK}Reisa Matvinnslufyrirtæki
STR_0270_CONSTRUCT_PRINTING_WORKS :{BLACK}Byggja Prentsmiðju
STR_0271_CONSTRUCT_GOLD_MINE :{BLACK}Byggja Gullnámu
STR_0272_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Byggja Banka (aðeins hægt að byggja í bæjum)
STR_0273_CONSTRUCT_LUMBER_MILL_TO :{BLACK}Reisa timburverksmiðju (til að fella regnskóga og framleiða timbur)
STR_0274_PLANT_FRUIT_PLANTATION :{BLACK}Planta Ávaxtaekrum
STR_0275_PLANT_RUBBER_PLANTATION :{BLACK}Planta Gúmmíplantekrum
STR_0276_CONSTRUCT_WATER_SUPPLY :{BLACK}Reisa vatnsbirgi
STR_0274_PLANT_FRUIT_PLANTATION :{BLACK}Gróðursetja Ávexti
STR_0275_PLANT_RUBBER_PLANTATION :{BLACK}Gróðursetja Gúmmí
STR_0276_CONSTRUCT_WATER_SUPPLY :{BLACK}Reisa Vatnsbirgi
STR_0277_CONSTRUCT_WATER_TOWER_CAN :{BLACK}Byggja Vatnsturn (aðeins hægt að byggja í bæjum)
STR_0278_CONSTRUCT_DIAMOND_MINE :{BLACK}Byggja Demantanámu
STR_0279_CONSTRUCT_COPPER_ORE_MINE :{BLACK}Byggja Koparnámu
STR_027A_PLANT_COTTON_CANDY_FOREST :{BLACK}Planta Kandísskógi
STR_027A_PLANT_COTTON_CANDY_FOREST :{BLACK}Gróðursetja sykurfrauðsskóg
STR_027B_CONSTRUCT_CANDY_FACTORY :{BLACK}Byggja Sælgætisverksmiðju
STR_027C_CONSTRUCT_BATTERY_FARM :{BLACK}Byggja Rafhlöðubýli
STR_027D_CONSTRUCT_COLA_WELLS :{BLACK}Byggja Kólalindir
@@ -683,27 +685,27 @@ STR_0284_CONSTRUCT_SUGAR_MINE :{BLACK}Byggja Sykurn
STR_0285_CAN_T_BUILD_HERE :{WHITE}Get ekki byggt {STRING} hérna...
STR_0286_MUST_BUILD_TOWN_FIRST :{WHITE}...verður að byggja bæ first
STR_0287_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}...aðeins eitt stykki á hvern bæ
STR_0288_PLANT_TREES :{BLACK}Planta trjám
STR_0288_PLANT_TREES :{BLACK}Gróðursetja tré
STR_0289_PLACE_SIGN :{BLACK}Setja skilti
STR_028A_RANDOM_TREES :{BLACK}Tré af handahófi
STR_028B_PLANT_TREES_RANDOMLY_OVER :{BLACK}Planta trjám af handahófi á landið
STR_028B_PLANT_TREES_RANDOMLY_OVER :{BLACK}Gróðursetja tré af handahófi á landið
STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Setja klettasvæði á landið
STR_028D_PLACE_LIGHTHOUSE :{BLACK}Setja vita
STR_028E_PLACE_TRANSMITTER :{BLACK}Setja sendi
STR_028F_DEFINE_DESERT_AREA :{BLACK}Skilgreina eyðimerkursvæði
STR_0290_DELETE :{BLACK}Eyða
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Eyða þessum bæ algjörlega
STR_0292_SAVE_SCENARIO :Vista land
STR_0293_LOAD_SCENARIO :Opna land
STR_0294_QUIT_EDITOR :Hætta í landgerð
STR_0292_SAVE_SCENARIO :Vista kort
STR_0293_LOAD_SCENARIO :Opna kort
STR_0294_QUIT_EDITOR :Hætta í kortagerð
STR_0295 :
STR_0296_QUIT :Hætta í OpenTTD
STR_0297_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Vista land, opna land, hætta í landgerð, hætta í OpenTTD
STR_0298_LOAD_SCENARIO :{WHITE}Opna land
STR_0299_SAVE_SCENARIO :{WHITE}Vista land
STR_029A_PLAY_SCENARIO :{BLACK}Spila land
STR_029B_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Ertu viss um að þú viljir hætta í þessu landi ?
STR_029C_QUIT_EDITOR :{WHITE}Hætta í landgerð
STR_0297_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Vista kort, opna kort, hætta í kortagerð, hætta í OpenTTD
STR_0298_LOAD_SCENARIO :{WHITE}Opna kort
STR_0299_SAVE_SCENARIO :{WHITE}Vista kort
STR_029A_PLAY_SCENARIO :{BLACK}Spila kort
STR_029B_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Ertu viss um að þú viljir hætta í þessu korti ?
STR_029C_QUIT_EDITOR :{WHITE}Hætta í kortagerð
STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...aðeins hægt að byggja í bæjum með fleiri en 1200 íbúum
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}Færa byrjunardagsetninguna aftur um 1 ár
STR_029F_MOVE_THE_STARTING_DATE :{BLACK}Færa byrjunardagsetninguna fram um 1 ár
@@ -739,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf stillingar
STR_NEWGRF_SETTINGS2 :Newgrf stillingar
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Loka ÖLLUM gluggum
STR_CLOSE_ALL_WINDOWS2 :Loka ÖLLUM gluggum
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Bæjarnöfn sýnd
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Bæjarnöfn sýnd
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stöðvarnöfn sýnd
@@ -760,8 +760,8 @@ STR_02D4_TRANSPARENT_BUILDINGS :{SETX 12}Gegns
############ range for menu starts
STR_02D5_LAND_BLOCK_INFO :Landssvæðisupplýsingar
STR_02D6 :
STR_02D7_SCREENSHOT_CTRL_S :Skjáskot (Ctrl-S)
STR_02D8_GIANT_SCREENSHOT_CTRL_G :Risa skjáskot (Ctrl-G)
STR_02D7_SCREENSHOT_CTRL_S :Skjámynd (Ctrl-S)
STR_02D8_GIANT_SCREENSHOT_CTRL_G :Risa skjámynd (Ctrl-G)
STR_02D9_ABOUT_OPENTTD :Um 'OpenTTD'
############ range ends here
@@ -772,6 +772,7 @@ STR_02DD_SUBSIDIES :Samstarfssamningar
STR_02DE_MAP_OF_WORLD :Heimskort
STR_EXTRA_VIEW_PORT :Auka sjónarhorn
STR_02DF_TOWN_DIRECTORY :Bæjarmappa
STR_TOWN_POPULATION :{BLACK}Heildaríbúafjöldi: {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Sjónarhorn {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Afrita í sjónarhorn
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Afrita aðalsjónarhornið í sjónarhornsrammann
@@ -784,7 +785,7 @@ STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Val
STR_02E3_DISTANCE_UNITS :{BLACK}Fjarlægðareining
STR_02E4 :{BLACK}{SKIP}{SKIP}{STRING}
STR_02E5_DISTANCE_UNITS_SELECTION :{BLACK}Val á fjarlægðareiningu
STR_02E6_ROAD_VEHICLES :{BLACK}Götufarartæki
STR_02E6_ROAD_VEHICLES :{BLACK}Bifreið
STR_02E7 :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
STR_02E8_SELECT_SIDE_OF_ROAD_FOR :{BLACK}Veldu vegarhelming fyrir bifreiðir
STR_02E9_DRIVE_ON_LEFT :Keyra vinstra megin
@@ -808,7 +809,7 @@ STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Velja einspilunarleik
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Velja 2-8 leikmanna fjölspilunarleik
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Sýna Leikjastillingar
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Sýna Erfiðleikastig
STR_0303_START_A_NEW_GAME_USING :{BLACK}Byrja nýjan leik, í eigin landi
STR_0303_START_A_NEW_GAME_USING :{BLACK}Byrja nýjan leik, í sérvöldu korti
STR_0304_QUIT :{BLACK}Hætta í OpenTTD
STR_0305_QUIT_OPENTTD :{BLACK}Hætta í OpenTTD
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Sjá sýnikennslu/leiðbeiningar
@@ -821,36 +822,37 @@ STR_0311_SELECT_TOYLAND_LANDSCAPE :{BLACK}Velja leikfangalandslag
STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fjármagna byggingu nýs iðnaðars
############ range for menu starts
STR_INDUSTRY_DIR :Iðnaðalisti
STR_0313_FUND_NEW_INDUSTRY :Fjármagna nýjan iðnað
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fjármagna nýjan iðnað
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...aðeins hægt að byggja í bæjum
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...aðeins hægt að byggja á regnskógasvæðum
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...aðeins hægt að byggja í eyðimörk
STR_0319_PAUSED :{YELLOW}* * STOPPAÐUR * *
STR_031B_SCREENSHOT_SUCCESSFULLY :{WHITE}Skjáskot vistað sem '{STRING}'
STR_031C_SCREENSHOT_FAILED :{WHITE}Skjáskot mistókst!
STR_031B_SCREENSHOT_SUCCESSFULLY :{WHITE}Skjámynd vistuð sem '{STRING}'
STR_031C_SCREENSHOT_FAILED :{WHITE}Ekki tókst að taka skjámynd!
STR_0329_PURCHASE_LAND_FOR_FUTURE :{BLACK}Kaupa landssvæði til notkunar síðar
STR_032A_1_ROAD_VEHICLE_SERVICE :{BLACK}1: Götufarartkjaþjónusta
STR_032A_1_ROAD_VEHICLE_SERVICE :{BLACK}1: Bifreiðarþjónusta
STR_032B_2_RAILROAD_SERVICE :{BLACK}2: Lestarþjónusta
STR_032C_3_AIR_SERVICE :{BLACK}3: Loftþjónusta
STR_032D_4_SHIP_SERVICE :{BLACK}4: Skipaþjónusta
STR_032E_5_RAILROAD_SERVICE_ADVANCED :{BLACK}5: Lestarþjónusta (sérhæft)
STR_032F_AUTOSAVE :{RED}AUTOSAVE
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Velja 'Ezy Street' listann
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Velja 'Ezy gata' listann
STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Ensk
STR_TOWNNAME_ORIGINAL_ENGLISH :Ensk
STR_TOWNNAME_FRENCH :Frönsk
STR_TOWNNAME_GERMAN :Þýsk
STR_TOWNNAME_AMERICAN :Amerísk
STR_TOWNNAME_ADDITIONAL_ENGLISH :Enska (Aukaleg)
STR_TOWNNAME_LATIN_AMERICAN :Latin-Amerísk
STR_TOWNNAME_SILLY :Fáránleg
STR_TOWNNAME_SWEDISH :Sænsk
@@ -858,14 +860,16 @@ STR_TOWNNAME_DUTCH :Hollensk
STR_TOWNNAME_FINNISH :Finnsk
STR_TOWNNAME_POLISH :Pólsk
STR_TOWNNAME_SLOVAKISH :Slóvakísk
STR_TOWNNAME_NORWEGIAN :Norska
STR_TOWNNAME_HUNGARIAN :Ungversk
STR_TOWNNAME_AUSTRIAN :Austurrísk
STR_TOWNNAME_ROMANIAN :Rúmensk
STR_TOWNNAME_CZECH :Tékknesk
STR_TOWNNAME_SWISS :Svissneska
############ end of townname region
STR_CURR_GBP :Pund ({POUNDSIGN})
STR_CURR_USD :Dalir ($)
STR_CURR_USD :Bandaríkjadalir ($)
STR_CURR_EUR :Evra (¤)
STR_CURR_YEN :Jen ({YENSIGN})
STR_CURR_ATS :Austurrískur skildingur (ATS)
@@ -884,7 +888,7 @@ STR_CURR_ITL :
STR_CURR_NLG :Hollensk Gyllini (NLG)
STR_CURR_NOK :Norsk króna (NOK)
STR_CURR_PLN :Pólsk Zloty (PLN)
STR_CURR_ROL :Rúmensk leu (Lei)
STR_CURR_ROL :Rúmensk Leu (Lei)
STR_CURR_RUR :Rússnesk Rúbla (rur)
STR_CURR_SEK :Sænsk Króna (SEK)
@@ -901,9 +905,9 @@ STR_OPTIONS_RES :{BLACK}Skj
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Veldu skjáupplausn
STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Form skjáskota
STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Form skjámynda
STR_OPTIONS_SCREENSHOT_FORMAT_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Veldu form skjáskota
STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Veldu form skjámynda
STR_AUTOSAVE_1_MONTH :Í hverjum mánuði
STR_AUTOSAVE_FAILED :{WHITE}Sjálfvirk vistun mistókst
@@ -914,7 +918,7 @@ STR_MONTH_MAR :Mars
STR_MONTH_APR :Apríl
STR_MONTH_MAY :Maí
STR_MONTH_JUN :Júní
STR_MONTH_JUL :Júlý
STR_MONTH_JUL :Júlí
STR_MONTH_AUG :Ágúst
STR_MONTH_SEP :September
STR_MONTH_OCT :Október
@@ -927,7 +931,7 @@ STR_NO_ORDERS :{LTBLUE}Engar skipanir
STR_NO_ORDERS_VEL :{LTBLUE}Engar skipanir, {VELOCITY}
STR_PASSENGERS :farþegar
STR_BAGS :töskur
STR_BAGS :pokar
STR_TONS :tonn
STR_LITERS :lítrar
STR_ITEMS :hlutir
@@ -976,11 +980,13 @@ STR_CONFIG_PATCHES_OFF :Nei
STR_CONFIG_PATCHES_ON :Já
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Sýna hraða farartækis í upplýsingaslá: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Leyfilegt að byggja í halla og á strönd: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Raunverulegri stærð svæðis sem stöðvar ná yfir: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Leyfa meiri eyðingu vega, brúa, gangna o.s.frv. í eigu bæjar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Leyfa byggingu mjög langra lesta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Raunveruleg stöðvun lesta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Raunveruleg hröðun lesta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Sameina lestarstöðvar sem byggðar eru samsíða: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Yfirgefa lestarstöð þegar einhver farmur er fullur, ef kveikt er á 'fullhlaða': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Nota endurbættan algóriþma við hleðslu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Verðbólga: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Aðeins afhlaða farmi á stöðvum þar sem er eftirspurn: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Leyfa byggingu mjög langra brúa: {ORANGE}{STRING}
@@ -991,14 +997,15 @@ STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}M
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Sýna alltaf fulla dagsetningu í upplýsingaslá: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Sýna umferðarljós akstursmegin: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}Show finances window at the end of the year: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Götufarartæki fara í biðraðir(með stórvægilegum aukaverkunum): {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}TTDPatch samhæfð meðhöndlun stansleysu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Bifreiðir fara í biðraðir (með stórvægilegum aukaverkunum): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Færa sjónarhorn þegar músin nálgast brún gluggans: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Leyfilegt að múta bæjaryfirvöldum: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_DEPOT_FINDING :{LTBLUE}Lestar finna ný skýli: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Órétthyrndar lestarstöðvar leyfðar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_TRAIN_PATHFIND :{LTBLUE}Nýr algrímur fyrir leiðarfund lesta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Leyfa ætíð litla flugvelli: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Alltaf leyfa litla flugvelli: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS :{LTBLUE}Lest týnist ef hún er aðgerðalaus í: {ORANGE}{STRING} daga
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS_DISABLED :{LTBLUE}Lest týnist ef hún er aðgerðalaus í: {ORANGE}óvirkt
@@ -1012,13 +1019,14 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Uppf
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Uppfæra farartæki sjálfkrafa {ORANGE}{STRING}{LTBLUE} mánuðum fyrir/eftir hámarksaldur þess
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Lægsta upphæð peninga sem þörf er á fyrir sjálfvirka uppfæringu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Birtingartími villuskilaboða: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Sýna íbúafjölda í bæjarmerki: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Ósýnileg tré (með gagnsæjum byggingum): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Hæð snjólínu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Dreyfing stöðva mest: {ORANGE}{STRING} {RED}Ath.: Há stilling hægir á leiknum
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Skoða þyrlur sjálfvirkt á þyrlupalli: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Lestir á leikmann mest: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Birfreiðir á leikmann mest: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Bifreiðir á leikmann mest: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Flugvélar á leikmann mest: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_SHIPS :{LTBLUE}Skip á leikmann mest: {ORANGE}{STRING}
@@ -1029,23 +1037,28 @@ STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}
STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Virkja nýja gervigreind (alfa): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Venjuleg bið milli skoðana á lestum: {ORANGE}{STRING} dagar/%
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Venjuleg bið milli skoðana á lestum: {ORANGE}óvirkt
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Venjuleg bið milli skoðana á bílum: {ORANGE}{STRING} dagar/%
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Venjuleg bið milli skoðana á bílum: {ORANGE}óvrikt
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Venjuleg bið milli skoðana á flugvélum: {ORANGE}{STRING} dagar/%
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Venjuleg bið milli skoðana á flugvélum: {ORANGE}óvrikt
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Venjuleg bið milli skoðana á skipum: {ORANGE}{STRING} dagar/%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Venjuleg bið milli skoðana á skipum: {ORANGE}óvirkt
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Bið milli skoðana á lestum: {ORANGE}{STRING} dagar/%
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Bið milli skoðana á lestum: {ORANGE}óvirkt
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Bið milli skoðana á bílum: {ORANGE}{STRING} dagar/%
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Bið milli skoðana á bílum: {ORANGE}óvrikt
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Bið milli skoðana á flugvélum: {ORANGE}{STRING} dagar/%
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Bið milli skoðana á flugvélum: {ORANGE}óvrikt
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Bið milli skoðana á skipum: {ORANGE}{STRING} dagar/%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Bið milli skoðana á skipum: {ORANGE}óvirkt
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Hætta skoðunum þegar bilanir eru afvirktar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Fréttir birtast í lit: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Upphafsár: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Enda leik árið: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Virkja jafnan efnahag (fleiri og minni breytingar)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Leyfa hlutabréfakaup í öðrum fyrirtækjum
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Þegar dregið er, setja skilti á: {ORANGE}{STRING} hvern reit
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Staðsetning tækjasláar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Vinstri
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Miðjað
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Hægri
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Gluggar smella saman við: {ORANGE}{STRING} punkta radíus
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Gluggar smella: {ORANGE}ekki saman
STR_CONFIG_PATCHES_GUI :{BLACK}Viðmót
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Bygging
@@ -1059,6 +1072,7 @@ STR_CONFIG_PATCHES_INT32 :{INT32}
STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Breyta gildi stillingar
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Einhver eða öll bil milli skoðana hér fyrir neðan eru ósamhæfanleg við valdar stillingar! 5-90% og 30-800 dagar er leyfilegt
STR_TEMPERATE_LANDSCAPE :Temprað landslag
STR_SUB_ARCTIC_LANDSCAPE :Heimskautalandslag
@@ -1067,11 +1081,11 @@ STR_TOYLAND_LANDSCAPE :Leikfangalandslag
STR_CHEATS :{WHITE}Svindl
STR_CHEATS_TIP :{BLACK}Valreitur segir til um ef þú hefur notað þetta svindl áður
STR_CHEATS_WARNING :{BLACK}Aðvörun! Þú ert í þann mund að svíkja samkeppendur þína. Hafðu í huga að svoleiðs svívirðing mun ætíð höfð í minnum.
STR_CHEATS_WARNING :{BLACK}Aðvörun! Þú ert í þann mund að svíkja samkeppendur þína. Hafðu í huga að svoleiðis svívirðing mun ætíð höfð í minnum.
STR_CHEAT_MONEY :{LTBLUE}Auka pening um {CURRENCY64}
STR_CHEAT_CHANGE_PLAYER :{LTBLUE}Spila sem leikmaður: {ORANGE}{COMMA16}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Töfrajarðýta (eyða iðnaði og óeyðanlegu): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Göng meiga skerast: {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Göng mega skerast: {ORANGE}{STRING}
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Byggja í bið: {ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}Þotur brotlenda ekki (oft) á litlum flugvöllum: {ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Skipta um loftslag: {ORANGE} {STRING}
@@ -1107,8 +1121,8 @@ STR_NO_TOWN_IN_SCENARIO :{WHITE}...
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Ertu viss um að þú viljir búa til tilviljanakennt landslag?
STR_MANY_RANDOM_TOWNS :{BLACK}Búa til marga bæi
STR_RANDOM_TOWNS_TIP :{BLACK}Þekja landið með bæjum
STR_MANY_RANDOM_INDUSTRIES :{BLACK}Marga tilviljanakennda iðnaði
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Þekja kortið mörgum tilviljanakenndum iðnöðum
STR_MANY_RANDOM_INDUSTRIES :{BLACK}a til marga iðnaði
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Þekja kortið mörgum handahófskenndum iðnöðum
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Get ekki búið til iðnað...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Opna landslags verkfæraslána til að hækka/lækka land, gróðursetja tré o.s.frv.
@@ -1117,7 +1131,7 @@ STR_LEVEL_LAND_TOOLTIP :{BLACK}Jafna land
STR_TREES_RANDOM_TYPE :{BLACK}Tré af handahófskenndri gerð
STR_TREES_RANDOM_TYPE_TIP :{BLACK}Planta trjám af handahófskenndri gerð
STR_TREES_RANDOM_TYPE_TIP :{BLACK}Gróðursetja tré af handahófskenndri gerð
STR_CANT_BUILD_CANALS :{WHITE}Ekki hægt að grafa skipaskurð hér...
STR_BUILD_CANALS_TIP :{BLACK}Grafa skipaskurð
@@ -1127,10 +1141,12 @@ STR_CANT_BUILD_LOCKS :{WHITE}Ekki h
STR_BUILD_LOCKS_TIP :{BLACK}Grafa skruðgátt
STR_LANDINFO_LOCK :Skurðgátt
STR_BUOY_IS_IN_USE :{WHITE}... bauja í notkun!
STR_LANDINFO_COORDS :{BLACK}Hnit: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Get ekki fjarlægt hluta af stöð...
STR_CANT_CONVERT_RAIL :{WHITE}Get ekki breytt lestarteiniCan't convert railtype here...
STR_CANT_CONVERT_RAIL :{WHITE}Get ekki breytt lestarteini...
STR_CONVERT_RAIL_TIP :{BLACK}Breyta/Uppfæra gerð af lestarteini
STR_DRAG_WHOLE_TRAIN_TO_SELL_TIP :{BLACK}Dragðu eimreið hingað til að selja alla lestina
@@ -1144,25 +1160,25 @@ STR_MESSAGE_HISTORY_TIP :{BLACK}Listi yfir n
STR_MESSAGES_DISABLE_ALL :{BLACK}Óvirkja allt
STR_MESSAGES_ENABLE_ALL :{BLACK}Virkja allt
STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Grafa kolanámu
STR_CONSTRUCT_FOREST_TIP :{BLACK}Gróðursetja skóg
STR_CONSTRUCT_OIL_RIG_TIP :{BLACK}Reisa olíuborpall
STR_CONSTRUCT_FARM_TIP :{BLACK}Koma á fót bóndabýli
STR_CONSTRUCT_COPPER_ORE_MINE_TIP :{BLACK}Grafa koparnámu
STR_CONSTRUCT_OIL_WELLS_TIP :{BLACK}Bora eftir olíu
STR_CONSTRUCT_GOLD_MINE_TIP :{BLACK}Grafa gullnámu
STR_CONSTRUCT_DIAMOND_MINE_TIP :{BLACK}Grafa demantanámu
STR_CONSTRUCT_IRON_ORE_MINE_TIP :{BLACK}Grafa járnnámu
STR_CONSTRUCT_FRUIT_PLANTATION_TIP :{BLACK}Rækta ávaxtaplantekru
STR_CONSTRUCT_RUBBER_PLANTATION_TIP :{BLACK}Rækta gúmmíplantekru
STR_CONSTRUCT_WATER_SUPPLY_TIP :{BLACK}Koma á fót vatnsbirgi
STR_CONSTRUCT_COTTON_CANDY_TIP :{BLACK}Planta sykurfrauðsskógi
STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}Koma á fót rafhlöðubýli
STR_CONSTRUCT_COLA_WELLS_TIP :{BLACK}Bora eftir gosi
STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP :{BLACK}Grafa plastbrunna
STR_CONSTRUCT_BUBBLE_GENERATOR_TIP :{BLACK}Reisa kúluframleiðslu
STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Grafa karamellunámu
STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Grafa sykurnámu
STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Grafa Kolanámu
STR_CONSTRUCT_FOREST_TIP :{BLACK}Gróðursetja Skóg
STR_CONSTRUCT_OIL_RIG_TIP :{BLACK}Reisa Olíuborpall
STR_CONSTRUCT_FARM_TIP :{BLACK}Koma á fót Bóndabýli
STR_CONSTRUCT_COPPER_ORE_MINE_TIP :{BLACK}Grafa Koparnámu
STR_CONSTRUCT_OIL_WELLS_TIP :{BLACK}Bora eftir Olíu
STR_CONSTRUCT_GOLD_MINE_TIP :{BLACK}Grafa Gullnámu
STR_CONSTRUCT_DIAMOND_MINE_TIP :{BLACK}Grafa Demantanámu
STR_CONSTRUCT_IRON_ORE_MINE_TIP :{BLACK}Grafa Járnnámu
STR_CONSTRUCT_FRUIT_PLANTATION_TIP :{BLACK}Rækta Ávaxtaplantekru
STR_CONSTRUCT_RUBBER_PLANTATION_TIP :{BLACK}Rækta Gúmmíplantekru
STR_CONSTRUCT_WATER_SUPPLY_TIP :{BLACK}Koma á fót Vatnsbirgi
STR_CONSTRUCT_COTTON_CANDY_TIP :{BLACK}Gróðursetja Sykurfrauðsskóg
STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}Koma á fót Rafhlöðubýli
STR_CONSTRUCT_COLA_WELLS_TIP :{BLACK}Bora eftir kóla
STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP :{BLACK}Grafa Plastbrunna
STR_CONSTRUCT_BUBBLE_GENERATOR_TIP :{BLACK}Reisa Kúluframleiðslu
STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Grafa Karamellunámu
STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Grafa Sykurnámu
STR_INDUSTRYDIR_CAPTION :{WHITE}Iðnaðir
STR_INDUSTRYDIR_ITEM :{ORANGE}{TOWN} {STRING}{BLACK} ({STRING}){YELLOW} ({COMMA16}% flutt)
@@ -1178,7 +1194,9 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Veldu hvernig farm lestin flytur
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Breyta lest til að flytja valinn varning
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Get ekki breytt lest...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Bil milli skoðana er í hundraðshlutum: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Breyta framleiðslu
TEMP_AI_IN_PROGRESS :{WHITE}Velkomin í nýju gervigreindina, verk í vinnslu. Þú skalt búast við vandamálum og taktu skjámynd þegar þau koma upp og sendi á póstlistann. Njóttu!
TEMP_AI_ACTIVATED :{WHITE}Ath.: nýja gervigreindin er ennþá alfa! Í augnablikinu virka aðeins flutningabílar og strætisvagnar!
############ network gui strings
@@ -1188,7 +1206,7 @@ STR_NETWORK_MULTIPLAYER :{WHITE}Fj
STR_NETWORK_PLAYER_NAME :{BLACK}Nafn leikmanns:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Þetta er nafnið sem aðrir leikmenn munu þekkja þig undir
STR_NETWORK_CONNECTION :{BLACK}Tenging:
STR_NETWORK_CONNECTION_TIP :{BLACK}Veldu milli alnetleiks eða staðarnetleiks
STR_NETWORK_CONNECTION_TIP :{BLACK}Veldu milli internetleiks eða staðarnetleiks
STR_NETWORK_START_SERVER :{BLACK}Hefja þjón
STR_NETWORK_START_SERVER_TIP :{BLACK}Hefja eigin þjón
@@ -1213,7 +1231,7 @@ STR_NETWORK_CLIENTS :{SILVER}Notendur: {WHITE}{COMMA8} / {COMMA8}
STR_NETWORK_LANGUAGE :{SILVER}Tungumál: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Stærð: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Útgáfa þjóns: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Veffang þjóns: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Veffang þjóns: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Upphafsdagsetning: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Núverandi dagsetning: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Varið með lykilorði!
@@ -1229,7 +1247,7 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Hefja n
STR_NETWORK_NEW_GAME_NAME :{BLACK}Nafn leiks:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Nafn leiksins mun vera sýnilegt öðrum leikmönnum í fjölspilunarvalmyndinni
STR_NETWORK_SET_PASSWORD :{BLACK}Veldu lykilorð
STR_NETWORK_PASSWORD_TIP :{BLACK}Verndaðu leikinn þinn með lykilorði ef þú vilt ekki að aðrir tengist honum
STR_NETWORK_PASSWORD_TIP :{BLACK}Verndaðu leikinn þinn með lykilorði ef þú vilt ekki að óboðnir tengist honum
STR_NETWORK_SELECT_MAP :{BLACK}Veldu kort:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Hvaða kort viltu spila?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Hámarksfjöldi notenda:
@@ -1253,7 +1271,7 @@ STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Tungum
STR_NETWORK_LANGUAGE_TIP :{BLACK}Aðrir notendur munu vita hvaða tungumál er talað á þjóninum
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Hefja leik
STR_NETWORK_START_GAME_TIP :{BLACK}Hefja nýjan netleik í korti eða landslagi sem valið er tilviljanakennt
STR_NETWORK_START_GAME_TIP :{BLACK}Hefja nýjan netleik í sérvöldu korti eða landslagi af handahófi
STR_NETWORK_LOAD_GAME :{BLACK}Hlaða leik
STR_NETWORK_LOAD_GAME_TIP :{BLACK}Hefja aftur vistaðan fjölspilunarleik (vertu viss um að tengjast sem réttur leikmaður)
STR_NETWORK_LOAD_SCENARIO :{BLACK}Opna landslag
@@ -1315,7 +1333,7 @@ STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Fyrirtæki er varið. Sláðu inn lykilorð
STR_NETWORK_CLIENT_LIST :{WHITE}Listi yfir leikmenn
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Enginn netbúnaður fannst eða of flókið án ENABLE_NETWORK
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Enginn netbúnaður fannst eða vistþýtt án ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Fann enga netleiki
STR_NETWORK_ERR_NOCONNECTION :{WHITE} Þjóninn svaraði ekki fyrirspurninni
STR_NETWORK_ERR_DESYNC :{WHITE} Samstilling netleiks mistókst.
@@ -1324,21 +1342,25 @@ STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Gat ekki hla
STR_NETWORK_ERR_SERVER_START :{WHITE} Gat ekki ræst þjón
STR_NETWORK_ERR_CLIENT_START :{WHITE} Gat ekki tengst
STR_NETWORK_ERR_TIMEOUT :{WHITE} Tenging #{NUMU16} fjaraði út.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Villa varð í samskiptum og tengingu var lokað
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Rangt lykilorð
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Þjónninn er fullur
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Þú ert bannaður/bönnuð á þessum þjóni
STR_NETWORK_ERR_KICKED :{WHITE} Þér var hent út úr leiknum
STR_NETWORK_ERR_CHEATER :{WHITE} Svindl er ekki leyft á þessum þjóni
STR_NETWORK_ERR_LEFT :hefur hætt í leiknum
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :almenn villa
STR_NETWORK_ERR_CLIENT_DESYNC :samstillingar villa
STR_NETWORK_ERR_CLIENT_DESYNC :samstillingarvilla
STR_NETWORK_ERR_CLIENT_SAVEGAME :gat ekki opnað kort
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :tenging týndist
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :tenging rofnaði
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :samskiptavilla
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :Ekki leyfilegt
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :tók á móti undarlegum pakka
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :röng útgáfa
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :nafn nú þegar í notkun
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :rangt leikja lykilorð
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :rangt leikjalykilorð
STR_NETWORK_ERR_CLIENT_KICKED :hent út af þjón
STR_NETWORK_ERR_CLIENT_CHEATER :reyndi að svindla
############ End of leave-in-this-order
@@ -1390,7 +1412,7 @@ STR_0810_DESERT :Ey
##id 0x1000
STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Landssvæði hallar í ranga átt
STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Ömögulegt lestarteinasamstæða
STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Ómöguleg lestarteinasamstæða
STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}Framkvæmdin myndi skemma göng
STR_1003_ALREADY_AT_SEA_LEVEL :{WHITE}Nú þegar við sjávarmál
STR_1004_TOO_HIGH :{WHITE}Of hátt
@@ -1461,7 +1483,8 @@ STR_1817_ROAD_VEHICLE_DEPOT :Bifrei
STR_1818_ROAD_RAIL_LEVEL_CROSSING :Vega/lestar gatnamót
##id 0x2000
STR_2000_TOWNS :{WHITE}Bæjir
STR_2000_TOWNS :{WHITE}Bæir
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -1474,7 +1497,7 @@ STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} b
STR_200A_TOWN_NAMES_CLICK_ON_NAME :{BLACK}Bæjarnöfn - ýttu á nafn til að færa sjónarhorn að viðkomandi bæ
STR_200B_CENTER_THE_MAIN_VIEW_ON :{BLACK}Færa sjónarhorn á staðsetningu bæjar
STR_200C_CHANGE_TOWN_NAME :{BLACK}Breyta nafni bæjar
STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Farðegar síðasta mánuð: {ORANGE}{COMMA16}{BLACK} hámark: {ORANGE}{COMMA16}
STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Farþegar síðasta mánuð: {ORANGE}{COMMA16}{BLACK} hámark: {ORANGE}{COMMA16}
STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Póstur síðasta mánuð: {ORANGE}{COMMA16}{BLACK} hámark: {ORANGE}{COMMA16}
STR_200F_TALL_OFFICE_BLOCK :Há skrifstofubygging
STR_2010_OFFICE_BLOCK :Skrifstofubygging
@@ -1490,7 +1513,7 @@ STR_2019_OFFICE_BLOCK :Skrifstofubygging
STR_201A_SHOPS_AND_OFFICES :Verslanir og skrifstofur
STR_201B_MODERN_OFFICE_BUILDING :Nútímaleg skrifstofubygging
STR_201C_WAREHOUSE :Vöruskemma
STR_201D_OFFICE_BLOCK :OFFICE_BLOCK
STR_201D_OFFICE_BLOCK :Skrifstofubygging
STR_201E_STADIUM :Leikvangur
STR_201F_OLD_HOUSES :Gömul hús
STR_2020_LOCAL_AUTHORITY :{BLACK}Bæjaryfirvöld
@@ -1509,7 +1532,7 @@ STR_202C_FROM_TO :{ORANGE}{STRING} fr
STR_202D_UNTIL :{YELLOW}, þangað til {DATE_SHORT})
STR_202E_OFFER_OF_SUBSIDY_EXPIRED :{BLACK}{BIGFONT}Tilboð til samstarfssamnings runnið út:{}{}{STRING} frá {STRING} til {STRING} mun ekki vera samningsbundið.
STR_202F_SUBSIDY_WITHDRAWN_SERVICE :{BLACK}{BIGFONT}Samsarfssamningur gerður ógildur:{}{}{STRING} flutningur frá {STATION} til {STATION} er ekki lengur samningsbundið.
STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Nýtt tilboð til samstarfssamnings:{}{}Fyrsti flutningur {STRING} frá {STRING} til {STRING} will attract a year's subsidy from the local authority!
STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Nýtt tilboð til samstarfssamnings:{}{}Fyrsti flutningur {STRING} frá {STRING} til {STRING} mun stofna til eins árs samstarfssamnings við bæjaryfirvöld!
STR_2031_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Samstarfssamningur gerður við {STRING}!{}{}flutningur {STRING} frá {STATION} til {STATION} mun borga 50% aukalega í heilt ár!
STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Samstarfssamningur gerður við {STRING}!{}{}flutningur {STRING} frá {STATION} til {STATION} mun borga tvöfalt í heilt ár!
STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Samstarfssamningur gerður við {STRING}!{}{}flutningur {STRING} frá {STATION} til {STATION} mun borga þrefalt í heilt ár!
@@ -1560,27 +1583,31 @@ STR_205C_PIGGY_BANK :Sv
##id 0x2800
STR_LANDSCAPING :Mótun lands
STR_2800_PLANT_TREES :Gróðursetja tré
STR_2801_PLACE_SIGN :Setja merki
STR_2801_PLACE_SIGN :Setja skilti
STR_2802_TREES :{WHITE}Tré
STR_2803_TREE_ALREADY_HERE :{WHITE}...hér er nú þegar tré
STR_2804_SITE_UNSUITABLE :{WHITE}...óhentugur staður
STR_2805_CAN_T_PLANT_TREE_HERE :{WHITE}Ekki hægt að gróðursetja tré hér...
STR_2806 :{WHITE}{STRING}
STR_2807 :{TINYFONT}{WHITE}{STRING}
STR_2808_TOO_MANY_SIGNS :{WHITE}...of mörg merki
STR_2808_TOO_MANY_SIGNS :{WHITE}...of mörg skilti
STR_2809_CAN_T_PLACE_SIGN_HERE :{WHITE}Ekki hægt að setja tré hér...
STR_280A_SIGN :Merki
STR_280B_EDIT_SIGN_TEXT :{WHITE}Breyta texta merkis
STR_280C_CAN_T_CHANGE_SIGN_NAME :{WHITE}Get ekki breytt nafni merkis...
STR_280D_SELECT_TREE_TYPE_TO_PLANT :{BLACK}Veldu trjátegud sem á að gróðursetja
STR_280A_SIGN :Skilti
STR_280B_EDIT_SIGN_TEXT :{WHITE}Breyta texta skiltis
STR_280C_CAN_T_CHANGE_SIGN_NAME :{WHITE}Get ekki breytt nafni skiltis...
STR_280D_SELECT_TREE_TYPE_TO_PLANT :{BLACK}Veldu trjátegund sem á að gróðursetja
STR_280E_TREES :Tré
STR_280F_RAINFOREST :Regnskógar
STR_2810_CACTUS_PLANTS :Kaktus
##id 0x3000
STR_3000_RAIL_STATION_SELECTION :{WHITE}Lestarstöðvastillingar
STR_3001_AIRPORT_SELECTION :{WHITE}Flugvallastillingar
STR_3002_ORIENTATION :{BLACK}Staða
STR_3003_NUMBER_OF_TRACKS :{BLACK}Fjöldi lestarspora
STR_3004_PLATFORM_LENGTH :{BLACK}Lengd lestarstöðvar
STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD :{WHITE}Of nálægt annarri lestarstöð
STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Tengist fleiri en einni annarri stöð
STR_3007_TOO_MANY_STATIONS_LOADING :{WHITE}Of margar stöðvar/lestunarsvæði í þessum bæ
STR_3008_TOO_MANY_STATIONS_LOADING :{WHITE}Of margar stöðvar/lestunarsvæði
STR_3009_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Of nálægt annarri stöð/lestunarsvæði
@@ -1591,7 +1618,9 @@ STR_300E_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}
STR_3030_RENAME_STATION_LOADING :Endurnefna stöð/lestunarsvæði
STR_3031_CAN_T_RENAME_STATION :{WHITE}Get ekki endurnefnt stöð...
STR_3032_RATINGS :{BLACK}Einkunn
STR_3033_ACCEPTS :{BLACK}Tekur við
STR_3034_LOCAL_RATING_OF_TRANSPORT :{BLACK}Staðbundin einkunn flutningsþjónustu:
############ range for rating starts
STR_3035_APPALLING :Hræðilegur
@@ -1601,7 +1630,7 @@ STR_3038_MEDIOCRE :
STR_3039_GOOD :Góður
STR_303A_VERY_GOOD :Mjög góður
STR_303B_EXCELLENT :Frábær
STR_303C_OUTSTANDING :Æðislegur
STR_303C_OUTSTANDING :Framúrskarandi
############ range for rating ends
STR_303D :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA8}%)
@@ -1629,6 +1658,7 @@ STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Veldu st
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Færa miðju sýnishorns á staðsetningu stöðvar
STR_3054_SHOW_STATION_RATINGS :{BLACK}Sýna einkunn stöðvar
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Breyta nafni stöðvar
STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO :{BLACK}Sýna lista yfir móttækilegan varning
STR_3057_STATION_NAMES_CLICK_ON :{BLACK}Nöfn stöðva - ýttu á nafn til að færa miðju sjónarhorns á stöð
STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT :{BLACK}Veldu stærð/tegund flugvallar
STR_3059_SMALL :{BLACK}Lítill
@@ -1641,20 +1671,151 @@ STR_305D_0 :{TINYFONT}{BLACK}{STATION} {STRINL 0x30D1}
STR_305E_RAILROAD_STATION :Lestarstöð
STR_305F_AIRCRAFT_HANGAR :Flugskýli
STR_3060_AIRPORT :Flugvöllur
STR_3061_TRUCK_LOADING_AREA :Vörubílastöð
STR_3062_BUS_STATION :Strætisvagnastöð
STR_3063_SHIP_DOCK :Skipahöfn
STR_3064_HIGHLIGHT_COVERAGE_AREA :{BLACK}Sýna svæði sem tilheyrir stöð
STR_3065_DON_T_HIGHLIGHT_COVERAGE :{BLACK}Ekki sýna svæði sem tilheyrir stöð
STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}Svæði sem tilheyrir stöð
STR_3067_MONORAIL_STATION_SELECT :{WHITE}Einteinungsstöð
STR_3068_DOCK :{WHITE}Höfn
STR_3069_BUOY :Bauja
STR_306A_BUOY_IN_THE_WAY :{WHITE}...bauja fyrir
STR_306B_HELIPORT :{BLACK}Þyrlupallur
STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...stöð of dreyfð
##id 0x3800
STR_3800_SHIP_DEPOT_ORIENTATION :{WHITE}Staða skipaslipps
STR_3801_MUST_BE_BUILT_ON_WATER :{WHITE}...verður að byggjast á vatni
STR_3802_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Get ekki byggt skipaslipp hér...
STR_3803_SELECT_SHIP_DEPOT_ORIENTATION :{BLACK}Velja stöðu skipaslipps
STR_3804_WATER :Vatn
STR_3805_COAST_OR_RIVERBANK :Strönd
STR_3806_SHIP_DEPOT :Skipaslippur
STR_3807_CAN_T_BUILD_ON_WATER :{WHITE}...Get ekki byggt á vatni
##id 0x4000
STR_4000_SAVE_GAME :{WHITE}Vista leik
STR_4001_LOAD_GAME :{WHITE}Opna leik
STR_4002_SAVE :{BLACK}Vista
STR_4003_DELETE :{BLACK}Eyða
STR_4004 :{STRING}, {DATE_LONG}
STR_4005_BYTES_FREE :{BLACK}{COMMA32} megabæti laus
STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Get ekki lesið af drifi
STR_4007_GAME_SAVE_FAILED :{WHITE}Vistun leiks mistókst
STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Get ekki eytt skrá
STR_4009_GAME_LOAD_FAILED :{WHITE}Mistókst að opna leik
STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Listi yfir drif, möppur og vistaða leiki
STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nafn fyrir vistun leiks
STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Eyða nafninu
STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Vista leikinn undir þessu nafni
STR_400E_SELECT_NEW_GAME_TYPE :{WHITE}Velja tegund leiks
STR_400F_SELECT_SCENARIO_GREEN_PRE :{BLACK}Velja landslag (grænt), forstilltan leik (blátt) eða handahófskenndan leik
STR_4010_GENERATE_RANDOM_NEW_GAME :Búa til nýjan leik
##id 0x4800
STR_4800_IN_THE_WAY :{WHITE}{STRING} er fyrir
STR_4801 :{WHITE}{TOWN} {STRING}
STR_4802_COAL_MINE :Kolanáma
STR_4803_POWER_STATION :Rafmagnsstöð
STR_4804_SAWMILL :Timburverksmiðja
STR_4805_FOREST :Skógur
STR_4806_OIL_REFINERY :Olíuhreinsunarstöð
STR_4807_OIL_RIG :Olíuborpallur
STR_4808_FACTORY :Verksmiðja
STR_4809_PRINTING_WORKS :Prentsmiðja
STR_480A_STEEL_MILL :Stálbræðsla
STR_480B_FARM :Bóndabýli
STR_480C_COPPER_ORE_MINE :Koparnáma
STR_480D_OIL_WELLS :Olíulindir
STR_480E_BANK :Banki
STR_480F_FOOD_PROCESSING_PLANT :Matvælaframleiðsla
STR_4810_PAPER_MILL :Pappírsverksmiðja
STR_4811_GOLD_MINE :Gullnáma
STR_4812_BANK :Banki
STR_4813_DIAMOND_MINE :Demantanáma
STR_4814_IRON_ORE_MINE :Járnnáma
STR_4815_FRUIT_PLANTATION :Ávaxtaplantekra
STR_4816_RUBBER_PLANTATION :Gúmmíplantekra
STR_4817_WATER_SUPPLY :Vatnsbyrgi
STR_4818_WATER_TOWER :Vatnsturn
STR_4819_FACTORY :Verksmiðja
STR_481A_FARM :Bóndabýli
STR_481B_LUMBER_MILL :Timburverksmiðja
STR_481C_COTTON_CANDY_FOREST :Sykurfrauðsskógur
STR_481D_CANDY_FACTORY :Sælgætisverksmiðja
STR_481E_BATTERY_FARM :Rafhlöðubýli
STR_481F_COLA_WELLS :Kólalindir
STR_4820_TOY_SHOP :Leikfangabúð
STR_4821_TOY_FACTORY :Leikfangaverksmiðja
STR_4822_PLASTIC_FOUNTAINS :Plastbrunnar
STR_4823_FIZZY_DRINK_FACTORY :Gosdrykkjaverksmiðja
STR_4824_BUBBLE_GENERATOR :Kúluframleiðsla
STR_4825_TOFFEE_QUARRY :Karamellunáma
STR_4826_SUGAR_MINE :Sykurnáma
############ range for requires starts
STR_4827_REQUIRES :{BLACK}Þarfnast: {YELLOW}{STRING}
STR_4828_REQUIRES :{BLACK}Þarfnast: {YELLOW}{STRING}, {STRING}
STR_4829_REQUIRES :{BLACK}Þarfnast: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Framleiðsla síðasta mánaðar:
STR_482B_TRANSPORTED :{YELLOW}{STRING}{BLACK} ({COMMA16}% flutt)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Miðja aðalsjónarhorn á iðnað
STR_482F_COST :{BLACK}Kostnaður: {YELLOW}{CURRENCY}
STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Get ekki reist þennan iðnað hér...
STR_4831_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}...skógur getur aðeins verið gróðursettur yfir snjólínu
STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT}{TOWN} {STRING} tilkynnir yfirvofandi lokun!
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}Birgðavandamál knýja {TOWN} {STRING} til að tilkynna yfirvofandi lokun!
STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}Skortur á nálægum trjám knýr {TOWN} {STRING} til að tilkynna yfirvofandi lokun!
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{TOWN} {STRING} eykur framleiðsluna!
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Nýtt kolalag fanns í {TOWN} {STRING}!{}Tvöföldun í framleiðslu væntanleg!
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}Meri olía finnst við {TOWN} {STRING}!{}Tvöföldun í framleiðslu væntanleg!
STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}Búist er við að endurbættar aðferðir á {TOWN} {STRING} muni skila tvöfaldri framleiðslu!
STR_4839_PRODUCTION_DOWN_BY_50 :{BLACK}{BIGFONT}50% samdráttur í framleiðslu hjá {TOWN} {STRING}
STR_483A_INSECT_INFESTATION_CAUSES :{BLACK}{BIGFONT}Skordýraplága veldur tjóni á {TOWN} {STRING}!{}Framleiðsla minnkar um 50%
STR_483B_CAN_ONLY_BE_POSITIONED :{WHITE}...getur aðeins verið staðsett nálægt brún kortsins
STR_INDUSTRY_PROD_GOUP :{BLACK}{BIGFONT}{STRING} framleiðsla í {TOWN} {STRING} hækkar um {COMMA16}%!
STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}{STRING} framleiðsla í {TOWN} {STRING} lækkar um {COMMA16}%!
##id 0x5000
STR_5000_TRAIN_IN_TUNNEL :{WHITE}Lest í göngunum
STR_5001_ROAD_VEHICLE_IN_TUNNEL :{WHITE}Bifreið í göngunum
STR_5002 :
STR_5003_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Önnur göng fyrir
STR_5004 :
STR_5005_UNABLE_TO_EXCAVATE_LAND :{WHITE}Get ekki breytt landi fyrir hinn enda gangnanna
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Verður að eyða göngum fyrst
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Verður að eyða brú fyrst
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Getur ekki byrjað og endað á sama stað
STR_5009_LEVEL_LAND_OR_WATER_REQUIRED :{WHITE}Sléttlendi eða vatn nauðsynlegt undir brú
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Verður að byrja og enda í sömu línu
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Óhentug staðsetning fyrir enda gangnanna
STR_500C :
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
STR_500E_SUSPENSION_STEEL :Hengibrú, stál
STR_500F_GIRDER_STEEL :Burðarbitabrú, stál
STR_5010_CANTILEVER_STEEL :Svifbitabrú, stál
STR_5011_SUSPENSION_CONCRETE :Hengibrú, steypa
STR_5012_WOODEN :Viðarbrú
STR_5013_CONCRETE :Steypubrú
STR_5014_TUBULAR_STEEL :Rörabrú, stál
STR_BRIDGE_TUBULAR_SILICON :Rörabrú, kísill
STR_5015_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Get ekki reist brú hér...
STR_5016_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Get ekki grafið göng hér...
STR_5017_RAILROAD_TUNNEL :Lestagöng
STR_5018_ROAD_TUNNEL :Vegagöng
STR_5019 :
STR_501A :
STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Stálhengibrú, lestir
STR_501C_STEEL_GIRDER_RAIL_BRIDGE :Stálburðarbitabrú, lestir
STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE :Stálsvifbitabrú, lestir
STR_501E_REINFORCED_CONCRETE_SUSPENSION :Styrkt steypuhengirbú, lestir
STR_501F_WOODEN_RAIL_BRIDGE :Viðarbrú, lestir
STR_5020_CONCRETE_RAIL_BRIDGE :Steypubrú, lestir
STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Stálhengibrú, vegur
STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Stálburðarbitabrú, vegur
##id 0x5800
@@ -1705,3 +1866,11 @@ STR_3063_SHIP_DOCK :Skipah
############ Lists rail types
############ End of list of rail types
+59 -12
View File
@@ -186,13 +186,7 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Non puoi fare questo....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Non puoi ripulire l'area....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright Originale{COPYRIGHT} 1995 Chris Sawyer, Tutti i diritti riservati
STR_00B7_VERSION :{BLACK}OpenTTD versione {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Concepito originariamente da Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafica di Simon Foster
STR_SPECIAL_THANKS :{BLACK}Ringraziamenti speciali vanno a:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Presegnali e Semafori {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fondamenta per i binari sui pendii {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Grafica di canali e chiuse {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -310,6 +304,7 @@ STR_0134_UNIX :Unix
STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_0139_IMPERIAL_MILES :Imperiale (miglia)
STR_013A_METRIC_KILOMETERS :Metrico (kilometri)
@@ -352,6 +347,8 @@ STR_015E_QUIT_GAME :Abbandona partita
STR_015F_QUIT :Esci
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Sei sicuro di voler abbandonare la partita in corso?
STR_0161_QUIT_GAME :{WHITE}Abbandona partita
STR_SORT_ORDER_TIP :{BLACK}Seleziona ordinamento (discendente/ascendente)
STR_SORT_CRITERIA_TIP :{BLACK}Seleziona il criterio d'ordinamento
SRT_SORT_BY :{BLACK}Ordina per
STR_SORT_BY_POPULATION :{BLACK}Popolazione
@@ -416,6 +413,7 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Non puoi cambiare l'intervallo di manutenzione...
STR_018B_CLOSE_WINDOW :{BLACK}Chiudi finestra
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Nome finestra - trascinala per muovere la finestra
STR_STICKY_BUTTON :{BLACK} Marca questa finestra come inchiudibile con il tasto 'Chiudi TUTTE le finestre'
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolisci edifici ecc... su una casella del terreno
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Abbassa un angolo del terreno
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Alza un angolo del terreno
@@ -538,6 +536,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Seleziona programma 'nuovo style'
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Seleziona programma 'Personaliz. 1' (definito dall'utente)
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Seleziona programma 'Personaliz. 2' (definito dall'utente)
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Elimina programmazioni attuali (solo personalizzato 1 o personalizzato 2)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Salva le impostazioni musicali
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Clicca sul brano per aggiungerlo al programma corrente (solamente personallizzato 1 o personalizzato 2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Seleziona programmazione casuale on/off
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostra finestra 'selezione brani'
@@ -571,7 +570,6 @@ STR_0216_CAPITALIST :Capitalista
STR_0217_MAGNATE :Magnate
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Magnate del secolo
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} archivi '{STRING}' stato!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} di {STRING} archivi '{STRING}' stato!
STR_021D :{BLACK}
@@ -722,6 +720,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Nomi veicoli
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Predefiniti
STR_02BF_CUSTOM :Personalizzati
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Salva i nomi personalizzati
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Selezione nomi personalizzati
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Salva nomi personalizzati dei veicoli
@@ -732,6 +731,8 @@ STR_02C5_DIFFICULTY_SETTINGS :Scelta difficolt
STR_02C6_DIFFICULTY_SETTINGS :Scelta difficoltà
STR_02C7_CONFIG_PATCHES :Configura patch
STR_02C8_CONFIG_PATCHES :Configura patch
STR_NEWGRF_SETTINGS :Impostazioni Newgrf
STR_NEWGRF_SETTINGS2 :Impostazioni Newgrf
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Mostra nomi città
@@ -740,6 +741,8 @@ STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Mostra nomi stazioni
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Mostra nomi stazioni
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Mostra cartelli
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Mostra cartelli
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Waypoints mostrati
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Waypoints mostrati
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Animazione completa
STR_02D0_FULL_ANIMATION :{SETX 12}Animazione completa
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Massimo dettaglio
@@ -792,13 +795,16 @@ STR_02F8_EVERY_3_MONTHS :Ogni 3 mesi
STR_02F9_EVERY_6_MONTHS :Ogni 6 mesi
STR_02FA_EVERY_12_MONTHS :Ogni 12 mesi
STR_02FB_START_A_NEW_GAME :{BLACK}Inizia nuovo gioco
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Carica un gioco salvato
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Guarda dimostrazione/tutorial
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Crea uno scenario personalizzato
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Seleziona giocatore singolo
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Seleziona un gioco multiplayer da 2-8 giocatori
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Mostra opzioni di gioco
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Mostra opzioni difficoltà
STR_0303_START_A_NEW_GAME_USING :{BLACK}Inizia una partita con uno scenario personalizzato
STR_0304_QUIT :{BLACK}Esci
STR_0305_QUIT_OPENTTD :{BLACK}Esci 'OpenTTD'
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Guarda dimostrazione/tutorial
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...può essere costruito solo in città
@@ -814,7 +820,7 @@ STR_0313_FUND_NEW_INDUSTRY :Finanzia nuove industrie
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Finanzia nuove industrie
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...può essere costruito solo in città
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...può essere costruito solo nella foresta pluviale
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...può essere costruito solo in aree desertiche
@@ -836,10 +842,9 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Inglese
STR_TOWNNAME_ORIGINAL_ENGLISH :Inglese
STR_TOWNNAME_FRENCH :Francese
STR_TOWNNAME_GERMAN :Tedesco
STR_TOWNNAME_AMERICAN :Americano
STR_TOWNNAME_LATIN_AMERICAN :Latino-Americano
STR_TOWNNAME_SILLY :Stupidi
STR_TOWNNAME_SWEDISH :Svedese
@@ -853,23 +858,31 @@ STR_TOWNNAME_ROMANIAN :Rumeni
STR_TOWNNAME_CZECH :Cechi
############ end of townname region
STR_CURR_GBP :Sterlina ({POUNDSIGN})
STR_CURR_USD :Dollaro ($)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_ATS :Scellino Austriano (ATS)
STR_CURR_BEF :Franco Belga (BEF)
STR_CURR_CHF :Franco Svizzero (CHF)
STR_CURR_CZK :Corona Ceca (CZK)
STR_CURR_DEM :Marco Tedesco (DEM)
STR_CURR_DKK :Corona Danese (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Marco Finlandese(FIM)
STR_CURR_FRF :Franco (FRF)
STR_CURR_GRD :Drachma Greca (GRD)
STR_CURR_HUF :Forint Ungherese (HUF)
STR_CURR_ISK :Corona Islandese (ISK)
STR_CURR_ITL :Lira Italiana (ITL)
STR_CURR_NLG :Fiorino olandese (NLG)
STR_CURR_NOK :Corona Norvegese (NOK)
STR_CURR_PLN :Zloty Polacco (PLN)
STR_CURR_ROL :Leu rumeno (Lei)
STR_CURR_RUR :Rupie Russe (RUR)
STR_CURR_SEK :Corona Svedese (SEK)
STR_CURR_CUSTOM :Personalizza...
STR_OPTIONS_LANG :{BLACK}Lingua
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -962,6 +975,7 @@ STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Consenti la costruzione di treni mo
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Abilita accelerazione realistica per i treni: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Unisci stazioni ferroviarie quando sono vicine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Lascia stazione quanto uno dei tipi di merce è a pieno carico: {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Usa l'algoritmo di caricamento migliorato: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflazione: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Scarica le merci in una stazione solo se richieste: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Consenti la costruzione di ponti molto lunghi: {ORANGE}{STRING}
@@ -1028,6 +1042,8 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posizione barra degli strumenti prin
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Sinistra
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Centro
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Destra
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Raggio di snap delle finestre: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Raggio di snap delle finestre: {ORANGE}disabilitato
STR_CONFIG_PATCHES_GUI :{BLACK}Interfaccia
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Costruzione
@@ -1064,16 +1080,24 @@ STR_HEADING_FOR_WAYPOINT :{LTBLUE}Direzione {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Direzione {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Vai al {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Procedi non-stop per {WAYPOINT}
STR_WAYPOINTNAME_CITY :Waypoint {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Waypoint {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Waypoint
STR_WAYPOINT :{WHITE}Waypoint
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Seleziona il tipo di waypoint
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Cambia il nome al waypoint
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Impossibile cambiare il nome al waypoint...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Trasforma la ferrovia in un waypoint
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Impossibile costruire un waypoint ferroviario qui...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Impossibile rimuovere un waypoint ferroviario qui...
STR_BUILD_AUTORAIL_TIP :{BLACK}Costruisci binario usando la modalità automatica
@@ -1086,6 +1110,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Alcune industrie casuali
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Copri la mappa con industrie costruite casualmente
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Impossibile generare le industrie...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Apri la barra 'Modellazione terreno' per alzare/abbassare il terreno, piantare alberi, ecc.
STR_LANDSCAPING_TOOLBAR :{WHITE}Modella terreno
STR_LEVEL_LAND_TOOLTIP :{BLACK}Livella terreno
@@ -1101,6 +1126,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}Impossibile costruire una chiusa qui...
STR_BUILD_LOCKS_TIP :{BLACK}Costruisci chiusa
STR_LANDINFO_LOCK :Chiusa
STR_LANDINFO_COORDS :{BLACK}Coordinate: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Impossibile rimuovere una porzione di stazione...
@@ -1162,6 +1188,8 @@ STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
STR_NETWORK_PLAYER_NAME :{BLACK}Nome giocatore:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Questo è il nome con cui gli altri giocatori ti identificheranno
STR_NETWORK_CONNECTION :{BLACK}Connessione:
STR_NETWORK_CONNECTION_TIP :{BLACK}Scegli tra un gioco internet e un gioco in LAN (Local Area Network)
STR_NETWORK_START_SERVER :{BLACK}Avvia server
STR_NETWORK_START_SERVER_TIP :{BLACK}Avvia il tuo server
@@ -1173,9 +1201,20 @@ STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Clicca su un nome della lista per se
STR_NETWORK_FIND_SERVER :{BLACK}Trova server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Cerca nella rete un server
STR_NETWORK_ADD_SERVER :{BLACK}Aggiungi server
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Aggiungi un server alla lista che verrà sempre controllata per giochi attivi.
STR_NETWORK_ENTER_IP :{BLACK}Digita indirizzo IP del server
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clients
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clients online / clients max
STR_NETWORK_GAME_INFO :{SILVER}GAME INFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clients: {WHITE}{COMMA8} / {COMMA8}
STR_NETWORK_LANGUAGE :{SILVER}Lingua: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Dimens: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Versione server: {WHITE}{STRING}
STR_NETWORK_PASSWORD :{BLACK}Password:
STR_NETWORK_JOIN_GAME :{BLACK}Entra nel gioco
@@ -2231,7 +2270,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} da {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Treno {COMMA16} stà aspettando nel deposito
STR_8815_NEW_VEHICLES :{BLACK}Nuovi Veicoli
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Costo: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocità: {GOLD}{VELOCITY}{BLACK} Potenza: {GOLD}{COMMA16}cv{}{BLACK}Consumi: {GOLD}{CURRENCY}/anno{}{BLACK}Capienza: {GOLD}{STRING}{}{BLACK}Progettato nel: {GOLD}{NUMU16}{BLACK} Vita: {GOLD}{COMMA16} anni{}{BLACK}Max. Affidabilità: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Costo: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocità: {GOLD}{VELOCITY}{BLACK} Potenza: {GOLD}{COMMA32}cv{}{BLACK}Consumi: {GOLD}{CURRENCY}/anno{}{BLACK}Capienza: {GOLD}{STRING}{}{BLACK}Progettato nel: {GOLD}{NUMU16}{BLACK} Vita: {GOLD}{COMMA16} anni{}{BLACK}Max. Affidabilità: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Informazioni
STR_8819_TRAIN_TOO_LONG :{WHITE}Treno troppo lungo
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Un treno può essere modificato solo quando è fermo nel deposito
@@ -2591,3 +2630,11 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Mostra tutti i treni che hanno questa stazi
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Mostra tutti i veicoli che hanno questa stazione tra gli ordini
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostra tutti gli aerei che hanno questa stazione tra gli ordini
STR_SCHEDULED_SHIPS_TIP :{BLACK}Mostra tutte le navi che hanno questo porto tra gli ordini
############ Lists rail types
############ End of list of rail types
-424
View File
@@ -1,424 +0,0 @@
##name Latvian
##ownname Latvie¨u valoda
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}&#256;rpus kartes robežas
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}P&#257;r&#257;k tuvu kartes malai
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Nav diezgan naudas - vajag {CURRENCY}
STR_0004 :{WHITE}{CURRENCY64}
STR_0005 :{RED}{CURRENCY64}
STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Zemei j&#257;b&#363;t plakanai
STR_0008_WAITING :{BLACK}Gaidam: {WHITE}{STRING}
STR_0009 :{WHITE}{STRING}
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (ce&#316;&#257; no
STR_000B :{YELLOW}{STATION})
STR_000C_ACCEPTS :{BLACK}Pie&#326;em: {WHITE}
STR_000D_ACCEPTS :{BLACK}Pie&#326;em: {GOLD}
STR_000E :
STR_000F_PASSENGERS :Pasažierus
STR_0010_COAL :Ogles
STR_0011_MAIL :Pastu
STR_0012_OIL :Naftu
STR_0013_LIVESTOCK :Liellopus
STR_0014_GOODS :Preces
STR_0015_GRAIN :Graudus
STR_0016_WOOD :Kokmatere&#257;lus
STR_0017_IRON_ORE :Dzelzs r&#363;du
STR_0018_STEEL :T&#275;raudu
STR_0019_VALUABLES :V&#275;rtspap&#299;ri
STR_001A_COPPER_ORE :Vara r&#363;da
STR_001B_MAIZE :Kukur&#363;za
STR_001C_FRUIT :Aug&#316;i
STR_001D_DIAMONDS :Dimanti
STR_001E_FOOD :P&#257;rtika
STR_001F_PAPER :Pap&#299;rs
STR_0020_GOLD :Zelts
STR_0021_WATER :&#362;dens
STR_0022_WHEAT :Kvieši
STR_0023_RUBBER :Gumija
STR_0024_SUGAR :Cukurs
STR_0025_TOYS :Rota&#316;lietas
STR_0026_CANDY :Saldumi
STR_0027_COLA :Kola
STR_0028_COTTON_CANDY :Cukurvate
STR_0029_BUBBLES :Burbu&#316;i
STR_002A_TOFFEE :Cukurpl&#257;ksnes
STR_002B_BATTERIES :Baterijas
STR_002C_PLASTIC :Plastmasa
STR_002D_FIZZY_DRINKS :Burbu&#316;&#363;de&#326;i
STR_002E :
STR_002F_PASSENGER :Pasažieris
STR_0030_COAL :Ogle
STR_0031_MAIL :Pasts
STR_0032_OIL :Nafta
STR_0033_LIVESTOCK :Liellopi
STR_0034_GOODS :Preces
STR_0035_GRAIN :Graudi
STR_0036_WOOD :Kokmatere&#257;li
STR_0037_IRON_ORE :Dzelzs r&#363;da
STR_0038_STEEL :T&#275;rauds
STR_0039_VALUABLES :V&#275;rtspap&#299;ri
STR_003A_COPPER_ORE :Vara r&#363;da
STR_003B_MAIZE :Kukur&#363;za
STR_003C_FRUIT :Aug&#316;i
STR_003D_DIAMOND :Dimanti
STR_003E_FOOD :P&#257;rtika
STR_003F_PAPER :pap&#299;rs
STR_0040_GOLD :Zelts
STR_0041_WATER :&#362;dens
STR_0042_WHEAT :Kvieši
STR_0043_RUBBER :Gumija
STR_0044_SUGAR :Cukurs
STR_0045_TOY :Rota&#316;lieta
STR_0046_CANDY :Saldumi
STR_0047_COLA :Kola
STR_0048_COTTON_CANDY :Cukurvate
STR_0049_BUBBLE :Burbulis
STR_004A_TOFFEE :Cukurpl&#257;ksn&#299;te
STR_004B_BATTERY :Baterijas
STR_004C_PLASTIC :Plastmasas
STR_004D_FIZZY_DRINK :Burbu&#316;&#363;de&#326;u
STR_004E :
STR_004F_PASSENGER :{COMMA16} pasažieris
STR_0050_TON_OF_COAL :{COMMA16} tonna og&#316;u
STR_0051_BAG_OF_MAIL :{COMMA16} pasta maiss
STR_0052_OF_OIL :{VOLUME} naftas
STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} liellops
STR_0054_CRATE_OF_GOODS :{COMMA16} pre&#269;u kaste
STR_0055_TON_OF_GRAIN :{COMMA16} tonna graudu
STR_0056_TON_OF_WOOD :{COMMA16} tonna kokmatere&#257;lu
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonna dzelzs r&#363;das
STR_0058_TON_OF_STEEL :{COMMA16} tonna t&#275;rauda
STR_0059_BAG_OF_VALUABLES :{COMMA16} maiss ar v&#275;rtspap&#299;riem
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tonna vara r&#363;das
STR_005B_TON_OF_MAIZE :{COMMA16} tonna kukur&#363;zas
STR_005C_TON_OF_FRUIT :{COMMA16} tonna aug&#316;u
STR_005D_BAG_OF_DIAMONDS :{COMMA16} maiss ar dimantiem
STR_005E_TON_OF_FOOD :{COMMA16} tonna p&#257;rtikas pre&#269;u
STR_005F_TON_OF_PAPER :{COMMA16} tonna pap&#299;ra
STR_0060_BAG_OF_GOLD :{COMMA16} zelta maiss
STR_0061_OF_WATER :{VOLUME} &#363;dens
STR_0062_TON_OF_WHEAT :{COMMA16} tonna kviešu
STR_0063_OF_RUBBER :{VOLUME} tonna gumijas
STR_0064_TON_OF_SUGAR :{COMMA16} tonna cukura
STR_0065_TOY :{COMMA16} rota&#316;lieta
STR_0066_BAG_OF_CANDY :{COMMA16} saldumu maiss
STR_0067_OF_COLA :{VOLUME} kolas
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} tonna cukurvates
STR_0069_BUBBLE :{COMMA16} burbulis
STR_006A_TON_OF_TOFFEE :{COMMA16} tonna cukurpl&#257;ksn&#299;šu
STR_006B_BATTERY :{COMMA16} baterija
STR_006C_OF_PLASTIC :{VOLUME} plastmasas
STR_006D_FIZZY_DRINK :{COMMA16} burbu&#316;&#363;denis
STR_006E :
STR_006F_PASSENGERS :{COMMA16} pasažieri
STR_0070_TONS_OF_COAL :{COMMA16} tonnas og&#316;u
STR_0071_BAGS_OF_MAIL :{COMMA16} pasta maisi
STR_0072_OF_OIL :{VOLUME} naftas
STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} liellopi
STR_0074_CRATES_OF_GOODS :{COMMA16} kastes ar prec&#275;m
STR_0075_TONS_OF_GRAIN :{COMMA16} tonnas graudu
STR_0076_TONS_OF_WOOD :{COMMA16} tonnas kokmatere&#257;lu
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonnas dzelzs r&#363;das
STR_0078_TONS_OF_STEEL :{COMMA16} tonnas t&#275;rauda
STR_0079_BAGS_OF_VALUABLES :{COMMA16} maisi ar v&#275;rtsliet&#257;m
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tonnas vara r&#363;das
STR_007B_TONS_OF_MAIZE :{COMMA16} tonnas kukur&#363;zas
STR_007C_TONS_OF_FRUIT :{COMMA16} tonnas aug&#316;u
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} maisi ar dimantiem
STR_007E_TONS_OF_FOOD :{COMMA16} tonnas p&#257;rtikas pre&#269;u
STR_007F_TONS_OF_PAPER :{COMMA16} tonnas pap&#299;ra
STR_0080_BAGS_OF_GOLD :{COMMA16} zelta maisi
STR_0081_OF_WATER :{VOLUME} &#363;dens
STR_0082_TONS_OF_WHEAT :{COMMA16} tonnas kviešu
STR_0083_OF_RUBBER :{VOLUME} gumijas
STR_0084_TONS_OF_SUGAR :{COMMA16} tonnas cukura
STR_0085_TOYS :{COMMA16} rota&#316;lietas
STR_0086_BAGS_OF_CANDY :{COMMA16} saldumu maisi
STR_0087_OF_COLA :{VOLUME} kolas
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} tonnas cukurvates
STR_0089_BUBBLES :{COMMA16} burbu&#316;i
STR_008A_TONS_OF_TOFFEE :{COMMA16} tonnas cukurpl&#257;ksn&#299;šu
STR_008B_BATTERIES :{COMMA16} baterijas
STR_008C_OF_PLASTIC :{VOLUME} plastmasas
STR_008D_FIZZY_DRINKS :{COMMA16} burbu&#316;&#363;de&#326;u
STR_008E :
STR_008F_PS :{TINYFONT}PA
STR_0090_CL :{TINYFONT}OG
STR_0091_ML :{TINYFONT}PT
STR_0092_OL :{TINYFONT}NF
STR_0093_LV :{TINYFONT}LL
STR_0094_GD :{TINYFONT}PR
STR_0095_GR :{TINYFONT}GR
STR_0096_WD :{TINYFONT}KM
STR_0097_OR :{TINYFONT}DZ
STR_0098_ST :{TINYFONT}TR
STR_0099_VL :{TINYFONT}VP
STR_009A_CO :{TINYFONT}VR
STR_009B_MZ :{TINYFONT}KU
STR_009C_FT :{TINYFONT}AU
STR_009D_DM :{TINYFONT}DM
STR_009E_FD :{TINYFONT}PP
STR_009F_PR :{TINYFONT}PS
STR_00A0_GD :{TINYFONT}ZE
STR_00A1_WR :{TINYFONT}UD
STR_00A2_WH :{TINYFONT}KV
STR_00A3_RB :{TINYFONT}GU
STR_00A4_SG :{TINYFONT}CU
STR_00A5_TY :{TINYFONT}RT
STR_00A6_SW :{TINYFONT}SA
STR_00A7_CL :{TINYFONT}KO
STR_00A8_CF :{TINYFONT}CV
STR_00A9_BU :{TINYFONT}BB
STR_00AA_TF :{TINYFONT}CP
STR_00AB_BA :{TINYFONT}BT
STR_00AC_PL :{TINYFONT}PL
STR_00AD_FZ :{TINYFONT}BU
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
STR_00B0_MAP :{WHITE}Karte - {STRING}
STR_00B1_GAME_OPTIONS :{WHITE}Spçles parametri
STR_00B2_MESSAGE :{YELLOW}Ziòojums
STR_00B3_MESSAGE_FROM :{YELLOW}Ziòojums no {STRING}
STR_00B4_CAN_T_DO_THIS :{WHITE}Tâ nevar darît....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Ðo laukumu nevar nolîdzinât....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Oriìinâlâs autortiesîbas {COPYRIGHT} 1995 Chris Sawyer, Visas tiesîbas rezervçtas
STR_00B7_VERSION :{BLACK}OpenTTD versija {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Oriìinâlais dizains: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Oriìinâlâ grafika: Simon Foster
STR_SPECIAL_THANKS :{BLACK}Îpaða pateicîba sekojoðâm personâm:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pirms-signâli un semafori {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Pamati sliedçm un ceïu nogâzçm {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanâlu/dambju grafika {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD grupa
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
STR_00C7_QUIT :{WHITE}Beigt
STR_00C8_YES :{BLACK}Jâ
STR_00C9_NO :{BLACK}Nç
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Vai Tu tieðâm gribi pamest ðo spçli un iet uz {STRING}?
STR_00CB_1 :{BLACK}1
STR_00CC_2 :{BLACK}2
STR_00CD_3 :{BLACK}3
############ range for menu starts
############ range for menu ends
############ range for months starts
############ range for months ends
############ range for service numbers starts
############ range for service numbers ends
############ range for days starts
############ range for days ends
############ range for cargo acecpted starts
############ range for cargo acecpted ends
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ start of townname region
############ end of townname region
# Start of order review system.
# DON'T ADD OR REMOVE LINES HERE
# end of order system
############ network gui strings
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ end network gui strings
##id 0x0800
##id 0x1000
##id 0x1800
##id 0x2000
##id 0x2800
##id 0x3000
############ range for rating starts
############ range for rating ends
##id 0x3800
##id 0x4000
##id 0x4800
############ range for requires starts
############ range for requires ends
##id 0x5000
##id 0x5800
############ WARNING, using range 0x6000 for strings that are stored in the savegame
############ These strings may never get a new id, or savegames will break!
##id 0x6000
############ end of savegame specific region!
##id 0x6800
############ range for difficulty levels starts
############ range for difficulty levels ends
############ range for difficulty settings starts
############ range for difficulty settings ends
##id 0x7000
##id 0x8000
##id 0x8800
##id 0x9000
##id 0x9800
##id 0xA000
##id 0xB000
############ Those following lines need to be in this order!!
############ End of order list
+53 -18
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Kan ikke gj
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan ikke rydde feltet....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Opprinnelig copyright {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheter reservert
STR_00B7_VERSION :{BLACK}OpenTTD versjon {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Opprinnelig design av Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafikk laget av Simon Foster
STR_SPECIAL_THANKS :{BLACK}Spesiell takk til:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signaler og Semaforer {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Grunnvoll for Jernbanespor på Skråninger {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal/Sluse grafikk {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD-teamet
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 OpenTTD-teamet
STR_TRANSLATED_BY :{BLACK} Oversetter(e) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Imperisk (miles)
STR_013A_METRIC_KILOMETERS :Metrisk (kilometer)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikke endre service-intervall
STR_018B_CLOSE_WINDOW :{BLACK}Lukk vindu
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Vindustittel - dra her for å flytte vindu
STR_STICKY_BUTTON :{BLACK}Merk dette vinduet som ulukkbart for 'Lukk alle vinduer'-knappen
STR_RESIZE_BUTTON :{BLACK}Klikk og dra for å endre størrelsen på vinduet
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv bygninger o.l.
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Senk et hjørne av et landstykke
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Hev et hjørne av et landstykke
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Endringer i godtatte varer
STR_020E_SUBSIDIES :{YELLOW}Subsidier
STR_020F_GENERAL_INFORMATION :{YELLOW}Generell informasjon
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...for langt i fra forrige destinasjon
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Beste firma som kom til 2050{}({STRING} Level)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Beste firma som nådde {NUMU16}{}({STRING} Nivå)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Firmarangering i {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Forretningsmann
STR_0214_ENTREPRENEUR :Entreprenør
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalist
STR_0217_MAGNATE :Magnat
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Århundrets finansfyrste
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} oppnår '{STRING}'status!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} av {STRING} oppnår '{STRING}' status!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} oppnår '{STRING}'-status!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} av {STRING} oppnår '{STRING}'-status!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Innstillinger for ny grafikk
STR_NEWGRF_SETTINGS2 :Innstillinger for ny grafikk
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Lukk ALLE vindu
STR_CLOSE_ALL_WINDOWS2 :Lukk ALLE Vindu
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Vis bynavn
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Vis bynavn
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Vis stasjonsnavn
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Finansier ny industri
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Finansier ny industri
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan bare bygges i byer
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan bare bygges i regnskogområder
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan bare bygges i ørkenområder
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Engelsk
STR_TOWNNAME_ORIGINAL_ENGLISH :Engelsk
STR_TOWNNAME_FRENCH :Fransk
STR_TOWNNAME_GERMAN :Tysk
STR_TOWNNAME_AMERICAN :Amerikansk
STR_TOWNNAME_ADDITIONAL_ENGLISH :Engelsk (Utvidet)
STR_TOWNNAME_LATIN_AMERICAN :Latin-Amerikansk
STR_TOWNNAME_SILLY :Tåpelige
STR_TOWNNAME_SWEDISH :Svensk
@@ -862,10 +859,12 @@ STR_TOWNNAME_DUTCH :Nederlandsk
STR_TOWNNAME_FINNISH :Finsk
STR_TOWNNAME_POLISH :Polsk
STR_TOWNNAME_SLOVAKISH :Slovak
STR_TOWNNAME_NORWEGIAN :Norsk
STR_TOWNNAME_HUNGARIAN :Ungarsk
STR_TOWNNAME_AUSTRIAN :Østerriksk
STR_TOWNNAME_ROMANIAN :Rumensk
STR_TOWNNAME_CZECH :Tsjekkisk
STR_TOWNNAME_SWISS :Sveitsisk
############ end of townname region
STR_CURR_GBP :Pund ({POUNDSIGN})
@@ -1019,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Bytt automatisk ut kj
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autoforny når kjøretøy er {ORANGE}{STRING}{LTBLUE} måneder før/etter maks alder
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Autoforny minimum penger trengst for fornying: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Varighet til feilmelding: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Vis byers befolkning i tittel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Usynlige trær (med gjennomsiktige bygninger): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snøhøyde: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maks stasjonspedning: {ORANGE}{STRING} {RED}Advarsel: Høy instilling gir treger spill
@@ -1044,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard serviceintervall for fl
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Standard serviceintervall for kjøretøy: {ORANGE}deaktivert
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard serviceintervall for båter: {ORANGE}{STRING} dager
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Standard serviceintervall for skip: {ORANGE}deaktivert
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Deaktiver service når havarier er slått av: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Farge i avisen kommer i: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Start spillet i år: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Spillet slutter {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Jevn økonomi (Flere, mindre endringer)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Tillat kjøping av aksjer i andre selskaper
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Ved opptrekking plasser signal hver: {ORANGE}{STRING} rute(r)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posisjon av hovedverktøylinje: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Venstre
@@ -1137,6 +1140,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}Kan ikke bygge sluser her...
STR_BUILD_LOCKS_TIP :{BLACK}Bygg sluser
STR_LANDINFO_LOCK :Sluse
STR_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kan ikke fjerne del av stasjonen...
@@ -1188,6 +1192,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Velg hvilken last lokomotivet skal
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Bygg om lokomotivet til å frakte den valgte varetypen
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan ikke bygge om lokomotiv...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Service intervaller er i prosent: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Endre produksjon
TEMP_AI_IN_PROGRESS :{WHITE}Velkommen til denne nye AI, under konstruksjon. Du kan vente deg problemer. Når du finner ett problem, lag ett skjermbilde av det og post det i forumet. Mor deg!
TEMP_AI_ACTIVATED :{WHITE}Advarsel: denne nye AI er fremdeles alfa! Akkurat nå, virker bare lastebiler og busser!
@@ -1225,7 +1230,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Spr
STR_NETWORK_TILESET :{SILVER}Brikkesett: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Kartstørrelse: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Tjenerversjon: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Tjeneradresse: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Tjeneradresse: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Startet: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Nettverksdato: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Passordbeskyttet!
@@ -1341,6 +1346,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Det skjedde en protokoll-feil, s
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Klientversjonen er ikke den samme som tjenerversjonen.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Feil passord.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Tjeneren er full
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Du er bannlyst fra denne serveren
STR_NETWORK_ERR_KICKED :{WHITE} Du ble sparket ut av tjeneren
STR_NETWORK_ERR_CHEATER :{WHITE} Juksing er forbudt på denne serveren
@@ -1481,6 +1487,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Jernbaneovergang
##id 0x2000
STR_2000_TOWNS :{WHITE}Byer
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2087,6 +2094,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan ikke selge 25% av aksjene...
STR_707D_OWNED_BY :{WHITE}({COMMA16}% eies av {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% eies av {STRING}{} {COMMA16}% eies av {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} har blitt kjøpt opp av {STRING}!
STR_7080_PROTECTED :{WHITE}Dette selskapet selger ikke aksjer enda...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Damp)
@@ -2385,7 +2393,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} fra {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Tog {COMMA16} venter i togstallen
STR_8815_NEW_VEHICLES :{BLACK}Nye tog/vogner
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Koster: {GOLD}{CURRENCY}{BLACK} Vekt: {GOLD}{COMMA16}t{}{BLACK}Fart: {GOLD}{VELOCITY}{BLACK} Kraft: {GOLD}{COMMA16}hk{}{BLACK}Driftkostnader: {GOLD}{CURRENCY}/år{}{BLACK}Kapasitet: {GOLD}{STRING}{}{BLACK}Designet: {GOLD}{NUMU16}{BLACK} Levetid: {GOLD}{COMMA16} år{}{BLACK}Maks. pålitelighet: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Pris: {GOLD}{CURRENCY}{BLACK} Vekt: {GOLD}{COMMA16}t{}{BLACK}Fart: {GOLD}{VELOCITY}{BLACK} Kraft: {GOLD}{COMMA32}hk{}{BLACK}Driftskostnad: {GOLD}{CURRENCY}/år{}{BLACK}Kapasitet: {GOLD}{STRING}{}{BLACK}Designet: {GOLD}{NUMU16}{BLACK} Levetid: {GOLD}{COMMA16} år{}{BLACK}Maks. Pålitelighet: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Informasjon
STR_8819_TRAIN_TOO_LONG :{WHITE}Toget er for langt
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Tog kan bare endres når det står stille i togstallen
@@ -2666,6 +2674,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Kan ikke navngi fly...
STR_A032_NAME_AIRCRAFT :{BLACK}Navngi fly
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Innbyggerne jubler . . .{}Første fly ankommer {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Flykrasj!{}{COMMA16} dør ved {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Flystyrt!{}Fly gikk tom for drivstoff, {COMMA16} døde i eksplosjon!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Stoppested:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Endre navn
@@ -2739,6 +2748,7 @@ STR_CURRENCY_WINDOW :{WHITE}Vanlig valuta
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Valutakurs: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Deler:
STR_CURRENCY_PREFIX :{LTBLUE}Prefiks:
STR_CURRENCY_SUFFIX :{LTBLUE}Suffiks:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Bytt til Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Bytt til Euro: {ORANGE}aldri
STR_CURRENCY_PREVIEW :{LTBLUE}Forhåndsvis: {ORANGE}{CURRENCY}
@@ -2758,3 +2768,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Vis alle tog som har denne stasjonen p
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Vis alle kjøretøy som har denne stasjonen på deres timeplan
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Vis alle fly som har denne stasjonen på deres timeplan
STR_SCHEDULED_SHIPS_TIP :{BLACK}Vis alle skip som har denne stasjonen på deres timeplan
STR_REPLACE_VEHICLES :{BLACK}Bytt ut kjøretøy
STR_REPLACE_VEHICLES_WHITE :{WHITE}Bytt ut kjøretøy
STR_REPLACE_VEHICLES_START :{BLACK}Begynn å bytte ut kjøretøy
STR_REPLACE_VEHICLES_STOP :{BLACK}Slutt å bytte ut kjøretøy
STR_NOT_REPLACING :{BLACK}Byttes ikke ut
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Inget lokomotiv valgt
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Velg lokomotivtype å bytte ut
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Velg den nye lokomotivtypen du vil skal ta over for den du har valgt til venstre
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikk denne knappen hvis du ikke vil bytte ut lokomotivet som er valgt på venstresiden
STR_REPLACE_HELP_START_BUTTON :{BLACK}Klikk denne knappen hvis du vil bytte ut det valgte lokomotivet på venstresiden med det valgte lokomotivet på høyresiden
STR_REPLACE_HELP_RAILTYPE :{BLACK}Velg jernbanetypen du vil velge lokomotiv fra
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Dette viser hvilket lokomotiv som overtar for det valgte lokomotivet på venstresiden
STR_REPLACE_HELP :{BLACK}Dette verktøyet lar deg bytte ut en type lokomotiv med en annen. Dette blir gjort neste gang lokomotivet er innom et depot.
############ Lists rail types
STR_RAIL_VEHICLES :Jernbane-lokomotiv
STR_MONORAIL_VEHICLES :Monorail-lokomotiv
STR_MAGLEV_VEHICLES :Maglev-lokomotiv
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+58 -22
View File
@@ -185,14 +185,9 @@ STR_00B3_MESSAGE_FROM :{YELLOW}Wiadomosc od {STRING}
STR_00B4_CAN_T_DO_THIS :{WHITE}Niemozna tego zrobic....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Nie mozna wyczyscic terenu....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_00B7_VERSION :{BLACK}Wersja OpenTTD {REV}: Language Pack by Tom and PolPot and Spooqy
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Designed & Programmed by Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Graphics by Simon Foster
STR_SPECIAL_THANKS :{BLACK}Specjalne podziekowania dla:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Signaly i Semafory {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fundacja na rzecz torow na zboczach {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Grafika kanalow/sluz {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
STR_00B7_VERSION :{BLACK}Wersja OpenTTD {REV}
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Zespol OpenTTD
STR_TRANSLATED_BY :{BLACK} Tlumacz(e) - : Tom and PolPot and Spooqy
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Brytyjski (mile)
STR_013A_METRIC_KILOMETERS :Metryczny (kilometry)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nie mozna zmienic okresu miedzy serw
STR_018B_CLOSE_WINDOW :{BLACK}Zamkniecie okna
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Tytul okienka - przeciagnij to by ruszyc oknem
STR_STICKY_BUTTON :{BLACK}Zaznacza to okno jako niezamykalne dla funkcji 'Zamknij wszystkie okna'
STR_RESIZE_BUTTON :{BLACK}Kliknij i przeciagnij by zmienic rozmiar okna
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Niszczenie budynkow itp w danym kwadracie terenu
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Obnizenie naroznika terenu
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Wywyzszenie naroznika terenu
@@ -567,7 +564,7 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Zamiany w akceptowaniu ladunku
STR_020E_SUBSIDIES :{YELLOW}Subsydia
STR_020F_GENERAL_INFORMATION :{YELLOW}Ogolne informacje
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...zbyt daleko od poprzedniego celu
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Pierwsza firma ktora osiagnie 2050{}({STRING} Poziom)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Czolowka firm ktora osiagnela poziom {NUMU16}{}({STRING})
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Biznesmen
STR_0214_ENTREPRENEUR :Przedsiebiorca
@@ -576,8 +573,9 @@ STR_0216_CAPITALIST :Kapitalista
STR_0217_MAGNATE :Magnat
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon Stulecia
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} osiaga status: '{STRING}'!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} osiaga status: '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} {STRING} osiaga status: '{STRING}'!
STR_021D :{BLACK}
STR_021E :{WHITE}
@@ -742,8 +740,6 @@ STR_NEWGRF_SETTINGS :Ustawienia newgrf
STR_NEWGRF_SETTINGS2 :Ustawienia newgrf
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Zamknij WSZYSTKIE okienka
STR_CLOSE_ALL_WINDOWS2 :Zamknij wszystkie okienka
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Wyswietlanie nazw miast
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Wyswietlanie nazw miast
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Wyswietlanie nazw stacji
@@ -775,6 +771,7 @@ STR_02DD_SUBSIDIES :Subsydia
STR_02DE_MAP_OF_WORLD :Mapa swiata
STR_EXTRA_VIEW_PORT :Extra podglad
STR_02DF_TOWN_DIRECTORY :Lista miast
STR_TOWN_POPULATION :{BLACK}Swiatowa populacja: {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Podglad {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopuj do podgladu
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiuj obecna pozycje z glownego okna do podgladu
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Ufunduj nowe przedsieb.
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Ufundowanie nowego przedsieb.
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...moze byc wybudowane tylko w miescie
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...moze byc wybudowane tylko w lasach deszczowych
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...moze byc wybudowane tylko na pustyni
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Angielskie
STR_TOWNNAME_ORIGINAL_ENGLISH :Angielski (Oryginal)
STR_TOWNNAME_FRENCH :Francuskie
STR_TOWNNAME_GERMAN :Niemieckie
STR_TOWNNAME_AMERICAN :Amerykanskie
STR_TOWNNAME_ADDITIONAL_ENGLISH :Angielski (Rozszezone)
STR_TOWNNAME_LATIN_AMERICAN :Poludniowoamerykanskie
STR_TOWNNAME_SILLY :Glupie
STR_TOWNNAME_SWEDISH :Szwedzkie
@@ -862,10 +859,12 @@ STR_TOWNNAME_DUTCH :Holenderskie
STR_TOWNNAME_FINNISH :Finskie
STR_TOWNNAME_POLISH :Polskie
STR_TOWNNAME_SLOVAKISH :Slowackie
STR_TOWNNAME_NORWEGIAN :Norweskie
STR_TOWNNAME_HUNGARIAN :Wegierskie
STR_TOWNNAME_AUSTRIAN :Austriackie
STR_TOWNNAME_ROMANIAN :Rumunskie
STR_TOWNNAME_CZECH :Czeskie
STR_TOWNNAME_SWISS :Szwajcarskie
############ end of townname region
STR_CURR_GBP :Funty ({POUNDSIGN})
@@ -1019,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Autoodnowienie pojazdu gdy staj
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autoodnowienie nastepuje {ORANGE}{STRING}{LTBLUE} miesiecy przed/po maks wieku
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minimalna ilosc pieniedzy potrzebna do autoodnowienia: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Czas trwania komunikatu o bledzie: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Pokaz populacje miasta w jego nazwie: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Niewidoczne drzewa (razem z przezroczystymi budynkami): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Wysokosc granicy wiecznych sniegow: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maks wielkosc stacji: {ORANGE}{STRING} {RED}Uwaga: Duze wartosci spowalniaja gre
@@ -1044,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Domyslny okres miedzy serwis. dl
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Domyslny okres miedzy serwis. dla samolotow: {ORANGE}niedostepne
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Domyslny okres miedzy serwis. dla statkow: {ORANGE}{STRING} dni
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Domyslny okres miedzy serwis. dla statkow: {ORANGE}niedostepne
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Serwis niedostepny jesli uszkodzenia pojazdow wylaczone: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Pojawianie sie kolorowych wiadomosci w: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Data rozpoczecia: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Data zakonczenia: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Pozwol na lagodna ekonomie (male zmiany)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Pozwol kupowac udzialy w innych firmach
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}W trakcie przeciagania ustaw sygnaly co: {ORANGE}{STRING} kratke(i)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Pozycja glownego paska narzedzi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :z lewej
@@ -1137,6 +1140,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Nie mozna tutaj wybudowac sluzy...
STR_BUILD_LOCKS_TIP :{BLACK}Buduj sluzy
STR_LANDINFO_LOCK :Sluza
STR_BUOY_IS_IN_USE :{WHITE}... boja w uzyciu!
STR_LANDINFO_COORDS :{BLACK}Pozycja: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Nie mozna usunac czesci stacji...
@@ -1188,6 +1193,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Wybierz typ ladunku jaki ma przewoz
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Przebudowa pociagu do przewozu podswietlonych towarow
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Nie mozna przebudowac pociagu...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Okres miedzy serwisowania w procentach: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Zmiana produkcji
TEMP_AI_IN_PROGRESS :{WHITE}Witamy w nowym AI. Mozesz oczekiwac problemow. Gdy to sie stanie, wykonaj zrzut ekranu i wyslij go na forum. Powodzenia!
TEMP_AI_ACTIVATED :{WHITE}Ostrzenie: nowe AI jest ciagle w wersji alpha! Obecnie dziala tylko dla samochodow!
@@ -1225,7 +1231,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Jezyk: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Krajobraz: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Rozmiar mapy: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Wersja serwera: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adres serwera: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adres serwera: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Data uruchomienia: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Biezaca data: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Chronione haslem!
@@ -1341,6 +1347,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Blad protokolu, polaczenie zostalo prz
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Wersja gry nie zgadza sie z wersja gry na serwerze.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Zle haslo.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Serwer jest pelen
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Masz zabroniony dostep do tego serwera
STR_NETWORK_ERR_KICKED :{WHITE} Zostales wyrzucony z serwera
STR_NETWORK_ERR_CHEATER :{WHITE} Ulatwienia sa niedozwolone na tym serwerze
@@ -1481,6 +1488,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Poziom przecinania sie drog/torow
##id 0x2000
STR_2000_TOWNS :{WHITE}Miasta
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2087,6 +2095,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}nie mozna sprzedac 25% udzialow w te
STR_707D_OWNED_BY :{WHITE}({COMMA16}% w posiadaniu przez {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% w posiadaniu przez {STRING}{} {COMMA16}% w posiadaniu przez {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} zostalo przejete przez {STRING}!
STR_7080_PROTECTED :{WHITE}Ta firma nie sprzedaje jeszcze akcji...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Parowoz)
@@ -2385,7 +2394,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} z {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Pociag {COMMA16} czeka w zajezdni
STR_8815_NEW_VEHICLES :{BLACK}Nowe pojazdy
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Koszt: {GOLD}{CURRENCY}{BLACK} Waga: {GOLD}{COMMA16}t{}{BLACK}Predkosc: {GOLD}{VELOCITY}{BLACK} Moc: {GOLD}{COMMA16}hp{}{BLACK}Utrzymanie: {GOLD}{CURRENCY}/rok{}{BLACK}Pojemnosc: {GOLD}{STRING}{}{BLACK}Zaprojektowany: {GOLD}{NUMU16}{BLACK} Trwalosc: {GOLD}{COMMA16} lat{}{BLACK}Max. Niezawodnosc: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Koszt: {GOLD}{CURRENCY}{BLACK} Waga: {GOLD}{COMMA16}t{}{BLACK}Predkosc: {GOLD}{VELOCITY}{BLACK} Moc: {GOLD}{COMMA32}KM{}{BLACK}Koszt utrzymania: {GOLD}{CURRENCY}/rok{}{BLACK}Pojemnosc: {GOLD}{STRING}{}{BLACK}Zaprojektowano: {GOLD}{NUMU16}{BLACK} Wiek: {GOLD}{COMMA16} lat{}{BLACK}Maks. niezawodnosc: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Informacje
STR_8819_TRAIN_TOO_LONG :{WHITE}Pociag zbyt dlugi
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Pociag moze byc modyfikowany tylko jak jest zatrzymany w zajezdni
@@ -2666,6 +2675,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Nie mozna zmienic nazwy samolotu...
STR_A032_NAME_AIRCRAFT :{BLACK}Nazwa samolotu
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Mieszkancy swietuja . . .{}pierwszy samolot przylecial do {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Katastrofa lotnicza!{}{COMMA16} ofiar na {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Wypadek lotniczy!{}Samolot rozbil sie z braku paliwa, zginelo {COMMA16} osob!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Cele:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Zmien nazwe
@@ -2750,12 +2760,38 @@ STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Pociagow
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Samochodow
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Samolotow
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Statkow
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Pociag(i/ow)
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Samochod(y/ow)
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Samolot(y/ow)
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Statek(i/ow)
STR_SCHEDULED_TRAINS_TIP :{BLACK}Pokazuje wszystkie pociagi ktore maja ta stacje w swoim rozkladzie
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Pokazuje wszystkie samochody ktore maja ta stacje w swoim rozkladzie
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Pokazuje wszystkie samoloty ktore maja ta stacje w swoim rozkladzie
STR_SCHEDULED_SHIPS_TIP :{BLACK}Pokazuje wszystkie statki ktore maja ta stacje w swoim rozkladzie
STR_REPLACE_VEHICLES :{BLACK}Zastap pojazdy
STR_REPLACE_VEHICLES_WHITE :{WHITE}Zastap pojazdy
STR_REPLACE_VEHICLES_START :{BLACK}Rozpocznij zastepowanie
STR_REPLACE_VEHICLES_STOP :{BLACK}Zatrzymaj zastepowanie
STR_NOT_REPLACING :{BLACK}Brak zastapien
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Brak zaznaczonych pojazdow
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Wybierz typ pojazdu jaki chcesz zamienic
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Wybierz typ pojazdu jakim chcesz zastapic pojazd zaznaczony po lewej stronie
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Wcisnij ten klawisz jesli nie chcesz zmieniac pojazdu ktory zaznaczono po lewej stronie
STR_REPLACE_HELP_START_BUTTON :{BLACK}Wcisnij ten klawisz jesli chcesz zastapic pojazd zaznaczony po lewej stronie wybranym pojazdem po prawej stronie
STR_REPLACE_HELP_RAILTYPE :{BLACK}Wybierz dla jakiego typu szyn chcesz zastapic pojazdy
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Wyswietla typ pojazdu na jaki bedzie zastapiony pojazd zaznaczony po lewej stronie
STR_REPLACE_HELP :{BLACK}Ta funkcja pozwala wybrac typ pojazdu i zastapic go innym. Bedzie sie to odbywac w momencie gdy pociag zjedzie do zajezdni
STR_SHORT_DATE :{WHITE}{DATE_TINY}
############ Lists rail types
STR_RAIL_VEHICLES :Pojazdy kolejowe
STR_MONORAIL_VEHICLES :Pojazdy jednoszyn.
STR_MAGLEV_VEHICLES :Pojazdy Maglew
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+139 -22
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}N
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Não é possível limpar esta área....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados
STR_00B7_VERSION :{BLACK}OpenTTD versão {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Design original por Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Gráficos originais por Simon Foster
STR_SPECIAL_THANKS :{BLACK}Agradecimentos especiais a:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-Sinais e Semáforos {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Criação de linhas em desníveis {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Gráficos de canais {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 A equipa do OpenTTD
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 A equipa do OpenTTD
STR_TRANSLATED_BY :{BLACK} Tradutor(es) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :SO/2
STR_0139_IMPERIAL_MILES :Imperial (milhas)
STR_013A_METRIC_KILOMETERS :Métrico (quilómetros)
@@ -353,6 +349,8 @@ STR_015E_QUIT_GAME :Abandonar jogo
STR_015F_QUIT :Sair
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Tem a certeza que deseja abandonar este jogo?
STR_0161_QUIT_GAME :{WHITE}Abandonar jogo
STR_SORT_ORDER_TIP :{BLACK}Seleccione forma de ordenação (descendente/ascendente)
STR_SORT_CRITERIA_TIP :{BLACK}Seleccione critério de ordenação
SRT_SORT_BY :{BLACK}Ordenar por
STR_SORT_BY_POPULATION :{BLACK}População
@@ -417,6 +415,8 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Não é possível alterar o intervalo de serviço...
STR_018B_CLOSE_WINDOW :{BLACK}Fechar janela
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Título da janela - arraste isto para mover a janela
STR_STICKY_BUTTON :{BLACK}Marcar esta janela como não-encerrável pela tecla 'Fechar Todas as Janelas'
STR_RESIZE_BUTTON :{BLACK}Clique e arraste para reajustar janela
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demolir edifícios, etc. num quadrado de terreno
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Baixar um canto do terreno
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Levantar um canto do terreno
@@ -539,6 +539,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Seleccionar programa 'estilo moderno
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Seleccionar programa 'Personalizado 1'
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Seleccionar programa 'Personalizado 2'
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Limpar programa actual (somente Personaliz. 1 ou Personaliz. 2)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Gravar configuração de música
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Clique na faixa de música para a adicionar ao programa actual (somente Personaliz. 1 ou Personaliz. 2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Ligar/Desligar programa aleatório
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostrar janela de selecção de faixas de música
@@ -563,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Altera
STR_020E_SUBSIDIES :{YELLOW}Subsídios
STR_020F_GENERAL_INFORMATION :{YELLOW}Informações gerais
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...Muito distante do destino anterior
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top de empresas que chegaram a 2050{}(Nível {STRING})
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top de companhias que chegaram a {NUMU16}{}({STRING} Nivél)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Tabela de Liga de Companhias em {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Negociante
STR_0214_ENTREPRENEUR :Empresário
@@ -572,9 +574,10 @@ STR_0216_CAPITALIST :Capitalista
STR_0217_MAGNATE :Magnate
STR_0218_MOGUL :Grande magnate
STR_0219_TYCOON_OF_THE_CENTURY :Magnate do século
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} alcança o estatuto de '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} de {STRING} alcança o estatuto de '{STRING}'!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} conquista '{STRING}' desempenho!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} de {STRING} conquista '{STRING}' desempenho!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -723,6 +726,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Nomes dos ve
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Predefinição
STR_02BF_CUSTOM :Personalizado
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Gravar nomes personalizados
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Selecção de nomes dos veículos
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Guardar nomes dos veículos personalizados no disco
@@ -797,13 +801,16 @@ STR_02F8_EVERY_3_MONTHS :Cada 3 meses
STR_02F9_EVERY_6_MONTHS :Cada 6 meses
STR_02FA_EVERY_12_MONTHS :Cada 12 meses
STR_02FB_START_A_NEW_GAME :{BLACK}Iniciar um novo jogo
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Carregar um jogo gravado
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Mostrar demonstrações/tutoriais
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Criar um cenário de jogo personalizado
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Seleccionar jogo de 1 jogador
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Seleccione jogo múltiple de 2 a 8 jogadores
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Mostrar opções de jogo
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Mostrar opções de dificuldade
STR_0303_START_A_NEW_GAME_USING :{BLACK}Iniciar um novo jogo, utilizando um cenário personalizado guardado no disco
STR_0304_QUIT :{BLACK}Sair
STR_0305_QUIT_OPENTTD :{BLACK}Sair de 'OpenTTD'
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Mostrar demonstração/tutorial
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...só se pode construir em cidades
@@ -819,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Financiar nova ind
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Financiar nova indústria
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...só se pode construir em cidades
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...só se pode construir em zonas de floresta
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...só se pode construir em zonas de deserto
@@ -841,10 +848,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Inglês
STR_TOWNNAME_ORIGINAL_ENGLISH :Inglês
STR_TOWNNAME_FRENCH :Francês
STR_TOWNNAME_GERMAN :Alemão
STR_TOWNNAME_AMERICAN :Americano
STR_TOWNNAME_ADDITIONAL_ENGLISH :Inglês (Adicional)
STR_TOWNNAME_LATIN_AMERICAN :Latino-Americano
STR_TOWNNAME_SILLY :Absurdo
STR_TOWNNAME_SWEDISH :Sueco
@@ -852,29 +859,38 @@ STR_TOWNNAME_DUTCH :Holand
STR_TOWNNAME_FINNISH :Finlandês
STR_TOWNNAME_POLISH :Polaco
STR_TOWNNAME_SLOVAKISH :Eslovaco
STR_TOWNNAME_NORWEGIAN :Noreguês
STR_TOWNNAME_HUNGARIAN :Húngaro
STR_TOWNNAME_AUSTRIAN :Austríaco
STR_TOWNNAME_ROMANIAN :Romeno
STR_TOWNNAME_CZECH :Checo
############ end of townname region
STR_CURR_GBP :Libras ({POUNDSIGN})
STR_CURR_USD :Dólar ($)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_ATS :Shilling Austríaco (ATS)
STR_CURR_BEF :Franco Belga (BEF)
STR_CURR_CHF :Franco Suíço (CHF)
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_FIM :Marco Finlandês (FIM)
STR_CURR_FRF :Franco (FRF)
STR_CURR_GRD :Dracma Grego (GRD)
STR_CURR_HUF :Forint Húngaro (HUF)
STR_CURR_ISK :Coroa Islandesa (ISK)
STR_CURR_ITL :Lira Italiana (ITL)
STR_CURR_NLG :Guilda Holandesa (NLG)
STR_CURR_NOK :Coroa Norueguesa (NOK)
STR_CURR_PLN :Zloty Polaco (PLN)
STR_CURR_ROL :Lei Romeno (Lei)
STR_CURR_RUR :Rublo Russo (rur)
STR_CURR_SEK :Coroa Sueca (SEK)
STR_CURR_CUSTOM :Personalizado...
STR_OPTIONS_LANG :{BLACK}Idioma
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1001,6 +1017,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Auto-renova
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Auto-renovação do veículo {ORANGE}{STRING}{LTBLUE} meses antes/depois da idade máx.
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Dinheiro mínimo para fazer auto-renovação: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duração das mensagens de erro: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Mostra população da cidade na janela da cidade: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Árvores invisíveis (com edifícios transparentes): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Altura da linha de neve: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Tamanho máx. de estações: {ORANGE}{STRING} {RED}Valores altos tornam o jogo lento!
@@ -1029,7 +1046,9 @@ STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Intervalo de servi
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Noticias a cores aparecem em: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Data de início: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Terminar jogo em: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Activar economia regular (alterações menores)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permite comprar acções de outras companhias
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Ao arrastar colocar sinais a cada: {ORANGE}{STRING} quadrado(s)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posição da barra de ferramentas principal: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Esquerda
@@ -1073,6 +1092,7 @@ STR_HEADING_FOR_WAYPOINT :{LTBLUE}Dirige-se a {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Dirige-se a {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Ir via {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Ir sem parar via {WAYPOINT}
STR_WAYPOINTNAME_CITY :Ponto de passagem {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Ponto de passagem {TOWN} #{COMMA16}
@@ -1102,6 +1122,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}V
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cobrir o mapa com indústrias colocadas aleatoriamente
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Não é possível gerar indústrias...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Abra a barra de modelação ambiental para elevar ou baixar terreno, plantar árvores, etc.
STR_LANDSCAPING_TOOLBAR :{WHITE}Terreno
STR_LEVEL_LAND_TOOLTIP :{BLACK}Nivelar terreno
@@ -1117,6 +1138,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}N
STR_BUILD_LOCKS_TIP :{BLACK}Construir diques
STR_LANDINFO_LOCK :Dique
STR_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Não é possível remover parte da estação...
@@ -1168,6 +1190,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Seleccionar tipo de carga do comboi
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Adaptar comboio para transportar a carga seleccionada
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Não é possível ajustar comboio...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Os intervalos de serviço são em percentagem: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Modificar produção
TEMP_AI_IN_PROGRESS :{WHITE}Bem-vindo à nova IA, ainda em desenvolvimento. Pode encontrar problemas. Neste caso faça uma captura de ecrã e coloque-a no fórum. Divirta-se!
TEMP_AI_ACTIVATED :{WHITE}Atenção: esta nova IA está ainda em versão alpha! Actualmente, só funcionam camiões e autocarros!
@@ -1205,12 +1228,13 @@ STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Tamanho do Mapa: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Versão do servidor: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Endereço do servidor: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Endereço do servidor: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Data de inicio: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Data actual: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Protegido por password!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVIDOR DESLIGADO
STR_NETWORK_SERVER_FULL :{SILVER}SERVIDOR CHEIO
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERSÃO INCOMPATÍVEL
STR_NETWORK_JOIN_GAME :{BLACK}Juntar-se ao jogo
@@ -1225,8 +1249,12 @@ STR_NETWORK_SELECT_MAP :{BLACK}Seleccione um mapa:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Em que mapa deseja jogar?
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 necessitam estar todos presentes.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :Rede Local
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :Rede Local / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (divulgar)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 clientes
STR_NETWORK_3_CLIENTS :3 clientes
STR_NETWORK_4_CLIENTS :4 clientes
@@ -1238,7 +1266,7 @@ STR_NETWORK_9_CLIENTS :9 clientes
STR_NETWORK_10_CLIENTS :10 clientes
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Idioma falado:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Outros jogadores ficarão a conhecer o idioma utilizado no servidor.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Iniciar Jogo
STR_NETWORK_START_GAME_TIP :{BLACK}Iniciar um novo jogo em rede de um mapa aleatório, ou cenário
STR_NETWORK_LOAD_GAME :{BLACK}Abrir Jogo
@@ -1269,15 +1297,39 @@ STR_NETWORK_REFRESH_TIP :{BLACK}Renovar a informa
STR_NETWORK_COMPANY_INFO :{SILVER}INFORMAÇÃO DA COMPANHIA
STR_NETWORK_COMPANY_NAME :{SILVER}Nome da empresa: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Inauguração: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Valor da Companhia: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Balanço actual: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Rendimento do último ano: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Desempenho: {WHITE}{NUMU16}
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_VEHICLES :{SILVER}Veículos: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Estações: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Jogadores: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}A ligar...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) A ligar..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autorizando..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Em espera..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) A obter mapa..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Processando dados..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) A registar..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}A obter a informação de jogo..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}A obter a informação da Companhia..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} cliente(s) à sua frente
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kbytes obtidos até agora
STR_NETWORK_DISCONNECT :{BLACK}Desligar
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Introduza a mensagem de texto a enviar
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduza o valor do dinheiro que pretende dar
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Introduza palavra-chave
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Companhia protegida. Introduza palavra-chave
STR_NETWORK_CLIENT_LIST :{WHITE}Lista de clientes
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Não foram encontradas interfaces de rede ou o jogo foi compilado sem ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Não foram encontrados jogos de rede
@@ -1285,14 +1337,57 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE} O servidor n
STR_NETWORK_ERR_DESYNC :{WHITE} A sincronização do jogo de rede falhou.
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} A conexão do jogo de rede perdeu-se.
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Não foi possível abrir o jogo.
STR_NETWORK_ERR_SERVER_START :{WHITE} Não foi possível iniciar o servidor
STR_NETWORK_ERR_CLIENT_START :{WHITE} Não foi possível estabelecer ligação
STR_NETWORK_ERR_TIMEOUT :{WHITE} Tempo de espera esgotado na conexão #{NUMU16}.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Ocorreu um erro de protocolo e a ligação foi encerrada
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} A revisão deste cliente não condiz com a revisão do servidor
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Palavra-chave incorrecta
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Servidor cheio
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Foi banido deste SERVIDOR
STR_NETWORK_ERR_KICKED :{WHITE} Você foi expulso do jogo
STR_NETWORK_ERR_CHEATER :{WHITE} Batotas não são permitidas neste servidor
STR_NETWORK_ERR_LEFT :deixou o jogo
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :erro geral
STR_NETWORK_ERR_CLIENT_DESYNC :erro de dessincronização
STR_NETWORK_ERR_CLIENT_SAVEGAME :não foi possível carregar o mapa
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :ligação perdida
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :erro de protocolo
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :Não autorizado
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :recebido um pacote estranho
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :revisão incorrecta
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :nome já está a ser utilizado
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :palavra-chave do jogo está incorrecta
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :id do jogador incorrecta em DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :avisado pelo servidor
STR_NETWORK_ERR_CLIENT_CHEATER :estava a tentar usar batota
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :entrou no jogo
STR_NETWORK_GIVE_MONEY :deu à sua empresa algum dinheiro ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :você deu {STRING} algum dinheiro ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Equipa] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Equipa] Para {STRING}:
STR_NETWORK_CHAT_CLIENT :[Privado] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Privado] Para {STRING}:
STR_NETWORK_CHAT_ALL :[Todos] {STRING}:
STR_NETWORK_NAME_CHANGE :mudou o nome dele/dela para
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} O servidor fechou a sessão
STR_NETWORK_SERVER_REBOOT :{WHITE} O servidor está a reiniciar...{}Por favor espere...
STR_NETWORK_SERVER :Servidor
STR_NETWORK_CLIENT :Cliente
STR_NETWORK_CLIENTLIST_NONE :(nenhum)
STR_NETWORK_CLIENTLIST_KICK :Banir
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Dar dinheiro
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Falar com todos
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Falar com a empresa
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mensagem privada
STR_NETWORK_SEND :{BLACK}Enviar
############ end network gui strings
@@ -1390,6 +1485,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Passagem de n
##id 0x2000
STR_2000_TOWNS :{WHITE}Cidades
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -1980,6 +2076,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reconstruir sede da empresa noutro
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Não é possível construir sede da empresa...
STR_7072_VIEW_HQ :{BLACK}Ver sede
STR_RELOCATE_HQ :{BLACK}Mover sede
STR_COMPANY_PASSWORD :{BLACK}Palavra passe
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Usar palavra passe na empresa para prevenir utilizadores não autorizados.
STR_SET_COMPANY_PASSWORD :Definir palavra passe da empresa
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Retrocesso Mundial!{}{}Especialistas financeiros temem crise económica!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Fim do retrocesso!{}{}Melhoras no comércio inspiram confiança nas indústrias à medida que a economia se fortalece!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Alternar entre janela grande/pequena
@@ -1993,6 +2092,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}N
STR_707D_OWNED_BY :{WHITE}({COMMA16}% propriedade de {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% propriedade de {STRING}{} {COMMA16}% propriedade de {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} foi comprada por {STRING}!
STR_7080_PROTECTED :{WHITE}Esta empresa ainda não troca acções...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vapor)
@@ -2291,7 +2391,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} de {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Comboio {COMMA16} está a aguardar no depósito
STR_8815_NEW_VEHICLES :{BLACK}Novos Veículos
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Custo: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocidade: {GOLD}{VELOCITY}{BLACK} Potência: {GOLD}{COMMA16}hp{}{BLACK}Custo de circulação: {GOLD}{CURRENCY}/ano{}{BLACK}Capacidade: {GOLD}{STRING}{}{BLACK}Projectado: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anos{}{BLACK}Fiabilidade Máx.: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Custo: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16}t{}{BLACK}Velocidade: {GOLD}{VELOCITY}{BLACK} Potência: {GOLD}{COMMA32}hp{}{BLACK}Custo de circulação: {GOLD}{CURRENCY}/ano{}{BLACK}Capacidade: {GOLD}{STRING}{}{BLACK}Projectado: {GOLD}{NUMU16}{BLACK} Vida: {GOLD}{COMMA16} anos{}{BLACK}Fiabilidade Máx.: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Informação
STR_8819_TRAIN_TOO_LONG :{WHITE}Comboio muito longo
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Os comboios só podem ser alterados quando parados num depósito
@@ -2518,6 +2618,7 @@ STR_GO_TO_SHIP_DEPOT :Ir para o dep
SERVICE_AT_SHIP_DEPOT :Manutenção no depósito de {TOWN}
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Aeroportos
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Não é possível construir aeroporto aqui...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Hangar
STR_A003_NEW_AIRCRAFT :{BLACK}Nova Aeronave
@@ -2571,6 +2672,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}N
STR_A032_NAME_AIRCRAFT :{BLACK}Renomear aeronave
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeira aeronave chega a {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Acidente de Avião!{}{COMMA16} morrem na explosão em {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Desastre de Avião!{}Avião ficou sem combustivél, {COMMA16} morreram em incêndiol!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinos:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Renomear
@@ -2640,6 +2742,21 @@ STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}N
STR_NEWGRF_FILENAME :{BLACK}Nome do ficheiro:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Moeda Modificada
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Taxa de troca: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separador:
STR_CURRENCY_PREFIX :{LTBLUE}Prefixo:
STR_CURRENCY_SUFFIX :{LTBLUE}Sufixo:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Mudar para Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Mudar para Euro: {ORANGE}nunca
############ Lists rail types
############ End of list of rail types
+75 -18
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Nu pot face asta....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Nu pot curãta terenul....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, toate drepturile rezervate
STR_00B7_VERSION :{BLACK}OpenTTD versiunea {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Design original de Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Graficã originalã de Simon Foster
STR_SPECIAL_THANKS :{BLACK}Multumiri speciale:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-semnalizare si semafoare {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Fundatiile pentru constructii în pantã {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Graficã pentru canale/ecluze {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 Echipa OpenTTD
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Echipa OpenTTD
STR_TRANSLATED_BY :{BLACK} Translator(i) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Anglo-americane (Mile)
STR_013A_METRIC_KILOMETERS :Metrice (Kilometri)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nu pot schimba intervalul de service
STR_018B_CLOSE_WINDOW :{BLACK}Închide fereastra
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Titlul ferestrei - trage de aici pentru a muta fereastra
STR_STICKY_BUTTON :{BLACK}Mark this window as undeletable for the 'Close All Windows' key
STR_RESIZE_BUTTON :{BLACK}Click&drag pentru a schimba marimea ferestrei
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoleazã clãdiri, strãzi, etc. pe un pãtrat de teren
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Scade altitudinea unui vârf de teren
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Mãreste altitudinea unui vârf de teren
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Schimb
STR_020E_SUBSIDIES :{YELLOW}Subventii
STR_020F_GENERAL_INFORMATION :{YELLOW}Informatii generale
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...prea departe de destinatia precedentã
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Clasamentul companiilor in anul {}(Titlu: {STRING})
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Primele companii care au atins {NUMU16}{}(Nivelul {STRING})
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Clasamentul companiilor in {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Om de afaceri
STR_0214_ENTREPRENEUR :Întreprinzãtor
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalist
STR_0217_MAGNATE :Magnat
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Magnatul Secolului
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} a obtinut titlul de '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} de la {STRING} a obtinut titlul de '{STRING}'!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} a dobandit titlul de '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} al {STRING} dobandeste titlul de '{STRING}'!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Setari Newgrf
STR_NEWGRF_SETTINGS2 :Setari Newgrf
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Inchide TOATE ferestrele
STR_CLOSE_ALL_WINDOWS2 :Inchide TOATE ferestrele
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afiseazã numele oraselor
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Afiseazã numele oraselor
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Afiseazã numele statiilor
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Obiectiv industrial nou
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Construieste un nou obiectiv ind.
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...se poate construi doar in orase
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...se poate construi doar in padurile ecuatoriale
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...se poate construi doar in zonele de desert
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Englezesti
STR_TOWNNAME_ORIGINAL_ENGLISH :Engleza (Original)
STR_TOWNNAME_FRENCH :Frantuzesti
STR_TOWNNAME_GERMAN :Germane
STR_TOWNNAME_AMERICAN :Americane
STR_TOWNNAME_ADDITIONAL_ENGLISH :Engleza (Aditional)
STR_TOWNNAME_LATIN_AMERICAN :Latino-Americane
STR_TOWNNAME_SILLY :Amuzante (englezã)
STR_TOWNNAME_SWEDISH :Suedeze
@@ -862,29 +859,39 @@ STR_TOWNNAME_DUTCH :Olandeze
STR_TOWNNAME_FINNISH :Finlandeze
STR_TOWNNAME_POLISH :Poloneze
STR_TOWNNAME_SLOVAKISH :Slovace
STR_TOWNNAME_NORWEGIAN :Norvegian
STR_TOWNNAME_HUNGARIAN :Unguresti
STR_TOWNNAME_AUSTRIAN :Austriece
STR_TOWNNAME_ROMANIAN :Romanesti
STR_TOWNNAME_CZECH :Cehe
STR_TOWNNAME_SWISS :Elvetian
############ end of townname region
STR_CURR_GBP :Lira sterlina ({POUNDSIGN})
STR_CURR_USD :Dolar ($)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Yen japonez ({YENSIGN})
STR_CURR_ATS :Siling austriac (ATS)
STR_CURR_BEF :Franc belgian (BEF)
STR_CURR_CHF :Franc elvetian (CHF)
STR_CURR_CZK :Coroanã cehã (CZK)
STR_CURR_DEM :Marca germana (DEM)
STR_CURR_DKK :Coroanã danezã (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Marcã finlandezã (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Drahmã greceascã (GRD)
STR_CURR_HUF :Forint (HUF)
STR_CURR_ISK :Coroanã islandezã (ISK)
STR_CURR_ITL :Lirã italianã (ITL)
STR_CURR_NLG :Gulden olandez (NLG)
STR_CURR_NOK :Coroanã norvegianã (NOK)
STR_CURR_PLN :Zlot (PLN)
STR_CURR_ROL :Leul Greu Romanesc (Lei)
STR_CURR_RUR :Rublã ruseascã (RUR)
STR_CURR_SEK :Coroanã suedezã (SEK)
STR_CURR_CUSTOM :Propriu...
STR_OPTIONS_LANG :{BLACK}Limba
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1011,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Înnoire automatã cu {ORANGE}{STRING}{LTBLUE} luni pânã la/dupã atingerea vechimii max.
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Fonduri minime pentru înnoire automatã: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Durata mesajelor de eroare: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Afiseaza populatia unui oras langa nume: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Ascunde arborii la alegerea optiunii 'clãdiri transparente': {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Altitudinea de înzãpezire: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Mãrimea maximã a statiilor: {ORANGE}{STRING} {RED}(valorile mari încetinesc jocul!)
@@ -1036,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Intervalul de service presetat p
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Intervalul de service presetat pentru aeronave: {ORANGE}dezactivat
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Intervalul de service presetat pentru nave: {ORANGE}{STRING} zile
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Intervalul de service presetat pentru nave: {ORANGE}dezactivat
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Deactivare service cand defectiunile sunt anulate: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Stirile în culori apar în anul: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Anul de început a jocului: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Termina jocul in: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Economie cu schimbãri de productie mai reduse, dar mai frecvente
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permite cumpararea de actiuni de la alte companii
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Plasare automatã a semnalelor la fiecare: {ORANGE}{STRING} pãtrãtele
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Pozitia listei cu instrumente: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :stânga
@@ -1129,6 +1140,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Nu pot construi o ecluz
STR_BUILD_LOCKS_TIP :{BLACK}Construieste ecluzã
STR_LANDINFO_LOCK :Ecluzã
STR_BUOY_IS_IN_USE :{WHITE}... baliza in uz!
STR_LANDINFO_COORDS :{BLACK}Coordonate: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Nu pot demola o parte din statie...
@@ -1180,6 +1193,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Alege tipul de marf
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Modificã trenul pentru a transporta marfa aleasã
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Nu pot modifica trenul...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Intervaluri de service in procente: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Schimba productia
TEMP_AI_IN_PROGRESS :{WHITE}Salut! Sunt noul algoritm AI, încã în teste. Dacã apar probleme, salveazã un screenshot si pune-l pe forum. Baftã!
TEMP_AI_ACTIVATED :{WHITE}Atentie: algoritmul AI este în stadiul alfa! Momentan este valabil doar pentru autovehicule!
@@ -1217,7 +1231,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Limba: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Marimea hartii: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Versiune server: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa server: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa server: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Data de inceput: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Data curenta: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Protejat cu parola!
@@ -1239,6 +1253,8 @@ STR_NETWORK_SELECT_MAP_TIP :{BLACK}Ce hart
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Numar maxim de clienti
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Alege un numar maxim de clienti. Nu trebuie ocupate toate locurile.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :LAN / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (fa reclama)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -1331,6 +1347,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE}Eroare de protocol. Conexiunea a fost i
STR_NETWORK_ERR_WRONG_REVISION :{WHITE}Versiunea acestui client este diferita de cea a serverului.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE}Parola gresita.
STR_NETWORK_ERR_SERVER_FULL :{WHITE}Serverul este plin
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Acessul tau este interzis pe acest server
STR_NETWORK_ERR_KICKED :{WHITE}Ai fost dat afara de pe server
STR_NETWORK_ERR_CHEATER :{WHITE} Cheat-urile nu sunt permise pe acest server
@@ -1471,6 +1488,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Traversare la nivel cu calea ferat
##id 0x2000
STR_2000_TOWNS :{WHITE}Orase
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2061,6 +2079,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Muta sediul companiei (costa 1% din
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nu pot construi sediul...
STR_7072_VIEW_HQ :{BLACK}Vezi sediul
STR_RELOCATE_HQ :{BLACK}Muta sediu
STR_COMPANY_PASSWORD :{BLACK}Parola
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Protejeaza-ti compania cu o parola pentru a preveni accesul neautorizat.
STR_SET_COMPANY_PASSWORD :Alege parola companiei
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Recesiune mondialã!{}{}Expertii financiari se tem de ceea ce e mai rãu odatã cu prãbusirea economicã!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Recesiunea s-a încheiat!{}{}Cresterea comertului dã încredere industriei, iar economia se redreseazã!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Comutator pentru mãrimea ferestrei
@@ -2074,6 +2095,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Nu pot vinde 25% din aceast
STR_707D_OWNED_BY :{WHITE}({COMMA16}% detinute de {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% detinute de {STRING}{} {COMMA16}% detinute de {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} a fost preluatã de {STRING}!
STR_7080_PROTECTED :{WHITE}Aceasta companie inca nu vinde actiuni...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Aburi)
@@ -2372,7 +2394,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} de la {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Trenul {COMMA16} asteaptã în depou
STR_8815_NEW_VEHICLES :{BLACK}Vehicule noi
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Greutate: {GOLD}{COMMA16}t{}{BLACK}Vitezã: {GOLD}{VELOCITY}{BLACK} Putere: {GOLD}{COMMA16}cp{}{BLACK}Cost rulare: {GOLD}{CURRENCY}/an{}{BLACK}Capacitate: {GOLD}{STRING}{}{BLACK}An aparitie: {GOLD}{NUMU16}{BLACK} Vârstã: {GOLD}{COMMA16} ani{}{BLACK}Eficientã max.: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cost: {GOLD}{CURRENCY}{BLACK} Greutate: {GOLD}{COMMA16}t{}{BLACK}Viteza: {GOLD}{VELOCITY}{BLACK} Putere: {GOLD}{COMMA32}cp{}{BLACK}Cost operational: {GOLD}{CURRENCY}/an{}{BLACK}Capacitate: {GOLD}{STRING}{}{BLACK}Design in: {GOLD}{NUMU16}{BLACK} Varsta: {GOLD}{COMMA16} ani{}{BLACK}Eficienta max.: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Informatii
STR_8819_TRAIN_TOO_LONG :{WHITE}Tren prea lung
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Trenurile pot fi modificate doar când se aflã într-un depou
@@ -2653,6 +2675,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Nu pot redenumi aeronava...
STR_A032_NAME_AIRCRAFT :{BLACK}Redenumeste aeronava
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Cetãtenii sãrbãtoresc {}sosirea primei aeronave la {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Accident aviatic!{}{COMMA16} victime în urma prãbusirii de la {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Accident aerian!{}Aeronava in pana de combustibil, {COMMA16} victime in urma dezastrulu!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinatii:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Redenumire
@@ -2722,6 +2745,15 @@ STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Nu exista fisiere newgrf instalate! Ci
STR_NEWGRF_FILENAME :{BLACK}Nume fisier:
STR_NEWGRF_GRF_ID :{BLACK}ID GRF:
STR_CURRENCY_WINDOW :{WHITE}Moneda proprie
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Curs de schimb: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separator:
STR_CURRENCY_PREFIX :{LTBLUE}Prefix:
STR_CURRENCY_SUFFIX :{LTBLUE}Sufix:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Adera la Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Adera la Euro: {ORANGE}niciodata
STR_CURRENCY_PREVIEW :{LTBLUE}Previzualizare: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Schimba un parametru al monedei proprii
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
@@ -2737,3 +2769,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Afiseaza toate trenurile care opresc in ace
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Afiseaza toate autovehiculele care opresc in aceasta statie
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Afiseaza toate aeronavele care opresc in aceasta statie
STR_SCHEDULED_SHIPS_TIP :{BLACK}Afiseaza toate navele care opresc in aceasta statie
STR_REPLACE_VEHICLES :{BLACK}Inlocuieste vehicule
STR_REPLACE_VEHICLES_WHITE :{WHITE}Inlocuire vehicule
STR_REPLACE_VEHICLES_START :{BLACK}Incepere inlocuire vehicule
STR_REPLACE_VEHICLES_STOP :{BLACK}Oprire inlocuire vehicuke
STR_NOT_REPLACING :{BLACK}Neinlocuire
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nici un vehicul selectat
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Alege tipul de vehicul pentru inlocuire
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Alege noul tip de vehicul cu care doresti sa inlocuiesti tipul de vehicul din stanga
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Apasa acest buton daca nu doresti sa inlocuiesti vehiculele selectate in stanga
STR_REPLACE_HELP_START_BUTTON :{BLACK}Apasa acest buton daca doresti sa inlocuiesti vehiculele selectate in stanga cu cele selectate in dreapta
STR_REPLACE_HELP_RAILTYPE :{BLACK}Alege un tip de cale ferata pentru care sa selectezi vehiculele
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Afiseaza cu ce model vor fi inlocuite vehiculele din stanga
STR_REPLACE_HELP :{BLACK}Aceasta functie iti permite sa selectezi un model de vehicul si sa-l inlocuiesti cu altul. Schimbarea se va efectua automat la intrarea vehiculului intr-un depou.
############ Lists rail types
STR_RAIL_VEHICLES :Vehicule feroviare
STR_MONORAIL_VEHICLES :Vehicule Monorail
STR_MAGLEV_VEHICLES :Vehicule Maglev
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
-2
View File
@@ -1,2 +0,0 @@
##name Russian_latin_char
##ownname Russkiy
+123 -25
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Takto sa to neda...
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Oblast sa neda vycistit...
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Original design by Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Graphics by Simon Foster
STR_SPECIAL_THANKS :{BLACK}Specialne podakovanie patri:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Specialne Semafory a Semafory {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Stavanie trate na strmych plochach {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Grafika vodnych kanalov {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 The OpenTTD team
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 The OpenTTD team
STR_TRANSLATED_BY :{BLACK} Preklad - gpsoft
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Imperial (mile)
STR_013A_METRIC_KILOMETERS :Metric (kilometre)
@@ -353,6 +349,8 @@ STR_015E_QUIT_GAME :Koniec hry
STR_015F_QUIT :Ukoncit program
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Si si isty ze chces ukoncit tuto hru ?
STR_0161_QUIT_GAME :{WHITE}Koniec hry
STR_SORT_ORDER_TIP :{BLACK}Vyber sposob triedenia (zostupny/vzostupny)
STR_SORT_CRITERIA_TIP :{BLACK}Vyber, podla coho sa ma triedit
SRT_SORT_BY :{BLACK}Usporiadat podla
STR_SORT_BY_POPULATION :{BLACK}Populacia
@@ -417,6 +415,8 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nieje mozne zmenit servisny interval...
STR_018B_CLOSE_WINDOW :{BLACK}Zavriet okno
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Nadpis okna - potiahni pre posun okna
STR_STICKY_BUTTON :{BLACK}Oznacit toto okno, aby sa nedalo zatvorit klavesou 'Zavri vsetky okna'
STR_RESIZE_BUTTON :{BLACK}Uchop a tahaj pre zmenu velkosti okna
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Zburanie budov, cistenie terenu
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Znizit roh terenu
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Zvysit roh terenu
@@ -539,6 +539,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Vybrat 'Novy styl'
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Vybrat 'Vlastny 1' (uzivatelom definovany) program
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vybrat 'Vlastny 2' (uzivatelom definovany) program
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Vymazat aktualny program (len Vlastny 1 a Vlastny 2 program)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Ulozit nastavenie hudby
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Kliknut na stopu pre ulozenie (len Vlastny 1 a Vlastny 2 program)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Zapnut / Vypnut nahodny vyber
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Zobrazit okno pre vyber hudobnych stop
@@ -563,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Zmeny prijmu nakladu
STR_020E_SUBSIDIES :{YELLOW}Dotacie
STR_020F_GENERAL_INFORMATION :{YELLOW}Hlavne informacie
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...prilis daleko z predchadzajuceho ciela
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Najlepsie spolocnosti ktore dosiahli rok 2050{}({STRING} Uroven)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Najlepsie spolocnosti, ktore dosiahli {NUMU16}{}({STRING} uroven)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Tabulka spolocnosti v roku {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Obchodnik
STR_0214_ENTREPRENEUR :Podnikatel
@@ -572,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalista
STR_0217_MAGNATE :Magnat
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Tycoon
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} dosiahol '{STRING}' stav!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} dosiahnuti {STRING} '{STRING}' stavu!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} ziskal oznacenie '{STRING}' !
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} z {STRING} ziskal oznacenie '{STRING}' !
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -723,6 +726,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Nazvy vozidiel
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Vychodzie
STR_02BF_CUSTOM :Vlastne
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Ulozit vlastne nazvy
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Vyber nazvu vozidiel
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Ulozit vlastne nazvy vozidiel na disk
@@ -768,6 +772,7 @@ STR_02DD_SUBSIDIES :Dotacie
STR_02DE_MAP_OF_WORLD :Mapa sveta
STR_EXTRA_VIEW_PORT :Extra pohlad
STR_02DF_TOWN_DIRECTORY :Zoznam miest
STR_TOWN_POPULATION :{BLACK}Svetova populacia: {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pohlad {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Nastavit pohlad podla mapy
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Nastavit pohlad podla hlavneho pohladu
@@ -797,13 +802,16 @@ STR_02F8_EVERY_3_MONTHS :Kazde 3 mesiace
STR_02F9_EVERY_6_MONTHS :Kazdych 6 mesiacov
STR_02FA_EVERY_12_MONTHS :Kazdych 6 mesiacov
STR_02FB_START_A_NEW_GAME :{BLACK}Spustit novu hru
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Nacitat ulozenu hru
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Pozriet Vyucbu/ukazky
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Vytvorit vlastny svet / scenar
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Vyber jednouzivatelskej hry
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Vyberte hru pre 2-8 hracov
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Zobraz nastavenia hry
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Zobraz nastavenia obtiaznosti
STR_0303_START_A_NEW_GAME_USING :{BLACK}Spustit novu hru z pouzitim vlastneho scenara
STR_0304_QUIT :{BLACK}Ukoncit program
STR_0305_QUIT_OPENTTD :{BLACK}Ukoncit 'OpenTTD'
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Pozriet Vyucbu/ukazky
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...moze byt postavene len v meste
@@ -819,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Financovat novy priemysel
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Financovat novy priemysel
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...moze byt postavene len v meste
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...moze byt postavene len v dazdovom pralese
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...moze byt postavene len v pusti
@@ -841,10 +849,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Anglicke
STR_TOWNNAME_ORIGINAL_ENGLISH :Anglicke
STR_TOWNNAME_FRENCH :Francuzke
STR_TOWNNAME_GERMAN :Nemecke
STR_TOWNNAME_AMERICAN :Americke
STR_TOWNNAME_ADDITIONAL_ENGLISH :Anglicke (Dalsie)
STR_TOWNNAME_LATIN_AMERICAN :Latinsko-Americke
STR_TOWNNAME_SILLY :Hlupe (anglicky)
STR_TOWNNAME_SWEDISH :Svedske
@@ -852,29 +860,39 @@ STR_TOWNNAME_DUTCH :Holandske
STR_TOWNNAME_FINNISH :Finske
STR_TOWNNAME_POLISH :Polske
STR_TOWNNAME_SLOVAKISH :Slovenske
STR_TOWNNAME_NORWEGIAN :Norske
STR_TOWNNAME_HUNGARIAN :Madarske
STR_TOWNNAME_AUSTRIAN :Rakuske
STR_TOWNNAME_ROMANIAN :Rumunske
STR_TOWNNAME_CZECH :Ceske
STR_TOWNNAME_SWISS :Svajciarske
############ end of townname region
STR_CURR_GBP :Libry ({POUNDSIGN})
STR_CURR_USD :Dolare ($)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Jeny ({YENSIGN})
STR_CURR_ATS :Rakuske Silingy (ATS)
STR_CURR_BEF :Belgicke Franky (BEF)
STR_CURR_CHF :Svajciarske Franky (CHF)
STR_CURR_CZK :Ceske Koruny (CZK)
STR_CURR_DEM :Nemecke marky(DEM)
STR_CURR_DKK :Danske Koruny (DKK)
STR_CURR_ESP :Pesety (ESP)
STR_CURR_FIM :Finske Marky (FIM)
STR_CURR_FRF :Franky (FRF)
STR_CURR_GRD :Grecke Drachny (GRD)
STR_CURR_HUF :Madarske Forinty (HUF)
STR_CURR_ISK :Islandske Koruny (ISK)
STR_CURR_ITL :Talianske Liry (ITL)
STR_CURR_NLG :Danske Guldeny (NLG)
STR_CURR_NOK :Norske Koruny (NOK)
STR_CURR_PLN :Polske Zloty (PLN)
STR_CURR_ROL :Rumunske Lei
STR_CURR_RUR :Rusle Ruble (rur)
STR_CURR_SEK :Svedske Koruny (SEK)
STR_CURR_CUSTOM :Vlasne...
STR_OPTIONS_LANG :{BLACK}Jazyk
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -962,7 +980,8 @@ STR_CONFIG_PATCHES_OFF :Vyp.
STR_CONFIG_PATCHES_ON :Zap.
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Zobraz rychlost vozidla v stavovej liste: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Umoznit vystavbu na sikmine a pobrezi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Umoznit odstranenie viacerych mestskych ciest, mostov, tunelov, etc: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Povolit v oblasti pokrytia realistickejsiu velkost: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Umoznit odstranenie viacerych mestskych ciest, mostov, atd.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Umoznit stavbu dlhych vlakov: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Zapnut realnu akceleraciu vlakov: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Umoznit spajat stanice: {ORANGE}{STRING}
@@ -989,7 +1008,7 @@ STR_CONFIG_PATCHES_NEW_TRAIN_PATHFIND :{LTBLUE}Novy algoritmus pre hladanie s
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Vzdy povolit male letiska: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS :{LTBLUE}Vlak sa strati pokial nic nedosiahne za: {ORANGE}{STRING} dni
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS_DISABLED :{LTBLUE}Vlak bude zruzeny ak neurobi zisk za: {ORANGE}vypnute
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS_DISABLED :{LTBLUE}Vlak bude zruseny, ak neurobi zisk za: {ORANGE}vypnute
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Obnovenie prikazu vozidla: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :nie
STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :ano, okrem zastavenych vozidiel (v garazi)
@@ -997,12 +1016,13 @@ STR_CONFIG_PATCHES_ORDER_REVIEW_ON :ano, u vsetkych vozidiel
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Upozornit na stratu vlaku: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Stare vozidla sa neprestanu vyrabat: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automaticka obnova dopravnych prostriedkov, ked su stare
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Obnovit vozidlo {ORANGE}{STRING}{LTBLUE} mesiacov pred/po dosiahnuti maximalneho veku
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minimalny pocet penazi pre automaticke obnovovanie vozidiel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Obnovit vozidlo {ORANGE}{STRING}{LTBLUE} mesiacov pred/po dosiahnuti max. veku
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Min. mnozstvo penazi pre automaticke obnovovanie vozidiel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Dlzka zobrazenia chybovej spravy: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Zobrazit populaciu mesta v jeho nazve: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Neviditelne stromy (pri priesvitnych budovach): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Uroven ciary snehu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maximalne pokrytie stanice: {ORANGE}{STRING} {RED}Vystraha: Vysoke hodnoty spomaluju hru
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max. pokrytie stanice: {ORANGE}{STRING} {RED}Pozor: Vysoke hodnoty spomaluju hru
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Automaticke opravy vrtulnikov v heliporte: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Maximalny pocet vlakov hraca: {ORANGE}{STRING}
@@ -1025,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Imlicitny servisny interval pre
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Implicitny servisny interval pre lietadla: {ORANGE}vypnuty
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Implicitny servisny interval pre lode: {ORANGE}{STRING} dni/%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Implicitny servisny interval pre lode: {ORANGE}vypnuty
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Vypnut servisy, ak su vypnute poruchy: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Farebne novinky sa objavia v roku: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Datum zaciatku hry: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Ukoncit hru v roku: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Mierne zmeny ekonomiky (viac mensich zmien)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Povolit nakup akcii od ostatnych spolocnosti
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}When dragging place signals every: {ORANGE}{STRING} tile(s)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Pozicia hlavneho menu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Na lavo
@@ -1072,6 +1095,7 @@ STR_HEADING_FOR_WAYPOINT :{LTBLUE}Smeruje do {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Smeruje do {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Chod cez {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Chod bez zastavky cez {WAYPOINT}
STR_WAYPOINTNAME_CITY :Smerovy bod {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Smerovy bod {TOWN} #{COMMA16}
@@ -1101,6 +1125,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Vela nahodneho priemyslu
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Pokryt mapu s nahodne umiestnenym priemyslom
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nemozem vygenerovat priemysel
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Otvorit panel nastrojov pre zvysenie/znizenie terenu, vysadzby stromov, atd.
STR_LANDSCAPING_TOOLBAR :{WHITE}Zmena terenu
STR_LEVEL_LAND_TOOLTIP :{BLACK}Menit teren
@@ -1116,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Tu sa neda postavit stavidlo...
STR_BUILD_LOCKS_TIP :{BLACK}Postavit stavidla...
STR_LANDINFO_LOCK :Stavidlo
STR_BUOY_IS_IN_USE :{WHITE}... boja sa pouziva!
STR_LANDINFO_COORDS :{BLACK}Suradnice: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Nemozno odstranit cast stanice...
@@ -1167,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Vybrat typ prepravovaneho nakladu
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Prerobit vlak na prepravu vybraneho nakladu
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Nemozno prerobit vlak...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Servisne intervaly su v percentach: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Zmenit produkciu
TEMP_AI_IN_PROGRESS :{WHITE}Vitajte v novom AI. Mozete ocakavat problemy. Ak by nejake nastali urobte screenshot a poslite ho na forum.
TEMP_AI_ACTIVATED :{WHITE}Varovanie: toto nove AI je iba alpha verzia! Momentalne iba automobily funguju!
@@ -1204,12 +1232,13 @@ STR_NETWORK_LANGUAGE :{SILVER}Jazyk: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Prostredie: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Velkost mapy: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Verzia servera: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa servera: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Adresa servera: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Datum zaciatku: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Aktualny date: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Heslo:
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER JE OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SERVER JE PLNY
STR_NETWORK_VERSION_MISMATCH :{SILVER}ROZNE VERZIE
STR_NETWORK_JOIN_GAME :{BLACK}Pripojit sa
@@ -1224,8 +1253,12 @@ STR_NETWORK_SELECT_MAP :{BLACK}Vyber mapu:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Ktoru mapu chces hrat?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maximalny pocet klientov:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Zvol maximalny pocet klientov. Moze sa ich pripojit aj menej.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :LAN / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (oznamit)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 klienti
STR_NETWORK_3_CLIENTS :3 klienti
STR_NETWORK_4_CLIENTS :4 klienti
@@ -1237,7 +1270,7 @@ STR_NETWORK_9_CLIENTS :9 klientov
STR_NETWORK_10_CLIENTS :10 klientov
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Jazyk hracov:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Aby ostatni hraci vedeli, akym jazykom sa bude hovorit na serveri.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Spustit hru
STR_NETWORK_START_GAME_TIP :{BLACK}Zacat sietovu hru z nahodnej mapy alebo scenaria
STR_NETWORK_LOAD_GAME :{BLACK}Nacitat hru
@@ -1286,6 +1319,7 @@ STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Overovanie..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Cakam..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Stahovanie mapy..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Spracovanie dat..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registracia..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Prijem informacii o hre..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Prijem informacii o spolocnosti..
@@ -1314,7 +1348,9 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Chyba vznikla v protokole a spojenie j
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Revizia hry u tohto klienta nezodpoveda revizii hry na serveri.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Chybne heslo.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Server je plny
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Si zablokovany na tomto serveri
STR_NETWORK_ERR_KICKED :{WHITE} Bol si vyhodeny z hry
STR_NETWORK_ERR_CHEATER :{WHITE} Cheatovanie nie je povolene na tomto serveri
STR_NETWORK_ERR_LEFT :opustil hru
############ Leave those lines in this order!!
@@ -1330,15 +1366,32 @@ STR_NETWORK_ERR_CLIENT_NAME_IN_USE :meno sa uz pouziva
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :chybne heslo
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :chybne id hraca v DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :vyhodeny zo servera
STR_NETWORK_ERR_CLIENT_CHEATER :sa pokusal cheatovat
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :vstupil do hry
STR_NETWORK_GIVE_MONEY :ti dal nejake peniaze ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :dal si {STRING} nejake penazi ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Tim] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Tim] pre {STRING}:
STR_NETWORK_CHAT_CLIENT :[Osobny] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Privatny] pre {STRING}:
STR_NETWORK_CHAT_ALL :[Vsetci] {STRING}:
STR_NETWORK_NAME_CHANGE :si zmenil meno na
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Server ukoncil relaciu
STR_NETWORK_SERVER_REBOOT :{WHITE} Server sa restartuje...{}Cakajte prosim...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Klient
STR_NETWORK_CLIENTLIST_NONE :(nikto)
STR_NETWORK_CLIENTLIST_KICK :Vyhodit
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Darovat peniaze
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Napisat vsetkym
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Napisat pre spolocnost
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privatna sprava
STR_NETWORK_SEND :{BLACK}Poslat
############ end network gui strings
@@ -1436,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Zeleznicny prejazd
##id 0x2000
STR_2000_TOWNS :{WHITE}Mesta
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2026,6 +2080,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sidlo spolocnosti mozes premiestnit
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Sidlo spolocnosti sa neda postavit...
STR_7072_VIEW_HQ :{BLACK}Pozriet sidlo
STR_RELOCATE_HQ :{BLACK}Premiestnit sidlo
STR_COMPANY_PASSWORD :{BLACK}Heslo
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Heslo-ochrana vasej spolocnosti proti neautorizovanemu pripojeniu hracov
STR_SET_COMPANY_PASSWORD :Nastavte heslo spolocnosti
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Svetova kriza!{}{}Financni experti maju obavy z prepadu ekonomiky!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Koniec krizy!{}{}Ocakava sa vzostup predaja a posilnenie ekonomiky!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Prepinac velkosti okna
@@ -2039,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}25% podiel v tejto spolocnosti sa ne
STR_707D_OWNED_BY :{WHITE}({COMMA16}% vlastnene {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% vlastnene {STRING}{} {COMMA16}% vlastnene {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} bola kupena spolocnostou {STRING}!
STR_7080_PROTECTED :{WHITE}Tato spolocnost zatial neobchoduje s akciami...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Parny)
@@ -2337,7 +2395,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} z {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Vlak {COMMA16} caka v depe
STR_8815_NEW_VEHICLES :{BLACK}Nove vozidla
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} Nosnost: {GOLD}{COMMA16}t{}{BLACK}Rychlost: {GOLD}{VELOCITY}{BLACK} Vykon: {GOLD}{COMMA16}hp{}{BLACK}Cena prevadzky: {GOLD}{CURRENCY}/rok{}{BLACK}Kapacita: {GOLD}{STRING}{}{BLACK}Navrnute: {GOLD}{NUMU16}{BLACK} Zivotnost: {GOLD}{COMMA16} rokov{}{BLACK}Spolahlivost: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Cena: {GOLD}{CURRENCY}{BLACK} Nosnost: {GOLD}{COMMA16}t{}{BLACK}Rychlost: {GOLD}{VELOCITY}{BLACK} Vykon: {GOLD}{COMMA32}hp{}{BLACK}Cena prevadzky: {GOLD}{CURRENCY}/rok{}{BLACK}Kapacita: {GOLD}{STRING}{}{BLACK}Navrnute: {GOLD}{NUMU16}{BLACK} Zivotnost: {GOLD}{COMMA16} rokov{}{BLACK}Spolahlivost: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Informacie
STR_8819_TRAIN_TOO_LONG :{WHITE}Vlak je prilis dlhy
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Vlaky sa daju prerobit len v depe
@@ -2564,6 +2622,7 @@ STR_GO_TO_SHIP_DEPOT :Chod do {TOWN} Lodenice
SERVICE_AT_SHIP_DEPOT :Opravit v {TOWN} Lodenici
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Letiska
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Tu sa letisko neda postavit...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Hangar
STR_A003_NEW_AIRCRAFT :{BLACK}Nove Lietadlo
@@ -2617,6 +2676,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Nemozno pomenovat lietadlo...
STR_A032_NAME_AIRCRAFT :{BLACK}Pomenovat lietadlo
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Mesto oslavuje . . .{}Prve lietadlo pristalo na {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Letecka havaria!{}{COMMA16} mrtvych pri poziari na {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Letecka havaria!{}Lietadlu doslo palivo, {COMMA16} mrtvych pri poziari!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Ciele:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Premenovat
@@ -2686,6 +2746,15 @@ STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Nie su nainstalovane ziadne subory s n
STR_NEWGRF_FILENAME :{BLACK}Nazov suboru:
STR_NEWGRF_GRF_ID :{BLACK}ID GRF:
STR_CURRENCY_WINDOW :{WHITE}Vlastna mena
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Kurz meny: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Oddelovac:
STR_CURRENCY_PREFIX :{LTBLUE}Predpona:
STR_CURRENCY_SUFFIX :{LTBLUE}Pripona:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Prechod na Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Prechod na Euro: {ORANGE}nikdy
STR_CURRENCY_PREVIEW :{LTBLUE}Nahlad: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Zmenit parametre vlastnej meny
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
@@ -2697,3 +2766,32 @@ STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Auta
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Lietadla
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Lode
STR_SCHEDULED_TRAINS_TIP :{BLACK}Zobrazit vsetky vlaky, ktore maju tuto stanicu v cestovnom poriadku
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Zobrazit vsetky auta, ktore maju tuto stanicu v cestovnom poriadku
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Zobrazit vsetky lietadla, ktore maju tuto stanicu v cestovnom poriadku
STR_SCHEDULED_SHIPS_TIP :{BLACK}Zobrazit vsetky lode, ktore maju tuto stanicu v cestovnom poriadku
STR_REPLACE_VEHICLES :{BLACK}Vymena vozidiel
STR_REPLACE_VEHICLES_WHITE :{WHITE}Vymena vozidiel
STR_REPLACE_VEHICLES_START :{BLACK}Zacat vymenu vozidiel
STR_REPLACE_VEHICLES_STOP :{BLACK}Zastavit vymenu vozidiel
STR_NOT_REPLACING :{BLACK}Nevymiena sa
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Nie je oznacene vozidlo
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Vyber typ lokomotivy na vymenu
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vyber typ novej lokomotivy, ktoru chces pouzit namiesto typu v lavom zozname
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Stlac toto tlacidlo, ak nechces vymienat typ lokomotivy vybrany v lavom zozname
STR_REPLACE_HELP_START_BUTTON :{BLACK}Stlac toto tlacidlo, ak chces zacat vymienat typ lokomotivy v lavom zozname za typ lokomotivy v pravom zozname
STR_REPLACE_HELP_RAILTYPE :{BLACK}Vyber typ kolajnic, pre ktore chces vymienat lokomotivy
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Tu sa zobrazuje, za ktoru lokomotiva sa lokomotiva v lavom zozname zamenuje
STR_REPLACE_HELP :{BLACK}Umoznuje vybrat typ lokomotivy, ktory automaticky sa zameni za iny typ, ak vlaky s takouto lokomotivou sa zastavia v depe
############ Lists rail types
STR_RAIL_VEHICLES :Lokomotiva pre zeleznicu
STR_MONORAIL_VEHICLES :Lokomotiva pre jednokolajovku
STR_MAGLEV_VEHICLES :Lokomotiva pre magneticku drahu
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+53 -19
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}No se puede hacer eso....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}No se puede desbrozar esta zona....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Copyright Original {COPYRIGHT} 1995 Chris Sawyer, Todos los derechos reservados
STR_00B7_VERSION :{BLACK}OpenTTD versión {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Diseño original de Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Gráficos originales de Simon Foster
STR_SPECIAL_THANKS :{BLACK}Nuestro agradecimiento especial a:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Pre-señales y semáforos {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Carreteras en cuesta {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Gráficos de Canales {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 El equipo OpenTTD
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 El equipo OpenTTD
STR_TRANSLATED_BY :{BLACK} Traductor(es) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OS X
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Imperial (millas)
STR_013A_METRIC_KILOMETERS :Métrica (kilómetros)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}No es posible cambiar el intervalo d
STR_018B_CLOSE_WINDOW :{BLACK}Cerrar ventana
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Título de la ventana - arrastrelo para mover la ventana
STR_STICKY_BUTTON :{BLACK}Marcar esta ventana como no borrable para el comando de 'Cerrar Todas las Ventanas'
STR_RESIZE_BUTTON :{BLACK}Pulse y arrastre para redimensionar la ventana
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Demoler edificios, etc. en un bloque de terreno
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Bajar una esquina del terreno
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Subir una esquina del terreno
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Cambios en la aceptaci
STR_020E_SUBSIDIES :{YELLOW}Subvenciones
STR_020F_GENERAL_INFORMATION :{YELLOW}Información general
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...demasiado lejano del destino anterior
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top de empresas que han llegado al 2050{}({STRING} nivel)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top de empresas que han alcanzado {NUMU16}{}(Nivel {STRING})
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Tabla clasificatoria de empresas en {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Hombre de negocios
STR_0214_ENTREPRENEUR :Empresario
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Capitalista
STR_0217_MAGNATE :Magnate
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Magnate del siglo
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} alcanza el estatus de '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} de {STRING} alcanza el estatus de '{STRING}'!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} logra el estado '{STRING}'!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} de {STRING} logra el estado '{STRING}'!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Configuraci
STR_NEWGRF_SETTINGS2 :Configuración Newgrf
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Cerrar TODAS las ventanas
STR_CLOSE_ALL_WINDOWS2 :Cerrar TODAS las ventanas
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Ver nombres de poblaciones
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Ver nombres de poblaciones
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Ver nombres de estaciones
@@ -829,7 +826,7 @@ STR_0313_FUND_NEW_INDUSTRY :Fundar nueva industria
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fundar nueva industria
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...sólo se puede construir en poblaciones
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...sólo se puede construir en áreas de selva
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...sólo se puede construir en áreas desérticas
@@ -851,10 +848,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Inglés
STR_TOWNNAME_ORIGINAL_ENGLISH :Inglés
STR_TOWNNAME_FRENCH :Francés
STR_TOWNNAME_GERMAN :Alemán
STR_TOWNNAME_AMERICAN :Americano
STR_TOWNNAME_ADDITIONAL_ENGLISH :Inglés (Adicional)
STR_TOWNNAME_LATIN_AMERICAN :Latinoamericano
STR_TOWNNAME_SILLY :Tontos
STR_TOWNNAME_SWEDISH :Sueco
@@ -862,10 +859,12 @@ STR_TOWNNAME_DUTCH :Holand
STR_TOWNNAME_FINNISH :Finlandés
STR_TOWNNAME_POLISH :Polaco
STR_TOWNNAME_SLOVAKISH :Eslovaco
STR_TOWNNAME_NORWEGIAN :Noruego
STR_TOWNNAME_HUNGARIAN :Húngaro
STR_TOWNNAME_AUSTRIAN :Austríaco
STR_TOWNNAME_ROMANIAN :Rumano
STR_TOWNNAME_CZECH :Checo
STR_TOWNNAME_SWISS :Suizo
############ end of townname region
STR_CURR_GBP :Libras ({POUNDSIGN})
@@ -1019,6 +1018,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Renovaci
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Renovación aut. si tiene {ORANGE}{STRING}{LTBLUE} meses antes/después edad max
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Renovar automát. usando la menor cantidad de dinero: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duración del mensaje de error: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Muestra la población de esta población en esta etiqueta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Árboles invisibles (con edificios transparentes): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Altura de la línea de nieve: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Expansión máxima de est.: {ORANGE}{STRING} {RED}Atención: Valores altos relantizan
@@ -1044,10 +1044,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Intervalo de despacho por defect
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Intervalo de despacho por defecto para aviones: {ORANGE}no
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Intervalo de despacho por defecto para barcos: {ORANGE}{STRING} días
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Intervalo de despacho por defecto para barcos: {ORANGE}no
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Desactivar servicio cuando las averías están desactivadas: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Noticias en color aparecen en: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Fecha de inicio: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Fin del juego en: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Activar economía suave (cambios más pequeños)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permitir comprar acciones de otras empresas
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Cuando arrastre colocar señales cada: {ORANGE}{STRING} casilla(s)
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posición de la barra de herramientas principal: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Izquierda
@@ -1137,6 +1140,7 @@ STR_CANT_BUILD_LOCKS :{WHITE}No se pueden construir d
STR_BUILD_LOCKS_TIP :{BLACK}Constuir dársenas
STR_LANDINFO_LOCK :Dársena
STR_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}No se puede retirar parte de la estación...
@@ -1188,6 +1192,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Elegir tipo de carga para que el tr
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Reformar tren para transportar mercancía resaltada
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}No se puede reformar tren...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}intervalo de despachos está en porcentaje: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Cambiar producción
TEMP_AI_IN_PROGRESS :{WHITE}Bienvenido a esta nueva IA, en progreso. Puede esperar problemas. Cuando los encuentres, haz una captura de pantalla y envíala al foro. Disfruta!
TEMP_AI_ACTIVATED :{WHITE}Atención: esta nueva IA está en fase alpha! Actualmente, solo los camiones y autobuses funcionan!
@@ -1225,7 +1230,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Idioma: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Tileset: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Tamaño Mapa: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Versión servidor: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Dirección servidor: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Dirección servidor: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Fecha inicio: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Fecha actual: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Protegido por contraseña!
@@ -1341,10 +1346,11 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Se ha producido un error de protocolo
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} La versión de este cliente no corresponde con la versión de este servidor.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Contraseña incorrecta.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} El servidor está lleno
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Has sido baneado de este servidor
STR_NETWORK_ERR_KICKED :{WHITE} Has sido expulsado de este servidor
STR_NETWORK_ERR_CHEATER :{WHITE} Los cheats (trucos) no son permitidos en este servidor
STR_NETWORK_ERR_LEFT :has abandonado el juego
STR_NETWORK_ERR_LEFT :ha abandonado el juego
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :error general
STR_NETWORK_ERR_CLIENT_DESYNC :error de desync
@@ -1481,6 +1487,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :Paso a nivel
##id 0x2000
STR_2000_TOWNS :{WHITE}Poblaciones
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2087,6 +2094,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}No se puede vender el 25% de accione
STR_707D_OWNED_BY :{WHITE}({COMMA16}% propiedad de {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% propiedad de {STRING}{} {COMMA16}% propiedad de {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} ha sido comprada por {STRING}!
STR_7080_PROTECTED :{WHITE}Esta empresa todavía no dispone acciones a la venta...
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Vapor)
@@ -2385,7 +2393,7 @@ STR_8813_FROM :{LTBLUE}{CARGO} desde {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}El tren {COMMA16} está esperando en el depósito
STR_8815_NEW_VEHICLES :{BLACK}Nuevos Vehículos
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Coste: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16} toneladas{}{BLACK}Velocidad: {GOLD}{VELOCITY}{BLACK} Potencia: {GOLD}{COMMA16}cv{}{BLACK}Coste de operación: {GOLD}{CURRENCY}/año{}{BLACK}Capacidad: {GOLD}{STRING}{}{BLACK}Diseñado en: {GOLD}{NUMU16}{BLACK} Vida útil: {GOLD}{COMMA16} años{}{BLACK}Fiabilidad máxima: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Coste: {GOLD}{CURRENCY}{BLACK} Peso: {GOLD}{COMMA16} toneladas{}{BLACK}Velocidad: {GOLD}{VELOCITY}{BLACK} Potencia: {GOLD}{COMMA32}cv{}{BLACK}Coste de operación: {GOLD}{CURRENCY}/año{}{BLACK}Capacidad: {GOLD}{STRING}{}{BLACK}Diseñado en: {GOLD}{NUMU16}{BLACK} Vida útil: {GOLD}{COMMA16} años{}{BLACK}Fiabilidad máxima: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Información
STR_8819_TRAIN_TOO_LONG :{WHITE}Tren demasiado largo
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Los trenes únicamente puede ser modificados en el interior de los depósitos
@@ -2666,6 +2674,7 @@ STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}No se puede nombrar aeronave...
STR_A032_NAME_AIRCRAFT :{BLACK}Nombrar aeronave
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Los ciudadanos celebran . . .{}¡Primera aeronave llega a {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}¡Avión siniestrado!{}{COMMA16} fallecidos en la explosión en {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Accidente aéreo!{}La aeronave se quedó sin combustible, {COMMA16} personas mueren en la tragedia!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinos:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Renombrar
@@ -2759,3 +2768,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Mostrar todos los trenes que tienen esta es
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Mostrar todos los vehículos de carretera que tienen esta estación en su horario
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Mostrar todos las aeronaves que tienen esta estación en su horario
STR_SCHEDULED_SHIPS_TIP :{BLACK}Mostrar todos los barcos que tienen esta estación en su horario
STR_REPLACE_VEHICLES :{BLACK}Reemplazar vehículos
STR_REPLACE_VEHICLES_WHITE :{WHITE}Reemplazar vehículos
STR_REPLACE_VEHICLES_START :{BLACK}Empezar a reemplazar vehículos
STR_REPLACE_VEHICLES_STOP :{BLACK}Parar de reemplazar vehículos
STR_NOT_REPLACING :{BLACK}No reemplazar
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}No hay vehículos seleccionados
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Seleccione tipo de locomotora a reemplazar
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Seleccione nuevo tipo de locomotora a usar en vez de la locomotora seleccionada a la izquierda
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Presiona este botón si no quieres reemplazar la locomotora seleccionada en la izquierda
STR_REPLACE_HELP_START_BUTTON :{BLACK}Presiona este botón si quieres reemplazar la locomotora seleccionada a la izquierda por la seleccionada en la derecha
STR_REPLACE_HELP_RAILTYPE :{BLACK}Seleccione tipo de rail para seleccionar locomotoras para ese tipo
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Muestra que locomotora será reemplazada
STR_REPLACE_HELP :{BLACK}Esta función permite seleccionar un tipo de locomotora y reemplazarla por otra. El cambio se realizará cuando el vehículo llegue al depósito
############ Lists rail types
STR_RAIL_VEHICLES :Vehículos de rail
STR_MONORAIL_VEHICLES :Vehículos monorail
STR_MAGLEV_VEHICLES :Vehículos de Lev. Mag.
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
+66 -30
View File
@@ -186,13 +186,8 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Kan inte utf
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan inte röja området...
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Ursprunglig äganderätt {COPYRIGHT} 1995 Chris Sawyer, Alla rättigheter reserverade
STR_00B7_VERSION :{BLACK}OpenTTD version {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Ursprungligen designat av Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Grafik av Simon Foster
STR_SPECIAL_THANKS :{BLACK}Speciella tack till:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Försignaler och Semaforer {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Grunden för järnväg på sluttningar {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal- och slussgrafik {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD-teamet
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 OpenTTD-teamet
STR_TRANSLATED_BY :{BLACK} Översättare -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
@@ -311,6 +306,7 @@ STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
STR_0139_IMPERIAL_MILES :Engelsk mil (miles)
STR_013A_METRIC_KILOMETERS :Metrisk (kilometer)
@@ -420,6 +416,7 @@ STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan inte
STR_018B_CLOSE_WINDOW :{BLACK}Stäng fönster
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Fönstertitel - dra för att flytta fönstret
STR_STICKY_BUTTON :{BLACK}Markera detta fönster så att det finns kvar även fast man använder 'Stäng alla fönster' knappen
STR_RESIZE_BUTTON :{BLACK}Klicka och dra för att förstora fönstret
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Riv ned byggnader etc. på en ruta mark
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Sänk ett hörn av marken
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Höj upp ett hörn av marken
@@ -567,7 +564,8 @@ STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}
STR_020E_SUBSIDIES :{YELLOW}Subventioner
STR_020F_GENERAL_INFORMATION :{YELLOW}Generell information
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...för långt från föregående destination
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Bästa företag som nått år 2050{}({STRING} Level)
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Top companies who reached {NUMU16}{}({STRING} Level)
STR_TOP_COMPANIES_NETWORK_GAME :{BIGFONT}{BLACK}Company League Table in {NUMU16}
STR_0212 :{BIGFONT}{COMMA16}.
STR_0213_BUSINESSMAN :Affärsman
STR_0214_ENTREPRENEUR :Entreprenör
@@ -576,9 +574,10 @@ STR_0216_CAPITALIST :Kapitalist
STR_0217_MAGNATE :Magnat
STR_0218_MOGUL :Mogul
STR_0219_TYCOON_OF_THE_CENTURY :Århundradets Tycoon
STR_021A :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} uppnår '{STRING}' status!
STR_021C_OF_ACHIEVES_STATUS :{BIGFONT}{STRING}{STRING} av {STRING} uppnår '{STRING}' status!
STR_HIGHSCORE_NAME :{BIGFONT}{STRING}, {STRING}
STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA16})
STR_021B_ACHIEVES_STATUS :{BLACK}{BIGFONT}{STRING} uppnår '{STRING}' status!
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{STRING} från {STRING} uppnår '{STRING}' status!
STR_021D :{BLACK}
STR_021E :{WHITE}
STR_021F :{BLUE}{COMMA16}
@@ -742,8 +741,6 @@ STR_NEWGRF_SETTINGS :Newgrf inst
STR_NEWGRF_SETTINGS2 :Newgrf inställningar
STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Stänga alla fönster
STR_CLOSE_ALL_WINDOWS2 :Stäng alla fönster
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stadsnamn visas
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Stadsnamn visas
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Stationsnamn visas
@@ -775,6 +772,7 @@ STR_02DD_SUBSIDIES :Subventioner
STR_02DE_MAP_OF_WORLD :Världskarta
STR_EXTRA_VIEW_PORT :Nytt vy fönster
STR_02DF_TOWN_DIRECTORY :Lista av städer
STR_TOWN_POPULATION :{BLACK}Världsbefolkning: {COMMA32}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vy fönster {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopiera till vy
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiera kartans position till detta Vyfönster
@@ -829,7 +827,7 @@ STR_0313_FUND_NEW_INDUSTRY :Bekosta ny industri
############ range ends here
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Bekosta ny industri
STR_0315 :{STRING}
STR_JUST_STRING :{STRING}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan bara byggas i städer
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan bara byggas i regnskog
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan bara byggas på öken
@@ -851,10 +849,10 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7
############ start of townname region
STR_TOWNNAME_ENGLISH :Engelska
STR_TOWNNAME_ORIGINAL_ENGLISH :Engelska
STR_TOWNNAME_FRENCH :Franska
STR_TOWNNAME_GERMAN :Tyska
STR_TOWNNAME_AMERICAN :Amerikanska
STR_TOWNNAME_ADDITIONAL_ENGLISH :Engelska (Extra)
STR_TOWNNAME_LATIN_AMERICAN :Latinamerikanska
STR_TOWNNAME_SILLY :Löjliga
STR_TOWNNAME_SWEDISH :Svenska
@@ -862,10 +860,12 @@ STR_TOWNNAME_DUTCH :Holl
STR_TOWNNAME_FINNISH :Finska
STR_TOWNNAME_POLISH :Polska
STR_TOWNNAME_SLOVAKISH :Slovakiska
STR_TOWNNAME_NORWEGIAN :Norska
STR_TOWNNAME_HUNGARIAN :Hungarianska
STR_TOWNNAME_AUSTRIAN :Australienska
STR_TOWNNAME_ROMANIAN :Rumänska
STR_TOWNNAME_CZECH :Tjeckiska
STR_TOWNNAME_SWISS :Schweiziska
############ end of townname region
STR_CURR_GBP :Pund ({POUNDSIGN})
@@ -1019,6 +1019,7 @@ STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}F
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Förnya automatiskt fordon {ORANGE}{STRING}{LTBLUE} månader före/efter maximal ålder
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Minst mängd pengar i kassan för automatisk förnyelse av fordon: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Hur länge felmeddelanden visas: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Visa befolkningsmängd i stadsnamnet: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Osynliga träd (när genomskinliga byggnader är valt): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snölinjeshöjd: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maximal spridning av en station: {ORANGE}{STRING} {RED}Varning: Hög inställning slöar ner spelet
@@ -1044,10 +1045,13 @@ STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard serviceintervall f
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Standard serviceintervall för flygplan: {ORANGE}av
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard serviceintervall för skepp: {ORANGE}{STRING} dagar
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Default service interval for ships: {ORANGE}av
STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Disable servicing when breakdowns set to none: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_DATE :{LTBLUE}Färgade nyheter visas i: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Startdatum: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_DATE :{LTBLUE}Avsluta spelet om: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Lugn ekonomi (flera små ändringar)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Tillåt inköp av aktier från andra företag
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Vid utdragning av signaler, placera en signal var: {ORANGE}{STRING} ruta
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position av verktygsraden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Vänster
@@ -1137,6 +1141,8 @@ STR_CANT_BUILD_LOCKS :{WHITE}Kan ej bygga slussar h
STR_BUILD_LOCKS_TIP :{BLACK}Bygg slussar
STR_LANDINFO_LOCK :Sluss
STR_BUOY_IS_IN_USE :{WHITE}... bojen används!
STR_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUMU16}x{NUMU16} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kan ej ta bort del av station...
@@ -1188,6 +1194,7 @@ STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}V
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Anpassa tåg för att bära vald godstyp
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan ej anpassa tåg...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Visa serviceintervall i procent: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Ändra produktion
TEMP_AI_IN_PROGRESS :{WHITE}Välkommen till denna nya AI, under uppbyggnad. Du kan räkna med att det finns problem med den. När något sådant händer, ta en skärmdump och lägg ut den på forumet. Mycket nöje!
TEMP_AI_ACTIVATED :{WHITE}Varning: den nya AI:n är fortfarande i alpha-stadiet! Just nu funkar bara vägfordon!
@@ -1225,7 +1232,7 @@ STR_NETWORK_LANGUAGE :{SILVER}Spr
STR_NETWORK_TILESET :{SILVER}Klimat: {WHITE}{STRING}
STR_NETWORK_MAP_SIZE :{SILVER}Kartstorlek: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_SERVER_VERSION :{SILVER}Serverversion: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Serveradress: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Serveradress: {WHITE}{STRING} : {NUMU16}
STR_NETWORK_START_DATE :{SILVER}Startdatum: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Nuvarande datum: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Lösenordsskyddad!
@@ -1341,6 +1348,7 @@ STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Vi gjorde ett protokollfel och v
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Servern har en annan version än denna klient.
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Fel lösenord.
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Servern är full
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Du är bannlyst från den här servern
STR_NETWORK_ERR_KICKED :{WHITE} Du är utkastad från servern
STR_NETWORK_ERR_CHEATER :{WHITE} Fusk är inte tillåtet på denna server
@@ -1481,6 +1489,7 @@ STR_1818_ROAD_RAIL_LEVEL_CROSSING :J
##id 0x2000
STR_2000_TOWNS :{WHITE}Städer
STR_TOWN_LABEL_POP :{WHITE}{STRING} ({COMMA32})
STR_2001 :{WHITE}{STRING}
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
@@ -2087,6 +2096,7 @@ STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan inte s
STR_707D_OWNED_BY :{WHITE}({COMMA16}% ägd av {STRING})
STR_707E_OWNED_BY_OWNED_BY :{WHITE}({COMMA16}% ägd av {STRING}{} {COMMA16}% ägd av {STRING})
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{STRING} har tagits över av {STRING}!
STR_7080_PROTECTED :{WHITE}Det här företaget bedriver inte aktiehandel ännu....
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (Ånga)
@@ -2385,13 +2395,13 @@ STR_8813_FROM :{LTBLUE}{CARGO} fr
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Tåg {COMMA16} väntar i depå
STR_8815_NEW_VEHICLES :{BLACK}Nytt fordon
STR_8816 :{BLACK}-
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Vikt: {GOLD}{COMMA16}t{}{BLACK}Hastighet: {GOLD}{VELOCITY}{BLACK} Effekt: {GOLD}{COMMA16}hp{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/yr{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designad: {GOLD}{NUMU16}{BLACK} Livslängd: {GOLD}{COMMA16} år{}{BLACK}Max. tillförlitlighet: {GOLD}{COMMA8}%
STR_8817_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Vikt: {GOLD}{COMMA16}t{}{BLACK}Hastighet: {GOLD}{VELOCITY}{BLACK} Effekt: {GOLD}{COMMA32}hp{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/år{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designår: {GOLD}{NUMU16}{BLACK} Livstid: {GOLD}{COMMA16} år{}{BLACK}Max. Tillförlitlighet: {GOLD}{COMMA8}%
STR_8818_INFORMATION :{BLACK}Information
STR_8819_TRAIN_TOO_LONG :{WHITE}Tåg för långt
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Tåg kan bara ändras när det står still inuti en depå
STR_881B_TRAINS :{WHITE}{STRING} - {COMMA16} Tåg
STR_881C_NEW_RAIL_VEHICLES :{WHITE}Nytt tågfordon
STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Nytt monorail-Fordon
STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Nytt monorail-fordon
STR_881E_NEW_MAGLEV_VEHICLES :{WHITE}Nytt maglev-Fordon
STR_881F_BUILD_VEHICLE :{BLACK}Bygg fordon
STR_8820_RENAME :{BLACK}Byt namn på
@@ -2457,10 +2467,10 @@ STR_8858_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}G
STR_SERVICE_HINT :{BLACK}Skippa den här ordern om inte servning behövs
STR_8859_NEW_NOW_AVAILABLE :{BLACK}{BIGFONT}Nytt {STRING} nu tillgängligt!
STR_885A :{BLACK}{BIGFONT}{STRING}
STR_885B_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kostnad: {CURRENCY} Vikt: {COMMA16}t{}Hastighet: {VELOCITY} Effekt: {COMMA16}hp{}Löpande kostnad: {CURRENCY}/yr{}Kapacitet: {STRING}
STR_885B_COST_WEIGHT_T_SPEED_POWER :{BLACK}Kostnad: {CURRENCY} Vikt: {COMMA16}t{}Hastighet: {VELOCITY} Effekt: {COMMA16}hp{}Löpande kostnad: {CURRENCY}/år{}Kapacitet: {STRING}
STR_885C_BROKEN_DOWN :{RED}Motorstopp
STR_885D_AGE_RUNNING_COST_YR :{BLACK}Ålder: {LTBLUE}{STRING}{BLACK} Löpande kostnad: {LTBLUE}{CURRENCY}/yr
STR_885E_WEIGHT_T_POWER_HP_MAX_SPEED :{BLACK}Vikt: {LTBLUE}{COMMA16}t {BLACK}Effekt: {LTBLUE}{COMMA32}hp{BLACK} Max. hastighet: {LTBLUE}{VELOCITY}
STR_885E_WEIGHT_T_POWER_HP_MAX_SPEED :{BLACK}Vikt: {LTBLUE}{COMMA16}t {BLACK}Effekt: {LTBLUE}{COMMA32}hp{BLACK} Tophastighet: {LTBLUE}{VELOCITY}
STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Vinst detta år: {LTBLUE}{CURRENCY} (förra år: {CURRENCY})
STR_8860_RELIABILITY_BREAKDOWNS :{BLACK}Tillförlitlighet: {LTBLUE}{COMMA8}% {BLACK}Motorstopp sedan förra service: {LTBLUE}{COMMA16}
STR_8861_STOPPED :{RED}Stoppat
@@ -2487,13 +2497,13 @@ STR_9004_NEW_VEHICLES :{BLACK}Nytt Fordon
STR_9005_INFORMATION :{BLACK}Information
STR_9006_NEW_ROAD_VEHICLES :{WHITE}Nytt Vägfordon
STR_9007_BUILD_VEHICLE :{BLACK}Bygg Fordon
STR_9008_COST_SPEED_RUNNING_COST :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/yr{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designad: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} år{}{BLACK}Max. Tillförlitlighet: {GOLD}{COMMA8}%
STR_9008_COST_SPEED_RUNNING_COST :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/år{}{BLACK}Kapacitet: {GOLD}{STRING}{}{BLACK}Designår: {GOLD}{NUMU16}{BLACK} Livstid: {GOLD}{COMMA16} år{}{BLACK}Max. tillförlitlighet: {GOLD}{COMMA8}%
STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kan inte bygga vägfordon...
STR_900A_MUST_BUILD_ROAD_VEHICLE :{WHITE}Måste bygga bussgarage först
STR_900B_ORDERS :{WHITE}{STRING} (Order)
STR_900C_DETAILS :{WHITE}{STRING} (Detaljer)
STR_900D_AGE_RUNNING_COST_YR :{BLACK}Ålder: {LTBLUE}{STRING}{BLACK} Löpande kostnad: {LTBLUE}{CURRENCY}/yr
STR_900E_MAX_SPEED :{BLACK}Max. hastighet: {LTBLUE}{VELOCITY}
STR_900E_MAX_SPEED :{BLACK}Tophastighet: {LTBLUE}{VELOCITY}
STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Vinst detta år: {LTBLUE}{CURRENCY} (förra år: {CURRENCY})
STR_9010_RELIABILITY_BREAKDOWNS :{BLACK}Tillförlitlighet: {LTBLUE}{COMMA8}% {BLACK}Motorstopp sedan förra service: {LTBLUE}{COMMA16}
STR_9011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Byggt: {LTBLUE}{NUMU16}{BLACK} Värde: {LTBLUE}{CURRENCY}
@@ -2522,7 +2532,7 @@ STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}V
STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Bygg markerat vägfordon
STR_9028_NEW_ROAD_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Nytt vägfordon tillgängligt!
STR_9029 :{BLACK}{BIGFONT}{STRING}
STR_902A_COST_SPEED_RUNNING_COST :{BLACK}Kostnad: {CURRENCY}{}Hastighet: {VELOCITY}{}Löpande kostnad: {CURRENCY}/yr{}Kapacitet: {STRING}
STR_902A_COST_SPEED_RUNNING_COST :{BLACK}Kostnad: {CURRENCY}{}Hastighet: {VELOCITY}{}Löpande kostnad: {CURRENCY}/år{}Kapacitet: {STRING}
STR_902C_NAME_ROAD_VEHICLE :{WHITE}Byt namn på vägfordon
STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}Kan inte byta namn på vägfordon...
@@ -2550,7 +2560,7 @@ STR_9806_CAN_T_BUILD_SHIPS :{WHITE}Kan inte bygga skepp...
STR_9807_MUST_BUILD_SHIP_DEPOT_FIRST :{WHITE}Måste bygga skeppsdepå först
STR_9808_NEW_SHIPS :{WHITE}Nytt Skepp
STR_9809_BUILD_SHIP :{BLACK}Bygg Skepp
STR_980A_COST_SPEED_CAPACITY_RUNNING :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Kapacitet: {GOLD}{STRING} {STRING}{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/yr{}{BLACK}Designad: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} år{}{BLACK}Max. Tillförlitlighet: {GOLD}{COMMA8}%
STR_980A_COST_SPEED_CAPACITY_RUNNING :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Kapacitet: {GOLD}{STRING} {STRING}{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/år{}{BLACK}Designad: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} år{}{BLACK}Max. Tillförlitlighet: {GOLD}{COMMA8}%
STR_980B_SHIP_MUST_BE_STOPPED_IN :{WHITE}Skepp måste vara stoppat i depå
STR_980C_CAN_T_SELL_SHIP :{WHITE}Kan inte sälja skepp...
STR_980D_CAN_T_BUILD_SHIP :{WHITE}Kan inte bygga skepp...
@@ -2559,7 +2569,7 @@ STR_980F :{WHITE}{STRING}
STR_9810_ORDERS :{WHITE}{STRING} (Order)
STR_9811_DETAILS :{WHITE}{STRING} (Detaljer)
STR_9812_AGE_RUNNING_COST_YR :{BLACK}Ålder: {LTBLUE}{STRING}{BLACK} Löpande kostnad: {LTBLUE}{CURRENCY}/yr
STR_9813_MAX_SPEED :{BLACK}Max. hastighet: {LTBLUE}{VELOCITY}
STR_9813_MAX_SPEED :{BLACK}Tophastighet: {LTBLUE}{VELOCITY}
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Vinst detta år: {LTBLUE}{CURRENCY} (förra år: {CURRENCY})
STR_9815_RELIABILITY_BREAKDOWNS :{BLACK}Tillförlitlighet: {LTBLUE}{COMMA8}% {BLACK}Motorstopp sedan förra service: {LTBLUE}{COMMA16}
STR_9816_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Byggt: {LTBLUE}{NUMU16}{BLACK} Värde: {LTBLUE}{CURRENCY}
@@ -2587,7 +2597,7 @@ STR_982A_SEND_SHIP_TO_DEPOT :{BLACK}Skicka skepp till dep
STR_982B_SHOW_SHIP_DETAILS :{BLACK}Visa skeppdetaljer
STR_982C_NEW_SHIP_NOW_AVAILABLE :{BLACK}{BIGFONT}Nytt skepp tillgängligt!
STR_982D :{BLACK}{BIGFONT}{STRING}
STR_982E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Max hastighet: {VELOCITY}{}Kapacitet: {STRING}{}Löpande kostnad: {CURRENCY}/år
STR_982E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Tophastighet: {VELOCITY}{}Kapacitet: {STRING}{}Löpande kostnad: {CURRENCY}/år
STR_982F_NAME_SHIP :{BLACK}Byt namn på skepp
STR_9831_NAME_SHIP :{WHITE}Byt namn på skepp
@@ -2619,14 +2629,14 @@ STR_A003_NEW_AIRCRAFT :{BLACK}Nytt Flygplan
STR_A004_INFORMATION :{BLACK}Information
STR_A005_NEW_AIRCRAFT :{WHITE}Nytt Flygplan
STR_A006_BUILD_AIRCRAFT :{BLACK}Bygg Flygplan
STR_A007_COST_SPEED_CAPACITY_PASSENGERS :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Kapacitet: {GOLD}{COMMA16} passagerare, {COMMA16} postsäckar{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/yr{}{BLACK}Designad: {GOLD}{NUMU16}{BLACK} Life: {GOLD}{COMMA16} år{}{BLACK}Max. Tillförlitlighet: {GOLD}{COMMA8}%
STR_A007_COST_SPEED_CAPACITY_PASSENGERS :{BLACK}Kostnad: {GOLD}{CURRENCY}{BLACK} Hastighet: {GOLD}{VELOCITY}{}{BLACK}Kapacitet: {GOLD}{COMMA16} passagerare, {COMMA16} postsäckar{}{BLACK}Löpande kostnad: {GOLD}{CURRENCY}/år{}{BLACK}Designår: {GOLD}{NUMU16}{BLACK} Livstid: {GOLD}{COMMA16} år{}{BLACK}Max. tillförlitlighet: {GOLD}{COMMA8}%
STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}Kan inte bygga flygplan...
STR_A009_AIRCRAFT :{WHITE}{STRING} - {COMMA16} Flygplan
STR_A00A :{WHITE}{STRING}
STR_A00B_ORDERS :{WHITE}{STRING} (Order)
STR_A00C_DETAILS :{WHITE}{STRING} (Detaljer)
STR_A00D_AGE_RUNNING_COST_YR :{BLACK}Ålder: {LTBLUE}{STRING}{BLACK} Löpande kostnad: {LTBLUE}{CURRENCY}/yr
STR_A00E_MAX_SPEED :{BLACK}Max. hastighet: {LTBLUE}{VELOCITY}
STR_A00E_MAX_SPEED :{BLACK}Tophastighet: {LTBLUE}{VELOCITY}
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Vinst detta år: {LTBLUE}{CURRENCY} (förra år: {CURRENCY})
STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Tillförlitlighet: {LTBLUE}{COMMA8}% {BLACK}Motorstopp sedan förra service: {LTBLUE}{COMMA16}
STR_A011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Byggt: {LTBLUE}{NUMU16}{BLACK} Värde: {LTBLUE}{CURRENCY}
@@ -2659,13 +2669,14 @@ STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Skicka flygplan till hangar
STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Visa flygplan detaljer
STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE :{BLACK}{BIGFONT}Nytt flygplan tillgängligt!
STR_A02D :{BLACK}{BIGFONT}{STRING}
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Max hastighet: {VELOCITY}{}Kapacitet: {COMMA16} passagerare, {COMMA16} postsäckar{}Löpande kostnad: {CURRENCY}/år
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Tophastighet: {VELOCITY}{}Kapacitet: {COMMA16} passagerare, {COMMA16} postsäckar{}Löpande kostnad: {CURRENCY}/år
STR_A030_NAME_AIRCRAFT :{WHITE}Byt namn på flygplan
STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Kan inte byta namn på flygplan...
STR_A032_NAME_AIRCRAFT :{BLACK}Byt namn på flygplan
STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Invånarna firar . . .{}Första flygplanet ankommer till {STATION}!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Flygplanskrasch!{}{COMMA16} dör i eldklot på {STATION}
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Flygplanskrasch!{}Flygplanet fick slut på bränsle, {COMMA16} dör i eldklot!
STR_A035_DESTINATIONS :{TINYFONT}{BLACK}Destinationer:
STR_A036 :{TINYFONT}{BLACK}{STATION}
STR_A037_RENAME :{BLACK}Byt namn på
@@ -2759,3 +2770,28 @@ STR_SCHEDULED_TRAINS_TIP :{BLACK}Visa alla t
STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Visa alla vägfordon där denna station finns med i rutten
STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Visa alla flygplan där denna station finns med i rutten
STR_SCHEDULED_SHIPS_TIP :{BLACK}Visa alla skepp där denna station finns med i rutten
STR_REPLACE_VEHICLES :{BLACK}Byt ut fordon
STR_REPLACE_VEHICLES_WHITE :{WHITE}Byt ut fordon
STR_REPLACE_VEHICLES_START :{BLACK}Börja byta ut fordon
STR_REPLACE_VEHICLES_STOP :{BLACK}Sluta byta ut fordon
STR_NOT_REPLACING :{BLACK}Byter inte ut
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Inget fordon valt
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Välj fordonstyp att byta ut
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Välj den nya fordonstyp du vill använda i stället för den till vänster valda typen
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tryck för att sluta byta ut fordonstypen vald på vänster sida
STR_REPLACE_HELP_START_BUTTON :{BLACK}Tryck för att börja byta ut fordonstypen vald på vänster sida med fordonstypen på höger sida
STR_REPLACE_HELP_RAILTYPE :{BLACK}Välj järnvägstyp för att byta ut fordon
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Visa vilket fordon, det vänstra fordonet byts ut till, om något
STR_REPLACE_HELP :{BLACK}Detta gör det möjligt att byta ut en fordonstyp med en annan typ, när tågen av den ursprungliga typen anländer till en depå
############ Lists rail types
STR_RAIL_VEHICLES :Järnvägsfordon
STR_MONORAIL_VEHICLES :Monorail-fordon
STR_MAGLEV_VEHICLES :Maglevfordon
############ End of list of rail types
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA16}
-473
View File
@@ -1,473 +0,0 @@
##name Turkish
##ownname Türkçe
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Harita Siniri
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Harita sinirina çok yakin
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Yetersiz Nakit- Gereken {CURRENCY}
STR_0004 :{WHITE}{CURRENCY64}
STR_0005 :{RED}{CURRENCY64}
STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Zeminin düz olmasi gerekiyor
STR_0008_WAITING :{BLACK}Bekliyor: {WHITE}{STRING}
STR_0009 :{WHITE}{STRING}
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (Tasindigi Istasyon:
STR_000B :{YELLOW}{STATION})
STR_000C_ACCEPTS :{BLACK}Kabul: {WHITE}
STR_000D_ACCEPTS :{BLACK}Kabul: {GOLD}
STR_000E :
STR_000F_PASSENGERS :Yolcu
STR_0010_COAL :Kömür
STR_0011_MAIL :Posta
STR_0012_OIL :Petrol
STR_0013_LIVESTOCK :Hayvansal Ürünler
STR_0014_GOODS :Mamül Madde
STR_0015_GRAIN :Hububat
STR_0016_WOOD :Agaç
STR_0017_IRON_ORE :Demir
STR_0018_STEEL :Çelik
STR_0019_VALUABLES :Mücevherat
STR_001A_COPPER_ORE :Bakir
STR_001B_MAIZE :Maize
STR_001C_FRUIT :Meyve
STR_001D_DIAMONDS :Elmas
STR_001E_FOOD :Gida
STR_001F_PAPER :Kagit
STR_0020_GOLD :Altin
STR_0021_WATER :Su
STR_0022_WHEAT :Bugday
STR_0023_RUBBER :Kauçuk
STR_0024_SUGAR :Seker
STR_0025_TOYS :Oyuncak
STR_0026_CANDY :Sekerleme
STR_0027_COLA :Kola
STR_0028_COTTON_CANDY :Pamuk Helva
STR_0029_BUBBLES :Köpükçük
STR_002A_TOFFEE :Tofita
STR_002B_BATTERIES :Pil
STR_002C_PLASTIC :Plastik
STR_002D_FIZZY_DRINKS :Fizzy Gazozu
STR_002E :
STR_002F_PASSENGER :Yolcu
STR_0030_COAL :Kömür
STR_0031_MAIL :Posta
STR_0032_OIL :Petrol
STR_0033_LIVESTOCK :Hayvansal Ürün
STR_0034_GOODS :Mamül Madde
STR_0035_GRAIN :Hububat
STR_0036_WOOD :Agaç
STR_0037_IRON_ORE :Demir
STR_0038_STEEL :Çelik
STR_0039_VALUABLES :Mücevherat
STR_003A_COPPER_ORE :Bakir
STR_003B_MAIZE :Maize
STR_003C_FRUIT :Meyve
STR_003D_DIAMOND :Elmas
STR_003E_FOOD :Gida
STR_003F_PAPER :Kagit
STR_0040_GOLD :Altin
STR_0041_WATER :Su
STR_0042_WHEAT :Bugday
STR_0043_RUBBER :Kauçuk
STR_0044_SUGAR :Seker
STR_0045_TOY :Oyuncak
STR_0046_CANDY :Tatli
STR_0047_COLA :Kola
STR_0048_COTTON_CANDY :Pamuk Helva
STR_0049_BUBBLE :Köpükçük
STR_004A_TOFFEE :Tofita
STR_004B_BATTERY :Pil
STR_004C_PLASTIC :Plastik
STR_004D_FIZZY_DRINK :Fizzy Gazozu
STR_004E :
STR_004F_PASSENGER :{COMMA16} yolcu
STR_0050_TON_OF_COAL :{COMMA16} ton kömür
STR_0051_BAG_OF_MAIL :{COMMA16} çanta posta
STR_0052_OF_OIL :{VOLUME} petrol
STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} adet hayvansal ürün
STR_0054_CRATE_OF_GOODS :{COMMA16} kasa mamül madde
STR_0055_TON_OF_GRAIN :{COMMA16} ton hububat
STR_0056_TON_OF_WOOD :{COMMA16} ton agaç
STR_0057_TON_OF_IRON_ORE :{COMMA16} ton demir
STR_0058_TON_OF_STEEL :{COMMA16} ton çelik
STR_0059_BAG_OF_VALUABLES :{COMMA16} çanta mücevherat
STR_005A_TON_OF_COPPER_ORE :{COMMA16} ton bakir
STR_005B_TON_OF_MAIZE :{COMMA16} ton misir
STR_005C_TON_OF_FRUIT :{COMMA16} ton meyve
STR_005D_BAG_OF_DIAMONDS :{COMMA16} çanta elmas
STR_005E_TON_OF_FOOD :{COMMA16} ton gida
STR_005F_TON_OF_PAPER :{COMMA16} ton kagit
STR_0060_BAG_OF_GOLD :{COMMA16} çanta altin
STR_0061_OF_WATER :{VOLUME} su
STR_0062_TON_OF_WHEAT :{COMMA16} ton bugday
STR_0063_OF_RUBBER :{VOLUME} of rubber
STR_0064_TON_OF_SUGAR :{COMMA16} ton seker
STR_0065_TOY :{COMMA16} oyuncak
STR_0066_BAG_OF_CANDY :{COMMA16} çanta sekerleme
STR_0067_OF_COLA :{VOLUME} kola
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} ton pamuk helva
STR_0069_BUBBLE :{COMMA16} köpükçük
STR_006A_TON_OF_TOFFEE :{COMMA16} ton tofita
STR_006B_BATTERY :{COMMA16} pil
STR_006C_OF_PLASTIC :{VOLUME} plastik
STR_006D_FIZZY_DRINK :{COMMA16} fizzy gazozu
STR_006E :
STR_006F_PASSENGERS :{COMMA16} yolcu
STR_0070_TONS_OF_COAL :{COMMA16} ton kömür
STR_0071_BAGS_OF_MAIL :{COMMA16} çanta posta
STR_0072_OF_OIL :{VOLUME} petrol
STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} adet hayvansal ürün
STR_0074_CRATES_OF_GOODS :{COMMA16} kasa mamül madde
STR_0075_TONS_OF_GRAIN :{COMMA16} ton hububat
STR_0076_TONS_OF_WOOD :{COMMA16} ton agaç
STR_0077_TONS_OF_IRON_ORE :{COMMA16} ton demir
STR_0078_TONS_OF_STEEL :{COMMA16} ton çelik
STR_0079_BAGS_OF_VALUABLES :{COMMA16} çanta mücevherat
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} ton bakir
STR_007B_TONS_OF_MAIZE :{COMMA16} ton misir
STR_007C_TONS_OF_FRUIT :{COMMA16} ton meyve
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} çanta elmas
STR_007E_TONS_OF_FOOD :{COMMA16} ton gida
STR_007F_TONS_OF_PAPER :{COMMA16} ton kagit
STR_0080_BAGS_OF_GOLD :{COMMA16} çanta altin
STR_0081_OF_WATER :{VOLUME} su
STR_0082_TONS_OF_WHEAT :{COMMA16} ton bugday
STR_0083_OF_RUBBER :{VOLUME} kauçuk
STR_0084_TONS_OF_SUGAR :{COMMA16} ton seker
STR_0085_TOYS :{COMMA16} oyuncak
STR_0086_BAGS_OF_CANDY :{COMMA16} çanta sekerleme
STR_0087_OF_COLA :{VOLUME} kola
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} ton pamuk helva
STR_0089_BUBBLES :{COMMA16} köpükçük
STR_008A_TONS_OF_TOFFEE :{COMMA16} ton tofita
STR_008B_BATTERIES :{COMMA16} pil
STR_008C_OF_PLASTIC :{VOLUME} plastik
STR_008D_FIZZY_DRINKS :{COMMA16} fizzy gazozu
STR_008E :
STR_008F_PS :{TINYFONT}YL
STR_0090_CL :{TINYFONT}KÖ
STR_0091_ML :{TINYFONT}PO
STR_0092_OL :{TINYFONT}PE
STR_0093_LV :{TINYFONT}HÜ
STR_0094_GD :{TINYFONT}MM
STR_0095_GR :{TINYFONT}HB
STR_0096_WD :{TINYFONT}AG
STR_0097_OR :{TINYFONT}OR
STR_0098_ST :{TINYFONT}ÇE
STR_0099_VL :{TINYFONT}MÜ
STR_009A_CO :{TINYFONT}KO
STR_009B_MZ :{TINYFONT}MI
STR_009C_FT :{TINYFONT}FT
STR_009D_DM :{TINYFONT}DM
STR_009E_FD :{TINYFONT}GI
STR_009F_PR :{TINYFONT}KA
STR_00A0_GD :{TINYFONT}MM
STR_00A1_WR :{TINYFONT}WR
STR_00A2_WH :{TINYFONT}BU
STR_00A3_RB :{TINYFONT}KU
STR_00A4_SG :{TINYFONT}SG
STR_00A5_TY :{TINYFONT}OY
STR_00A6_SW :{TINYFONT}TA
STR_00A7_CL :{TINYFONT}KÖ
STR_00A8_CF :{TINYFONT}PH
STR_00A9_BU :{TINYFONT}KP
STR_00AA_TF :{TINYFONT}TF
STR_00AB_BA :{TINYFONT}PI
STR_00AC_PL :{TINYFONT}PL
STR_00AD_FZ :{TINYFONT}FG
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
STR_00B0_MAP :{WHITE}Map - {STRING}
STR_00B1_GAME_OPTIONS :{WHITE}Oyun Seçenekleri
STR_00B2_MESSAGE :{YELLOW}Mesaj
STR_00B3_MESSAGE_FROM :{YELLOW}Mesaj {STRING}
STR_00B4_CAN_T_DO_THIS :{WHITE}Bunu yapamazsiniz..
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Bu bölgeyi temizleyemezsiniz...
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Orjinal telif hakki {COPYRIGHT} 1995 Chris Sawyer, Tüm haklari saklidir
STR_00B7_VERSION :{BLACK}OpenTTD versiyon {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Orjinal tasarim: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Orjinal grafikler: Simon Foster
STR_SPECIAL_THANKS :{BLACK}Özel Tesekkürler:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Ön-Sinyaller ve Semaforlar {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Egimlerdeki Yollarin Temelleri {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal/Kilit grafikleri {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD ekibi
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
STR_00C7_QUIT :{WHITE}Çik
STR_00C8_YES :{BLACK}Evet
STR_00C9_NO :{BLACK}Hayir
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Oyunu sonlandirip {STRING}'a dönmek istediginizden emin misiniz?
STR_00CB_1 :{BLACK}1
STR_00CC_2 :{BLACK}2
STR_00CD_3 :{BLACK}3
STR_00CE_4 :{BLACK}4
STR_00CF_5 :{BLACK}5
STR_00D0_NOTHING :Hiç
STR_00D1_DARK_BLUE :Koyu Mavi
STR_00D2_PALE_GREEN :Açik Yesil
STR_00D3_PINK :Pembe
STR_00D4_YELLOW :Sari
STR_00D5_RED :Kirmizi
STR_00D6_LIGHT_BLUE :Açik Mavi
STR_00D7_GREEN :Yesil
STR_00D8_DARK_GREEN :Koyu Yesil
STR_00D9_BLUE :Mavi
STR_00DA_CREAM :Krem
STR_00DB_MAUVE :Leylak
STR_00DC_PURPLE :Mor
STR_00DD_ORANGE :Turuncu
STR_00DE_BROWN :Kahverengi
STR_00DF_GREY :Gri
STR_00E0_WHITE :Beyaz
STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Oyunda çok fazla vasita var
STR_00E2 :{BLACK}{COMMA16}
STR_00E3 :{RED}{COMMA16}
STR_00E4_LOCATION :{BLACK}Konum
STR_00E5_CONTOURS :Dis Hatlar
STR_00E6_VEHICLES :Vasitalar
STR_00E7_INDUSTRIES :Endüstriler
STR_00E8_ROUTES :Yollar
STR_00E9_VEGETATION :Bitkiler
STR_00EA_OWNERS :Sahipler
STR_00EB_ROADS :{BLACK}{TINYFONT}Yollar
STR_00EC_RAILROADS :{BLACK}{TINYFONT}Demiryollari
STR_00ED_STATIONS_AIRPORTS_DOCKS :{BLACK}{TINYFONT}Istasyon/Havaalani/Liman
STR_00EE_BUILDINGS_INDUSTRIES :{BLACK}{TINYFONT}Binalar/Endüstriler
STR_00EF_VEHICLES :{BLACK}{TINYFONT}Vasitalar
STR_00F0_100M :{BLACK}{TINYFONT}100m
STR_00F1_200M :{BLACK}{TINYFONT}200m
STR_00F2_300M :{BLACK}{TINYFONT}300m
STR_00F3_400M :{BLACK}{TINYFONT}400m
STR_00F4_500M :{BLACK}{TINYFONT}500m
STR_00F5_TRAINS :{BLACK}{TINYFONT}Trenler
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Yol Tasitlari
STR_00F7_SHIPS :{BLACK}{TINYFONT}Gemiler
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Hava Tasitlari
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Nakil Rotalari
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Kömür Madeni
STR_00FB_POWER_STATION :{BLACK}{TINYFONT}Enerji Santrali
STR_00FC_FOREST :{BLACK}{TINYFONT}Orman
STR_00FD_SAWMILL :{BLACK}{TINYFONT}Biçki Fabrikasi
STR_00FE_OIL_REFINERY :{BLACK}{TINYFONT}Petrol Rafinerisi
############ range for menu starts
############ range for menu ends
############ range for months starts
############ range for months ends
############ range for service numbers starts
############ range for service numbers ends
############ range for days starts
############ range for days ends
############ range for cargo acecpted starts
############ range for cargo acecpted ends
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ start of townname region
############ end of townname region
# Start of order review system.
# DON'T ADD OR REMOVE LINES HERE
# end of order system
############ network gui strings
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ end network gui strings
##id 0x0800
##id 0x1000
##id 0x1800
##id 0x2000
##id 0x2800
##id 0x3000
############ range for rating starts
############ range for rating ends
##id 0x3800
##id 0x4000
##id 0x4800
############ range for requires starts
############ range for requires ends
##id 0x5000
##id 0x5800
############ WARNING, using range 0x6000 for strings that are stored in the savegame
############ These strings may never get a new id, or savegames will break!
##id 0x6000
############ end of savegame specific region!
##id 0x6800
############ range for difficulty levels starts
############ range for difficulty levels ends
############ range for difficulty settings starts
############ range for difficulty settings ends
##id 0x7000
##id 0x8000
##id 0x8800
##id 0x9000
##id 0x9800
##id 0xA000
##id 0xB000
############ Those following lines need to be in this order!!
############ End of order list
File diff suppressed because it is too large Load Diff
+431
View File
@@ -1,2 +1,433 @@
##name Russian_latin_char
##ownname Russkiy
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Za krayami karti
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Blizko k krayu karti
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Ne hvataet deneg - neobhodimo {CURRENCY}
STR_0004 :{WHITE}{CURRENCY64}
STR_0005 :{RED}{CURRENCY64}
STR_EMPTY :
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Neobhodima ploskaya poverhnosty
STR_0008_WAITING :{BLACK}Ozhidanie: {WHITE}{STRING}
STR_0009 :{WHITE}{STRING}
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (marshrut iz
STR_000B :{YELLOW}{STATION})
STR_000C_ACCEPTS :{BLACK}Prinimaetsya: {WHITE}
STR_000D_ACCEPTS :{BLACK}Prinimaetsya: {GOLD}
STR_000E :
STR_000F_PASSENGERS :Passajiri
STR_0010_COAL :Ugoly
STR_0011_MAIL :Pochta
STR_0012_OIL :Nefty
STR_0013_LIVESTOCK :Domashniy skot
STR_0014_GOODS :Tovary
STR_0015_GRAIN :Zerno
STR_0016_WOOD :Derevo
STR_0017_IRON_ORE :Zheleznaya Ruda
STR_0018_STEEL :Staly
STR_0019_VALUABLES :Dragocennosti
STR_001A_COPPER_ORE :Mednaya Ruda
STR_001B_MAIZE :Kukuruza
STR_001C_FRUIT :Frukti
STR_001D_DIAMONDS :Almazi
STR_001E_FOOD :Prodovolstvie
STR_001F_PAPER :Bumaga
STR_0020_GOLD :Zoloto
STR_0021_WATER :Voda
STR_0022_WHEAT :Pshenica
STR_0023_RUBBER :Rezina
STR_0024_SUGAR :Sahar
STR_0025_TOYS :Igrushki
STR_0026_CANDY :Sladosti
STR_0027_COLA :Kola
STR_0028_COTTON_CANDY :Saharnaya vata
STR_0029_BUBBLES :Puzirki
STR_002A_TOFFEE :Iriska
STR_002B_BATTERIES :Batareyki
STR_002C_PLASTIC :Plastik
STR_002D_FIZZY_DRINKS :Shipuchie napitki
STR_002E :
STR_002F_PASSENGER :Passajiri
STR_0030_COAL :Ugoly
STR_0031_MAIL :Pochta
STR_0032_OIL :Nefty
STR_0033_LIVESTOCK :Domashniy skot
STR_0034_GOODS :Tovary
STR_0035_GRAIN :Zerno
STR_0036_WOOD :Derevo
STR_0037_IRON_ORE :Zheleznaya ruda
STR_0038_STEEL :Staly
STR_0039_VALUABLES :Dragocennosti
STR_003A_COPPER_ORE :Mednaya ruda
STR_003B_MAIZE :Kukuruza
STR_003C_FRUIT :Frukti
STR_003D_DIAMOND :Almazi
STR_003E_FOOD :Prodovolstvie
STR_003F_PAPER :Bumaga
STR_0040_GOLD :Zoloto
STR_0041_WATER :Voda
STR_0042_WHEAT :Pshenica
STR_0043_RUBBER :Rezina
STR_0044_SUGAR :Sahar
STR_0045_TOY :Igrushki
STR_0046_CANDY :Sladosti
STR_0047_COLA :Kola
STR_0048_COTTON_CANDY :Saharnaya vata
STR_0049_BUBBLE :Puzirki
STR_004A_TOFFEE :Iriska
STR_004B_BATTERY :Batareyki
STR_004C_PLASTIC :Plastik
STR_004D_FIZZY_DRINK :Shipuchie napitki
STR_004E :
STR_004F_PASSENGER :{COMMA16} passajirov
STR_0050_TON_OF_COAL :{COMMA16} tonna uglya
STR_0051_BAG_OF_MAIL :{COMMA16} sumka s pochtoy
STR_0052_OF_OIL :{VOLUME} nefti
STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} golov domashnego skota
STR_0054_CRATE_OF_GOODS :{COMMA16} korobka s tovarom
STR_0055_TON_OF_GRAIN :{COMMA16} tonna zerna
STR_0056_TON_OF_WOOD :{COMMA16} tonna dereva
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonna zheleznoy rudi
STR_0058_TON_OF_STEEL :{COMMA16} tonna stali
STR_0059_BAG_OF_VALUABLES :{COMMA16} sumka s dragocennostyami
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tonna mednoy rudi
STR_005B_TON_OF_MAIZE :{COMMA16} tonna kukuruzi
STR_005C_TON_OF_FRUIT :{COMMA16} tonna fruktov
STR_005D_BAG_OF_DIAMONDS :{COMMA16} meshok s almazami
STR_005E_TON_OF_FOOD :{COMMA16} tonna prodovolstviya
STR_005F_TON_OF_PAPER :{COMMA16} tonna bumagi
STR_0060_BAG_OF_GOLD :{COMMA16} meshok zolota
STR_0061_OF_WATER :{VOLUME} vodi
STR_0062_TON_OF_WHEAT :{COMMA16} tonna pshenici
STR_0063_OF_RUBBER :{VOLUME} rezini
STR_0064_TON_OF_SUGAR :{COMMA16} tonna sahara
STR_0065_TOY :{COMMA16} igrushka
STR_0066_BAG_OF_CANDY :{COMMA16} meshok sladostey
STR_0067_OF_COLA :{VOLUME} koli
STR_0068_TON_OF_COTTON_CANDY :{COMMA16} tonna saharnoy vati
STR_0069_BUBBLE :{COMMA16} puzirki
STR_006A_TON_OF_TOFFEE :{COMMA16} tonna irisok
STR_006B_BATTERY :{COMMA16} batareyki
STR_006C_OF_PLASTIC :{VOLUME} plastika
STR_006D_FIZZY_DRINK :{COMMA16} shipuchie napitki
STR_006E :
STR_006F_PASSENGERS :{COMMA16} passajiri
STR_0070_TONS_OF_COAL :{COMMA16} tonn uglya
STR_0071_BAGS_OF_MAIL :{COMMA16} meshkov s pochtoy
STR_0072_OF_OIL :{VOLUME} nefti
STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} golov domashnego skota
STR_0074_CRATES_OF_GOODS :{COMMA16} korobok s tovarom
STR_0075_TONS_OF_GRAIN :{COMMA16} tonn zerna
STR_0076_TONS_OF_WOOD :{COMMA16} tonn dereva
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonn zheleznoy rudi
STR_0078_TONS_OF_STEEL :{COMMA16} tonn stali
STR_0079_BAGS_OF_VALUABLES :{COMMA16} meshkov s dragocennostyami
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tonn mednoy rudi
STR_007B_TONS_OF_MAIZE :{COMMA16} tonn kukuruzi
STR_007C_TONS_OF_FRUIT :{COMMA16} tonn fruktov
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} meshkov s almazami
STR_007E_TONS_OF_FOOD :{COMMA16} tonn prodovolstviya
STR_007F_TONS_OF_PAPER :{COMMA16} tonn bumagi
STR_0080_BAGS_OF_GOLD :{COMMA16} meshkov zolota
STR_0081_OF_WATER :{VOLUME} vodi
STR_0082_TONS_OF_WHEAT :{COMMA16} tonn pshenici
STR_0083_OF_RUBBER :{VOLUME} rezini
STR_0084_TONS_OF_SUGAR :{COMMA16} tonn sahara
STR_0085_TOYS :{COMMA16} igrushek
STR_0086_BAGS_OF_CANDY :{COMMA16} meshkov so sladostyami
STR_0087_OF_COLA :{VOLUME} koli
STR_0088_TONS_OF_COTTON_CANDY :{COMMA16} tonn saharnoy vati
STR_0089_BUBBLES :{COMMA16} puzirkov
STR_008A_TONS_OF_TOFFEE :{COMMA16} tonn irisok
STR_008B_BATTERIES :{COMMA16} batareek
STR_008C_OF_PLASTIC :{VOLUME} plastika
STR_008D_FIZZY_DRINKS :{COMMA16} shipuchih napitkov
STR_008E :
STR_008F_PS :{TINYFONT}PS
STR_0090_CL :{TINYFONT}CL
STR_0091_ML :{TINYFONT}ML
STR_0092_OL :{TINYFONT}OL
STR_0093_LV :{TINYFONT}LV
STR_0094_GD :{TINYFONT}GD
STR_0095_GR :{TINYFONT}GR
STR_00AF :{WHITE}{DATE_LONG}
STR_00B0_MAP :{WHITE}Karta - {STRING}
STR_00B1_GAME_OPTIONS :{WHITE}Igrovie Opcii
STR_00B2_MESSAGE :{YELLOW}Soobshenie
STR_00B3_MESSAGE_FROM :{YELLOW}Soobshenie ot {STRING}
STR_00B4_CAN_T_DO_THIS :{WHITE}Ne mogu eto sdelaty....
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Ne vozmozno ochistity etu mestnosty....
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Originalnie avtorskie prava {COPYRIGHT} 1995 Chris Sawyer, Vse prava sohraneni
STR_00B7_VERSION :{BLACK}OpenTTD versiya {REV}
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2005 Komanda OpenTTD
STR_TRANSLATED_BY :{BLACK} Perevodchik(i) -
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
STR_00C7_QUIT :{WHITE}Vihod
STR_00C8_YES :{BLACK}Da
STR_00C9_NO :{BLACK}Net
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Vi uvereni, chto hotite pokinuty etu igru i vernutsya k {STRING}?
STR_00CB_1 :{BLACK}1
STR_00CC_2 :{BLACK}2
STR_00CD_3 :{BLACK}3
STR_00CE_4 :{BLACK}4
STR_00CF_5 :{BLACK}5
STR_00D0_NOTHING :Nichego
STR_00D1_DARK_BLUE :Temno-Siniy
STR_00D2_PALE_GREEN :Bledno-Zeleniy
STR_00D3_PINK :Rozoviy
STR_00D4_YELLOW :Zheltiy
STR_00D5_RED :Krasniy
STR_00D6_LIGHT_BLUE :Svetlo-Siniy
STR_00D7_GREEN :Zeleniy
STR_00D8_DARK_GREEN :Temno-Zeleniy
STR_00D9_BLUE :Siniy
STR_00DA_CREAM :Kremoviy
STR_00DB_MAUVE :Liloviy
STR_00DC_PURPLE :Purpurniy
STR_00DD_ORANGE :Oranjeviy
STR_00DE_BROWN :Korichneviy
STR_00DF_GREY :Seriy
STR_00E0_WHITE :Beliy
STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Slishkom mnogo transporta v igre
STR_00E2 :{BLACK}{COMMA16}
STR_00E3 :{RED}{COMMA16}
STR_00E4_LOCATION :{BLACK}Poziciya
STR_00E5_CONTOURS :Konturi
STR_00E6_VEHICLES :Transportnie sredstva
STR_00E7_INDUSTRIES :Industrii
STR_00E8_ROUTES :Marshruti
STR_00E9_VEGETATION :Rastitelnosty
STR_00EA_OWNERS :Vladelci
STR_00EB_ROADS :{BLACK}{TINYFONT}Dorogi
############ range for menu starts
############ range for menu ends
############ range for months starts
############ range for months ends
############ range for service numbers starts
############ range for service numbers ends
############ range for days starts
############ range for days ends
############ range for cargo acecpted starts
############ range for cargo acecpted ends
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ range for menu starts
############ range ends here
############ start of townname region
############ end of townname region
# Start of order review system.
# DON'T ADD OR REMOVE LINES HERE
# end of order system
############ network gui strings
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ end network gui strings
##id 0x0800
##id 0x1000
##id 0x1800
##id 0x2000
##id 0x2800
##id 0x3000
############ range for rating starts
############ range for rating ends
##id 0x3800
##id 0x4000
##id 0x4800
############ range for requires starts
############ range for requires ends
##id 0x5000
##id 0x5800
############ WARNING, using range 0x6000 for strings that are stored in the savegame
############ These strings may never get a new id, or savegames will break!
##id 0x6000
############ end of savegame specific region!
##id 0x6800
############ range for difficulty levels starts
############ range for difficulty levels ends
############ range for difficulty settings starts
############ range for difficulty settings ends
##id 0x7000
##id 0x8000
##id 0x8800
##id 0x9000
##id 0x9800
##id 0xA000
##id 0xB000
############ Those following lines need to be in this order!!
############ End of order list
############ Lists rail types
############ End of list of rail types
+9 -6
View File
@@ -186,12 +186,6 @@ STR_00B4_CAN_T_DO_THIS :{WHITE}Bunu yapamazsiniz..
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Bu bölgeyi temizleyemezsiniz...
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Orjinal telif hakki {COPYRIGHT} 1995 Chris Sawyer, Tüm haklari saklidir
STR_00B7_VERSION :{BLACK}OpenTTD versiyon {REV}
STR_00B8_ORIGINAL_DESIGN_PROGRAM :{BLACK}Orjinal tasarim: Chris Sawyer
STR_00B9_ORIGINAL_GRAPHICS :{BLACK}Orjinal grafikler: Simon Foster
STR_SPECIAL_THANKS :{BLACK}Özel Tesekkürler:
STR_SPECIAL_THANKS_SIGNALS :{BLACK}° Ön-Sinyaller ve Semaforlar {COPYRIGHT} 2003 Michael Blunck
STR_SPECIAL_THANKS_CANALS :{BLACK}° Egimlerdeki Yollarin Temelleri {COPYRIGHT} Marcin Grzegorczyk
STR_SPECIAL_THANKS_FOUNDATIONS :{BLACK}° Kanal/Kilit grafikleri {COPYRIGHT} 2003-2004 George
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2004 OpenTTD ekibi
STR_00C5 :{BLACK}{CROSS}
@@ -351,6 +345,7 @@ STR_00FE_OIL_REFINERY :{BLACK}{TINYFONT}Petrol Rafinerisi
############ network gui strings
@@ -471,3 +466,11 @@ STR_00FE_OIL_REFINERY :{BLACK}{TINYFONT}Petrol Rafinerisi
############ Lists rail types
############ End of list of rail types
+23 -53
View File
@@ -21,6 +21,7 @@ CFG=langs - Win32 Debug
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
@@ -35,9 +36,10 @@ MTL=midl.exe
# PROP Output_Dir ""
# PROP Intermediate_Dir ""
# PROP Target_Dir ""
# Begin Target
# Begin Target
# Name "langs - Win32 Debug"
# Begin Source File
SOURCE=.\lang\american.txt
@@ -49,8 +51,8 @@ InputPath=.\lang\american.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\catalan.txt
# Begin Custom Build
InputPath=.\lang\catalan.txt
@@ -60,8 +62,8 @@ InputPath=.\lang\catalan.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\czech.txt
# Begin Custom Build
InputPath=.\lang\czech.txt
@@ -71,8 +73,8 @@ InputPath=.\lang\czech.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\danish.txt
# Begin Custom Build
InputPath=.\lang\danish.txt
@@ -82,8 +84,8 @@ InputPath=.\lang\danish.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\dutch.txt
# Begin Custom Build
InputPath=.\lang\dutch.txt
@@ -93,8 +95,8 @@ InputPath=.\lang\dutch.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\english.txt
# Begin Custom Build
InputPath=.\lang\english.txt
@@ -104,8 +106,8 @@ InputPath=.\lang\english.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\finnish.txt
# Begin Custom Build
InputPath=.\lang\finnish.txt
@@ -115,8 +117,8 @@ InputPath=.\lang\finnish.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\french.txt
# Begin Custom Build
InputPath=.\lang\french.txt
@@ -126,8 +128,8 @@ InputPath=.\lang\french.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\galician.txt
# Begin Custom Build
InputPath=.\lang\galician.txt
@@ -137,8 +139,8 @@ InputPath=.\lang\galician.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\german.txt
# Begin Custom Build
InputPath=.\lang\german.txt
@@ -148,8 +150,8 @@ InputPath=.\lang\german.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\hungarian.txt
# Begin Custom Build
InputPath=.\lang\hungarian.txt
@@ -159,8 +161,8 @@ InputPath=.\lang\hungarian.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\icelandic.txt
# Begin Custom Build
InputPath=.\lang\icelandic.txt
@@ -170,8 +172,8 @@ InputPath=.\lang\icelandic.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\italian.txt
# Begin Custom Build
InputPath=.\lang\italian.txt
@@ -181,19 +183,8 @@ InputPath=.\lang\italian.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\latvian.txt
# Begin Custom Build
InputPath=.\lang\latvian.txt
"lang\latvian.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\latvian.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\norwegian.txt
# Begin Custom Build
InputPath=.\lang\norwegian.txt
@@ -203,8 +194,8 @@ InputPath=.\lang\norwegian.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\origveh.txt
# Begin Custom Build
InputPath=.\lang\origveh.txt
@@ -214,8 +205,8 @@ InputPath=.\lang\origveh.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\polish.txt
# Begin Custom Build
InputPath=.\lang\polish.txt
@@ -225,8 +216,8 @@ InputPath=.\lang\polish.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\portuguese.txt
# Begin Custom Build
InputPath=.\lang\portuguese.txt
@@ -236,8 +227,8 @@ InputPath=.\lang\portuguese.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\romanian.txt
# Begin Custom Build
InputPath=.\lang\romanian.txt
@@ -247,19 +238,8 @@ InputPath=.\lang\romanian.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\russian.txt
# Begin Custom Build
InputPath=.\lang\russian.txt
"lang\russian.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\russian.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\slovak.txt
# Begin Custom Build
InputPath=.\lang\slovak.txt
@@ -269,8 +249,8 @@ InputPath=.\lang\slovak.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\spanish.txt
# Begin Custom Build
InputPath=.\lang\spanish.txt
@@ -280,8 +260,8 @@ InputPath=.\lang\spanish.txt
# End Custom Build
# End Source File
# Begin Source File
# Begin Source File
SOURCE=.\lang\swedish.txt
# Begin Custom Build
InputPath=.\lang\swedish.txt
@@ -291,16 +271,6 @@ InputPath=.\lang\swedish.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\turkish.txt
# Begin Custom Build
InputPath=.\lang\turkish.txt
"lang\turkish.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\turkish.txt
# End Custom Build
# End Source File
# End Target
# End Project
+6 -42
View File
@@ -1,6 +1,8 @@
#ifndef MACROS_H
#define MACROS_H
#include "map.h"
#define MAX_INT 0x7FFFFFFF
#ifdef min
@@ -68,13 +70,6 @@ static inline int64 BIGMULS(int32 a, int32 b) {
#define LANDSCAPE_SIZE_FACTOR 1
#define TILE_FROM_XY(x,y) (int)((((y) >> 4) << TILE_X_BITS) + ((x) >> 4))
#define TILE_XY(x,y) (int)(((y) << TILE_X_BITS) + (x))
#define IS_TILETYPE(_t_, _s_) (_map_type_and_height[(_t_)] >> 4 == (_s_))
#define GET_TILETYPE(_t_) (_map_type_and_height[(_t_)] >> 4)
#define GET_TILEHEIGHT(_t_) ((_map_type_and_height[_t_] & 0xF) * 8)
enum {
CORRECT_Z_BITS = 1 << 1 | 1 << 2 | 1 << 3 | 1 << 4 | 1 << 5 | 1 << 6 | 1 << 7
};
@@ -82,30 +77,6 @@ enum {
#define TILE_ASSERT(x) assert( TILE_MASK(x) == (x) );
extern uint SafeTileAdd(uint x, int add, const char *exp, const char *file, int line);
#if !defined(_DEBUG) || TILE_X_BITS != 8
# define TILE_ADD(x,y) ((x)+(y))
#else
# if defined(__GNUC__)
# define TILE_ADD(x,y) (SafeTileAdd((x),(y), "??", __FILE__, __LINE__))
# else
# define TILE_ADD(x,y) (SafeTileAdd((x),(y), #x ## ", " ## #y, __FILE__, __LINE__))
# endif
#endif
#define TILE_ADDXY(tile, x, y) TILE_ADD(tile, TILE_XY(x,y))
#if TILE_X_BITS == 8
#define GET_TILE_X(t) (uint)((byte)(t))
#define GET_TILE_Y(t) (uint)((t) >> 8)
#define TILE_MASK(x) ((uint16)(x))
#else
#define GET_TILE_X(t) (uint)((t) & ((1 << TILE_X_BITS)-1))
#define GET_TILE_Y(t) (uint)((t) >> TILE_X_BITS)
#define TILE_MASK(x) (int)((x) & ((1 << (TILE_X_BITS + TILE_Y_BITS))-1))
#endif
//#define REMADP_COORDS(x,y,z) { int t = x; x = (y-t)*2; y+=t-z; }
#define PACK_POINT(x,y) ((x) | ((y) << 16))
@@ -114,9 +85,10 @@ extern uint SafeTileAdd(uint x, int add, const char *exp, const char *file, int
#define PACK_PPOINT(p) PACK_POINT((p).x, (p).y)
#define HASBIT(x,y) ((x) & (1 << (y)))
#define SETBIT(x,y) ((x) |= (1 << (y)))
#define CLRBIT(x,y) ((x) &= ~(1 << (y)))
#define HASBIT(x,y) ((x) & (1 << (y)))
#define SETBIT(x,y) ((x) |= (1 << (y)))
#define CLRBIT(x,y) ((x) &= ~(1 << (y)))
#define TOGGLEBIT(x,y) ((x) ^= (1 << (y)))
// checking more bits. Maybe unneccessary, but easy to use
#define HASBITS(x,y) ((x) & (y))
@@ -148,14 +120,6 @@ static inline int FindFirstBit2x64(int value)
}
#if TILE_X_BITS + TILE_Y_BITS <= 16
typedef uint16 TileIndex;
typedef int16 TileIndexDiff;
#else
typedef uint32 TileIndex;
typedef int32 TileIndexDiff;
#endif
/* [min,max), strictly less than */
#define IS_BYTE_INSIDE(a,min,max) ((byte)((a)-(min)) < (byte)((max)-(min)))
#define IS_INT_INSIDE(a,min,max) ((uint)((a)-(min)) < (uint)((max)-(min)))
+252 -249
View File
@@ -14,6 +14,7 @@
#include "console.h"
#include "sound.h"
#include "network.h"
#include "signs.h"
#ifdef ENABLE_NETWORK
#include "network_data.h"
@@ -25,11 +26,11 @@
/* Min/Max date for scenario editor */
static const uint MinDate = 0; // 1920-01-01
static const uint MinDate = 0; // 1920-01-01 (MAX_YEAR_BEGIN_REAL)
static const uint MaxDate = 29220; // 2000-01-01
extern void DoTestSave();
extern void DoTestLoad();
extern void DoTestSave(void);
extern void DoTestLoad(void);
extern bool disable_computer;
@@ -40,14 +41,15 @@ static byte _terraform_size = 1;
static byte _last_built_railtype;
extern void GenerateWorld(int mode);
extern void GenerateIndustries();
extern void GenerateTowns();
extern void GenerateIndustries(void);
extern void GenerateTowns(void);
extern uint GetCurrentCurrencyRate();
extern uint GetCurrentCurrencyRate(void);
extern void CcTerraform(bool success, uint tile, uint32 p1, uint32 p2);
void HandleOnEditTextCancel() {
void HandleOnEditTextCancel(void)
{
switch(_rename_what) {
#ifdef ENABLE_NETWORK
case 4:
@@ -87,6 +89,9 @@ void HandleOnEditText(WindowEvent *e) {
// Give money
int32 money = atoi(e->edittext.str) / GetCurrentCurrencyRate();
char msg[100];
money = clamp(money, 0, 0xFFFFFF); // Clamp between 16 million and 0
// Give 'id' the money, and substract it from ourself
if (!DoCommandP(0, money, id, NULL, CMD_GIVE_MONEY)) break;
@@ -107,7 +112,19 @@ void HandleOnEditText(WindowEvent *e) {
}
}
// this code is shared for the majority of the pushbuttons
/**
* This code is shared for the majority of the pushbuttons.
* Handles e.g. the pressing of a button (to build things), playing of click sound and sets certain parameters
*
* @param w Window which called the function
* @param widget ID of the widget (=button) that called this function
* @param cursor How should the cursor image change? E.g. cursor with depot image in it
* @param mode Tile highlighting mode, e.g. drawing a rectangle or a dot on the ground
* @param placeproc Procedure which will be called when someone clicks on the map
* @return true if the button is clicked, false if it's unclicked
*/
bool HandlePlacePushButton(Window *w, int widget, uint32 cursor, int mode, PlaceProc *placeproc)
{
uint32 mask = 1 << widget;
@@ -142,7 +159,7 @@ static void ToolbarPauseClick(Window *w)
{
if (_networking && !_network_server) { return;} // only server can pause the game
if (DoCommandP(0, _pause?0:1, 0, NULL, CMD_PAUSE))
if (DoCommandP(0, _pause ? 0 : 1, 0, NULL, CMD_PAUSE))
SndPlayFx(SND_15_BEEP);
}
@@ -163,14 +180,13 @@ static void MenuClickSettings(int index)
case 2: ShowPatchesSelection(); return;
case 3: ShowNewgrf(); return;
case 5: DeleteAllNonVitalWindows(); return;
case 6: _display_opt ^= DO_SHOW_TOWN_NAMES; MarkWholeScreenDirty(); return;
case 7: _display_opt ^= DO_SHOW_STATION_NAMES; MarkWholeScreenDirty(); return;
case 8: _display_opt ^= DO_SHOW_SIGNS; MarkWholeScreenDirty(); return;
case 9: _display_opt ^= DO_WAYPOINTS; MarkWholeScreenDirty(); return;
case 10: _display_opt ^= DO_FULL_ANIMATION; MarkWholeScreenDirty(); return;
case 11: _display_opt ^= DO_FULL_DETAIL; MarkWholeScreenDirty(); return;
case 12: _display_opt ^= DO_TRANS_BUILDINGS; MarkWholeScreenDirty(); return;
case 5: _display_opt ^= DO_SHOW_TOWN_NAMES; MarkWholeScreenDirty(); return;
case 6: _display_opt ^= DO_SHOW_STATION_NAMES; MarkWholeScreenDirty(); return;
case 7: _display_opt ^= DO_SHOW_SIGNS; MarkWholeScreenDirty(); return;
case 8: _display_opt ^= DO_WAYPOINTS; MarkWholeScreenDirty(); return;
case 9: _display_opt ^= DO_FULL_ANIMATION; MarkWholeScreenDirty(); return;
case 10: _display_opt ^= DO_FULL_DETAIL; MarkWholeScreenDirty(); return;
case 11: _display_opt ^= DO_TRANS_BUILDINGS; MarkWholeScreenDirty(); return;
}
}
@@ -247,7 +263,7 @@ static void MenuClickFinances(int index)
}
#ifdef ENABLE_NETWORK
extern void ShowClientList();
extern void ShowClientList(void);
#endif /* ENABLE_NETWORK */
static void MenuClickCompany(int index)
@@ -349,14 +365,14 @@ void ShowNetworkGiveMoneyWindow(byte player)
ShowQueryString(STR_EMPTY, STR_NETWORK_GIVE_MONEY_CAPTION, 30, 180, 1, 0);
}
void ShowNetworkNeedGamePassword()
void ShowNetworkNeedGamePassword(void)
{
_rename_id = NETWORK_GAME_PASSWORD;
_rename_what = 4;
ShowQueryString(STR_EMPTY, STR_NETWORK_NEED_GAME_PASSWORD_CAPTION, 20, 180, WC_SELECT_GAME, 0);
}
void ShowNetworkNeedCompanyPassword()
void ShowNetworkNeedCompanyPassword(void)
{
_rename_id = NETWORK_COMPANY_PASSWORD;
_rename_what = 4;
@@ -367,7 +383,7 @@ void ShowNetworkNeedCompanyPassword()
void ShowRenameSignWindow(SignStruct *ss)
{
_rename_id = ss - _sign_list;
_rename_id = ss->index;
_rename_what = 0;
ShowQueryString(ss->str, STR_280B_EDIT_SIGN_TEXT, 30, 180, 1, 0);
}
@@ -378,7 +394,8 @@ void ShowRenameWaypointWindow(Waypoint *cp)
/* Are we allowed to change the name of the waypoint? */
if (!CheckTileOwnership(cp->xy)) {
ShowErrorMessage(_error_message, STR_CANT_CHANGE_WAYPOINT_NAME, GET_TILE_X(cp->xy) * 16, GET_TILE_Y(cp->xy) * 16);
ShowErrorMessage(_error_message, STR_CANT_CHANGE_WAYPOINT_NAME,
TileX(cp->xy) * 16, TileY(cp->xy) * 16);
return;
}
@@ -388,20 +405,7 @@ void ShowRenameWaypointWindow(Waypoint *cp)
ShowQueryString(STR_WAYPOINT_RAW, STR_EDIT_WAYPOINT_NAME, 30, 180, 1, 0);
}
void CcPlaceSign(bool success, uint tile, uint32 p1, uint32 p2)
{
if (success) {
ShowRenameSignWindow(_new_sign_struct);
ResetObjectToPlace();
}
}
void PlaceProc_Sign(uint tile)
{
DoCommandP(tile, 0, 0, CcPlaceSign, CMD_PLACE_SIGN | CMD_MSG(STR_2809_CAN_T_PLACE_SIGN_HERE));
}
static void SelectSignTool()
static void SelectSignTool(void)
{
if (_cursor.sprite == 0x2D2)
ResetObjectToPlace();
@@ -548,14 +552,14 @@ static void MenuWndProc(Window *w, WindowEvent *e)
}
}
static Widget _menu_widgets[] = {
{ WWT_PANEL, 14, 0, 159, 0, 65535, 0, STR_NULL},
static const Widget _menu_widgets[] = {
{ WWT_PANEL, RESIZE_NONE, 14, 0, 159, 0, 65535, 0, STR_NULL},
{ WIDGETS_END},
};
static Widget _player_menu_widgets[] = {
{ WWT_PANEL, 14, 0, 240, 0, 81, 0, STR_NULL},
static const Widget _player_menu_widgets[] = {
{ WWT_PANEL, RESIZE_NONE, 14, 0, 240, 0, 81, 0, STR_NULL},
{ WIDGETS_END},
};
@@ -596,7 +600,7 @@ static void UpdatePlayerMenuHeight(Window *w)
SetWindowDirty(w);
num = num * 10 + 2;
w->height = num;
_player_menu_widgets[0].bottom = _player_menu_widgets[0].top + num - 1;
w->widget[0].bottom = w->widget[0].top + num - 1;
SetWindowDirty(w);
}
}
@@ -712,8 +716,6 @@ static void PlayerMenuWndProc(Window *w, WindowEvent *e)
static Window *PopupMainToolbMenu(Window *w, int x, int main_button, StringID base_string, int item_count)
{
int h;
x += w->left;
SETBIT(w->click_state, (byte)main_button);
@@ -721,8 +723,8 @@ static Window *PopupMainToolbMenu(Window *w, int x, int main_button, StringID ba
DeleteWindowById(WC_TOOLBAR_MENU, 0);
_menu_widgets[0].bottom = h = item_count * 10 + 1;
w = AllocateWindow(x, 0x16, 0xA0, h+1, MenuWndProc, WC_TOOLBAR_MENU, _menu_widgets);
w = AllocateWindow(x, 0x16, 0xA0, item_count * 10 + 2, MenuWndProc, WC_TOOLBAR_MENU, _menu_widgets);
w->widget[0].bottom = item_count * 10 + 1;
w->flags4 &= ~WF_WHITE_BORDER_MASK;
WP(w,menu_d).item_count = item_count;
@@ -821,7 +823,7 @@ static void ToolbarTrainClick(Window *w)
Vehicle *v;
int dis = -1;
FOR_ALL_VEHICLES(v)
if (v->type == VEH_Train && v->subtype == 0) CLRBIT(dis, v->owner);
if (v->type == VEH_Train && v->subtype == TS_Front_Engine) CLRBIT(dis, v->owner);
PopupMainPlayerToolbMenu(w, 310, 13, dis);
}
@@ -917,7 +919,7 @@ bool DoZoomInOutWindow(int how, Window *w)
return true;
}
static void MaxZoomIn()
static void MaxZoomIn(void)
{
while (DoZoomInOutWindow(ZOOM_IN, FindWindowById(WC_MAIN_WINDOW, 0) ) ) {}
}
@@ -985,16 +987,16 @@ static void ToolbarOptionsClick(Window *w)
{
uint16 x;
w = PopupMainToolbMenu(w, 43, 2, STR_02C3_GAME_OPTIONS, 13);
w = PopupMainToolbMenu(w, 43, 2, STR_02C3_GAME_OPTIONS, 12);
x = (uint16)-1;
if (_display_opt & DO_SHOW_TOWN_NAMES) x &= ~(1<<6);
if (_display_opt & DO_SHOW_STATION_NAMES) x &= ~(1<<7);
if (_display_opt & DO_SHOW_SIGNS) x &= ~(1<<8);
if (_display_opt & DO_WAYPOINTS) x &= ~(1<<9);
if (_display_opt & DO_FULL_ANIMATION) x &= ~(1<<10);
if (_display_opt & DO_FULL_DETAIL) x &= ~(1<<11);
if (_display_opt & DO_TRANS_BUILDINGS) x &= ~(1<<12);
if (_display_opt & DO_SHOW_TOWN_NAMES) x &= ~(1<<5);
if (_display_opt & DO_SHOW_STATION_NAMES) x &= ~(1<<6);
if (_display_opt & DO_SHOW_SIGNS) x &= ~(1<<7);
if (_display_opt & DO_WAYPOINTS) x &= ~(1<<8);
if (_display_opt & DO_FULL_ANIMATION) x &= ~(1<<9);
if (_display_opt & DO_FULL_DETAIL) x &= ~(1<<10);
if (_display_opt & DO_TRANS_BUILDINGS) x &= ~(1<<11);
WP(w,menu_d).checked_items = x;
}
@@ -1073,7 +1075,7 @@ void ZoomInOrOutToCursorWindow(bool in, Window *w)
}
}
static void ResetLandscape()
static void ResetLandscape(void)
{
_random_seeds[0][0] = InteractiveRandom();
_random_seeds[0][1] = InteractiveRandom();
@@ -1083,11 +1085,11 @@ static void ResetLandscape()
}
static const Widget _ask_reset_landscape_widgets[] = {
{ WWT_TEXTBTN, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, 4, 11, 179, 0, 13, STR_022C_RESET_LANDSCAPE, STR_NULL},
{ WWT_IMGBTN, 4, 0, 179, 14, 91, 0x0, STR_NULL},
{ WWT_TEXTBTN, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
{ WWT_TEXTBTN, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, RESIZE_NONE, 4, 11, 179, 0, 13, STR_022C_RESET_LANDSCAPE, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 4, 0, 179, 14, 91, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 12, 25, 84, 72, 83, STR_00C9_NO, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 12, 95, 154, 72, 83, STR_00C8_YES, STR_NULL},
{ WIDGETS_END},
};
@@ -1107,10 +1109,13 @@ static void AskResetLandscapeWndProc(Window *w, WindowEvent *e)
break;
case 4:
DeleteWindow(w);
if(mode) { // reset landscape
DeleteWindowByClass(WC_INDUSTRY_VIEW);
DeleteWindowByClass(WC_TOWN_VIEW);
DeleteWindowByClass(WC_LAND_INFO);
if (mode) { // reset landscape
ResetLandscape();
}
else { // make random landscape
} else { // make random landscape
SndPlayFx(SND_15_BEEP);
_switch_mode = SM_GENRANDLAND;
}
@@ -1142,10 +1147,10 @@ static void CommonRaiseLowerBigLand(uint tile, int mode)
_generating_world = true;
// tile = TILE_FROM_XY(GET_TILE_X(tile)*16+_tile_fract_coords.x + 8,GET_TILE_Y(tile)*16+_tile_fract_coords.y + 8);
// tile = TILE_FROM_XY(TileX(tile) * 16 + _tile_fract_coords.x + 8, TileY(tile) * 16 + _tile_fract_coords.y + 8);
if (_terraform_size == 1) {
DoCommandP(tile, 8, (uint32)mode, CcTerraform, CMD_TERRAFORM_LAND | CMD_AUTO);
DoCommandP(tile, 8, (uint32)mode, CcTerraform, CMD_TERRAFORM_LAND | CMD_AUTO | CMD_MSG(_error_message_2));
} else {
SndPlayTileFx(SND_1F_SPLAT, tile);
@@ -1155,18 +1160,18 @@ static void CommonRaiseLowerBigLand(uint tile, int mode)
/* Raise land */
h = 15;
BEGIN_TILE_LOOP(tile2, size, size, tile)
h = min(h, _map_type_and_height[tile2]&0xF);
h = min(h, TileHeight(tile2));
END_TILE_LOOP(tile2, size, size, tile)
} else {
/* Lower land */
h = 0;
BEGIN_TILE_LOOP(tile2, size, size, tile)
h = max(h, _map_type_and_height[tile2]&0xF);
h = max(h, TileHeight(tile2));
END_TILE_LOOP(tile2, size, size, tile)
}
BEGIN_TILE_LOOP(tile2, size, size, tile)
if ((uint)(_map_type_and_height[tile2]&0xF) == h) {
if (TileHeight(tile2) == h) {
DoCommandP(tile2, 8, (uint32)mode, NULL, CMD_TERRAFORM_LAND | CMD_AUTO);
}
END_TILE_LOOP(tile2, size, size, tile)
@@ -1189,7 +1194,7 @@ static void PlaceProc_LowerBigLand(uint tile)
//{
// if (success) {
//SndPlayTileFx(0x10, tile);
//CreateEffectVehicleAbove(GET_TILE_X(tile)*16 + 8,GET_TILE_Y(tile)*16 + 8, 2, EV_DEMOLISH);
//CreateEffectVehicleAbove(TileX(tile) * 16 + 8, TileY(tile) * 16 + 8, 2, EV_DEMOLISH);
// }
//}
@@ -1201,11 +1206,10 @@ static void PlaceProc_LowerBigLand(uint tile)
static void PlaceProc_RockyArea(uint tile)
{
if (!IS_TILETYPE(tile, MP_CLEAR))
if (!IsTileType(tile, MP_CLEAR) && !IsTileType(tile, MP_TREES))
return;
_map5[tile] = (_map5[tile] & ~0x1C) | 8;
MarkTileDirtyByTile(tile);
ModifyTile(tile, MP_SETTYPE(MP_CLEAR) | MP_MAP5, (_map5[tile] & ~0x1C) | 0xB);
SndPlayTileFx(SND_1F_SPLAT, tile);
}
@@ -1239,21 +1243,21 @@ static void PlaceProc_Desert(uint tile)
}
static const Widget _scen_edit_land_gen_widgets[] = {
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 153, 0, 13, STR_0223_LAND_GENERATION,STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 7, 0, 153, 14, 99, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 22, 43, 14, 35, 0x2B6, STR_018F_RAISE_A_CORNER_OF_LAND},
{ WWT_IMGBTN, 14, 44, 65, 14, 35, 0x2B7, STR_018E_LOWER_A_CORNER_OF_LAND},
{ WWT_IMGBTN, 14, 0, 21, 14, 35, 0x2BF, STR_018D_DEMOLISH_BUILDINGS_ETC},
{ WWT_TEXTBTN, 14, 125, 135, 43, 54, STR_0224, STR_0228_INCREASE_SIZE_OF_LAND_AREA},
{ WWT_TEXTBTN, 14, 125, 135, 56, 67, STR_0225, STR_0229_DECREASE_SIZE_OF_LAND_AREA},
{ WWT_TEXTBTN, 14, 20, 135, 75, 86, STR_0226_RANDOM_LAND, STR_022A_GENERATE_RANDOM_LAND},
{ WWT_TEXTBTN, 14, 20, 135, 88, 99, STR_0227_RESET_LAND, STR_022B_RESET_LANDSCAPE},
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 153, 0, 13, STR_0223_LAND_GENERATION,STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 153, 14, 99, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 14, 22, 43, 14, 35, 0x2B6, STR_018F_RAISE_A_CORNER_OF_LAND},
{ WWT_IMGBTN, RESIZE_NONE, 14, 44, 65, 14, 35, 0x2B7, STR_018E_LOWER_A_CORNER_OF_LAND},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 21, 14, 35, 0x2BF, STR_018D_DEMOLISH_BUILDINGS_ETC},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 125, 135, 43, 54, STR_0224, STR_0228_INCREASE_SIZE_OF_LAND_AREA},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 125, 135, 56, 67, STR_0225, STR_0229_DECREASE_SIZE_OF_LAND_AREA},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 20, 135, 75, 86, STR_0226_RANDOM_LAND, STR_022A_GENERATE_RANDOM_LAND},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 20, 135, 88, 99, STR_0227_RESET_LAND, STR_022B_RESET_LANDSCAPE},
{ WWT_IMGBTN, 14, 88, 109, 14, 35, 0xFF4, STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE},
{ WWT_IMGBTN, 14, 110, 131, 14, 35, 0xFF5, STR_028D_PLACE_LIGHTHOUSE},
{ WWT_IMGBTN, 14, 132, 153, 14, 35, 0xFF6, STR_028E_PLACE_TRANSMITTER},
{ WWT_IMGBTN, 14, 66, 87, 14, 35, SPR_OPENTTD_BASE+68, STR_LEVEL_LAND_TOOLTIP},
{ WWT_IMGBTN, RESIZE_NONE, 14, 88, 109, 14, 35, 0xFF4, STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE},
{ WWT_IMGBTN, RESIZE_NONE, 14, 110, 131, 14, 35, 0xFF5, STR_028D_PLACE_LIGHTHOUSE},
{ WWT_IMGBTN, RESIZE_NONE, 14, 132, 153, 14, 35, 0xFF6, STR_028E_PLACE_TRANSMITTER},
{ WWT_IMGBTN, RESIZE_NONE, 14, 66, 87, 14, 35, SPR_OPENTTD_BASE+68, STR_LEVEL_LAND_TOOLTIP},
{ WIDGETS_END},
};
@@ -1270,10 +1274,10 @@ static const int8 _multi_terraform_coords[][2] = {
static void ScenEditLandGenWndProc(Window *w, WindowEvent *e)
{
// XXX: show different tooltips in desert mode
switch(e->event) {
case WE_PAINT:
// XXX: only show reset button when nothing was built
// XXX - lighthouse button is widget 11!! Don't forget when changing
w->widget[11].tooltips = (_opt.landscape == LT_DESERT) ? STR_028F_DEFINE_DESERT_AREA : STR_028D_PLACE_LIGHTHOUSE;
DrawWindowWidgets(w);
{
@@ -1408,15 +1412,15 @@ static void PlaceProc_Town(uint tile)
static const Widget _scen_edit_town_gen_widgets[] = {
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 159, 0, 13, STR_0233_TOWN_GENERATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 7, 0, 159, 14, 81, 0x0, STR_NULL},
{ WWT_TEXTBTN, 14, 2, 157, 16, 27, STR_0234_NEW_TOWN, STR_0235_CONSTRUCT_NEW_TOWN},
{ WWT_TEXTBTN, 14, 2, 157, 29, 40, STR_023D_RANDOM_TOWN, STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION},
{ WWT_TEXTBTN, 14, 2, 157, 42, 53, STR_MANY_RANDOM_TOWNS, STR_RANDOM_TOWNS_TIP},
{ WWT_TEXTBTN, 14, 2, 53, 68, 79, STR_02A1_SMALL, STR_02A4_SELECT_TOWN_SIZE},
{ WWT_TEXTBTN, 14, 54, 105, 68, 79, STR_02A2_MEDIUM, STR_02A4_SELECT_TOWN_SIZE},
{ WWT_TEXTBTN, 14, 106, 157, 68, 79, STR_02A3_LARGE, STR_02A4_SELECT_TOWN_SIZE},
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 159, 0, 13, STR_0233_TOWN_GENERATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 159, 14, 81, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 16, 27, STR_0234_NEW_TOWN, STR_0235_CONSTRUCT_NEW_TOWN},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 29, 40, STR_023D_RANDOM_TOWN, STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 157, 42, 53, STR_MANY_RANDOM_TOWNS, STR_RANDOM_TOWNS_TIP},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 53, 68, 79, STR_02A1_SMALL, STR_02A4_SELECT_TOWN_SIZE},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 54, 105, 68, 79, STR_02A2_MEDIUM, STR_02A4_SELECT_TOWN_SIZE},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 106, 157, 68, 79, STR_02A3_LARGE, STR_02A4_SELECT_TOWN_SIZE},
{ WIDGETS_END},
};
@@ -1493,96 +1497,97 @@ static void ToolbarScenGenTown(Window *w)
static const Widget _scenedit_industry_normal_widgets[] = {
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
{ WWT_IMGBTN, 7, 0, 169, 14, 224, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
{ WWT_TEXTBTN, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
{ WWT_TEXTBTN, 14, 2, 167, 42, 53, STR_0240_COAL_MINE, STR_0262_CONSTRUCT_COAL_MINE},
{ WWT_TEXTBTN, 14, 2, 167, 55, 66, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_TEXTBTN, 14, 2, 167, 68, 79, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
{ WWT_TEXTBTN, 14, 2, 167, 81, 92, STR_0243_FOREST, STR_0265_PLANT_FOREST},
{ WWT_TEXTBTN, 14, 2, 167, 94, 105, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_TEXTBTN, 14, 2, 167, 107, 118, STR_0245_OIL_RIG, STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY},
{ WWT_TEXTBTN, 14, 2, 167, 120, 131, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_TEXTBTN, 14, 2, 167, 133, 144, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
{ WWT_TEXTBTN, 14, 2, 167, 146, 157, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
{ WWT_TEXTBTN, 14, 2, 167, 159, 170, STR_0249_IRON_ORE_MINE, STR_026B_CONSTRUCT_IRON_ORE_MINE},
{ WWT_TEXTBTN, 14, 2, 167, 172, 183, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
{ WWT_TEXTBTN, 14, 2, 167, 185, 196, STR_024B_BANK, STR_026D_CONSTRUCT_BANK_CAN_ONLY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0240_COAL_MINE, STR_0262_CONSTRUCT_COAL_MINE},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0242_SAWMILL, STR_0264_CONSTRUCT_SAWMILL},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_0243_FOREST, STR_0265_PLANT_FOREST},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_0245_OIL_RIG, STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_0247_STEEL_MILL, STR_0269_CONSTRUCT_STEEL_MILL},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_0249_IRON_ORE_MINE, STR_026B_CONSTRUCT_IRON_ORE_MINE},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 185, 196, STR_024B_BANK, STR_026D_CONSTRUCT_BANK_CAN_ONLY},
{ WIDGETS_END},
};
static const Widget _scenedit_industry_hilly_widgets[] = {
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
{ WWT_IMGBTN, 7, 0, 169, 14, 224, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
{ WWT_TEXTBTN, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
{ WWT_TEXTBTN, 14, 2, 167, 42, 53, STR_0240_COAL_MINE, STR_0262_CONSTRUCT_COAL_MINE},
{ WWT_TEXTBTN, 14, 2, 167, 55, 66, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_TEXTBTN, 14, 2, 167, 68, 79, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
{ WWT_TEXTBTN, 14, 2, 167, 81, 92, STR_0243_FOREST, STR_0265_PLANT_FOREST},
{ WWT_TEXTBTN, 14, 2, 167, 94, 105, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_TEXTBTN, 14, 2, 167, 107, 118, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_TEXTBTN, 14, 2, 167, 120, 131, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
{ WWT_TEXTBTN, 14, 2, 167, 133, 144, STR_024F_GOLD_MINE, STR_0271_CONSTRUCT_GOLD_MINE},
{ WWT_TEXTBTN, 14, 2, 167, 146, 157, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
{ WWT_TEXTBTN, 14, 2, 167, 159, 170, STR_024B_BANK, STR_0272_CONSTRUCT_BANK_CAN_ONLY},
{ WWT_TEXTBTN, 14, 2, 167, 172, 183, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0240_COAL_MINE, STR_0262_CONSTRUCT_COAL_MINE},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0241_POWER_STATION, STR_0263_CONSTRUCT_POWER_STATION},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_024C_PAPER_MILL, STR_026E_CONSTRUCT_PAPER_MILL},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_0243_FOREST, STR_0265_PLANT_FOREST},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_024E_PRINTING_WORKS, STR_0270_CONSTRUCT_PRINTING_WORKS},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_024F_GOLD_MINE, STR_0271_CONSTRUCT_GOLD_MINE},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_024B_BANK, STR_0272_CONSTRUCT_BANK_CAN_ONLY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
{ WIDGETS_END},
};
static const Widget _scenedit_industry_desert_widgets[] = {
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
{ WWT_IMGBTN, 7, 0, 169, 14, 224, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
{ WWT_TEXTBTN, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
{ WWT_TEXTBTN, 14, 2, 167, 42, 53, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
{ WWT_TEXTBTN, 14, 2, 167, 55, 66, STR_0251_FRUIT_PLANTATION, STR_0274_PLANT_FRUIT_PLANTATION},
{ WWT_TEXTBTN, 14, 2, 167, 68, 79, STR_0252_RUBBER_PLANTATION,STR_0275_PLANT_RUBBER_PLANTATION},
{ WWT_TEXTBTN, 14, 2, 167, 81, 92, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_TEXTBTN, 14, 2, 167, 94, 105, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_TEXTBTN, 14, 2, 167, 107, 118, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_TEXTBTN, 14, 2, 167, 120, 131, STR_0253_WATER_SUPPLY, STR_0276_CONSTRUCT_WATER_SUPPLY},
{ WWT_TEXTBTN, 14, 2, 167, 133, 144, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
{ WWT_TEXTBTN, 14, 2, 167, 146, 157, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
{ WWT_TEXTBTN, 14, 2, 167, 159, 170, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
{ WWT_TEXTBTN, 14, 2, 167, 172, 183, STR_024B_BANK, STR_0272_CONSTRUCT_BANK_CAN_ONLY},
{ WWT_TEXTBTN, 14, 2, 167, 185, 196, STR_0255_DIAMOND_MINE, STR_0278_CONSTRUCT_DIAMOND_MINE},
{ WWT_TEXTBTN, 14, 2, 167, 198, 209, STR_0256_COPPER_ORE_MINE, STR_0279_CONSTRUCT_COPPER_ORE_MINE},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0250_LUMBER_MILL, STR_0273_CONSTRUCT_LUMBER_MILL_TO},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0251_FRUIT_PLANTATION, STR_0274_PLANT_FRUIT_PLANTATION},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0252_RUBBER_PLANTATION,STR_0275_PLANT_RUBBER_PLANTATION},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_0244_OIL_REFINERY, STR_0266_CONSTRUCT_OIL_REFINERY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_024D_FOOD_PROCESSING_PLANT, STR_026F_CONSTRUCT_FOOD_PROCESSING},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_0246_FACTORY, STR_0268_CONSTRUCT_FACTORY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_0253_WATER_SUPPLY, STR_0276_CONSTRUCT_WATER_SUPPLY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_0248_FARM, STR_026A_CONSTRUCT_FARM},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_0254_WATER_TOWER, STR_0277_CONSTRUCT_WATER_TOWER_CAN},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_024A_OIL_WELLS, STR_026C_CONSTRUCT_OIL_WELLS},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_024B_BANK, STR_0272_CONSTRUCT_BANK_CAN_ONLY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 185, 196, STR_0255_DIAMOND_MINE, STR_0278_CONSTRUCT_DIAMOND_MINE},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 198, 209, STR_0256_COPPER_ORE_MINE, STR_0279_CONSTRUCT_COPPER_ORE_MINE},
{ WIDGETS_END},
};
static const Widget _scenedit_industry_candy_widgets[] = {
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION,STR_NULL},
{ WWT_IMGBTN, 7, 0, 169, 14, 224, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 169, 0, 13, STR_023F_INDUSTRY_GENERATION,STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 169, 14, 224, 0x0, STR_NULL},
{ WWT_TEXTBTN, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 16, 27, STR_MANY_RANDOM_INDUSTRIES, STR_RANDOM_INDUSTRIES_TIP},
{ WWT_TEXTBTN, 14, 2, 167, 42, 53, STR_0257_COTTON_CANDY_FOREST,STR_027A_PLANT_COTTON_CANDY_FOREST},
{ WWT_TEXTBTN, 14, 2, 167, 55, 66, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
{ WWT_TEXTBTN, 14, 2, 167, 68, 79, STR_0259_BATTERY_FARM, STR_027C_CONSTRUCT_BATTERY_FARM},
{ WWT_TEXTBTN, 14, 2, 167, 81, 92, STR_025A_COLA_WELLS, STR_027D_CONSTRUCT_COLA_WELLS},
{ WWT_TEXTBTN, 14, 2, 167, 94, 105, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
{ WWT_TEXTBTN, 14, 2, 167, 107, 118, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
{ WWT_TEXTBTN, 14, 2, 167, 120, 131, STR_025D_PLASTIC_FOUNTAINS, STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS},
{ WWT_TEXTBTN, 14, 2, 167, 133, 144, STR_025E_FIZZY_DRINK_FACTORY,STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
{ WWT_TEXTBTN, 14, 2, 167, 146, 157, STR_025F_BUBBLE_GENERATOR, STR_0282_CONSTRUCT_BUBBLE_GENERATOR},
{ WWT_TEXTBTN, 14, 2, 167, 159, 170, STR_0260_TOFFEE_QUARRY, STR_0283_CONSTRUCT_TOFFEE_QUARRY},
{ WWT_TEXTBTN, 14, 2, 167, 172, 183, STR_0261_SUGAR_MINE, STR_0284_CONSTRUCT_SUGAR_MINE},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 42, 53, STR_0257_COTTON_CANDY_FOREST,STR_027A_PLANT_COTTON_CANDY_FOREST},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 55, 66, STR_0258_CANDY_FACTORY, STR_027B_CONSTRUCT_CANDY_FACTORY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 68, 79, STR_0259_BATTERY_FARM, STR_027C_CONSTRUCT_BATTERY_FARM},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 81, 92, STR_025A_COLA_WELLS, STR_027D_CONSTRUCT_COLA_WELLS},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 94, 105, STR_025B_TOY_SHOP, STR_027E_CONSTRUCT_TOY_SHOP},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 107, 118, STR_025C_TOY_FACTORY, STR_027F_CONSTRUCT_TOY_FACTORY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 120, 131, STR_025D_PLASTIC_FOUNTAINS, STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 133, 144, STR_025E_FIZZY_DRINK_FACTORY,STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 146, 157, STR_025F_BUBBLE_GENERATOR, STR_0282_CONSTRUCT_BUBBLE_GENERATOR},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 159, 170, STR_0260_TOFFEE_QUARRY, STR_0283_CONSTRUCT_TOFFEE_QUARRY},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 2, 167, 172, 183, STR_0261_SUGAR_MINE, STR_0284_CONSTRUCT_SUGAR_MINE},
{ WIDGETS_END},
};
int _industry_type_to_place;
static bool AnyTownExists() {
static bool AnyTownExists(void)
{
Town *t;
FOR_ALL_TOWNS(t) {
if (t->xy)
@@ -1883,39 +1888,39 @@ static void MainToolbarWndProc(Window *w, WindowEvent *e)
}
static const Widget _toolb_normal_widgets[] = {
{ WWT_PANEL, 14, 0, 21, 0, 21, 0x2D6, STR_0171_PAUSE_GAME},
{ WWT_PANEL, 14, 22, 43, 0, 21, SPR_OPENTTD_BASE + 57, STR_FAST_FORWARD},
{ WWT_PANEL, 14, 44, 65, 0, 21, 0x2EF, STR_0187_OPTIONS},
{ WWT_PANEL_2, 14, 66, 87, 0, 21, 0x2D4, STR_0172_SAVE_GAME_ABANDON_GAME},
{ WWT_PANEL, RESIZE_NONE, 14, 0, 21, 0, 21, 0x2D6, STR_0171_PAUSE_GAME},
{ WWT_PANEL, RESIZE_NONE, 14, 22, 43, 0, 21, SPR_OPENTTD_BASE + 57, STR_FAST_FORWARD},
{ WWT_PANEL, RESIZE_NONE, 14, 44, 65, 0, 21, 0x2EF, STR_0187_OPTIONS},
{ WWT_PANEL_2, RESIZE_NONE, 14, 66, 87, 0, 21, 0x2D4, STR_0172_SAVE_GAME_ABANDON_GAME},
{ WWT_PANEL, 14, 96, 117, 0, 21, 0x2C4, STR_0174_DISPLAY_MAP},
{ WWT_PANEL, 14, 118, 139, 0, 21, 0xFED, STR_0176_DISPLAY_TOWN_DIRECTORY},
{ WWT_PANEL, 14, 140, 161, 0, 21, 0x2A7, STR_02DC_DISPLAY_SUBSIDIES},
{ WWT_PANEL, 14, 162, 183, 0, 21, 0x513, STR_0173_DISPLAY_LIST_OF_COMPANY},
{ WWT_PANEL, RESIZE_NONE, 14, 96, 117, 0, 21, 0x2C4, STR_0174_DISPLAY_MAP},
{ WWT_PANEL, RESIZE_NONE, 14, 118, 139, 0, 21, 0xFED, STR_0176_DISPLAY_TOWN_DIRECTORY},
{ WWT_PANEL, RESIZE_NONE, 14, 140, 161, 0, 21, 0x2A7, STR_02DC_DISPLAY_SUBSIDIES},
{ WWT_PANEL, RESIZE_NONE, 14, 162, 183, 0, 21, 0x513, STR_0173_DISPLAY_LIST_OF_COMPANY},
{ WWT_PANEL, 14, 191, 212, 0, 21, 0x2E1, STR_0177_DISPLAY_COMPANY_FINANCES},
{ WWT_PANEL, 14, 213, 235, 0, 21, 0x2E7, STR_0178_DISPLAY_COMPANY_GENERAL},
{ WWT_PANEL, 14, 236, 257, 0, 21, 0x2E9, STR_0179_DISPLAY_GRAPHS},
{ WWT_PANEL, 14, 258, 279, 0, 21, 0x2AC, STR_017A_DISPLAY_COMPANY_LEAGUE},
{ WWT_PANEL, 14, 280, 301, 0, 21, 0x2E5, STR_0312_FUND_CONSTRUCTION_OF_NEW},
{ WWT_PANEL, RESIZE_NONE, 14, 191, 212, 0, 21, 0x2E1, STR_0177_DISPLAY_COMPANY_FINANCES},
{ WWT_PANEL, RESIZE_NONE, 14, 213, 235, 0, 21, 0x2E7, STR_0178_DISPLAY_COMPANY_GENERAL},
{ WWT_PANEL, RESIZE_NONE, 14, 236, 257, 0, 21, 0x2E9, STR_0179_DISPLAY_GRAPHS},
{ WWT_PANEL, RESIZE_NONE, 14, 258, 279, 0, 21, 0x2AC, STR_017A_DISPLAY_COMPANY_LEAGUE},
{ WWT_PANEL, RESIZE_NONE, 14, 280, 301, 0, 21, 0x2E5, STR_0312_FUND_CONSTRUCTION_OF_NEW},
{ WWT_PANEL, 14, 310, 331, 0, 21, 0x2DB, STR_017B_DISPLAY_LIST_OF_COMPANY},
{ WWT_PANEL, 14, 332, 353, 0, 21, 0x2DC, STR_017C_DISPLAY_LIST_OF_COMPANY},
{ WWT_PANEL, 14, 354, 375, 0, 21, 0x2DD, STR_017D_DISPLAY_LIST_OF_COMPANY},
{ WWT_PANEL, 14, 376, 397, 0, 21, 0x2DE, STR_017E_DISPLAY_LIST_OF_COMPANY},
{ WWT_PANEL, RESIZE_NONE, 14, 310, 331, 0, 21, 0x2DB, STR_017B_DISPLAY_LIST_OF_COMPANY},
{ WWT_PANEL, RESIZE_NONE, 14, 332, 353, 0, 21, 0x2DC, STR_017C_DISPLAY_LIST_OF_COMPANY},
{ WWT_PANEL, RESIZE_NONE, 14, 354, 375, 0, 21, 0x2DD, STR_017D_DISPLAY_LIST_OF_COMPANY},
{ WWT_PANEL, RESIZE_NONE, 14, 376, 397, 0, 21, 0x2DE, STR_017E_DISPLAY_LIST_OF_COMPANY},
{ WWT_PANEL, 14, 406, 427, 0, 21, 0x2DF, STR_017F_ZOOM_THE_VIEW_IN},
{ WWT_PANEL, 14, 428, 449, 0, 21, 0x2E0, STR_0180_ZOOM_THE_VIEW_OUT},
{ WWT_PANEL, RESIZE_NONE, 14, 406, 427, 0, 21, 0x2DF, STR_017F_ZOOM_THE_VIEW_IN},
{ WWT_PANEL, RESIZE_NONE, 14, 428, 449, 0, 21, 0x2E0, STR_0180_ZOOM_THE_VIEW_OUT},
{ WWT_PANEL, 14, 457, 478, 0, 21, 0x2D7, STR_0181_BUILD_RAILROAD_TRACK},
{ WWT_PANEL, 14, 479, 500, 0, 21, 0x2D8, STR_0182_BUILD_ROADS},
{ WWT_PANEL, 14, 501, 522, 0, 21, 0x2D9, STR_0183_BUILD_SHIP_DOCKS},
{ WWT_PANEL, 14, 523, 544, 0, 21, 0x2DA, STR_0184_BUILD_AIRPORTS},
{ WWT_PANEL, 14, 545, 566, 0, 21, 0xFF3, STR_LANDSCAPING_TOOLBAR_TIP}, // tree icon is 0x2E6
{ WWT_PANEL, RESIZE_NONE, 14, 457, 478, 0, 21, 0x2D7, STR_0181_BUILD_RAILROAD_TRACK},
{ WWT_PANEL, RESIZE_NONE, 14, 479, 500, 0, 21, 0x2D8, STR_0182_BUILD_ROADS},
{ WWT_PANEL, RESIZE_NONE, 14, 501, 522, 0, 21, 0x2D9, STR_0183_BUILD_SHIP_DOCKS},
{ WWT_PANEL, RESIZE_NONE, 14, 523, 544, 0, 21, 0x2DA, STR_0184_BUILD_AIRPORTS},
{ WWT_PANEL, RESIZE_NONE, 14, 545, 566, 0, 21, 0xFF3, STR_LANDSCAPING_TOOLBAR_TIP}, // tree icon is 0x2E6
{ WWT_PANEL, 14, 574, 595, 0, 21, 0x2C9, STR_01D4_SHOW_SOUND_MUSIC_WINDOW},
{ WWT_PANEL, 14, 596, 617, 0, 21, 0x2A8, STR_0203_SHOW_LAST_MESSAGE_NEWS},
{ WWT_PANEL, 14, 618, 639, 0, 21, 0x2D3, STR_0186_LAND_BLOCK_INFORMATION},
{ WWT_PANEL, RESIZE_NONE, 14, 574, 595, 0, 21, 0x2C9, STR_01D4_SHOW_SOUND_MUSIC_WINDOW},
{ WWT_PANEL, RESIZE_NONE, 14, 596, 617, 0, 21, 0x2A8, STR_0203_SHOW_LAST_MESSAGE_NEWS},
{ WWT_PANEL, RESIZE_NONE, 14, 618, 639, 0, 21, 0x2D3, STR_0186_LAND_BLOCK_INFORMATION},
{ WIDGETS_END},
};
@@ -1937,39 +1942,39 @@ static const WindowDesc _toolb_intro_desc = {
static const Widget _toolb_scen_widgets[] = {
{ WWT_PANEL, 14, 0, 21, 0, 21, 0x2D6, STR_0171_PAUSE_GAME},
{ WWT_PANEL, 14, 22, 43, 0, 21, SPR_OPENTTD_BASE + 57, STR_FAST_FORWARD},
{ WWT_PANEL, 14, 44, 65, 0, 21, 0x2EF, STR_0187_OPTIONS},
{ WWT_PANEL_2, 14, 66, 87, 0, 21, 0x2D4, STR_0297_SAVE_SCENARIO_LOAD_SCENARIO},
{ WWT_PANEL, RESIZE_NONE, 14, 0, 21, 0, 21, 0x2D6, STR_0171_PAUSE_GAME},
{ WWT_PANEL, RESIZE_NONE, 14, 22, 43, 0, 21, SPR_OPENTTD_BASE + 57, STR_FAST_FORWARD},
{ WWT_PANEL, RESIZE_NONE, 14, 44, 65, 0, 21, 0x2EF, STR_0187_OPTIONS},
{ WWT_PANEL_2, RESIZE_NONE, 14, 66, 87, 0, 21, 0x2D4, STR_0297_SAVE_SCENARIO_LOAD_SCENARIO},
{ WWT_PANEL, 14, 96, 225, 0, 21, 0x0, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 14, 96, 225, 0, 21, 0x0, STR_NULL},
{ WWT_PANEL, 14, 233, 362, 0, 21, 0x0, STR_NULL},
{ WWT_CLOSEBOX, 14, 236, 246, 5, 16, STR_0225, STR_029E_MOVE_THE_STARTING_DATE},
{ WWT_CLOSEBOX, 14, 347, 357, 5, 16, STR_0224, STR_029F_MOVE_THE_STARTING_DATE},
{ WWT_PANEL, RESIZE_NONE, 14, 233, 362, 0, 21, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 236, 246, 5, 16, STR_0225, STR_029E_MOVE_THE_STARTING_DATE},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 347, 357, 5, 16, STR_0224, STR_029F_MOVE_THE_STARTING_DATE},
{ WWT_PANEL, 14, 371, 392, 0, 21, 0x2C4, STR_0175_DISPLAY_MAP_TOWN_DIRECTORY},
{ WWT_PANEL, RESIZE_NONE, 14, 371, 392, 0, 21, 0x2C4, STR_0175_DISPLAY_MAP_TOWN_DIRECTORY},
{ WWT_PANEL, 14, 400, 421, 0, 21, 0x2DF, STR_017F_ZOOM_THE_VIEW_IN},
{ WWT_PANEL, 14, 422, 443, 0, 21, 0x2E0, STR_0180_ZOOM_THE_VIEW_OUT},
{ WWT_PANEL, RESIZE_NONE, 14, 400, 421, 0, 21, 0x2DF, STR_017F_ZOOM_THE_VIEW_IN},
{ WWT_PANEL, RESIZE_NONE, 14, 422, 443, 0, 21, 0x2E0, STR_0180_ZOOM_THE_VIEW_OUT},
{ WWT_PANEL, 14, 452, 473, 0, 21, 0xFF3, STR_022E_LANDSCAPE_GENERATION},
{ WWT_PANEL, 14, 474, 495, 0, 21, 0xFED, STR_022F_TOWN_GENERATION},
{ WWT_PANEL, 14, 496, 517, 0, 21, 0x2E5, STR_0230_INDUSTRY_GENERATION},
{ WWT_PANEL, 14, 518, 539, 0, 21, 0x2D8, STR_0231_ROAD_CONSTRUCTION},
{ WWT_PANEL, 14, 540, 561, 0, 21, 0x2E6, STR_0288_PLANT_TREES},
{ WWT_PANEL, 14, 562, 583, 0, 21, 0xFF2, STR_0289_PLACE_SIGN},
{ WWT_PANEL, RESIZE_NONE, 14, 452, 473, 0, 21, 0xFF3, STR_022E_LANDSCAPE_GENERATION},
{ WWT_PANEL, RESIZE_NONE, 14, 474, 495, 0, 21, 0xFED, STR_022F_TOWN_GENERATION},
{ WWT_PANEL, RESIZE_NONE, 14, 496, 517, 0, 21, 0x2E5, STR_0230_INDUSTRY_GENERATION},
{ WWT_PANEL, RESIZE_NONE, 14, 518, 539, 0, 21, 0x2D8, STR_0231_ROAD_CONSTRUCTION},
{ WWT_PANEL, RESIZE_NONE, 14, 540, 561, 0, 21, 0x2E6, STR_0288_PLANT_TREES},
{ WWT_PANEL, RESIZE_NONE, 14, 562, 583, 0, 21, 0xFF2, STR_0289_PLACE_SIGN},
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_PANEL, 14, 596, 617, 0, 21, 0x2C9, STR_01D4_SHOW_SOUND_MUSIC_WINDOW},
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_PANEL, 14, 618, 639, 0, 21, 0x2D3, STR_0186_LAND_BLOCK_INFORMATION},
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 14, 596, 617, 0, 21, 0x2C9, STR_01D4_SHOW_SOUND_MUSIC_WINDOW},
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 14, 618, 639, 0, 21, 0x2D3, STR_0186_LAND_BLOCK_INFORMATION},
{ WIDGETS_END},
};
@@ -2209,9 +2214,9 @@ static void ScrollMainViewport(int x, int y)
static const Widget _main_status_widgets[] = {
{ WWT_IMGBTN, 14, 0, 139, 0, 11, 0x0, STR_NULL},
{ WWT_PUSHIMGBTN, 14, 140, 499, 0, 11, 0x0, STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS},
{ WWT_PUSHIMGBTN, 14, 500, 639, 0, 11, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 139, 0, 11, 0x0, STR_NULL},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 140, 499, 0, 11, 0x0, STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 500, 639, 0, 11, 0x0, STR_NULL},
{ WIDGETS_END},
};
@@ -2323,14 +2328,6 @@ static void MainWindowWndProc(Window *w, WindowEvent *e) {
DebugProc(e->keypress.keycode - ('0' | WKC_ALT));
#endif
break;
case 'A' | WKC_CTRL:
disable_computer^=1;
ShowInfoF("Disable Computer: %s", disable_computer?"ON":"OFF");
break;
case 'B' | WKC_CTRL:
_local_player^=1;
ShowInfoF("Play as computer: %s", _local_player?"ON":"OFF");
break;
// invoke autorail
case 'A':
@@ -2369,10 +2366,10 @@ static void MainWindowWndProc(Window *w, WindowEvent *e) {
}
void ShowSelectGameWindow();
void ShowSelectGameWindow(void);
extern void ShowJoinStatusWindowAfterJoin(void);
void SetupColorsAndInitialWindow()
void SetupColorsAndInitialWindow(void)
{
int i;
byte *b;
@@ -2401,24 +2398,7 @@ void SetupColorsAndInitialWindow()
w = AllocateWindow(0, 0, width, height, MainWindowWndProc, 0, NULL);
AssignWindowViewport(w, 0, 0, width, height, 0x8080, 0);
w = AllocateWindowDesc(&_toolb_normal_desc);
w->disabled_state = 1 << 17; // disable zoon-in button (by default game is zoomed in)
if (_networking) { // if networking, disable fast-forward button
w->disabled_state |= (1 << 1);
if (!_network_server) // if not server, disable pause button
w->disabled_state |= (1 << 0);
}
w->flags4 &= ~WF_WHITE_BORDER_MASK;
PositionMainToolbar(w); // already WC_MAIN_TOOLBAR passed (&_toolb_normal_desc)
_main_status_desc.top = height - 12;
w = AllocateWindowDesc(&_main_status_desc);
w->flags4 &= ~WF_WHITE_BORDER_MASK;
WP(w,def_d).data_1 = -1280;
ShowVitalWindows();
/* Bring joining GUI to front till the client is really joined */
if (_networking && !_network_server)
@@ -2431,7 +2411,7 @@ void SetupColorsAndInitialWindow()
w = AllocateWindowDesc(&_toolb_scen_desc);
w->disabled_state = 1 << 9;
w->flags4 &= ~WF_WHITE_BORDER_MASK;
CLRBITS(w->flags4, WF_WHITE_BORDER_MASK);
PositionMainToolbar(w); // already WC_MAIN_TOOLBAR passed (&_toolb_scen_desc)
break;
@@ -2440,7 +2420,30 @@ void SetupColorsAndInitialWindow()
}
}
void GameSizeChanged()
void ShowVitalWindows(void)
{
Window *w;
w = AllocateWindowDesc(&_toolb_normal_desc);
w->disabled_state = 1 << 17; // disable zoom-in button (by default game is zoomed in)
CLRBITS(w->flags4, WF_WHITE_BORDER_MASK);
if (_networking) { // if networking, disable fast-forward button
SETBIT(w->disabled_state, 1);
if (!_network_server) // if not server, disable pause button
SETBIT(w->disabled_state, 0);
}
PositionMainToolbar(w); // already WC_MAIN_TOOLBAR passed (&_toolb_normal_desc)
_main_status_desc.top = _screen.height - 12;
w = AllocateWindowDesc(&_main_status_desc);
CLRBITS(w->flags4, WF_WHITE_BORDER_MASK);
WP(w,def_d).data_1 = -1280;
}
void GameSizeChanged(void)
{
RelocateAllWindows(_screen.width, _screen.height);
ScreenSizeChanged();
+55 -7
View File
@@ -2,13 +2,61 @@
#include "ttd.h"
#include "map.h"
#define TILE_X_BITS 8
#define TILE_Y_BITS 8
uint _map_log_x = TILE_X_BITS;
uint _map_log_y = TILE_Y_BITS;
byte _map_type_and_height[TILES_X * TILES_Y];
byte _map5[TILES_X * TILES_Y];
byte _map3_lo[TILES_X * TILES_Y];
byte _map3_hi[TILES_X * TILES_Y];
byte _map_owner[TILES_X * TILES_Y];
byte _map2[TILES_X * TILES_Y];
byte _map_extra_bits[TILES_X * TILES_Y / 4];
#define MAP_SIZE ((1 << TILE_X_BITS) * (1 << TILE_Y_BITS))
byte _map_type_and_height [MAP_SIZE];
byte _map5 [MAP_SIZE];
byte _map3_lo [MAP_SIZE];
byte _map3_hi [MAP_SIZE];
byte _map_owner [MAP_SIZE];
uint16 _map2 [MAP_SIZE];
byte _map_extra_bits [MAP_SIZE / 4];
#ifdef _DEBUG
TileIndex TileAdd(TileIndex tile, TileIndexDiff add,
const char *exp, const char *file, int line)
{
int dx;
int dy;
uint x;
uint y;
dx = add & MapMaxX();
if (dx >= (int)MapSizeX() / 2) dx -= MapSizeX();
dy = (add - dx) / (int)MapSizeX();
x = TileX(tile) + dx;
y = TileY(tile) + dy;
if (x >= MapSizeX() || y >= MapSizeY()) {
char buf[512];
sprintf(buf, "TILE_ADD(%s) when adding 0x%.4X and 0x%.4X failed",
exp, tile, add);
#if !defined(_MSC_VER)
fprintf(stderr, "%s:%d %s\n", file, line, buf);
#else
_assert(buf, (char*)file, line);
#endif
}
assert(TILE_XY(x,y) == TILE_MASK(tile + add));
return TILE_XY(x,y);
}
#endif
const TileIndexDiffC _tileoffs_by_dir[] = {
{-1, 0},
{ 0, 1},
{ 1, 0},
{ 0, -1}
};
+94 -14
View File
@@ -1,22 +1,18 @@
#ifndef MAP_H
#define MAP_H
#define TILE_X_BITS 8
#define TILE_Y_BITS 8
#define TILE_FROM_XY(x,y) (int)((((y) >> 4) << MapLogX()) + ((x) >> 4))
#define TILE_XY(x,y) (int)(((y) << MapLogX()) + (x))
#define TILES_X (1 << TILE_X_BITS)
#define TILES_Y (1 << TILE_Y_BITS)
#define TILE_MASK(x) ((x) & ((1 << (MapLogX() + MapLogY())) - 1))
#define TILE_X_MAX (TILES_X - 1)
#define TILE_Y_MAX (TILES_Y - 1)
extern byte _map_type_and_height[];
extern byte _map5[];
extern byte _map3_lo[];
extern byte _map3_hi[];
extern byte _map_owner[];
extern byte _map2[];
extern byte _map_extra_bits[];
extern byte _map_type_and_height[];
extern byte _map5[];
extern byte _map3_lo[];
extern byte _map3_hi[];
extern byte _map_owner[];
extern uint16 _map2[];
extern byte _map_extra_bits[];
// binary logarithm of the map size, try to avoid using this one
static inline uint MapLogX(void) { extern uint _map_log_x; return _map_log_x; }
@@ -30,4 +26,88 @@ static inline uint MapMaxY(void) { return MapSizeY() - 1; }
/* The number of tiles in the map */
static inline uint MapSize(void) { return MapSizeX() * MapSizeY(); }
typedef uint16 TileIndex;
static inline uint TileX(TileIndex tile)
{
return tile & MapMaxX();
}
static inline uint TileY(TileIndex tile)
{
return tile >> MapLogX();
}
typedef int16 TileIndexDiff;
typedef struct TileIndexDiffC {
int16 x;
int16 y;
} TileIndexDiffC;
static inline TileIndexDiff ToTileIndexDiff(TileIndexDiffC tidc)
{
return (tidc.y << MapLogX()) + tidc.x;
}
#ifndef _DEBUG
#define TILE_ADD(x,y) ((x) + (y))
#else
extern TileIndex TileAdd(TileIndex tile, TileIndexDiff add,
const char *exp, const char *file, int line);
#define TILE_ADD(x, y) (TileAdd((x), (y), #x " + " #y, __FILE__, __LINE__))
#endif
#define TILE_ADDXY(tile, x, y) TILE_ADD(tile, TILE_XY(x, y))
static inline TileIndexDiff TileOffsByDir(uint dir)
{
extern const TileIndexDiffC _tileoffs_by_dir[4];
assert(dir < lengthof(_tileoffs_by_dir));
return ToTileIndexDiff(_tileoffs_by_dir[dir]);
}
static inline uint TileHeight(TileIndex tile)
{
assert(tile < MapSize());
return _map_type_and_height[tile] & 0xf;
}
static inline void SetTileHeight(TileIndex tile, uint height)
{
assert(tile < MapSize());
assert(height < 16);
_map_type_and_height[tile] &= ~0x0F;
_map_type_and_height[tile] |= height;
}
static inline uint TilePixelHeight(TileIndex tile)
{
return TileHeight(tile) * 8;
}
static inline int TileType(TileIndex tile)
{
assert(tile < MapSize());
return _map_type_and_height[tile] >> 4;
}
static inline void SetTileType(TileIndex tile, uint type)
{
assert(tile < MapSize());
_map_type_and_height[tile] &= ~0xF0;
_map_type_and_height[tile] |= type << 4;
}
static inline bool IsTileType(TileIndex tile, int type)
{
return TileType(tile) == type;
}
#endif
+1 -1
View File
@@ -71,7 +71,7 @@ typedef struct md5_state_s {
} md5_state_t;
#ifdef __cplusplus
extern "C"
extern "C"
{
#endif
Binary file not shown.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 941 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Executable → Regular
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

+319
View File
@@ -0,0 +1,319 @@
/* XPM */
static char * openttd_64_xpm[] = {
"64 64 252 2",
" c None",
". c #212429",
"+ c #030006",
"@ c #402F20",
"# c #80582F",
"$ c #000100",
"% c #252B31",
"& c #2B1C0D",
"* c #DC9C55",
"= c #FFC36A",
"- c #1F180E",
"; c #D09351",
"> c #FEBA6A",
", c #ECAB62",
"' c #7E5935",
") c #F1AE5F",
"! c #F8AE62",
"~ c #2E3339",
"{ c #6F4B28",
"] c #150D04",
"^ c #C3884C",
"/ c #F4AB5F",
"( c #684B2B",
"_ c #353B3E",
": c #11100E",
"< c #FCB265",
"[ c #5D4327",
"} c #BA8144",
"| c #E9A863",
"1 c #E2A15A",
"2 c #563B1E",
"3 c #AC7A45",
"4 c #694D32",
"5 c #383937",
"6 c #929492",
"7 c #A5A8A8",
"8 c #9B9E9D",
"9 c #665D51",
"0 c #49321A",
"a c #3E4144",
"b c #090F13",
"c c #D5DADD",
"d c #E7EDEF",
"e c #F9FBF8",
"f c #988E82",
"g c #0A0201",
"h c #A2703D",
"i c #D9DBD7",
"j c #F6F8F5",
"k c #9A8A78",
"l c #916333",
"m c #5D5449",
"n c #F1F3F0",
"o c #EAA859",
"p c #4B4D4F",
"q c #9A6B37",
"r c #696762",
"s c #DFE1DE",
"t c #EFF1EE",
"u c #917E6B",
"v c #332312",
"w c #936D47",
"x c #563E28",
"y c #4F4842",
"z c #767470",
"A c #B1B3B0",
"B c #CDD1D0",
"C c #E9EBE7",
"D c #F3F5F2",
"E c #C0C2BF",
"F c #6F6051",
"G c #635345",
"H c #FFB25F",
"I c #050A06",
"J c #664220",
"K c #403A34",
"L c #858886",
"M c #C2C8CC",
"N c #EDEFEC",
"O c #DFE5E7",
"P c #797064",
"Q c #A8A29B",
"R c #BE8953",
"S c #ADB3B7",
"T c #E5E7E4",
"U c #9F7E5E",
"V c #F4A554",
"W c #F3A956",
"X c #D98F46",
"Y c #443D37",
"Z c #B1B0A7",
"` c #FDFFFC",
" . c #927960",
".. c #FFA652",
"+. c #FBAA59",
"@. c #11181E",
"#. c #C9C5BD",
"$. c #A89E91",
"%. c #F6A052",
"&. c #FBA950",
"*. c #1A0B00",
"=. c #AC783D",
"-. c #A68666",
";. c #7E6C5D",
">. c #BB7B44",
",. c #F69F4A",
"'. c #F79A48",
"). c #FFA349",
"!. c #845728",
"~. c #FDC880",
"{. c #C3813D",
"]. c #9E7047",
"^. c #F5983F",
"/. c #D07D2D",
"(. c #7A5028",
"_. c #817E79",
":. c #85705A",
"<. c #CA8136",
"[. c #985A22",
"}. c #98908A",
"|. c #8B6C50",
"1. c #F9953F",
"2. c #C77228",
"3. c #D1D1C8",
"4. c #F39A4E",
"5. c #FF9C3D",
"6. c #F98F34",
"7. c #F79335",
"8. c #945A2A",
"9. c #C17A3D",
"0. c #EE8C36",
"a. c #ED8632",
"b. c #E8903D",
"c. c #654B35",
"d. c #B36420",
"e. c #FF9030",
"f. c #FB8B33",
"g. c #FB8A29",
"h. c #C06B20",
"i. c #884914",
"j. c #DD863C",
"k. c #FB8427",
"l. c #FD8E23",
"m. c #B15B11",
"n. c #E78024",
"o. c #FC841D",
"p. c #F37E13",
"q. c #F89A41",
"r. c #D77921",
"s. c #655340",
"t. c #FE801C",
"u. c #FE7F0C",
"v. c #FE7A08",
"w. c #FF8814",
"x. c #C4600D",
"y. c #FF8700",
"z. c #4E2505",
"A. c #000205",
"B. c #745C46",
"C. c #DF7216",
"D. c #F2760D",
"E. c #FE7404",
"F. c #FF8000",
"G. c #974600",
"H. c #7A3F12",
"I. c #593513",
"J. c #513D2D",
"K. c #6A421A",
"L. c #9C520F",
"M. c #F67300",
"N. c #3E210D",
"O. c #BBC0C3",
"P. c #CE6000",
"Q. c #E86E00",
"R. c #FF7500",
"S. c #FF7B00",
"T. c #A14800",
"U. c #7A3601",
"V. c #1E3E10",
"W. c #352A35",
"X. c #122509",
"Y. c #3A7E1E",
"Z. c #813A00",
"`. c #8B8074",
" + c #C25600",
".+ c #A1836B",
"++ c #F46B00",
"@+ c #B57031",
"#+ c #AD5000",
"$+ c #1A3710",
"%+ c #62C52C",
"&+ c #61CC34",
"*+ c #382D38",
"=+ c #0B1A07",
"-+ c #5BB92A",
";+ c #6DE73A",
">+ c #4A9222",
",+ c #D05B00",
"'+ c #DF5F00",
")+ c #662E00",
"!+ c #55B32E",
"~+ c #6AD432",
"{+ c #69DC39",
"]+ c #1D380B",
"^+ c #0A1608",
"/+ c #72E236",
"(+ c #438D24",
"_+ c #752500",
":+ c #A64002",
"<+ c #BC5700",
"[+ c #17320B",
"}+ c #57AC28",
"|+ c #42861D",
"1+ c #5A2900",
"2+ c #152C0C",
"3+ c #0A1104",
"4+ c #100001",
"5+ c #469724",
"6+ c #73F43D",
"7+ c #234912",
"8+ c #2E5F18",
"9+ c #50AF29",
"0+ c #6EDE32",
"a+ c #295914",
"b+ c #5CC132",
"c+ c #255114",
"d+ c #38761E",
"e+ c #3F8222",
"f+ c #52A025",
"g+ c #6F2F00",
"h+ c #894000",
"i+ c #377019",
"j+ c #7DFF3F",
"k+ c #346A1C",
"l+ c #C96E14",
"m+ c #FF7004",
"n+ c #0B200A",
"o+ c #74EC36",
"p+ c #7C4A1D",
"q+ c #DE6701",
"r+ c #210901",
"s+ c #20440F",
"t+ c #4EA529",
"u+ c #8C3D00",
"v+ c #4D9C27",
"w+ c #66CF2D",
"x+ c #C55301",
"y+ c #2C0F00",
"z+ c #142806",
"A+ c #361500",
"B+ c #421C02",
"C+ c #3E7A1A",
" ",
" . + ",
" . @ # $ ",
" % & * = # $ ",
" % - ; > , > ' $ ",
" % - ; > , ) ! > ' $ ",
" ~ - ; > ! ! , ) ) > { $ ",
" ~ ] ^ > ! , , ! / , ! > ( $ ",
" _ : ^ > , ! ! , / ! , , > < ( $ ",
" ~ : ; > , ! , , < , / ! / / > < [ $ ",
" _ : } > , , ! ! | 1 1 , ) , , , ) < 2 $ ",
" _ : 3 = , , < , * 4 [ 4 ( 3 < / , ! > , 2 $ ",
" _ : } > / ! , ! , } 5 6 7 8 9 | < , , ) ) < 0 $ ",
" a b 3 > ! , | ! , < ^ 9 c d e f | ) ! , ! , > , 0 $ ",
" a g h > , ! ! , , > > } 9 i j e k | , ! , ! ! / > / @ $ ",
" a + h > , ! , , < ! , * l m i n e k | ! ! < > , , , > o @ $ ",
" p b q = , , ! < , 1 h { [ @ r s t e u ; > ; # # 3 ! , ! > | v $ ",
" p b w > / ! ! ) | q x y z 8 A B C t D E F # 2 p z G 1 ! , / H 1 v $ ",
" p I l > , , , < * J K L M i C C C C n N D O 6 P M d Q R < ) ) / < * & $ ",
" p b # > , , ! < | ( a S i N n n n D n t C t n n T C e B U < V V V W H X & $ ",
" p b # > ) < , , ) q Y Z s C n t e ` j t n n n n t N N t C ./ V / V ..V +.X - $ ",
" @.b # > , ! , ! < 1 x L i n n n D #.u $.e C C D ` C n C t e f * V %.%.V %.&...X *.$ ",
" @.b { > > , ! , , < =.y M N t C e Q -.^ ;.C D e k Q ` n n t e Q >...,.,.,.,.,.'.).X ] $ ",
" @.b { > ) , , , / ! ) !.z i t n j s U ~.{.9 i t j u !.f j t n e B ].&.'.'.'.'.'.^.'.)./.] $ ",
" @.@.( > < / ! / , , / / (._.C n t n C :.V <.G i n j k %.[.}.j t D N |.,.'.^.'.^.1.^.1.1.).2.] $ ",
" @.: 2 > ! / / / / / +.V +.(.}.C C t t ` Z ' [.9 3.n e u 4.5.(.E D n ` $.X 1.^.1.1.1.6.7.1.6.5.2.g $ ",
" @.@.2 H W / V V V V V V V &.8._.C D C n n e E G P T t e k ,.5./.F n j i _.9.6.7.6.0.1.a.6.6.6.6.5.2.g $ ",
" @.@.2 +.+./ V V V %.%.V %.,.V b.c.i D t t t N D d i C t j :.d.0.5.[._.u U R '.6.1.6.6.e.6.f.f.6.f.g.e.h.g $ ",
" @.@.0 +.+.%.V V %.V ,.%.,.%.,.,...8.Q j t C n t t n N C t D #.z [ i.2.j.4...1.6.g.6.f.6.g.g.g.f.g.k.g.g.l.m.g $ ",
" @.@.0 ..&.%.,.4.,.%.,.,.'.,.,.'.'.^.b.4 3.` n n C t t t n t t j D B 8 F i.n.e.k.f.f.f.g.k.f.g.g.o.o.o.o.p.o.l.m.g $ ",
" @.. 0 &...,.%.,.'.,.'.'.'.'.^.^.^.^.q.1.r.s.B ` D n t t C n t t t t N t d 7 c.h.e.g.k.g.g.o.k.k.o.k.o.t.u.t.v.u.w.m.] $ ",
" % g j.&.'.,.^.'.,.'.'.'.^.1.1.1.1.1.7.1.5.n.# 6 C ` j n n t t t t t t t N D O F x.l.o.t.t.t.t.u.t.u.t.t.u.v.u.u.v.y.z.A. ",
" A.& j.).'.'.1.1.0.^.1.^.1.0.1.6.1.e.7.a.r.n.d.|.f i e e C n t t t t t t N e d B.C.o.p.t.u.D.v.D.v.v.v.v.v.E.v.F.G.g A. ",
" g v b.q.0.^.1.5.a.7.6.7.6.6.6.a.d.H.I.J.K.e.k.2.8. .#.j t t D n t t t t N e M L.u.v.u.t.u.v.v.v.M.E.v.E.M.F.G.A.A. ",
" A.N.^.6.7.a.7.1.6.6.6.6.6.e.h.@ r 6 O.6 d.g.g.l.P.:.C t t C e e t t t t N ` :.Q.v.E.E.v.R.E.R.v.E.E.R.F.G.+ A. ",
" A.N.1.6.6.f.g.f.f.f.g.f.f.C.c.M N t O |.k.o.o.P.G i t e .:.3.e t t t n ` 7 x.v.S.v.E.R.R.R.E.R.S.F.T.A.$ ",
" . $ N.6.e.f.g.g.g.f.o.k.k.k.K.S n D e A L.w.w.P.s.i t e U C.U.#.D C n t e M d.F.E.E.R.S.R.R.R.R.F.T.A.V.V.$ ",
" W.X.Y.g N.6.l.g.k.k.p.k.o.w.t.Z.Q n t t D `. +u. +G i n D .+D.++J s n n C j M @+u.E.R.S.R.S.R.S.F.#+I $+%+&+V.$ ",
" *+=+-+;+>+g z.k.o.p.t.u.t.t.u.u.G._.t t t n d B.,+'+s.i n e .+D.++)+O.t n t ` A d.u.M.R.R.R.S.R.F.#+A.$+!+~+{+~+]+$ ",
" *+^+-+/+~+~+(++ z.w.o.u.t.t.v.u.t. +F C n t t j O B._+c.i n j U D.:+J.#.t n t ` k n.R.R.R.R.R.R.F.<+$ [+!+~+&+~+{+~+]+$ ",
" ~ =+}+/+~+{+~+/+|+A.1+u.u.v.M.v.v.v.,+c.s n t C D j d _.`.i n ` |.)+@ 6 i C n j O ].l.E.R.S.R.R.F.<+g 2+-+&+~+~+{+&+;+&+3+$ ",
"a 4+5+6+~+~+~+{+7+8+(+A.1+F.v.v.E.R.E.++K.#.n n n t t N t T C t D #.7 E i N n n e f j.S.E.M.R.M.F. ++ [+9+&+{+~+{+~+0+{+a+I @. ",
" + 2+b+{+{+/+c+V.]+d+e++ )+v.v.R.R.E.E.U.S t n n e D t t N t C t j N C t t D ` Q >.w.E.R.R.R.F.P.g $+d+$+2+f+/+~+~+/+8++ A. ",
" b X.&+/+c+V.{+~+I >+e++ g+S.S.S.S.E.h+}.t ` u u T ` D n t n t t n n D ` C }.>.g.E.R.R.R.F.P.g 2+d+=+!+f+=+}+{+/+8++ $ ",
" + 2+&+X.i+j+k+V.{+~+i+A.g+S.R.E.v.T.z ` i h l+(.Q T e C n C e ` ` T A |.9.w.m+R.R.S.F.P.*.n+!+f+3+!+j+i+d+j+k+g A. ",
" g $+&+$+2+V.o+-+3+Y.e+g U.F.v.E.'+{ `.P j.w.M.<+p+$.e n j 3.$.k w d.l.F.E.E.R.S.S.,+*.n+5+&+/+f+=+e+[+b+i++ A. ",
" g V.-+8+0+b+^+e+[+|+k+$ U.F.S.E.v.k.f.t.m+R.S.'+B.N t j .9.n.o.u.R.E.R.S.R.F.q+r+n+e+[+!+{+o+>+=+!+e+g $ ",
" + V./+&+=+3+f+}+A.&+d+$ Z.S.v.R.R.E.E.E.S.S.,+G 3.n j .+u.m+E.E.R.R.M.R.S.q+*.=+e+3+V.6+~+~+{+0+e++ $ ",
" + s+!+f+%+n+=+t+b+5+k+I u+F.S.S.R.S.R.R.S.,+G i D e .+D.E.v.R.R.R.R.F.Q.r+3+t+c+e+V.i+/+~+;+e++ $ ",
" + 7+;+;+}+v+w+X.=+>+k+A.h+F.R.S.R.R.S.S.x+G T ` ` .+p.R.R.M.S.R.S.Q.y+^+(+&+~+;+~+2+e+o+e++ $ ",
" + 7+{+;+&+2+3+e+z+(+8+g G.F.R.R.R.R.M.,+J.S O.M :.o.R.R.R.R.F.Q.y+^+|+V.!+/+~+{+b+>+>+b $ ",
" + 7+o+$+c+%+z+k+v+/+c+A.T.F.S.R.R.R.E.x.d.@+9.j.u.E.R.R.F.M.A+I e+=+s+o+~+~+~+o+>++ g ",
" + 8+}+n+}+!+v+{+[+5+a+$ T.F.S.R.R.R.S.F.w.w.v.E.R.R.S.Q.A+A.5+a+8+$+(+/+~+;+>+b $ ",
" g i+}+n+~+{+2+8+X.t+c+$ #+F.S.R.R.R.v.E.E.v.R.S.S.M.B+$ |+&+&+/+b+n+(+6+>++ $ ",
" I k+~+b+z+d+j+(+I b+7+A.#+F.S.R.E.E.E.E.R.R.S.M.B+$ e+&+&+{+~+/+!+v+t+: I ",
" g i+!+e+;+~+[+e+0+&+V.g #+F.S.R.v.E.R.S.S.D.z.g e+&+~+~+~+{+~+o+}+I $ ",
" g i+6+%+2+C+;+~+{+&+n+g <+F.R.R.R.R.S.M.z.A.I c+~+0+~+~+~+/+t+: I ",
" + e+}+d+/+~+{+/+i+g + ] <+F.S.M.S.S.1+g + 8+{+~+{+/+}+: A. ",
" + d+6+~+~+;+i+A.$ A.g P.F.R.S.1++ + 8+/+;+!+3+A. ",
" + e+o+;+d++ A. $ g P.F.)+g b k+b+3+A. ",
" + e+(+b $ g *.1+A. + + + ",
" g + g $ A. I ",
" $ ",
" "};
+128 -122
View File
@@ -9,9 +9,10 @@
#include "network.h"
#include "network_data.h"
#include "network_server.h"
#include "engine.h"
extern void StartupEconomy();
extern void InitNewsItemStructs();
extern void StartupEconomy(void);
extern void InitNewsItemStructs(void);
byte _name_array[512][32];
@@ -28,11 +29,15 @@ static inline uint32 ROR(uint32 x, int n)
#ifdef RANDOM_DEBUG
#include "network_data.h"
uint32 DoRandom(uint line, char *file)
uint32 DoRandom(int line, const char *file)
#else
uint32 Random()
uint32 Random(void)
#endif
{
uint32 s;
uint32 t;
#ifdef RANDOM_DEBUG
if (_networking && (DEREF_CLIENT(0)->status != STATUS_INACTIVE || !_network_server))
printf("Random [%d/%d] %s:%d\n",_frame_counter, _current_player, file, line);
@@ -40,8 +45,8 @@ uint32 Random()
#ifdef PLAYER_SEED_RANDOM
if (_current_player>=MAX_PLAYERS || !_networking) {
uint32 s = _random_seeds[0][0];
uint32 t = _random_seeds[0][1];
s = _random_seeds[0][0];
t = _random_seeds[0][1];
_random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7);
return _random_seeds[0][1] = ROR(s, 3);
} else {
@@ -52,15 +57,15 @@ uint32 Random()
return _player_seeds[_current_player][1] = ROR(s, 3);
}
#else
uint32 s = _random_seeds[0][0];
uint32 t = _random_seeds[0][1];
s = _random_seeds[0][0];
t = _random_seeds[0][1];
_random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7);
return _random_seeds[0][1] = ROR(s, 3);
#endif
}
#ifdef RANDOM_DEBUG
uint DoRandomRange(uint max, uint line, char *file)
uint DoRandomRange(uint max, int line, const char *file)
{
return (uint16)DoRandom(line, file) * max >> 16;
}
@@ -71,7 +76,7 @@ uint RandomRange(uint max)
}
#endif
uint32 InteractiveRandom()
uint32 InteractiveRandom(void)
{
uint32 t = _random_seeds[1][1];
uint32 s = _random_seeds[1][0];
@@ -84,7 +89,7 @@ uint InteractiveRandomRange(uint max)
return (uint16)InteractiveRandom() * max >> 16;
}
void InitPlayerRandoms()
void InitPlayerRandoms(void)
{
int i;
for (i=0; i<MAX_PLAYERS; i++) {
@@ -149,39 +154,48 @@ void CSleep(int milliseconds)
#endif
}
void InitializeClearLand();
void InitializeRail();
void InitializeRailGui();
void InitializeRoad();
void InitializeRoadGui();
void InitializeAirportGui();
void InitializeDock();
void InitializeDockGui();
void InitializeIndustries();
void InitializeLandscape();
void InitializeTowns();
void InitializeTrees();
void InitializeStations();
static void InitializeNameMgr();
void InitializePlayers();
static void InitializeCheats();
void InitializeVehicles(void);
void InitializeOrders(void);
void InitializeClearLand(void);
void InitializeRail(void);
void InitializeRailGui(void);
void InitializeRoad(void);
void InitializeRoadGui(void);
void InitializeAirportGui(void);
void InitializeDock(void);
void InitializeDockGui(void);
void InitializeIndustries(void);
void InitializeLandscape(void);
void InitializeTowns(void);
void InitializeTrees(void);
void InitializeSigns(void);
void InitializeStations(void);
static void InitializeNameMgr(void);
void InitializePlayers(void);
static void InitializeCheats(void);
void GenerateLandscape();
void GenerateClearTile();
void GenerateLandscape(void);
void GenerateClearTile(void);
void GenerateIndustries();
void GenerateUnmovables();
void GenerateTowns();
void GenerateIndustries(void);
void GenerateUnmovables(void);
void GenerateTowns(void);
void StartupPlayers();
void StartupEngines();
void StartupDisasters();
void GenerateTrees();
void StartupPlayers(void);
void StartupDisasters(void);
void GenerateTrees(void);
void ConvertGroundTilesIntoWaterTiles();
void ConvertGroundTilesIntoWaterTiles(void);
void InitializeGame()
void InitializeGame(void)
{
// Initialize the autoreplace array. Needs to be cleared between each game
uint i;
for (i = 0; i < lengthof(_autoreplace_array); i++)
_autoreplace_array[i] = i;
AddTypeToEngines(); // make sure all engines have a type
SetObjectToPlace(1, 0, 0, 0);
_pause = 0;
@@ -198,7 +212,7 @@ void InitializeGame()
}
InitializeVehicles();
_backup_orders_tile = 0;
InitializeOrders();
InitNewsItemStructs();
InitializeLandscape();
@@ -212,6 +226,7 @@ void InitializeGame()
InitializeDockGui();
InitializeTowns();
InitializeTrees();
InitializeSigns();
InitializeStations();
InitializeIndustries();
@@ -308,13 +323,13 @@ byte *GetName(int id, byte *buff)
}
static void InitializeCheats()
static void InitializeCheats(void)
{
memset(&_cheats, 0, sizeof(Cheats));
}
static void InitializeNameMgr()
static void InitializeNameMgr(void)
{
memset(_name_array, 0, sizeof(_name_array));
}
@@ -353,13 +368,6 @@ StringID RealAllocateName(const byte *name, byte skip, bool check_double)
return free_item | 0x7800 | (skip << 8);
}
const TileIndexDiff _tileoffs_by_dir[4] = {
TILE_XY(-1, 0),
TILE_XY(0, 1),
TILE_XY(1, 0),
TILE_XY(0, -1),
};
#define M(a,b) ((a<<5)|b)
static const uint16 _month_date_from_year_day[] = {
@@ -442,7 +450,7 @@ uint ConvertYMDToDay(uint year, uint month, uint day)
}
// convert a date on the form
// 1920 - 2090
// 1920 - 2090 (MAX_YEAR_END_REAL)
// 192001 - 209012
// 19200101 - 20901231
// or if > 2090 and below 65536, treat it as a daycount
@@ -451,7 +459,7 @@ uint ConvertIntDate(uint date)
{
uint year, month = 0, day = 1;
if (IS_INT_INSIDE(date, 1920, 2090 + 1)) {
if (IS_INT_INSIDE(date, 1920, MAX_YEAR_END_REAL + 1)) {
year = date - 1920;
} else if (IS_INT_INSIDE(date, 192001, 209012+1)) {
month = date % 100 - 1;
@@ -526,21 +534,21 @@ void InitializeLandscapeVariables(bool only_constants)
// distance in Manhattan metric
uint GetTileDist(TileIndex xy1, TileIndex xy2)
{
return myabs(GET_TILE_X(xy1) - GET_TILE_X(xy2)) +
myabs(GET_TILE_Y(xy1) - GET_TILE_Y(xy2));
return myabs(TileX(xy1) - TileX(xy2)) +
myabs(TileY(xy1) - TileY(xy2));
}
// maximum distance in x _or_ y
uint GetTileDist1D(TileIndex xy1, TileIndex xy2)
{
return max(myabs(GET_TILE_X(xy1) - GET_TILE_X(xy2)),
myabs(GET_TILE_Y(xy1) - GET_TILE_Y(xy2)));
return max(myabs(TileX(xy1) - TileX(xy2)),
myabs(TileY(xy1) - TileY(xy2)));
}
uint GetTileDist1Db(TileIndex xy1, TileIndex xy2)
{
int a = myabs(GET_TILE_X(xy1) - GET_TILE_X(xy2));
int b = myabs(GET_TILE_Y(xy1) - GET_TILE_Y(xy2));
int a = myabs(TileX(xy1) - TileX(xy2));
int b = myabs(TileY(xy1) - TileY(xy2));
if (a > b)
return a*2+b;
@@ -550,22 +558,22 @@ uint GetTileDist1Db(TileIndex xy1, TileIndex xy2)
uint GetTileDistAdv(TileIndex xy1, TileIndex xy2)
{
uint a = myabs(GET_TILE_X(xy1) - GET_TILE_X(xy2));
uint b = myabs(GET_TILE_Y(xy1) - GET_TILE_Y(xy2));
uint a = myabs(TileX(xy1) - TileX(xy2));
uint b = myabs(TileY(xy1) - TileY(xy2));
return a*a+b*b;
}
bool CheckDistanceFromEdge(TileIndex tile, uint distance)
{
return IS_INT_INSIDE(GET_TILE_X(tile), distance, TILE_X_MAX + 1 - distance) &&
IS_INT_INSIDE(GET_TILE_Y(tile), distance, TILE_Y_MAX + 1 - distance);
return IS_INT_INSIDE(TileX(tile), distance, MapSizeX() - distance) &&
IS_INT_INSIDE(TileY(tile), distance, MapSizeY() - distance);
}
void OnNewDay_Train(Vehicle *v);
void OnNewDay_RoadVeh(Vehicle *v);
void OnNewDay_Aircraft(Vehicle *v);
void OnNewDay_Ship(Vehicle *v);
void OnNewDay_EffectVehicle(Vehicle *v) { /* empty */ }
static void OnNewDay_EffectVehicle(Vehicle *v) { /* empty */ }
void OnNewDay_DisasterVehicle(Vehicle *v);
typedef void OnNewVehicleDayProc(Vehicle *v);
@@ -579,21 +587,21 @@ static OnNewVehicleDayProc * _on_new_vehicle_day_proc[] = {
OnNewDay_DisasterVehicle,
};
void EnginesDailyLoop();
void DisasterDailyLoop();
void PlayersMonthlyLoop();
void EnginesMonthlyLoop();
void TownsMonthlyLoop();
void IndustryMonthlyLoop();
void StationMonthlyLoop();
void EnginesDailyLoop(void);
void DisasterDailyLoop(void);
void PlayersMonthlyLoop(void);
void EnginesMonthlyLoop(void);
void TownsMonthlyLoop(void);
void IndustryMonthlyLoop(void);
void StationMonthlyLoop(void);
void PlayersYearlyLoop();
void TrainsYearlyLoop();
void RoadVehiclesYearlyLoop();
void AircraftYearlyLoop();
void ShipsYearlyLoop();
void PlayersYearlyLoop(void);
void TrainsYearlyLoop(void);
void RoadVehiclesYearlyLoop(void);
void AircraftYearlyLoop(void);
void ShipsYearlyLoop(void);
void WaypointsDailyLoop();
void WaypointsDailyLoop(void);
static const uint16 _autosave_months[] = {
@@ -604,9 +612,12 @@ static const uint16 _autosave_months[] = {
0x001, // every 12 months
};
void IncreaseDate()
void IncreaseDate(void)
{
int i,ctr,t;
const int vehicles_per_day = (1 << (sizeof(_date_fract) * 8)) / 885;
uint i;
VehicleID ctr;
int t;
YearMonthDay ymd;
if (_game_mode == GM_MENU) {
@@ -620,15 +631,15 @@ void IncreaseDate()
65536 / 885 = 74; 74x12 = 888. So max 888. Any vehicles above that were not _on_new_vehicle_day_proc'd
eg. aged.
So new code updates it for max vehicles.
(NUM_VEHICLES / maximum number of times ctr is incremented before reset ) + 1 (to get last vehicles too)
(_vehicles_size / maximum number of times ctr is incremented before reset ) + 1 (to get last vehicles too)
max size of _date_fract / 885 (added each tick) is number of times before ctr is reset.
Calculation might look complicated, but compiler just replaces it with 35, so that's ok
*/
ctr = _vehicle_id_ctr_day;
for(i=0; i!=(NUM_VEHICLES / ((1<<sizeof(_date_fract)*8) / 885)) + 1 && ctr != lengthof(_vehicles); i++) {
Vehicle *v = &_vehicles[ctr++];
if ((t=v->type) != 0)
for (i = 0; i != (_vehicles_size / vehicles_per_day) + 1 && ctr != _vehicles_size; i++) {
Vehicle *v = GetVehicle(ctr++);
if ((t = v->type) != 0)
_on_new_vehicle_day_proc[t - 0x10](v);
}
_vehicle_id_ctr_day = ctr;
@@ -636,7 +647,8 @@ void IncreaseDate()
/* increase day, and check if a new day is there? */
_tick_counter++;
if ( (_date_fract += 885) >= 885)
_date_fract += 885;
if (_date_fract >= 885)
return;
/* yeah, increse day counter and call various daily loops */
@@ -695,10 +707,13 @@ void IncreaseDate()
NetworkServerYearlyLoop();
#endif /* ENABLE_NETWORK */
/* check if we reached 2090, that's the maximum year. */
if (_cur_year == 171) {
/* check if we reached end of the game (31 dec 2050) */
if (_cur_year == _patches.ending_date - MAX_YEAR_BEGIN_REAL) {
ShowEndGameChart();
/* check if we reached 2090 (MAX_YEAR_END_REAL), that's the maximum year. */
} else if (_cur_year == (MAX_YEAR_END + 1)) {
Vehicle *v;
_cur_year = 170;
_cur_year = MAX_YEAR_END;
_date = 62093;
FOR_ALL_VEHICLES(v) {
v->date_of_last_service -= 365; // 1 year is 365 days long
@@ -713,10 +728,10 @@ void IncreaseDate()
int FindFirstBit(uint32 value)
{
// This is much faster then the one that was before here.
// This is much faster than the one that was before here.
// Created by Darkvater.. blame him if it is wrong ;)
// Btw, the macro FINDFIRSTBIT is better to use when your value is
// not more then 128.
// not more than 128.
byte i = 0;
if (value & 0xffff0000) { value >>= 16; i += 16; }
if (value & 0x0000ff00) { value >>= 8; i += 8; }
@@ -727,28 +742,7 @@ int FindFirstBit(uint32 value)
}
extern uint SafeTileAdd(uint tile, int add, const char *exp, const char *file, int line)
{
int x = GET_TILE_X(tile) + (signed char)(add & 0xFF);
int y = GET_TILE_Y(tile) + ((((0x8080 + add)>>8) & 0xFF) - 0x80);
if (x < 0 || y < 0 || x >= TILES_X || y >= TILES_Y) {
char buf[512];
sprintf(buf, "TILE_ADD(%s) when adding 0x%.4X and %d failed", exp, tile, add);
#if !defined(_DEBUG) || !defined(_MSC_VER)
printf("%s\n", buf);
#else
_assert(buf, (char*)file, line);
#endif
}
assert(TILE_XY(x,y) == TILE_MASK(tile + add));
return TILE_XY(x,y);
}
static void Save_NAME()
static void Save_NAME(void)
{
int i;
byte *b = _name_array[0];
@@ -761,7 +755,7 @@ static void Save_NAME()
}
}
static void Load_NAME()
static void Load_NAME(void)
{
int index;
@@ -786,7 +780,7 @@ static const byte _game_opt_desc[] = {
};
// Save load game options
static void SaveLoad_OPTS()
static void SaveLoad_OPTS(void)
{
SlObject(&_opt, _game_opt_desc);
}
@@ -814,7 +808,7 @@ static const SaveLoadGlobVarList _date_desc[] = {
// Save load date related variables as well as persistent tick counters
// XXX: currently some unrelated stuff is just put here
static void SaveLoad_DATE()
static void SaveLoad_DATE(void)
{
SlGlobList(_date_desc);
}
@@ -827,41 +821,53 @@ static const SaveLoadGlobVarList _view_desc[] = {
{NULL, 0, 0, 0}
};
static void SaveLoad_VIEW()
static void SaveLoad_VIEW(void)
{
SlGlobList(_view_desc);
}
static void SaveLoad_MAPT() {
static void SaveLoad_MAPT(void)
{
SlArray(_map_type_and_height, MapSize(), SLE_UINT8);
}
static void SaveLoad_MAP2() {
SlArray(_map2, MapSize(), SLE_UINT8);
static void SaveLoad_MAP2(void)
{
if (_sl.version < 5) {
/* In those versions the _map2 was 8 bits */
SlArray(_map2, MapSize(), SLE_FILE_U8 | SLE_VAR_U16);
} else {
SlArray(_map2, MapSize(), SLE_UINT16);
}
}
static void SaveLoad_M3LO() {
static void SaveLoad_M3LO(void)
{
SlArray(_map3_lo, MapSize(), SLE_UINT8);
}
static void SaveLoad_M3HI() {
static void SaveLoad_M3HI(void)
{
SlArray(_map3_hi, MapSize(), SLE_UINT8);
}
static void SaveLoad_MAPO() {
static void SaveLoad_MAPO(void)
{
SlArray(_map_owner, MapSize(), SLE_UINT8);
}
static void SaveLoad_MAP5() {
static void SaveLoad_MAP5(void)
{
SlArray(_map5, MapSize(), SLE_UINT8);
}
static void SaveLoad_MAPE() {
static void SaveLoad_MAPE(void)
{
SlArray(_map_extra_bits, MapSize() / 4, SLE_UINT8);
}
static void Save_CHTS()
static void Save_CHTS(void)
{
byte count = sizeof(_cheats)/sizeof(Cheat);
Cheat* cht = (Cheat*) &_cheats;
@@ -874,7 +880,7 @@ static void Save_CHTS()
}
}
static void Load_CHTS()
static void Load_CHTS(void)
{
Cheat* cht = (Cheat*) &_cheats;
+9 -123
View File
@@ -158,10 +158,8 @@ int32 CmdChangePresidentName(int x, int y, uint32 flags, uint32 p1, uint32 p2)
DeleteName(old_str);
if (p->name_1 == STR_SV_UNNAMED) {
byte *s = " Transport";
byte *d = (byte*)_decode_parameters, b;
d--; do d++; while (*d);
do *d++ = b = *s++; while(d != (byte*)endof(_decode_parameters) && b != 0);
ttd_strlcat(
(char*)_decode_parameters, " Transport", sizeof(_decode_parameters));
DoCommandByTile(0, p1, 0, DC_EXEC, CMD_CHANGE_COMPANY_NAME);
}
MarkWholeScreenDirty();
@@ -172,96 +170,13 @@ int32 CmdChangePresidentName(int x, int y, uint32 flags, uint32 p1, uint32 p2)
return 0;
}
static void UpdateSignVirtCoords(SignStruct *ss)
{
Point pt = RemapCoords(ss->x, ss->y, ss->z);
SetDParam(0, ss->str);
UpdateViewportSignPos(&ss->sign, pt.x, pt.y - 6, STR_2806);
}
void UpdateAllSignVirtCoords()
{
SignStruct *ss;
for(ss=_sign_list; ss != endof(_sign_list); ss++)
if (ss->str != 0)
UpdateSignVirtCoords(ss);
}
static void MarkSignDirty(SignStruct *ss)
{
MarkAllViewportsDirty(
ss->sign.left-6,
ss->sign.top-3,
ss->sign.left+ss->sign.width_1*4+12,
ss->sign.top + 45
);
}
int32 CmdPlaceSign(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
SignStruct *ss;
for(ss=_sign_list; ss != endof(_sign_list); ss++) {
if (ss->str == 0) {
if (flags & DC_EXEC) {
ss->str = STR_280A_SIGN;
ss->x = x;
ss->y = y;
ss->z = GetSlopeZ(x,y);
UpdateSignVirtCoords(ss);
MarkSignDirty(ss);
_new_sign_struct = ss;
}
return 0;
}
}
return_cmd_error(STR_2808_TOO_MANY_SIGNS);
}
// p1 = sign index
// p2: 1 -> remove sign
int32 CmdRenameSign(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
StringID str,old_str;
SignStruct *ss;
if (_decode_parameters[0] != 0 && !p2) {
str = AllocateNameUnique((byte*)_decode_parameters, 0);
if (str == 0)
return CMD_ERROR;
if (flags & DC_EXEC) {
ss = &_sign_list[p1];
MarkSignDirty(ss);
DeleteName(ss->str);
ss->str = str;
UpdateSignVirtCoords(ss);
MarkSignDirty(ss);
} else {
DeleteName(str);
}
} else {
if (flags & DC_EXEC) {
ss = &_sign_list[p1];
old_str = ss->str;
ss->str = 0;
DeleteName(old_str);
MarkSignDirty(ss);
}
}
return 0;
}
// p1 = 0 decrease pause counter
// p1 = 1 increase pause counter
int32 CmdPause(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
if (flags & DC_EXEC) {
_pause += p1?1:-1;
if(_pause==(byte)-1) _pause = 0;
_pause += (p1 == 1) ? 1 : -1;
if (_pause == (byte)-1) _pause = 0;
InvalidateWindow(WC_STATUS_BAR, 0);
InvalidateWindow(WC_MAIN_TOOLBAR, 0);
}
@@ -285,6 +200,11 @@ int32 CmdGiveMoney(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
SET_EXPENSES_TYPE(EXPENSES_OTHER);
p1 = clamp(p1, 0, 0xFFFFFF); // Clamp between 16 million and 0
if (p1 == 0)
return CMD_ERROR;
if (flags & DC_EXEC) {
// Add money to player
byte old_cp = _current_player;
@@ -313,37 +233,3 @@ int32 CmdChangeDifficultyLevel(int x, int y, uint32 flags, uint32 p1, uint32 p2)
}
return 0;
}
static const byte _sign_desc[] = {
SLE_VAR(SignStruct,str, SLE_UINT16),
SLE_VAR(SignStruct,x, SLE_INT16),
SLE_VAR(SignStruct,y, SLE_INT16),
SLE_VAR(SignStruct,z, SLE_UINT8),
SLE_END()
};
static void Save_SIGN()
{
SignStruct *s;
int i;
for(i=0,s=_sign_list; i!=lengthof(_sign_list); i++,s++) {
if (s->str != 0) {
SlSetArrayIndex(i);
SlObject(s, _sign_desc);
}
}
}
static void Load_SIGN()
{
int index;
while ((index = SlIterateArray()) != -1) {
SlObject(&_sign_list[index], _sign_desc);
}
}
const ChunkHandler _sign_chunk_handlers[] = {
{ 'SIGN', Save_SIGN, Load_SIGN, CH_ARRAY | CH_LAST},
};
+317 -169
View File
@@ -16,7 +16,6 @@
#include "hal.h" // for file list
bool _query_string_active;
void SetFiosType(const byte fiostype);
/* Now this is what I call dirty.. the edit-box needs to be rewritten! */
static bool _do_edit_on_text_even_when_no_change_to_edit_box;
@@ -58,8 +57,8 @@ static void LandInfoWndProc(Window *w, WindowEvent *e)
DrawStringCentered(140, 38, str, 0);
snprintf(_userstring, USERSTRING_LEN, "%.4X", lid->tile);
SetDParam(0, GET_TILE_X(lid->tile));
SetDParam(1, GET_TILE_Y(lid->tile));
SetDParam(0, TileX(lid->tile));
SetDParam(1, TileY(lid->tile));
SetDParam(2, STR_SPEC_USERSTRING);
DrawStringCentered(140, 49, STR_LANDINFO_COORDS, 0);
@@ -96,9 +95,9 @@ static void LandInfoWndProc(Window *w, WindowEvent *e)
}
static const Widget _land_info_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 279, 0, 13, STR_01A3_LAND_AREA_INFORMATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 14, 0, 279, 14, 92, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 279, 0, 13, STR_01A3_LAND_AREA_INFORMATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 279, 14, 92, 0x0, STR_NULL},
{ WIDGETS_END},
};
@@ -143,7 +142,7 @@ static void Place_LandInfo(uint tile)
GetTileDesc(tile, &lid.td);
#if defined(_DEBUG)
DEBUG(misc, 0) ("TILE: %#x (%i,%i)", tile, GET_TILE_X(tile), GET_TILE_Y(tile));
DEBUG(misc, 0) ("TILE: %#x (%i,%i)", tile, TileX(tile), TileY(tile));
DEBUG(misc, 0) ("TILE: %d ", tile);
DEBUG(misc, 0) ("_map_type_and_height=%#x", _map_type_and_height[tile]);
DEBUG(misc, 0) ("_map2=%#x", _map2[tile]);
@@ -154,7 +153,7 @@ static void Place_LandInfo(uint tile)
#endif
}
void PlaceLandBlockInfo()
void PlaceLandBlockInfo(void)
{
if (_cursor.sprite == 0x2CF) {
ResetObjectToPlace();
@@ -164,40 +163,106 @@ void PlaceLandBlockInfo()
}
}
static const char *credits[] = {
/*************************************************************************
* maximum length of string which fits in window -^*/
"Original design by Chris Sawyer",
"Original graphics by Simon Foster",
"",
"The OpenTTD team (in alphabetical order):",
" Bjarni Corfitzen (Bjarni) - MacOS port",
" Victor Fischer (Celestar) - Programming everywhere you need him to",
" Tamas Faragó (Darkvater) - Lead coder",
" Dominik Scherer (dominik81) - Lead coder",
" Kerekes Miham (MiHaMiX) - Translator system, and Nightlies host",
" Owen Rudge (orudge) - Forum- and masterserver host, OS/2 port",
" Christoph Mallon (Tron) - Programmer, code correctness police",
" Patric Stout (TrueLight) - Coder, network guru, SVN- and website host",
"",
"Retired Developers:",
" Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3)",
" Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3)",
"",
"Special thanks go out to:",
" Josef Drexler - For his great work on TTDPatch",
" Marcin Grzegorczyk - For his documentation of TTD internals",
" blathijs - For his many patches, suggestions and major work on maprewrite",
" pasky - Many patches, newgrf support",
" Stefan Meißner (sign_de) - For his work on the console",
" Cian Duffy (MYOB) - BeOS port / manual writing",
" Christian Rosentreter (tokaiz) - MorphOS / AmigaOS port",
"",
" Michael Blunck - Pre-Signals and Semaphores © 2003",
" George - Canal/Lock graphics © 2003-2004",
" Marcin Grzegorczyk - Foundations for Tracks on Slopes",
" All Translators - Who made OpenTTD a truly international game",
" Bug Reporters - Without whom OpenTTD would still be full of bugs!",
NULL,
"",
"",
"And last but not least:",
" Chris Sawyer - For an amazing game!"
};
static void AboutWindowProc(Window *w, WindowEvent *e)
{
switch(e->event) {
case WE_CREATE: /* Set up window counter and start position of scroller */
WP(w, scroller_d).counter = 0;
WP(w, scroller_d).height = w->height - 40;
break;
case WE_PAINT: {
int x,y;
const char *str;
char buffer[100];
uint i;
int y = WP(w, scroller_d).height;
DrawWindowWidgets(w);
x = 200;
y = 0;
DrawStringCentered(x, y += 17, STR_00B6_ORIGINAL_COPYRIGHT, 0);
DrawStringCentered(x, y += 10, STR_00B7_VERSION, 0);
DrawString(20, y += 20, STR_00B8_ORIGINAL_DESIGN_PROGRAM, 0);
DrawString(20, y += 10, STR_00B9_ORIGINAL_GRAPHICS, 0);
DrawString(20, y += 30, STR_SPECIAL_THANKS, 0);
// will probably be dynamic when stringhandling is finally reworked.
DrawString(20, y += 10, STR_SPECIAL_THANKS_SIGNALS, 0);
DrawString(20, y += 10, STR_SPECIAL_THANKS_CANALS, 0);
DrawString(20, y += 10, STR_SPECIAL_THANKS_FOUNDATIONS, 0);
DrawStringMultiCenter(x, w->height - 15, STR_00BA_COPYRIGHT_OPENTTD, 0x18E);
break;
// Show original copyright and revision version
DrawStringCentered(210, 17, STR_00B6_ORIGINAL_COPYRIGHT, 0);
DrawStringCentered(210, 17 + 10, STR_00B7_VERSION, 0);
// Show all scrolling credits
for (i = 0; i < lengthof(credits); i++) {
if (y >= 50 && y < (w->height - 40)) {
str = credits[i];
/* Hack-Alert: Translated by is a dynamic string as it changes
* with the language chosen. So the special value of NULL is used
* to identify this for the moment */
if (str == NULL) {
GetString(buffer, STR_TRANSLATED_BY);
str = buffer;
}
DoDrawString(str, 10, y, 0x10);
}
y += 10;
}
// If the last text has scrolled start anew from the start
if (y < 50) WP(w, scroller_d).height = w->height - 40;
DrawStringMultiCenter(210, w->height - 15, STR_00BA_COPYRIGHT_OPENTTD, 398);
} break;
case WE_MOUSELOOP: /* Timer to scroll the text and adjust the new top */
if (WP(w, scroller_d).counter++ % 3 == 0) {
WP(w, scroller_d).height--;
SetWindowDirty(w);
}
break;
}
}
static const Widget _about_widgets[] = {
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, 14, 11, 399, 0, 13, STR_015B_OPENTTD, STR_NULL},
{ WWT_PANEL, 14, 0, 399, 14, 271, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 419, 0, 13, STR_015B_OPENTTD, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 14, 0, 419, 14, 271, 0x0, STR_NULL},
{ WWT_FRAME, RESIZE_NONE, 14, 5, 414, 40, 245, STR_NULL, STR_NULL},
{ WIDGETS_END},
};
static const WindowDesc _about_desc = {
WDP_CENTER, WDP_CENTER, 400, 272,
WDP_CENTER, WDP_CENTER, 420, 272,
WC_GAME_OPTIONS,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_about_widgets,
@@ -205,7 +270,7 @@ static const WindowDesc _about_desc = {
};
void ShowAboutWindow()
void ShowAboutWindow(void)
{
DeleteWindowById(WC_GAME_OPTIONS, 0);
AllocateWindowDesc(&_about_desc);
@@ -306,22 +371,22 @@ static void BuildTreesWndProc(Window *w, WindowEvent *e)
}
static const Widget _build_trees_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 142, 0, 13, STR_2802_TREES, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 142, 14, 170, 0x0, STR_NULL},
{ WWT_PANEL, 14, 2, 35, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 37, 70, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 72, 105, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 107, 140, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 2, 35, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 37, 70, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 72, 105, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 107, 140, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 2, 35, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 37, 70, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 72, 105, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 107, 140, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_CLOSEBOX, 14, 2, 140, 157, 168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 142, 0, 13, STR_2802_TREES, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 142, 14, 170, 0x0, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 140, 157, 168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},
{ WIDGETS_END},
};
@@ -334,23 +399,23 @@ static const WindowDesc _build_trees_desc = {
};
static const Widget _build_trees_scen_widgets[] = {
{ WWT_CLOSEBOX, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 142, 0, 13, STR_2802_TREES, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 142, 14, 183, 0x0, STR_NULL},
{ WWT_PANEL, 14, 2, 35, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 37, 70, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 72, 105, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 107, 140, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 2, 35, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 37, 70, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 72, 105, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 107, 140, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 2, 35, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 37, 70, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 72, 105, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, 14, 107, 140, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_CLOSEBOX, 14, 2, 140, 157, 168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},
{ WWT_CLOSEBOX, 14, 2, 140, 170, 181, STR_028A_RANDOM_TREES, STR_028B_PLANT_TREES_RANDOMLY_OVER},
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 142, 0, 13, STR_2802_TREES, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 7, 0, 142, 14, 183, 0x0, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 16, 61, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 63, 108, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 2, 35, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 37, 70, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 72, 105, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_PANEL, RESIZE_NONE, 14, 107, 140, 110, 155, 0x0, STR_280D_SELECT_TREE_TYPE_TO_PLANT},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 140, 157, 168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 2, 140, 170, 181, STR_028A_RANDOM_TREES, STR_028B_PLANT_TREES_RANDOMLY_OVER},
{ WIDGETS_END},
};
@@ -363,12 +428,12 @@ static const WindowDesc _build_trees_scen_desc = {
};
void ShowBuildTreesToolbar()
void ShowBuildTreesToolbar(void)
{
AllocateWindowDesc(&_build_trees_desc);
}
void ShowBuildTreesScenToolbar()
void ShowBuildTreesScenToolbar(void)
{
AllocateWindowDescFront(&_build_trees_scen_desc, 0);
}
@@ -379,16 +444,16 @@ static uint _errmsg_duration;
static const Widget _errmsg_widgets[] = {
{ WWT_CLOSEBOX, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, 4, 11, 239, 0, 13, STR_00B2_MESSAGE, STR_NULL},
{ WWT_PANEL, 4, 0, 239, 14, 45, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, RESIZE_NONE, 4, 11, 239, 0, 13, STR_00B2_MESSAGE, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 4, 0, 239, 14, 45, 0x0, STR_NULL},
{ WIDGETS_END},
};
static const Widget _errmsg_face_widgets[] = {
{ WWT_CLOSEBOX, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, 4, 11, 333, 0, 13, STR_00B3_MESSAGE_FROM, STR_NULL},
{ WWT_PANEL, 4, 0, 333, 14, 136, 0x0, STR_NULL},
{ WWT_CLOSEBOX, RESIZE_NONE, 4, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, RESIZE_NONE, 4, 11, 333, 0, 13, STR_00B3_MESSAGE_FROM, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 4, 0, 333, 14, 136, 0x0, STR_NULL},
{ WIDGETS_END},
};
@@ -399,7 +464,7 @@ static void ErrmsgWndProc(Window *w, WindowEvent *e)
COPY_IN_DPARAM(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
DrawWindowWidgets(w);
COPY_IN_DPARAM(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
if (w->widget != _errmsg_face_widgets) {
if (!IsWindowOfPrototype(w, _errmsg_face_widgets)) {
DrawStringMultiCenter(
120,
(_errmsg_message_1 == INVALID_STRING_ID ? 25 : 15),
@@ -540,7 +605,7 @@ void ShowCostOrIncomeAnimation(int x, int y, int z, int32 cost)
}
static Widget _tooltips_widgets[] = {
{ WWT_PANEL, 14, 0, 199, 0, 31, 0x0, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 14, 0, 199, 0, 31, 0x0, STR_NULL},
{ WIDGETS_END},
};
@@ -648,7 +713,7 @@ void DrawStationCoverageAreaText(int sx, int sy, uint mask, int rad) {
int y = _thd.pos.y;
uint accepts[NUM_CARGO];
if (x != -1) {
GetAcceptanceAroundTiles(accepts, TILE_FROM_XY(x,y), _thd.new_size.x >> 4, _thd.new_size.y >> 4, rad);
GetAcceptanceAroundTiles(accepts, TILE_FROM_XY(x, y), _thd.size.x /16, _thd.size.y /16 , rad);
DrawStationCoverageText(accepts, sx, sy, mask);
}
}
@@ -692,6 +757,14 @@ void SetVScrollCount(Window *w, int num)
if (num < w->vscroll.pos) w->vscroll.pos = num;
}
void SetVScroll2Count(Window *w, int num)
{
w->vscroll2.count = num;
num -= w->vscroll2.cap;
if (num < 0) num = 0;
if (num < w->vscroll2.pos) w->vscroll2.pos = num;
}
void SetHScrollCount(Window *w, int num)
{
w->hscroll.count = num;
@@ -700,10 +773,25 @@ void SetHScrollCount(Window *w, int num)
if (num < w->hscroll.pos) w->hscroll.pos = num;
}
/* Get the count of characters in the string as well as the width in pixels
* [IN]buf: string to be checked
* [OUT]count: gets set to the count of characters
* [OUT]width: gets set to the pixels width */
static void GetCurrentStringSize(const byte *buf, int *count, int *width)
{
*count = 0;
*width = -1;
do {
if (*++buf == 0)
break;
(*count)++;
(*width) += _stringwidth_table[*buf - 32];
} while (1);
}
int HandleEditBoxKey(Window *w, int wid, WindowEvent *we)
{
byte *p;
int width,count;
int key = we->keypress.ascii;
@@ -713,16 +801,37 @@ int HandleEditBoxKey(Window *w, int wid, WindowEvent *we)
return 2;
} else if (we->keypress.keycode == WKC_RETURN) {
return 1;
#ifdef WIN32
} else if (we->keypress.keycode == (WKC_CTRL | 'V')) {
if (IsClipboardFormatAvailable(CF_TEXT)) {
const byte* data;
HGLOBAL cbuf;
OpenClipboard(NULL);
cbuf = GetClipboardData(CF_TEXT);
data = GlobalLock(cbuf); // clipboard data
GetCurrentStringSize(WP(w,querystr_d).buf - 1, &count, &width);
/* IS_INT_INSIDE = filter for ascii-function codes like BELL and so on [we need an special filter here later] */
for (; (IS_INT_INSIDE(*data, ' ', 256)) && // valid ASCII char
(count < WP(w,querystr_d).maxlen - 1 && // max charcount; always allow for terminating '\0'
width + _stringwidth_table[(int)(*data) - 32] <= WP(w,querystr_d).maxwidth); ++data) { // max screensize
// append data and update size parameters
WP(w,querystr_d).buf[count] = *data;
count++;
width += _stringwidth_table[*data - 32];
}
WP(w,querystr_d).buf[count + 1] = '\0';
GlobalUnlock(cbuf);
CloseClipboard();
InvalidateWidget(w, wid);
}
#endif
} else {
width = -1;
p = WP(w,querystr_d).buf - 1;
count = 0;
do {
if (*++p == 0)
break;
count++;
width += _stringwidth_table[*p - 32];
} while (1);
GetCurrentStringSize(WP(w,querystr_d).buf - 1, &count, &width);
if (we->keypress.keycode == WKC_BACKSPACE) {
if (count != 0) {
@@ -730,15 +839,13 @@ int HandleEditBoxKey(Window *w, int wid, WindowEvent *we)
InvalidateWidget(w, wid);
}
} else if (IS_INT_INSIDE((key = we->keypress.ascii), 32, 256)) {
if (count < WP(w,querystr_d).maxlen && width + _stringwidth_table[key-32] <= WP(w,querystr_d).maxwidth) {
if (count < WP(w,querystr_d).maxlen && width + _stringwidth_table[key - 32] <= WP(w,querystr_d).maxwidth) {
WP(w,querystr_d).buf[count] = key;
WP(w,querystr_d).buf[count+1] = 0;
WP(w,querystr_d).buf[count + 1] = '\0';
InvalidateWidget(w, wid);
}
} else {
// key wasn't caught
} else // key wasn't caught
we->keypress.cont = true;
}
}
return 0;
@@ -851,12 +958,12 @@ press_ok:;
}
static const Widget _query_string_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, 14, 11, 259, 0, 13, STR_012D, STR_NULL},
{ WWT_IMGBTN, 14, 0, 259, 14, 29, 0x0, STR_NULL},
{ WWT_TEXTBTN, 14, 0, 129, 30, 41, STR_012E_CANCEL, STR_NULL},
{ WWT_TEXTBTN, 14, 130, 259, 30, 41, STR_012F_OK, STR_NULL},
{ WWT_IMGBTN, 14, 2, 257, 16, 27, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_NULL},
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 259, 0, 13, STR_012D, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 259, 14, 29, 0x0, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 129, 30, 41, STR_012E_CANCEL, STR_NULL},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 130, 259, 30, 41, STR_012F_OK, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 14, 2, 257, 16, 27, 0x0, STR_NULL},
{ WIDGETS_END},
};
@@ -910,63 +1017,67 @@ void ShowQueryString(StringID str, StringID caption, int maxlen, int maxwidth, b
}
static const Widget _load_dialog_1_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_4001_LOAD_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 256, 48, 293, 0x0, STR_NULL},
{ WWT_6, 14, 2, 243, 50, 291, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
{ WWT_SCROLLBAR, 14, 246, 256, 48, 293, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 256, 0, 13, STR_4001_LOAD_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_IMGBTN, RESIZE_RIGHT, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_RB, 14, 0, 256, 48, 293, 0x0, STR_NULL},
{ WWT_6, RESIZE_RB, 14, 2, 243, 50, 291, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 245, 256, 48, 281, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 245, 256, 282, 293, 0x0, STR_RESIZE_BUTTON},
{ WIDGETS_END},
};
static const Widget _load_dialog_2_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_0298_LOAD_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 256, 48, 293, 0x0, STR_NULL},
{ WWT_6, 14, 2, 243, 50, 291, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
{ WWT_SCROLLBAR, 14, 246, 256, 48, 293, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 256, 0, 13, STR_0298_LOAD_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_IMGBTN, RESIZE_RIGHT, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_RB, 14, 0, 256, 48, 293, 0x0, STR_NULL},
{ WWT_6, RESIZE_RB, 14, 2, 243, 50, 291, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 245, 256, 48, 281, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 245, 256, 282, 293, 0x0, STR_RESIZE_BUTTON},
{ WIDGETS_END},
};
static const Widget _save_dialog_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_4000_SAVE_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 256, 48, 291, 0x0, STR_NULL},
{ WWT_6, 14, 2, 243, 50, 289, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
{ WWT_SCROLLBAR, 14, 246, 256, 48, 291, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_IMGBTN, 14, 0, 256, 292, 307, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 2, 254, 294, 305, 0x0, STR_400B_CURRENTLY_SELECTED_NAME},
{ WWT_PUSHTXTBTN, 14, 0, 127, 308, 319, STR_4003_DELETE, STR_400C_DELETE_THE_CURRENTLY_SELECTED},
{ WWT_PUSHTXTBTN, 14, 128, 256, 308, 319, STR_4002_SAVE, STR_400D_SAVE_THE_CURRENT_GAME_USING},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 256, 0, 13, STR_4000_SAVE_GAME, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_IMGBTN, RESIZE_RIGHT, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_RB, 14, 0, 256, 48, 291, 0x0, STR_NULL},
{ WWT_6, RESIZE_RB, 14, 2, 243, 50, 290, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 245, 256, 48, 291, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_IMGBTN, RESIZE_RTB, 14, 0, 256, 292, 307, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_RTB, 14, 2, 254, 294, 305, 0x0, STR_400B_CURRENTLY_SELECTED_NAME},
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 127, 308, 319, STR_4003_DELETE, STR_400C_DELETE_THE_CURRENTLY_SELECTED},
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 128, 244, 308, 319, STR_4002_SAVE, STR_400D_SAVE_THE_CURRENT_GAME_USING},
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 245, 256, 308, 319, 0x0, STR_RESIZE_BUTTON},
{ WIDGETS_END},
};
static const Widget _save_dialog_scen_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 256, 0, 13, STR_0299_SAVE_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_IMGBTN, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 256, 48, 291, 0x0, STR_NULL},
{ WWT_6, 14, 2, 243, 50, 289, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
{ WWT_SCROLLBAR, 14, 246, 256, 48, 291, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_IMGBTN, 14, 0, 256, 292, 307, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 2, 254, 294, 305, 0x0, STR_400B_CURRENTLY_SELECTED_NAME},
{ WWT_PUSHTXTBTN, 14, 0, 127, 308, 319, STR_4003_DELETE, STR_400C_DELETE_THE_CURRENTLY_SELECTED},
{ WWT_PUSHTXTBTN, 14, 128, 256, 308, 319, STR_4002_SAVE, STR_400D_SAVE_THE_CURRENT_GAME_USING},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 256, 0, 13, STR_0299_SAVE_SCENARIO, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_IMGBTN, RESIZE_RIGHT, 14, 0, 256, 26, 47, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_RB, 14, 0, 256, 48, 291, 0x0, STR_NULL},
{ WWT_6, RESIZE_RB, 14, 2, 243, 50, 290, 0x0, STR_400A_LIST_OF_DRIVES_DIRECTORIES},
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 245, 256, 48, 291, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_IMGBTN, RESIZE_RTB, 14, 0, 256, 292, 307, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_RTB, 14, 2, 254, 294, 305, 0x0, STR_400B_CURRENTLY_SELECTED_NAME},
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 127, 308, 319, STR_4003_DELETE, STR_400C_DELETE_THE_CURRENTLY_SELECTED},
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 128, 244, 308, 319, STR_4002_SAVE, STR_400D_SAVE_THE_CURRENT_GAME_USING},
{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 245, 256, 308, 319, 0x0, STR_RESIZE_BUTTON},
{ WIDGETS_END},
};
void BuildFileList()
void BuildFileList(void)
{
FiosFreeSavegameList();
if(_saveload_mode==SLD_NEW_GAME || _saveload_mode==SLD_LOAD_SCENARIO || _saveload_mode==SLD_SAVE_SCENARIO)
@@ -975,7 +1086,7 @@ void BuildFileList()
_fios_list = FiosGetSavegameList(&_fios_num, _saveload_mode);
}
static void DrawFiosTexts()
static void DrawFiosTexts(void)
{
const char *path;
StringID str;
@@ -993,7 +1104,7 @@ static void DrawFiosTexts()
#endif
static void MakeSortedSaveGameList()
static void MakeSortedSaveGameList(void)
{
/* Directories are always above the files (FIOS_TYPE_DIR)
* Drives (A:\ (windows only) are always under the files (FIOS_TYPE_DRIVE)
@@ -1014,7 +1125,7 @@ static void MakeSortedSaveGameList()
}
s_amount = _fios_num - sort_start - sort_end;
if ((bool)s_amount)
if (s_amount > 0)
qsort(_fios_list + sort_start, s_amount, sizeof(FiosItem), compare_FiosItems);
}
@@ -1034,10 +1145,10 @@ static void GenerateFileName(void)
GetString(_edit_str_buf, STR_4004);
}
extern void StartupEngines(void);
static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
{
const int list_start = 51;
switch(e->event) {
case WE_PAINT: {
int y,pos;
@@ -1052,17 +1163,17 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
MakeSortedSaveGameList();
}
GfxFillRect(3, list_start, 3+239, list_start+239, 0xD7);
DoDrawString(_savegame_sort_order & 1 ? "\xAA" : "\xA0", _savegame_sort_order <= 1 ? 248 : 118, 15, 0x10);
GfxFillRect(w->widget[6].left + 1, w->widget[6].top + 1, w->widget[6].right, w->widget[6].bottom, 0xD7);
DoDrawString(_savegame_sort_order & 1 ? "\xAA" : "\xA0", _savegame_sort_order <= 1 ? w->widget[3].right - 9 : w->widget[2].right - 9, 15, 0x10);
y = list_start;
y = w->widget[6].top + 1;
pos = w->vscroll.pos;
while (pos < _fios_num) {
item = _fios_list + pos;
DoDrawString(item->title[0] ? item->title : item->name, 4, y, _fios_colors[item->type] );
pos++;
y+=10;
if (y >= w->vscroll.cap*10+list_start)
if (y >= w->vscroll.cap*10+w->widget[6].top+1)
break;
}
@@ -1086,7 +1197,7 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
break;
case 6: { /* Click the listbox */
int y = (e->click.pt.y - list_start) / 10;
int y = (e->click.pt.y - w->widget[6].top - 1) / 10;
char *name;
const FiosItem *file;
@@ -1142,6 +1253,9 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
} else if (HASBIT(w->click_state, 11)) { /* Save button clicked */
_switch_mode = SM_SAVE;
FiosMakeSavegameName(_file_to_saveload.name, WP(w,querystr_d).buf);
/* In the editor set up the vehicle engines correctly (date might have changed) */
if (_game_mode == GM_EDITOR) StartupEngines();
}
break;
case WE_DESTROY:
@@ -1151,13 +1265,29 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
_query_string_active = false;
FiosFreeSavegameList();
break;
case WE_RESIZE: {
/* Widget 2 and 3 have to go with halve speed, make it so obiwan */
uint diff = e->sizing.diff.x / 2;
w->widget[2].right += diff;
w->widget[3].left += diff;
w->widget[3].right += e->sizing.diff.x;
/* Same for widget 10 and 11 in save-dialog */
if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
w->widget[10].right += diff;
w->widget[11].left += diff;
w->widget[11].right += e->sizing.diff.x;
}
w->vscroll.cap += e->sizing.diff.y / 10;
} break;
}
}
static const WindowDesc _load_dialog_desc = {
WDP_CENTER, WDP_CENTER, 257, 294,
WC_SAVELOAD,0,
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
_load_dialog_1_widgets,
SaveLoadDlgWndProc,
};
@@ -1165,7 +1295,7 @@ static const WindowDesc _load_dialog_desc = {
static const WindowDesc _load_dialog_scen_desc = {
WDP_CENTER, WDP_CENTER, 257, 294,
WC_SAVELOAD,0,
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
_load_dialog_2_widgets,
SaveLoadDlgWndProc,
};
@@ -1173,7 +1303,7 @@ static const WindowDesc _load_dialog_scen_desc = {
static const WindowDesc _save_dialog_desc = {
WDP_CENTER, WDP_CENTER, 257, 320,
WC_SAVELOAD,0,
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
_save_dialog_widgets,
SaveLoadDlgWndProc,
};
@@ -1181,7 +1311,7 @@ static const WindowDesc _save_dialog_desc = {
static const WindowDesc _save_dialog_scen_desc = {
WDP_CENTER, WDP_CENTER, 257, 320,
WC_SAVELOAD,0,
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
_save_dialog_scen_widgets,
SaveLoadDlgWndProc,
};
@@ -1205,6 +1335,9 @@ void ShowSaveLoadDialog(int mode)
w = AllocateWindowDesc(_saveload_dialogs[mode]);
w->vscroll.cap = 24;
w->resize.step_width = 2;
w->resize.step_height = 10;
w->resize.height = w->height - 14 * 10; // Minimum of 10 items
w->click_state |= (1 << 6);
WP(w,querystr_d).caret = 0;
WP(w,querystr_d).maxlen = MAX_QUERYSTR_LEN;
@@ -1226,19 +1359,21 @@ void ShowSaveLoadDialog(int mode)
ResetObjectToPlace();
}
void RedrawAutosave()
void RedrawAutosave(void)
{
SetWindowDirty(FindWindowById(WC_STATUS_BAR, 0));
}
static const Widget _select_scenario_widgets[] = {
{ WWT_TEXTBTN, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 7, 11, 256, 0, 13, STR_400E_SELECT_NEW_GAME_TYPE, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 7, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 7, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_IMGBTN, 7, 0, 245, 26, 319, 0x0, STR_NULL},
{ WWT_6, 7, 2, 243, 28, 317, 0x0, STR_400F_SELECT_SCENARIO_GREEN_PRE},
{ WWT_SCROLLBAR, 7, 246, 256, 26, 319, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_TEXTBTN, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_RIGHT, 7, 11, 256, 0, 13, STR_400E_SELECT_NEW_GAME_TYPE, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, RESIZE_RIGHT, 7, 0, 256, 14, 25, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 7, 0, 127, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, RESIZE_NONE, 7, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
{ WWT_IMGBTN, RESIZE_RB, 7, 0, 244, 26, 319, 0x0, STR_NULL},
{ WWT_6, RESIZE_RB, 7, 2, 243, 28, 317, 0x0, STR_400F_SELECT_SCENARIO_GREEN_PRE},
{ WWT_SCROLLBAR, RESIZE_LRB, 7, 245, 256, 26, 307, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_RESIZEBOX, RESIZE_LRTB, 7, 245, 256, 308, 319, 0x0, STR_RESIZE_BUTTON},
{ WIDGETS_END},
};
@@ -1258,7 +1393,7 @@ static void SelectScenarioWndProc(Window *w, WindowEvent *e) {
SetVScrollCount(w, _fios_num);
DrawWindowWidgets(w);
DoDrawString(_savegame_sort_order & 1 ? "\xAA" : "\xA0", _savegame_sort_order <= 1 ? 248 : 118, 15, 0x10);
DoDrawString(_savegame_sort_order & 1 ? "\xAA" : "\xA0", _savegame_sort_order <= 1 ? w->widget[4].right - 9 : w->widget[3].right - 9, 15, 0x10);
DrawString(4, 32, STR_4010_GENERATE_RANDOM_NEW_GAME, 9);
y = list_start;
@@ -1276,19 +1411,19 @@ static void SelectScenarioWndProc(Window *w, WindowEvent *e) {
case WE_CLICK:
switch(e->click.widget) {
case 2: /* Sort scenario names by name */
case 3: /* Sort scenario names by name */
_savegame_sort_order = (_savegame_sort_order == 2) ? 3 : 2;
_savegame_sort_dirty = true;
SetWindowDirty(w);
break;
case 3: /* Sort scenario names by date */
case 4: /* Sort scenario names by date */
_savegame_sort_order = (_savegame_sort_order == 0) ? 1 : 0;
_savegame_sort_dirty = true;
SetWindowDirty(w);
break;
case 5: /* Click the listbox */
case 6: /* Click the listbox */
if(e->click.pt.y < list_start)
DoCommandP(0, Random(), InteractiveRandom(), NULL, CMD_GEN_RANDOM_NEW_GAME);
else {
@@ -1312,6 +1447,16 @@ static void SelectScenarioWndProc(Window *w, WindowEvent *e) {
}
case WE_DESTROY:
break;
case WE_RESIZE: {
/* Widget 3 and 4 have to go with halve speed, make it so obiwan */
uint diff = e->sizing.diff.x / 2;
w->widget[3].right += diff;
w->widget[4].left += diff;
w->widget[4].right += e->sizing.diff.x;
w->vscroll.cap += e->sizing.diff.y / 10;
} break;
}
}
@@ -1332,12 +1477,12 @@ void SetFiosType(const byte fiostype)
static const WindowDesc _select_scenario_desc = {
WDP_CENTER, WDP_CENTER, 257, 320,
WC_SAVELOAD,0,
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
_select_scenario_widgets,
SelectScenarioWndProc
};
void AskForNewGameToStart()
void AskForNewGameToStart(void)
{
Window *w;
@@ -1349,6 +1494,9 @@ void AskForNewGameToStart()
w = AllocateWindowDesc(&_select_scenario_desc);
w->vscroll.cap = 27;
w->resize.step_width = 2;
w->resize.step_height = 10;
w->resize.height = w->height - 10 * 17; // Minimum of 10 in the list
}
static int32 ClickMoneyCheat(int32 p1, int32 p2)
@@ -1373,7 +1521,7 @@ static int32 ClickChangePlayerCheat(int32 p1, int32 p2)
}
// p1 -1 or +1 (down/up)
int32 ClickChangeClimateCheat(int32 p1, int32 p2)
static int32 ClickChangeClimateCheat(int32 p1, int32 p2)
{
if(p1==-1) p1 = 3;
if(p1==4) p1 = 0;
@@ -1383,10 +1531,10 @@ int32 ClickChangeClimateCheat(int32 p1, int32 p2)
return _opt.landscape;
}
extern void EnginesMonthlyLoop();
extern void EnginesMonthlyLoop(void);
// p2 1 (increase) or -1 (decrease)
int32 ClickChangeDateCheat(int32 p1, int32 p2)
static int32 ClickChangeDateCheat(int32 p1, int32 p2)
{
YearMonthDay ymd;
ConvertDayToYMD(&ymd, _date);
@@ -1472,10 +1620,10 @@ static const CheatEntry _cheats_ui[] = {
static const Widget _cheat_widgets[] = {
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 399, 0, 13, STR_CHEATS, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 14, 0, 399, 14, 147, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 399, 14, 147, 0x0, STR_CHEATS_TIP},
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 399, 0, 13, STR_CHEATS, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, RESIZE_NONE, 14, 0, 399, 14, 147, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 399, 14, 147, 0x0, STR_CHEATS_TIP},
{ WIDGETS_END},
};
@@ -1618,7 +1766,7 @@ static const WindowDesc _cheats_desc = {
};
void ShowCheatWindow()
void ShowCheatWindow(void)
{
Window *w;
+42 -42
View File
@@ -62,7 +62,7 @@ static const int midi_idx[] = {
};
static void SkipToPrevSong()
static void SkipToPrevSong(void)
{
byte *b = _cur_playlist;
byte *p = b;
@@ -86,7 +86,7 @@ static void SkipToPrevSong()
_song_is_active = false;
}
static void SkipToNextSong()
static void SkipToNextSong(void)
{
byte *b = _cur_playlist, t;
@@ -106,7 +106,7 @@ static void MusicVolumeChanged(byte new_vol)
_music_driver->set_volume(new_vol);
}
static void DoPlaySong()
static void DoPlaySong(void)
{
char filename[256];
snprintf(filename, sizeof(filename), "%sgm_tt%.2d.gm",
@@ -114,12 +114,12 @@ static void DoPlaySong()
_music_driver->play_song(filename);
}
static void DoStopMusic()
static void DoStopMusic(void)
{
_music_driver->stop_song();
}
static void SelectSongToPlay()
static void SelectSongToPlay(void)
{
int i;
@@ -142,7 +142,7 @@ static void SelectSongToPlay()
}
}
static void StopMusic()
static void StopMusic(void)
{
_music_wnd_cursong = 0;
DoStopMusic();
@@ -150,7 +150,7 @@ static void StopMusic()
InvalidateWindowWidget(WC_MUSIC_WINDOW, 0, 9);
}
static void PlayPlaylistSong()
static void PlayPlaylistSong(void)
{
if (_cur_playlist[0] == 0) {
SelectSongToPlay();
@@ -164,13 +164,13 @@ static void PlayPlaylistSong()
InvalidateWindowWidget(WC_MUSIC_WINDOW, 0, 9);
}
void ResetMusic()
void ResetMusic(void)
{
_music_wnd_cursong = 1;
DoPlaySong();
}
void MusicLoop()
void MusicLoop(void)
{
if (!msf.btn_down && _song_is_active) {
StopMusic();
@@ -275,19 +275,19 @@ static void MusicTrackSelectionWndProc(Window *w, WindowEvent *e)
}
static const Widget _music_track_selection_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5,STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 431, 0, 13, STR_01EB_MUSIC_PROGRAM_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 14, 0, 431, 14, 217, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 2, 181, 22, 215, 0x0, STR_01FA_CLICK_ON_MUSIC_TRACK_TO},
{ WWT_IMGBTN, 14, 250, 429, 22, 215, 0x0, STR_01F2_CURRENT_PROGRAM_OF_MUSIC},
{ WWT_PUSHIMGBTN, 14, 186, 245, 44, 51, 0x0, STR_01F3_SELECT_ALL_TRACKS_PROGRAM},
{ WWT_PUSHIMGBTN, 14, 186, 245, 52, 59, 0x0, STR_01F4_SELECT_OLD_STYLE_MUSIC},
{ WWT_PUSHIMGBTN, 14, 186, 245, 60, 67, 0x0, STR_01F5_SELECT_NEW_STYLE_MUSIC},
{ WWT_PUSHIMGBTN, 14, 186, 245, 68, 75, 0x0, STR_0330_SELECT_EZY_STREET_STYLE},
{ WWT_PUSHIMGBTN, 14, 186, 245, 76, 83, 0x0, STR_01F6_SELECT_CUSTOM_1_USER_DEFINED},
{ WWT_PUSHIMGBTN, 14, 186, 245, 84, 91, 0x0, STR_01F7_SELECT_CUSTOM_2_USER_DEFINED},
{ WWT_PUSHIMGBTN, 14, 186, 245, 108, 115, 0x0, STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1},
{ WWT_PUSHIMGBTN, 14, 186, 245, 124, 131, 0x0, STR_01F9_SAVE_MUSIC_SETTINGS},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5,STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 431, 0, 13, STR_01EB_MUSIC_PROGRAM_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 431, 14, 217, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 14, 2, 181, 22, 215, 0x0, STR_01FA_CLICK_ON_MUSIC_TRACK_TO},
{ WWT_IMGBTN, RESIZE_NONE, 14, 250, 429, 22, 215, 0x0, STR_01F2_CURRENT_PROGRAM_OF_MUSIC},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 44, 51, 0x0, STR_01F3_SELECT_ALL_TRACKS_PROGRAM},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 52, 59, 0x0, STR_01F4_SELECT_OLD_STYLE_MUSIC},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 60, 67, 0x0, STR_01F5_SELECT_NEW_STYLE_MUSIC},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 68, 75, 0x0, STR_0330_SELECT_EZY_STREET_STYLE},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 76, 83, 0x0, STR_01F6_SELECT_CUSTOM_1_USER_DEFINED},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 84, 91, 0x0, STR_01F7_SELECT_CUSTOM_2_USER_DEFINED},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 108, 115, 0x0, STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 186, 245, 124, 131, 0x0, STR_01F9_SAVE_MUSIC_SETTINGS},
{ WIDGETS_END},
};
@@ -299,7 +299,7 @@ static const WindowDesc _music_track_selection_desc = {
MusicTrackSelectionWndProc
};
static void ShowMusicTrackSelection()
static void ShowMusicTrackSelection(void)
{
AllocateWindowDescFront(&_music_track_selection_desc, 0);
}
@@ -446,24 +446,24 @@ static void MusicWindowWndProc(Window *w, WindowEvent *e)
}
static const Widget _music_window_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 299, 0, 13, STR_01D2_JAZZ_JUKEBOX, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHIMGBTN, 14, 0, 21, 14, 35, 0x2C5, STR_01DE_SKIP_TO_PREVIOUS_TRACK},
{ WWT_PUSHIMGBTN, 14, 22, 43, 14, 35, 0x2C6, STR_01DF_SKIP_TO_NEXT_TRACK_IN_SELECTION},
{ WWT_PUSHIMGBTN, 14, 44, 65, 14, 35, 0x2C7, STR_01E0_STOP_PLAYING_MUSIC},
{ WWT_PUSHIMGBTN, 14, 66, 87, 14, 35, 0x2C8, STR_01E1_START_PLAYING_MUSIC},
{ WWT_IMGBTN, 14, 88, 299, 14, 35, 0x0, STR_01E2_DRAG_SLIDERS_TO_SET_MUSIC},
{ WWT_IMGBTN, 14, 186, 201, 15, 34, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 299, 36, 57, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 59, 240, 45, 53, 0x0, STR_NULL},
{ WWT_PUSHIMGBTN, 14, 6, 55, 42, 49, 0x0, STR_01FB_TOGGLE_PROGRAM_SHUFFLE},
{ WWT_PUSHIMGBTN, 14, 244, 293, 42, 49, 0x0, STR_01FC_SHOW_MUSIC_TRACK_SELECTION},
{ WWT_PUSHIMGBTN, 14, 0, 49, 58, 65, 0x0, STR_01F3_SELECT_ALL_TRACKS_PROGRAM},
{ WWT_PUSHIMGBTN, 14, 50, 99, 58, 65, 0x0, STR_01F4_SELECT_OLD_STYLE_MUSIC},
{ WWT_PUSHIMGBTN, 14, 100, 149, 58, 65, 0x0, STR_01F5_SELECT_NEW_STYLE_MUSIC},
{ WWT_PUSHIMGBTN, 14, 150, 199, 58, 65, 0x0, STR_0330_SELECT_EZY_STREET_STYLE},
{ WWT_PUSHIMGBTN, 14, 200, 249, 58, 65, 0x0, STR_01F6_SELECT_CUSTOM_1_USER_DEFINED},
{ WWT_PUSHIMGBTN, 14, 250, 299, 58, 65, 0x0, STR_01F7_SELECT_CUSTOM_2_USER_DEFINED},
{ WWT_TEXTBTN, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 299, 0, 13, STR_01D2_JAZZ_JUKEBOX, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 0, 21, 14, 35, 0x2C5, STR_01DE_SKIP_TO_PREVIOUS_TRACK},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 22, 43, 14, 35, 0x2C6, STR_01DF_SKIP_TO_NEXT_TRACK_IN_SELECTION},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 44, 65, 14, 35, 0x2C7, STR_01E0_STOP_PLAYING_MUSIC},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 66, 87, 14, 35, 0x2C8, STR_01E1_START_PLAYING_MUSIC},
{ WWT_IMGBTN, RESIZE_NONE, 14, 88, 299, 14, 35, 0x0, STR_01E2_DRAG_SLIDERS_TO_SET_MUSIC},
{ WWT_IMGBTN, RESIZE_NONE, 14, 186, 201, 15, 34, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 299, 36, 57, 0x0, STR_NULL},
{ WWT_IMGBTN, RESIZE_NONE, 14, 59, 240, 45, 53, 0x0, STR_NULL},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 6, 55, 42, 49, 0x0, STR_01FB_TOGGLE_PROGRAM_SHUFFLE},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 244, 293, 42, 49, 0x0, STR_01FC_SHOW_MUSIC_TRACK_SELECTION},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 0, 49, 58, 65, 0x0, STR_01F3_SELECT_ALL_TRACKS_PROGRAM},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 50, 99, 58, 65, 0x0, STR_01F4_SELECT_OLD_STYLE_MUSIC},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 100, 149, 58, 65, 0x0, STR_01F5_SELECT_NEW_STYLE_MUSIC},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 150, 199, 58, 65, 0x0, STR_0330_SELECT_EZY_STREET_STYLE},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 200, 249, 58, 65, 0x0, STR_01F6_SELECT_CUSTOM_1_USER_DEFINED},
{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 250, 299, 58, 65, 0x0, STR_01F7_SELECT_CUSTOM_2_USER_DEFINED},
{ WIDGETS_END},
};
@@ -475,7 +475,7 @@ static const WindowDesc _music_window_desc = {
MusicWindowWndProc
};
void ShowMusicWindow()
void ShowMusicWindow(void)
{
AllocateWindowDescFront(&_music_window_desc, 0);
}
+344 -2112
View File
File diff suppressed because it is too large Load Diff
+57 -19
View File
@@ -41,9 +41,9 @@ static byte _network_clients_connected = 0;
static uint16 _network_client_index = NETWORK_SERVER_INDEX + 1;
/* Some externs / forwards */
extern void ShowJoinStatusWindow();
extern void StateGameLoop();
extern uint GetCurrentCurrencyRate();
extern void ShowJoinStatusWindow(void);
extern void StateGameLoop(void);
extern uint GetCurrentCurrencyRate(void);
// Function that looks up the CI for a given client-index
NetworkClientInfo *NetworkFindClientInfoFromIndex(uint16 client_index)
@@ -182,18 +182,20 @@ uint NetworkCalculateLag(const NetworkClientState *cs)
// There was a non-recoverable error, drop back to the main menu with a nice
// error
void NetworkError(StringID error_string)
static void NetworkError(StringID error_string)
{
_switch_mode = SM_MENU;
_switch_mode_errorstr = error_string;
}
void ClientStartError(char *error) {
static void ClientStartError(const char *error)
{
DEBUG(net, 0)("[NET] Client could not start network: %s",error);
NetworkError(STR_NETWORK_ERR_CLIENT_START);
}
void ServerStartError(char *error) {
static void ServerStartError(const char *error)
{
DEBUG(net, 0)("[NET] Server could not start network: %s",error);
NetworkError(STR_NETWORK_ERR_SERVER_START);
}
@@ -219,7 +221,8 @@ static void NetworkClientError(byte res, NetworkClientState *cs) {
default: errorno = NETWORK_ERROR_GENERAL;
}
// This means we fucked up and the server closed the connection
if (res != NETWORK_RECV_STATUS_SERVER_ERROR && res != NETWORK_RECV_STATUS_SERVER_FULL) {
if (res != NETWORK_RECV_STATUS_SERVER_ERROR && res != NETWORK_RECV_STATUS_SERVER_FULL &&
res != NETWORK_RECV_STATUS_SERVER_BANNED) {
SEND_COMMAND(PACKET_CLIENT_ERROR)(errorno);
// Dequeue all commands before closing the socket
@@ -481,7 +484,10 @@ void NetworkCloseClient(NetworkClientState *cs)
{
NetworkClientInfo *ci;
// Socket is already dead
if (cs->socket == INVALID_SOCKET) return;
if (cs->socket == INVALID_SOCKET) {
cs->quited = true;
return;
}
DEBUG(net, 1) ("[NET] Closed client connection");
@@ -508,6 +514,7 @@ void NetworkCloseClient(NetworkClientState *cs)
closesocket(cs->socket);
cs->writable = false;
cs->quited = true;
// Free all pending and partially received packets
while (cs->packet_queue != NULL) {
@@ -615,6 +622,8 @@ static void NetworkAcceptClients(void)
#else
LONG sin_len; // for some reason we need a 'LONG' under MorphOS
#endif
uint i;
bool banned;
// Should never ever happen.. is it possible??
assert(_listensocket != INVALID_SOCKET);
@@ -639,6 +648,33 @@ static void NetworkAcceptClients(void)
{int b = 1; setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (const char*)&b, sizeof(b));}
#endif
/* Check if the client is banned */
banned = false;
for (i = 0; i < lengthof(_network_ban_list); i++) {
if (_network_ban_list[i] == NULL)
continue;
if (sin.sin_addr.s_addr == inet_addr(_network_ban_list[i])) {
Packet *p = NetworkSend_Init(PACKET_SERVER_BANNED);
DEBUG(net, 1)("[NET] Banned ip tried to join (%s), refused", _network_ban_list[i]);
p->buffer[0] = p->size & 0xFF;
p->buffer[1] = p->size >> 8;
send(s, p->buffer, p->size, 0);
closesocket(s);
free(p);
banned = true;
break;
}
}
/* If this client is banned, continue with next client */
if (banned)
continue;
cs = NetworkAllocClient(s);
if (cs == NULL) {
// no more clients allowed?
@@ -842,17 +878,17 @@ void NetworkAddServer(const byte *b)
/* Generates the list of manually added hosts from NetworkGameList and
* dumps them into the array _network_host_list. This array is needed
* by the function that generates the config file. */
void NetworkRebuildHostList()
void NetworkRebuildHostList(void)
{
int i=0;
uint i = 0;
NetworkGameList *item = _network_game_list;
while (item != NULL && i!=lengthof(_network_host_list)) {
while (item != NULL && i != lengthof(_network_host_list)) {
if (item->manually)
_network_host_list[i++] = strdup(item->info.hostname);
_network_host_list[i++] = str_fmt("%s:%i", item->info.hostname, item->port);
item = item->next;
}
for (; i<lengthof(_network_host_list); i++) {
for (; i < lengthof(_network_host_list); i++) {
_network_host_list[i] = strdup("");
}
}
@@ -891,6 +927,8 @@ static void NetworkInitGameInfo(void)
NetworkClientInfo *ci;
ttd_strlcpy(_network_game_info.server_name, _network_server_name, sizeof(_network_game_info.server_name));
ttd_strlcpy(_network_game_info.server_password, _network_server_password, sizeof(_network_server_password));
ttd_strlcpy(_network_game_info.rcon_password, _network_rcon_password, sizeof(_network_rcon_password));
if (_network_game_info.server_name[0] == '\0')
snprintf(_network_game_info.server_name, sizeof(_network_game_info.server_name), "Unnamed Server");
@@ -906,8 +944,8 @@ static void NetworkInitGameInfo(void)
_network_game_info.spectators_on = 0;
_network_game_info.game_date = _date;
_network_game_info.start_date = ConvertIntDate(_patches.starting_date);
_network_game_info.map_width = TILES_X;
_network_game_info.map_height = TILES_Y;
_network_game_info.map_width = MapSizeX();
_network_game_info.map_height = MapSizeY();
_network_game_info.map_set = _opt.landscape;
if (_network_game_info.server_password[0] == '\0') {
@@ -1262,10 +1300,10 @@ void NetworkStartUp(void)
DEBUG(net, 3) ("[NET][Core] Starting network...");
#if defined(__MORPHOS__) || defined(__AMIGA__)
/*
/*
* IMPORTANT NOTE: SocketBase needs to be initialized before we use _any_
* network related function, else: crash.
*/
*/
{
DEBUG(misc,3) ("[NET][Core] Loading bsd socket library");
if (!(SocketBase = OpenLibrary("bsdsocket.library", 4))) {
@@ -1291,7 +1329,7 @@ void NetworkStartUp(void)
#endif // __AMIGA__
}
#endif // __MORPHOS__ / __AMIGA__
// Network is available
_network_available = true;
_network_dedicated = false;
@@ -1310,7 +1348,7 @@ void NetworkStartUp(void)
memset(&_network_game_info, 0, sizeof(_network_game_info));
/* XXX - Hard number here, because the strings can currently handle no more
then 10 clients -- TrueLight */
than 10 clients -- TrueLight */
_network_game_info.clients_max = 10;
// Let's load the network in windows

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