Compare commits

..

553 Commits

Author SHA1 Message Date
truelight f788b1aa28 (svn r1275) Tagged 0.3.5 2004-12-24 00:36:09 +00:00
bjarni 7e0f47ff15 (svn r1274) Makefile: networking is not longer experimental 2004-12-24 00:33:41 +00:00
miham 4972ba9a78 (svn r1273) Daily langfile updates (automatic) 2004-12-24 00:24:13 +00:00
truelight 4ec9356ba2 (svn r1272) -Fix: game compiles again with network disabled 2004-12-24 00:13:32 +00:00
darkvater de597eb7d2 (svn r1271) -Fix: set eol-style to native on missing files
-Added known_bugs file with open bugs on SF..should be included with installer
-Updated installer for 0.3.5
2004-12-24 00:00:10 +00:00
bjarni 7d18544b04 (svn r1270) Updated all languages so they are ready to be released
moved russian, turkish and latvian 'translations' to lang/unfinished so we do not release 'translations' with nearly no translated strings
2004-12-23 23:53:13 +00:00
truelight 3b60676e64 (svn r1269) - Updated changelog.txt and readme.txt for 0.3.5
- Marked docs/console.txt as out-dated
2004-12-23 23:32:07 +00:00
darkvater d7bc1d776c (svn r1268) -Fix: some warnings in gfx.c fixed
-Fix: Makefile now correctly works for cygwin/mingw; altough defining only cygwin does not compile the game
-Fix: moved SDL information message from severity 0 to 1. Only errors/severe warnings should be level 0
2004-12-23 23:15:07 +00:00
darkvater 1e8cfa10bf (svn r1267) -Fix: fix the wrong language file postfix strings...if you do such a change in english.txt, please also update the other language as well too! 2004-12-23 22:45:24 +00:00
darkvater b249954538 (svn r1266) -Fix: fix some cygwin/mingw warnings
-Note: when compiling with MinGW (-mno-cygwin) __MINGW32__ is defined; when compiling without it __CYGWIN32__ is defined. You need to set either -mno-cygwin (MinGW) or -mwin32 (Cygwin) to have WIN32 defined
2004-12-23 22:31:46 +00:00
truelight dda14faac5 (svn r1265) -Fix: the server can also no longer use the money cheat if the
advertise-mode is active
2004-12-23 21:58:01 +00:00
dominik 6788a614d1 (svn r1264) Fix: Default currency is GBP again and the currency identifier is displayed correctly in the config file 2004-12-23 20:42:24 +00:00
truelight 97ec7de9e6 (svn r1263) -Fix: [Network] Client-names are limited (serverside) to 25 chars
-Fix: You can enter some more chars in the chatbox
2004-12-23 20:33:57 +00:00
darkvater ffed7d6834 (svn r1262) -Fix: [1088996] kill some warnings for MinGW (luzi82) 2004-12-23 20:23:05 +00:00
bjarni c330e4203e (svn r1261) Removed the English strings from danish.txt 2004-12-23 19:50:01 +00:00
darkvater 0533d9ff6e (svn r1260) -Fix: [1090357] Patch for braindead MinGW compiler (luzi82) 2004-12-23 19:33:17 +00:00
truelight f5b68e2d9d (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine) 2004-12-23 19:23:56 +00:00
dominik 58c153b9ac (svn r1255) Renamed "postfix" to "suffix", for strings and variable names 2004-12-23 18:28:13 +00:00
dominik 60052ffb45 (svn r1254) - Fix: [ 993500 ] High bridge rendering error
- Changed button to open landscaping toolbar
2004-12-23 18:14:12 +00:00
truelight 1558948b9b (svn r1253) -Update: updated the multiplayer doc a bit.
Via this commit I wanted to thank everyone who helped with this new 
 network, with some people by name: Bjarni, for Endian support, 
 Hackykid, for Masterserver and ingame server-list, Geniusdex, for 
 suggestions and bug reporting, Darkvater, for the Windows testing, 
 Tron, for his comments and suggestions for the network, sign_de, for his 
 general help around the network, orudge, for his kind offer to host 
 our masterserver, dominik, for the network GUI, and all the others I 
 did not mention or forgot. Thank you all :)
2004-12-23 17:59:37 +00:00
truelight c9645885d0 (svn r1252) -Add: [Network] With 'set restart_game_date' you can set the date for in
which year the server must restart hisself. (0 = disabled, default value)
2004-12-23 17:37:26 +00:00
truelight 3672ae1118 (svn r1251) -Fix: [Console] The alias 'clean_company' is now working correctly 2004-12-23 17:12:30 +00:00
truelight c48ba54a09 (svn r1250) -Fix: a dedicated server could not kick user number 1 2004-12-23 15:33:47 +00:00
truelight 3f87f29a81 (svn r1249) -Fix: new files in the last commit had double content 2004-12-23 15:08:53 +00:00
truelight a9bb5be49d (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
Works fine, beside some minor stuff:
  - Network is not working yet
  - Keyboard is not working
  - No MIDI support
  - 'A few file selector bugs involving drives'
2004-12-23 14:46:16 +00:00
truelight d91326fb4a (svn r1247) -Fix: [ 1090313 ] Shares are now also sold when a company goes bankrupt 2004-12-23 14:02:40 +00:00
truelight a14a78de34 (svn r1246) -Fix: [ 1090099 ] Company-messages did crash the game, because
company-index was sent, which should have been the client-index
2004-12-23 13:53:05 +00:00
truelight 533e7a97ef (svn r1244) -Fix: no longer show the current password when 'set company_pw' is called
without parameters (technical not possible, sorry DV)
2004-12-23 13:03:48 +00:00
darkvater b4c80052fe (svn r1243) -Fix: Scenario road-building toolbar also stickified. Thx for the notice teeone 2004-12-23 11:36:22 +00:00
darkvater 79bbc37daa (svn r1242) -Fix: fix some morhpos warnings (tokai) 2004-12-23 11:31:06 +00:00
darkvater 3a98db672b (svn r1241) -To get empty password, '*' is not needed in the gui; forgot to remove it from the tooltip...it's late already. 2004-12-23 00:33:44 +00:00
darkvater 28c1dc3e39 (svn r1240) -Fix: OpenTTD once again compiles if ENABLE_NETWORK is disabled.
-Fix: removed some warnings
-Enabled ENABLE_NETWORK on windows again which I accidentally commented out.
2004-12-23 00:24:44 +00:00
darkvater c4836bbd70 (svn r1239) -Feature: Added gui option of setting company password. It can be found in the 'company information' window
-Spiced up 'set company_pw' a bit, where if no pw is typed, it shows the current one.
-Added a space between company name and player; looks better
2004-12-22 23:24:53 +00:00
bjarni 0e3399177e (svn r1238) Changelog update with the mac specific stuff since 0.3.4 2004-12-22 22:52:06 +00:00
darkvater 39727d6a81 (svn r1237) -Fix: Viewports crash when too many viewports are open. Their amount was not updated to reflect the updated windows amount (thx lefti) 2004-12-22 21:37:28 +00:00
bjarni fb345e983e (svn r1236) MorphOS: added make release like in OSX (tokai)
MorphOS: cleaned up the code telling the difference between AmigaOS and MorphOS (tokai)
2004-12-22 21:12:36 +00:00
miham 64e153fc34 (svn r1235) Daily langfile updates (automatic) 2004-12-22 21:09:45 +00:00
dominik e297eada07 (svn r1233) Fixed several currency issues. Now currencies should work correctly again. 2004-12-22 19:48:27 +00:00
tron 51cbbd0438 (svn r1232) Plug memory leak 2004-12-22 19:16:56 +00:00
truelight 51257991c0 (svn r1231) -Fix: missing header file for console_cmds.c 2004-12-22 19:16:10 +00:00
truelight d66adc937d (svn r1228) -Add: [Network] When a server normally shuts down, it removed itself
from the server-list
2004-12-22 18:56:52 +00:00
truelight 90b2b2144b (svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
-Fix: UDPListener was launched wrongly
-Fix: Not all sockets have broadcast enabled anymore
-Fix: Server-advertise retries 3 times before giving up
2004-12-22 18:42:56 +00:00
darkvater ed0a42f940 (svn r1225) -Feature: SHIFT+DEL now deletes all non-vital windows (only status bar and main bar remain)
-Fix: For everyone who tried to crash the game by opening a huge amount of windows and stickying all of them; bad luck. It's fixed now (thanks Tron for the helpful criticism). First all normal windows are a candidate for replacement, then if none are found, sticky windows. Then..well that should not happen :)
2004-12-22 17:37:21 +00:00
dominik b7f71b026d (svn r1222) Currency cleanup. Changed some currency symbols according to forum suggestions (thx ChrisCF) and rearranged the currencies alphabetically (except for the major ones). 2004-12-22 16:54:55 +00:00
darkvater 5c7decc27d (svn r1219) -Fix: compilation for windows release build (forgotten VARDEF) 2004-12-22 15:45:41 +00:00
dominik 68e1cdbdea (svn r1218) Fix: Autosaves go to the correct folder again with keep_all_autosave enabled 2004-12-22 15:32:50 +00:00
dominik 4f4fa940d8 (svn r1215) Feature: You can now make a custom currency by chosing "Custom..." 2004-12-22 13:19:26 +00:00
darkvater 46af99b8c0 (svn r1214) -Feature: Stickified Industries (list & window), Smallmaps (all three), Stations (list & window) and Towns (list & window). I hope I didn't forget to update a widget somewhere :O
-Feature: With the sticky windows on and some unfortunate resizing of your game it the 'close' button might go outside of the playing field, making it impossible to close. Added an option to the Options menu that closes all windows, even if they are stickified ("Close ALL windows")
2004-12-22 01:32:30 +00:00
darkvater f55303b0a8 (svn r1213) -Feature: Stickified vehicle lists 2004-12-22 00:45:05 +00:00
darkvater 222d6ca952 (svn r1212) -Feature: sticky windows all build-toolbars 2004-12-22 00:18:40 +00:00
darkvater 160a0a5ee1 (svn r1211) -Feature: Introduce sticky windows to all vehicle windows...Just make sure you do not sticky more than 23 at a time. Also a lot of places in the code invalidated the 'status bar' of the vehicle, referring to it as widget 4. This is now widget 5 and has been #definitized 2004-12-21 23:27:58 +00:00
miham 9a0c994fa8 (svn r1210) Daily langfile updates (automatic) 2004-12-21 22:53:55 +00:00
truelight 91d1805fb1 (svn r1209) -Fix: fix compiler warning (sorry) 2004-12-21 19:39:21 +00:00
truelight af4f4069ee (svn r1208) -Fix: the owner-check introduced in r1203 now also works correctly for
bridges (the middle-parts don't have any owner)
2004-12-21 19:37:10 +00:00
celestar d9199657c1 (svn r1207) -Fix: Compiler warning due to the modified catchment areas 2004-12-21 19:07:23 +00:00
dominik 8bf52f8c0f (svn r1206) Fix: Polished build docks window a bit. 2004-12-21 18:30:51 +00:00
dominik 1e1eac5f17 (svn r1205) Fix: Made the network window a bit wider, so that other languages don't have overlapping strings 2004-12-21 17:41:12 +00:00
truelight 19e3842615 (svn r1204) -Add: [Network] Added some cheaters-protection (money-cheat mostly) 2004-12-21 17:31:10 +00:00
truelight 8ab0190c29 (svn r1203) -Fix: the pathfinder no longer sees rail with an other owner as a
possible route. This also makes sure signals don't show red because 
there is a train on the track of an other owner.
2004-12-21 17:12:20 +00:00
truelight 07d0fd6719 (svn r1202) -Fix: removed unused variable 2004-12-21 16:56:43 +00:00
truelight 9044110096 (svn r1201) -Fix: I forgot to add a * in r1183 ;) 2004-12-21 16:54:46 +00:00
truelight d8709b18c6 (svn r1200) -Fix: Fixed bug pointed out by Tron: when a train is on the
road/rail-crossing, and you let an other train drive towards it, reverse 
it, the lights no longer go off.
2004-12-21 16:17:27 +00:00
truelight 8ee37e7b47 (svn r1199) -Fix: [ 958098 ] No longer road/rail crossing signals hang when a train
is reversed at the wrong moment (Yeah, our longest open bug finally 
fixed :) :) :))
2004-12-21 16:02:14 +00:00
truelight 24853eb42c (svn r1198) -Fix: [ 1087701 ] It is no longer possible to crash trains of other
companies by building a depot close to a station. (even more: trains do 
no longer enter tiles that do not belong to his owner)
2004-12-21 16:00:14 +00:00
truelight c136432978 (svn r1197) -Fix: [GUI] in r1194 someone deleted too much code from WE_KEYPRESS. Now
you can change your player-name in the GUI again :)
2004-12-21 14:54:27 +00:00
truelight 245bc59c68 (svn r1196) -Fix: Preview Vehicle had a small glitch. Fixed now. 2004-12-21 14:42:06 +00:00
miham 97865f03f6 (svn r1195) Daily langfile updates (automatic) 2004-12-21 14:35:19 +00:00
dominik 7cfaa8a418 (svn r1194) Feature: You can now add and remove servers from the server list. Those will be remembered until you delete them by pressing the Delete key. 2004-12-20 22:14:39 +00:00
tron 3bbea05a93 (svn r1189) Fix vehicle list update glitch when moving waggons in depots 2004-12-20 18:11:22 +00:00
truelight 3d0cd51f27 (svn r1188) -Fix: [Network] Fixed that CTRL+<key> could sometimes hang a dedicated
server till enter was pressed. CTRL+D after a random key still does hang 
the dedicated server till enter is pressed.
2004-12-20 16:35:16 +00:00
truelight 9b237345d1 (svn r1187) -Fix: [Network] You can no longer join as spectator a game with no
companies (a lot of code can simply not handle it)
2004-12-20 16:15:19 +00:00
truelight 5f25a0788a (svn r1186) -Fix: [Network] You can now join a company on a server where a company
went bankrupt, without joining the wrong company (or even failing to do so)
2004-12-20 16:02:01 +00:00
truelight 7460764d91 (svn r1185) -Fix: [Network] Send to team now results in correct company on the sender 2004-12-20 15:26:19 +00:00
truelight 36ce6a7e4f (svn r1184) -Fix: [Network] %p as chat message no longer gives funny result (tnx to
GeniusDex (that makes 10 ;)))
2004-12-20 15:25:39 +00:00
truelight 7e61a04785 (svn r1183) -Fix: Newsmessage-validation-pointer was never reset, causing some nasty
crashes (tnx to GeniusDex for the clear backtrace)
2004-12-20 14:38:28 +00:00
truelight 28d34b0f56 (svn r1182) -Fix: Makefile had a small glitch, making it impossible to compile the game (Oskar_) 2004-12-20 14:37:52 +00:00
miham 5caca8d64e (svn r1181) Daily langfile updates (automatic) 2004-12-20 12:38:33 +00:00
bjarni 123acd5a73 (svn r1180) Makefile: fixed dependancies so the flag -j can be used. It makes the compilation process into more than one job which makes it able to benefit from multiple CPUs. Using -j without setting a limit of jobs (like -j2) is not a great idea (thanks to ln-- for reporting the need for this one) 2004-12-19 23:27:20 +00:00
dominik 110b410af4 (svn r1179) Fix: Tooltips for vehicle list sorting
This has gotta be the greatest kick for Moriarty!
2004-12-19 22:23:32 +00:00
dominik 862370f232 (svn r1178) Fix: Error message for building canals on slopes is correct 2004-12-19 22:17:27 +00:00
tron 7182b2508d (svn r1177) Enable non-stop flag for waypoints 2004-12-19 21:03:16 +00:00
truelight 0807891501 (svn r1176) -Fix: [Network] PlayerBasedMenu's caused crashes when a company went bankrupt 2004-12-19 19:17:15 +00:00
truelight 60204bd309 (svn r1175) -Fix: [ 1086375 ] Backup-order-list was not closed with an OT_NOTHING,
resulting in order-lists mixing together (maybe tnx to Darkvater, not 
sure though..)
2004-12-19 16:26:45 +00:00
truelight db16262698 (svn r1174) -Fix: [Network] All strings can now be translated (no more hardcoded strings) 2004-12-19 15:14:55 +00:00
truelight 96c1e88d56 (svn r1173) -Fix: [Network] Console input in dedicated server for windows was not
working (Hackykid)
2004-12-19 14:42:17 +00:00
truelight 9bd54b592d (svn r1172) -Fix: [Network] Pressing CTRL+C in dedicated server now closed the server 2004-12-19 14:08:29 +00:00
dominik 8c6c4e5262 (svn r1171) Fix: Console hotkey works again on keyboards where this key is a deadkey. 2004-12-19 13:28:09 +00:00
dominik 18dd7ebae2 (svn r1170) Fix: news_gui.c should compile everywhere without warnings now. 2004-12-19 13:06:20 +00:00
truelight 4d94803d32 (svn r1169) -Fix: [Network] [ 1087591 ] When you want to be a spectator, you now
stay a spectator even if someone else joins.
2004-12-19 10:24:45 +00:00
truelight 0e19f74c16 (svn r1168) -Cleanup: [Network] Cleaned the network code a bit. Added 'const'
and 'void' where needed, prefixed all functions, typedefs and global 
vars with 'Network' and organized all externals nicely.
2004-12-19 10:17:26 +00:00
dominik bb5dca016d (svn r1167) Feature: Added the possibility to add validation functions to NewsItems. This is now done for "Train in depot" messages. Before displaying such a message, it checks if the train really still is in the depot. Can be applied to other news items as well. 2004-12-19 09:39:19 +00:00
dominik cf89cb12cd (svn r1166) Fix: [ 1040119 ] Flooded wagons in depots don't keep constantly exploding any more 2004-12-19 09:33:02 +00:00
dominik f18b913493 (svn r1165) Fix: [ 1085255 ] Docks now have a button to display the catchment area 2004-12-19 09:31:35 +00:00
dominik 61d744c38a (svn r1164) Redid fix from revision 1163 to work with all patch settings 2004-12-19 09:30:05 +00:00
dominik 453c85e61d (svn r1163) Fix: [ 1087403 ] Crashed trains aren't reported to have too few orders any more 2004-12-18 21:11:45 +00:00
dominik 853c11d301 (svn r1162) The server list can now be automatically filled from the config file. Add a section [servers] with the addresses each in a new line. Those will be checked upon OpenTTD startup. 2004-12-18 18:58:03 +00:00
tron b9779176d5 (svn r1161) Don't make redundant GetAirport() calls, use the cached value 2004-12-18 18:19:49 +00:00
truelight c7b5cc3787 (svn r1160) -Fix: redid revision 1159. pid_t should not be defined under windows. 2004-12-18 18:13:37 +00:00
darkvater 158a4d897b (svn r1159) -Fix: pid_t was unknown to windows; typedeffed to int. 2004-12-18 18:05:56 +00:00
tron 1fd06cf773 (svn r1158) Make network compile on SunOS 2004-12-18 17:31:02 +00:00
dominik 74a0d26d0e (svn r1157) Enhanced the config file (openttd.cfg) to use another section type. "List sections" as opposed to "variable sections" contain a list of values, separated by a new line. This is now used for the [newgrf] group. You have to edit each line in this section from e.g. "0 = firstset.grf" to only "firstset.grf". 2004-12-18 16:00:10 +00:00
truelight 17a613546c (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex) 2004-12-18 14:19:21 +00:00
truelight 3f2d2d8f37 (svn r1153) -Fix: FindCatchmentRadius is now a function that uses the enums instead
of magic numbers (tnx to Stumo)
2004-12-18 13:38:27 +00:00
truelight 88b94c3c67 (svn r1152) -Add: [Network] Added signal handling (GeniusDex) 2004-12-18 13:15:41 +00:00
tron 80a9fa962d (svn r1151) Fix last commit |: 2004-12-18 12:46:29 +00:00
tron a4e5ed68fd (svn r1150) Fixes:
- Don't crash when building or destroying airport without depots (bugs were latent before r1149)
- Delete all hangar windows when destroying an airport, not just the first one (before r1149 none where deleted)
2004-12-18 12:40:34 +00:00
tron 376c5adb7c (svn r1149) Fix hack which abuses first TileIndex of airport depot array as number of depots (similar change as in map branch) 2004-12-18 12:19:04 +00:00
dominik 64f98e058d (svn r1148) Fix: The console hotkey is finally working properly on all keyboards. It's the key on the top left corner 2004-12-17 23:32:54 +00:00
truelight 9d05289147 (svn r1146) -Fix: You can no longer change waypoints whom are owned by somebody else 2004-12-17 17:06:20 +00:00
tron ef89eb019a (svn r1145) Remove stray line which crept in in last commit 2004-12-17 09:02:41 +00:00
tron e75954a7ab (svn r1144) Don't rely on sizeof() to determine the map size, use MapSize() instead 2004-12-17 09:01:24 +00:00
miham 52685ad50c (svn r1143) Daily langfile updates (automatic) 2004-12-17 04:42:55 +00:00
truelight da24f97483 (svn r1137) -Fix: [Network] Replaces all strncpy with ttd_strlcpy.. windows really
does not like strncpy for some silly reason.
2004-12-16 15:51:18 +00:00
truelight f04d49ca17 (svn r1136) -Fix: [Network] Revision check on windows-servers is working now 2004-12-16 15:35:19 +00:00
truelight f6e23d726f (svn r1135) -Fix: added map.c/h to vc6 project file (bociusz) 2004-12-16 14:57:25 +00:00
truelight 5e28fb8f97 (svn r1131) -Add: [Network] Autoclean_companies (set it with 'set autoclean_companies on/off').
When enabled, empty companies (companies with no active clients) with no 
 password are declared bankrupt after 1 year of emptyness.
For empty companies with password, the password is removed after 3 years 
 of emptyness.
The delay of removing company/password can be configured via:
 - 'set autoclean_protected <months>'
 - 'set autoclean_unprotected <months>'
2004-12-16 13:59:23 +00:00
tron 89fd12692f (svn r1130) Add helper functions to query map size 2004-12-16 12:30:13 +00:00
truelight 74a149127d (svn r1129) -Add: [Network] Added 'reset_company <company-id>'. If a company is
empty (no clients logged on to it), a server can delete a company via 
this command in the console.
2004-12-16 11:36:57 +00:00
truelight dccd3adb9b (svn r1128) -Fix: [Network] Going bankrupt of human-players was corrupted in networkgames 2004-12-16 11:36:00 +00:00
truelight 523ba1ff50 (svn r1127) -Fix: [Network] Protect the network against an illegal PLAYER_CTRL (in
which a modified client could, for example, delete a random active company)
2004-12-16 11:35:08 +00:00
truelight 693d074d76 (svn r1126) -Fix: [Network] Pressing Disconnect on the GUI puts you back to the
main-menu (so you no longer stay ingame (if you were))
2004-12-16 11:12:59 +00:00
truelight c5770907ac (svn r1125) -Fix: [Network] You can now safely join a company again 2004-12-16 11:09:00 +00:00
truelight e5a2abb872 (svn r1124) -Fix: [Network] Also the server now has the option Give Money in
ClientList (tnx to teeone for reporting)
2004-12-16 11:04:43 +00:00
darkvater 83981e40b5 (svn r1121) -Feature: Added sticky windows feature. A small pin allows the user to set the window as undeletable and can only be closed by hand. As an example the viewport window has been stickied (thanks to Neko-San)
-To use the feature add WDF_STICKY_BUTTON to the widget description and update all widget-ID's since sticky button will be widget 2.
2004-12-15 23:33:04 +00:00
miham ec94450aef (svn r1119) Fixed url in manpage 2004-12-15 22:50:20 +00:00
matthijs 76363231be (svn r1118) * Added a minimal manpage with references to where to get real info
* Specified installation locations in the os/debian/rules script so it works now.
2004-12-15 22:46:53 +00:00
tron 765ecfed84 (svn r1117) Move map arrays and some related macros into their own files map.c and map.h 2004-12-15 22:18:54 +00:00
truelight 736718ef53 (svn r1116) -Add: [Console] With 'set server_advertise on/off' you can put server
advertise on/off via console (requested by imachine)
2004-12-15 22:06:47 +00:00
tron 15265ac40a (svn r1115) Put every source file on an extra line 2004-12-15 22:05:40 +00:00
miham 37192a99a6 (svn r1114) Daily langfile updates (automatic) 2004-12-15 21:54:13 +00:00
truelight 5f51b42c99 (svn r1113) -Add: [Network] Added the GUI part for server advertising. When you go
to Start Server, you can select by connection: 'Internet (advertise)'. 
When selected, the server will announce itself to the server-list at 
http://servers.openttd.org (when finished)
2004-12-15 21:54:07 +00:00
truelight 88862fcdb6 (svn r1112) -Fix: _decode_parameters was increased to [20], but not all temp-dparams were 2004-12-15 21:45:44 +00:00
darkvater 2d5a938621 (svn r1111) -Fix: Some language file fixes. Added a space in 'company information' and fixed most not-same-format as english.txt problems. Some are remaining because they need translations. 2004-12-15 21:45:05 +00:00
darkvater ce4bff7fa5 (svn r1110) -Fix: Empty console commands were executed and returned error message (sign_de for GeniusDex) 2004-12-15 21:30:20 +00:00
tron 39b3e71239 (svn r1109) Fix c&p bug: In vehicle lists a name was displayed for road vehicles even if they had none 2004-12-15 21:25:33 +00:00
truelight fa1f026367 (svn r1108) -Fix: [Network] Fixed problem around slow clients:
They joined, they got the map, but it took some time before the new 
player was created. In this time a player could do stuff, causing a 
player-id-mismatch, and the player was kicked out. Now a player get's a 
nice GUI which says: registering.. When that is gone, the player is 
joined and can play safely. Tnx to Moriarty for bugging me with this bug ;)
2004-12-15 21:13:52 +00:00
truelight 9595ee80e3 (svn r1107) -Fix: [Network] A spectator can no longer buy/sell shares of companies 2004-12-15 20:24:26 +00:00
truelight 015fb81810 (svn r1106) -Add: [Network] Added master-server protocol and advertise to
master-server option. No GUI yet, and disabled by default (it still is WIP)
2004-12-15 20:10:34 +00:00
darkvater d867a845fd (svn r1104) -Fix: nasty server crash buffer overflow problem when using release build. Big thanks to Truelight for the guidance in fixing this very annoying bug!
-VS.NET now treats warnings as errors too in the release build.
2004-12-15 20:08:01 +00:00
truelight d7d3ff4849 (svn r1102) -Fix: [Console] 'set server_pw' was acting crazy when you typed more
chars then it could take
2004-12-15 17:40:12 +00:00
truelight a4a3d829be (svn r1101) -Fix: [Console] Removed magic numbers 2004-12-15 17:31:18 +00:00
truelight b615e854e1 (svn r1100) -Fix: [Console] 'set company_pw' is now working again (Hackykid) 2004-12-15 17:24:10 +00:00
darkvater f1b6b1711b (svn r1098) -Fix: server without revision build doesn't care about the client's version. Also moved all revision things where it belongs (network.c) 2004-12-15 16:51:55 +00:00
truelight 29b844a408 (svn r1096) -Fix: [Network] PlayAs is now registered correctly
-Codewise: [Network] Cleaned some code, removed some comment, changed 
some wrong comment
2004-12-15 15:19:51 +00:00
darkvater c8ca2a8604 (svn r1095) -Fix: scenario editor road-build-gui works again altough shortcuts are screwed.
-Feature: Pressing enter on 'Abandon Game' returns to main menu (one less click \o/)
2004-12-15 11:42:05 +00:00
miham f3ca6a9180 (svn r1094) Daily langfile updates (automatic) 2004-12-15 10:56:33 +00:00
darkvater c58549d512 (svn r1093) -Fix: Hopefully fixed windows revision issues once and for all. Removed globalness of _openttd_revision and put all such ifdefs into one place. If server has a revision only the same revisions can join; if the server has no revision everyone can join. I reckon this should be a server-side option to allow people to join or not to join. 2004-12-15 00:31:08 +00:00
dominik 6cb53e7d34 (svn r1092) Fix: Autorail can be accessed with the 'a' hotkey again 2004-12-14 21:56:01 +00:00
dominik af9dc1f817 (svn r1091) Fix: Finally station names use 100% the correct color in transparent mode 2004-12-14 20:54:01 +00:00
truelight b6c74c1c20 (svn r1090) -Fix: Made the _openttd_revision variable global, and with that
hopefully killed the windows-revision problem. If WITH_REV is defined, 
for both Windows as *nix system _openttd_revision is filled with normal 
info, else _openttd_revision is set to 'norev000'
-Fix: Small possible server-crash
2004-12-14 20:27:00 +00:00
miham 52aeaebde0 (svn r1089) Daily langfile updates (automatic) 2004-12-14 20:21:52 +00:00
dominik 20f36f8c88 (svn r1088) Strings cleanup. Renamed some strings to reflect their content. 2004-12-14 19:47:35 +00:00
truelight 967762e5ef (svn r1086) -Fix: [Network] [ 1084774 ] Fixed quick-share-sell bug 2004-12-14 18:17:24 +00:00
truelight 55f3347514 (svn r1085) -Fix: [Network] [ 1084834 ] If IF_IN_NETWORK flag was on, an error
resulted in infinite money (or assert)
2004-12-14 18:13:02 +00:00
dominik 23612e41f2 (svn r1084) Generalized hotkey catching when textfield windows are open. Now only hotkeys attached to the main toolbar are working if you have a textfield open. 2004-12-14 17:38:48 +00:00
dominik a94da5937c (svn r1083) Fix: the console "script" command saves all output to the textfile, not only printf stuff (sign_de) 2004-12-14 17:06:54 +00:00
dominik 7196860373 (svn r1082) Feature: Chat toolbar
- to chat with all players press Return (or Shift-T) and type in the message
- Press Return again to send the message
2004-12-14 16:53:38 +00:00
miham 833ce98409 (svn r1081) Daily langfile updates (automatic) 2004-12-14 15:24:36 +00:00
tron 1fcf823d66 (svn r1080) Improve mini-map scrolling in a similar way as viewport scrolling (r1063): now the centre of the mini-map window is the region of interest instead some arbitrary coordinate. 2004-12-14 08:01:12 +00:00
darkvater 043b8bc5ad (svn r1079) -Fix: you can once again quit the game in windows by pressing ALT+F4 or the 'exit' button in the main menu. 2004-12-14 00:45:24 +00:00
bjarni 1b386f46b4 (svn r1078) md5.c vc6 + vs.net fix for release builds (sign_de) 2004-12-13 22:19:37 +00:00
dominik a9972399c5 (svn r1077) Implements scripts/autoexec.scr to get executed on game starting (sign_de)
- %! allows to merge alias parameters
- \% allows to use % in alias strings
- "alias" command now overwrites the old alias list entry
2004-12-13 22:13:02 +00:00
dominik 77e882c3bd (svn r1076) Feature: Patch setting to autosave the game on exit
If you set autosave_on_exit = true in openttd.cfg, your game will be saved as exit.sav in the autosave folder and you won't be asked if you want to quit the game any more.
2004-12-13 22:10:12 +00:00
miham 2b13b2d239 (svn r1075) Daily langfile updates (automatic) 2004-12-13 21:28:38 +00:00
dominik 27e008d3f7 (svn r1074) Fix: server_bind_ip was set to 255.255.255.255 by default
The correct default value is 0.0.0.0. If you are experiencing problems with connecting to your server you'll have to change the value of server_bind_ip to 0.0.0.0 in openttd.cfg
2004-12-13 21:23:28 +00:00
dominik 9aeb0e1d30 (svn r1073) - condebugger extended a bit [shows the commandline] (sign_de)
- fixed handling of aliases with parameters (sign_de)
2004-12-13 20:45:55 +00:00
dominik def5fc3ff7 (svn r1072) Fixed a few warnings that made trouble in VS .NET 2003 2004-12-13 20:12:45 +00:00
truelight db6a545203 (svn r1069) -Add: [Network] Added UDP-packet for detail info about a server for
upcoming server-listing
2004-12-13 19:55:31 +00:00
truelight cf205d059f (svn r1068) -Fix: [Console] Let the client remember his own name-change 2004-12-13 19:54:44 +00:00
truelight c185adf780 (svn r1067) -Add: [Console] Added comment for scripts (everything behind the # is
ignored) (GeniusDex / sign_de)
2004-12-13 19:07:54 +00:00
truelight 5b2cd5fae0 (svn r1066) -Fix: Crash when saving game as spectator (tnx to GeniusDex for reporting) 2004-12-13 18:53:59 +00:00
truelight 551d0622c5 (svn r1065) -Add: [Console] Alias support. Type 'list_aliases' to show them all (sign_de) 2004-12-13 18:51:08 +00:00
truelight 92b8ec9ff8 (svn r1064) -Fixed typo (tnx GeniusDex) 2004-12-13 18:34:31 +00:00
tron d1d33372ff (svn r1063) Improve scrolling limits a bit. You now can scroll further away from the map at the NW and NE edge.
Hopefully this new code is also a bit more comprehensible than the old. (;
2004-12-13 18:33:47 +00:00
truelight d6e4999f1f (svn r1062) -Fix: [Console] Compile warnigs in Get/SetPatchSettings 2004-12-13 18:32:49 +00:00
truelight 2e7f669153 (svn r1061) -Fix: [Network] Compiling without ENABLE_NETWORK now works again correctly 2004-12-13 17:58:53 +00:00
truelight 9ced62e239 (svn r1059) -Fix: [Console] Renamed 'set port' to 'set server_port'
-Add: [Network] Add ip-bind ('set server_bind_ip <ip>' in console or use 
scripts/pre_dedicated.scr)
2004-12-13 17:47:21 +00:00
truelight 382b924b41 (svn r1058) -Add: [Console] 3 aliases for newgame: new_game, newmap, new_map (this
annoyed me for some time now)
2004-12-13 17:07:32 +00:00
truelight b153236503 (svn r1057) -Add: [Network] 'set port <port>' changes the port of the server (after reboot)
-Fix: [Network] Fixed warnings that came with last revision
-Cleanup: [Network] Removed an unused var (_network_client_port)
2004-12-13 17:04:41 +00:00
truelight 549dafc241 (svn r1056) -Fix: [Network] Give the dedicated-server always a console in windows (sign_de) 2004-12-13 16:51:10 +00:00
truelight e7886b6a34 (svn r1055) -Add: [Console] Special for dedicated servers:
- You can change patch settings via 'set patch <patch_name> [<value>]'
2004-12-13 16:16:28 +00:00
truelight 25dfbc3134 (svn r1054) -Fix: [Network] Redid revision 1024, only a bit more nice this time
(revision length is back to 10, and checking is now done correctly)
2004-12-13 16:15:21 +00:00
truelight bff8c0af61 (svn r1053) -Change: [Console] Changed 'setservername', 'setpassword', 'protect' and 'name' in:
- set server_pw "password"
 - set server_name "servername"
 - set company_pw "password"
 - set name "playername"
(patch by sign_de)
2004-12-13 15:07:33 +00:00
truelight 1c4c5ae370 (svn r1052) -Fix: [Network] You can't join a server when revision mismatches. 2004-12-13 14:57:58 +00:00
truelight c0247e66e8 (svn r1051) -Fix: [Network] New Company button is disabled when there is no more
space for a new company
2004-12-13 14:49:31 +00:00
truelight 4d7c2e9d90 (svn r1050) -Fix: [Network] Scripts are no longer under revision control
-Add: [Network] Moved original scripts to be example scripts
2004-12-13 14:43:41 +00:00
truelight f80094deb7 (svn r1045) -Fix: OpenTTD compiles again under VC6 (sign_de) 2004-12-13 11:17:59 +00:00
truelight c0603e4768 (svn r1042) -Fix: [Network] Hopefully enabled revision-check for windows (somehow
windows uses WITH_REV_HACK instead of WITH_REV :s)
2004-12-13 09:01:24 +00:00
tron 523b37a3e9 (svn r1041) Under certain circumstances obsolete fields are included in the size calculation of a chunk in a savegame which leads to failed loads. This wasn't triggered because the necessary conditions weren't met. 2004-12-13 07:41:04 +00:00
dominik 2690ba03b2 (svn r1040) Fix: All character hotkeys are disabled now when a window for typing is open 2004-12-12 22:05:08 +00:00
bjarni 9e3ca26ae6 (svn r1039) Makefile: now RELEASE flag can contain () too 2004-12-12 21:18:39 +00:00
dominik 52134822b8 (svn r1038) Feature: OpenTTD runs with the grf files of the DOS version
Please read the Readme for further information. There are some minor graphical glitches when you use the DOS files. E.g. the autorail button is a bit screwed up.
2004-12-12 20:36:24 +00:00
dominik 3c3ba97d11 (svn r1037) Rearranged landscaping hotkeys a bit more.
See this URL for the list of hotkeys: http://wiki.openttd.org/index.php/Hotkeys
2004-12-12 18:51:24 +00:00
miham 99f0cda875 (svn r1036) Daily langfile updates (automatic) 2004-12-12 18:49:50 +00:00
dominik 7188778c81 (svn r1035) Fix: Added a line that I accidentally deleted in r1033 2004-12-12 18:20:05 +00:00
bjarni 625b0ffec0 (svn r1034) Makefile: fixed issue where it would not compile if RELEASE string contained space. Did the same fix to OSXAPP, just in case it's changed to something containing space at a later date 2004-12-12 18:10:35 +00:00
dominik 532aa593a6 (svn r1033) -Add: 'l' openes the landscaping toolbar globally 2004-12-12 18:06:48 +00:00
dominik 3887747e4a (svn r1032) Fix: Pressing "-" crashed the game 2004-12-12 18:05:36 +00:00
truelight c8452c5195 (svn r1031) -Fix: [Network] The unique-id was not as unique as I though it was.. 2004-12-12 17:47:50 +00:00
dominik 6d8a0c52f5 (svn r1030) Some toolbar icons are arranged differently:
- Landscaping buttons have to be accessed from the landscaping toolbar
 - Landscaping toolbar can be opened from all other toolbars
 - The order of buttons in the docks toolbar now matches the other toolbars
 - Landscaping toolbar has new keyboard shortcuts
2004-12-12 17:42:04 +00:00
truelight 8057dd2214 (svn r1029) -Update: also added md5.h to vc6 / vc.net project files (bociusz) 2004-12-12 17:32:32 +00:00
truelight 96bf7074e3 (svn r1028) -Update: updated MSVC6 project file (bociusz) 2004-12-12 17:22:02 +00:00
tron 8f7373427e (svn r1027) Add tooltips to the per-station vehicle list buttons 2004-12-12 17:20:46 +00:00
truelight 0e79314353 (svn r1026) -Add: [Network] Added unique id, so in network, each client has an
unique id (generated via md5)
2004-12-12 16:04:32 +00:00
truelight 5221f35182 (svn r1025) -Fix: [Network] [ 1083687 ] Sending to depot caused desync because the
new pathfinder uses a random, and the goto_depot uses the new pathfinder 
(if enabled)
2004-12-12 15:43:55 +00:00
truelight a65302dafe (svn r1024) -Fix: [New Network] Revisions can now be longer then 10 chars, so I made
it 20 chars long
2004-12-12 14:28:08 +00:00
truelight 397bd915a3 (svn r1023) -Fix: [Network] [ 1083692 ] You can no longer buy out a company in MP
because of the lag between commands (anyway, I hope)
2004-12-12 14:00:25 +00:00
truelight e027fa76b1 (svn r1022) -Fix: [Network] [ 1083690 ] The password dialog made the network
disconnect without cleaning up.
2004-12-12 13:46:10 +00:00
dominik 920a93071b (svn r1021) Updated Spec file for Linux RPM release builds 2004-12-11 19:20:00 +00:00
truelight 5b72167c8c (svn r1018) -Fix: Buffer overflow in edit box, because we misuse maxlen for a flag..
someone should rewrite the editbox!
2004-12-11 12:30:12 +00:00
Celestar 7559b9fed1 (svn r1017) Solved a Segfault if a station was built too close to the northern corner 2004-12-11 12:12:51 +00:00
tron f995fd08a1 (svn r1016) Make the cargo sorter not consider the number of wagons of a particular cargo type but the sum of their capacity.
Also add the number sorter to sort by vehicle number if the cargo capacity is equal.
2004-12-11 11:00:54 +00:00
tron 0ba5123cef (svn r1015) MFM r789
Replaced the slightly misleading SERVICE_INTERVAL by a function VehicleNeedsService()
2004-12-11 10:17:10 +00:00
miham 5a3ef18c94 (svn r1013) Daily langfile updates (automatic) 2004-12-11 09:51:55 +00:00
truelight 8dc2405ad6 (svn r1012) -Fix: [Network] Endless loop if a server was offline (WizKid) 2004-12-10 22:01:17 +00:00
bjarni 72559a785e (svn r1011) Makefile, mac: added absolute path to hdiutil (default location) to fix the path issues when building nightly builds with a cronjob 2004-12-10 20:22:24 +00:00
bjarni 88cdb99ff7 (svn r1010) Makefile: removed the outdated remove of ttd binary from make clean (should only be a check for openttd binary)
Tron forgot to credit Celestar for last commit (rev 1009)
2004-12-10 18:24:35 +00:00
tron 5b0915e677 (svn r1009) -Feature: per-station vehicle lists
This adds a little button per vehicle class to the station window which opens a list of all vehicles that have this station on their schedule.
As side effect this gets rid of some global variables.
2004-12-10 18:16:08 +00:00
tron 55bac62c5a (svn r1007) Remove the last SET_DPARAM (: 2004-12-10 15:12:48 +00:00
miham 38f5ef6bd4 (svn r1006) Daily langfile updates (automatic) 2004-12-10 13:58:39 +00:00
tron bd1d21911d (svn r1005) Don't treat orders in the normal load routine as old orders, this lead to corruption on load. 2004-12-10 13:10:17 +00:00
tron ea8311301e (svn r1004) Fix harmless typo (comma instead of semicolon) 2004-12-10 13:02:47 +00:00
bjarni c669c94ba3 (svn r1003) Mac: reintroduced the static libpng hack in makefile since it appears to be needed in the nightly builds 2004-12-10 13:00:11 +00:00
darkvater 625332a686 (svn r1002) -Fixed the placement of the OpenTTD logo a bit (thx Jango). 2004-12-09 23:49:23 +00:00
darkvater 6bc9b64421 (svn r1001) -Changed the title name to OpenTTD. Don't know how this was missed all this time; but is fixed now. 2004-12-09 23:20:32 +00:00
bjarni 74619675d5 (svn r1000) Makefile: added check for static build releases on mac. Most users can't use a dynamic build 2004-12-09 23:17:03 +00:00
dominik 416e2b67b1 (svn r999) New icons for the network interface, newgrf gui and the tiny euro 2004-12-09 23:16:52 +00:00
bjarni 02bf3ed5c0 (svn r998) now vehicles are serviced both when entering and when leaving depots to prevent that vehicles might need service when leaving after a long stay (ln--) 2004-12-09 21:46:56 +00:00
tron 93a4dbda4b (svn r990) Fix a display bug in the order list:
TTD stores invalid orders different than OTTD, this resulted in empty lines in the order list. With the overhaul of the order system this got worse: no line was shown at all.
Fix this by sanity checking while loading and convert the orders accordingly.
2004-12-09 18:18:21 +00:00
bjarni 4a818ecbb6 (svn r988) Removed the JAM file stuff since it turned out that nobody uses it anymore and it is not maintained anymore 2004-12-08 21:33:44 +00:00
bjarni 416953f6dc (svn r986) Norwegian translation update (Johannes) 2004-12-08 20:02:15 +00:00
bjarni 9ec6e0a501 (svn r985) Makefile: repaired issue in make release (OSX) 2004-12-08 19:33:44 +00:00
truelight 22951f5523 (svn r984) -Fix: deleted a debug level 0 line that was introduced in revision 978 2004-12-08 18:18:20 +00:00
bjarni ec40598d4c (svn r983) SunOS: fixed backspace key (Oskar) 2004-12-08 18:17:58 +00:00
truelight 2bb5145a20 (svn r982) -Fix: [Network] Because dparams are misused as a char, we had some
endian-problems. To fix this, we are sending dparams byte by byte 
(instead of an uint32). Because of this dparam is sent 
not-uint32-endian-safe, but char-endian-safe. Too bad dparam can no 
longer be used for normal stuff (which is currently not the case) (tnx 
to Tron and Bjarni)
2004-12-08 18:16:43 +00:00
bjarni ecf7e8e9a7 (svn r981) SunOS: fixed the hotkey for console (Oskar) 2004-12-08 17:14:36 +00:00
bjarni 1f31bee5e4 (svn r980) Fixed issues where MorphOS would get problems if AmigaOS would get a port, since MorphOS also have the flag __AMIGA__ defined (Tokai) 2004-12-08 16:27:54 +00:00
Celestar 5b0743d66b (svn r979) Allow more realistically sized catchment areas 2004-12-08 15:46:13 +00:00
Celestar 6fd3fc10e3 (svn r978) Fixed an endianess issue with the new Order system. Thanks to Bjarni, Oskar and Tron 2004-12-08 15:26:57 +00:00
miham 547a2d1f9f (svn r977) Daily langfile updates (automatic) 2004-12-08 13:35:00 +00:00
bjarni 7938c1b884 (svn r974) Makefile: fixed issue in make release and nightly_build, which caused failures if RELEASE contained spaces 2004-12-07 19:31:24 +00:00
bjarni 253ec52c01 (svn r973) Makefile: added make nightly_build (only on mac) 2004-12-07 18:17:41 +00:00
bjarni 701e58e157 (svn r972) Makefile: added make release (currently only works on mac)
Mac: sets the STATIC flag if no makefile.config is found
2004-12-07 17:58:06 +00:00
bjarni bad25dec0e (svn r971) Mac: updated text files and added the link files from the releases 2004-12-07 17:27:55 +00:00
bjarni 051134ac9f (svn r970) Added 2nd data path for all non-windows OSes
added completely customizable lang path (all non-Windows OSes)
2004-12-07 17:16:57 +00:00
Celestar a3a2f0617c (svn r962) Fixed a problem with the new order system due to missing '{}' (another place) 2004-12-06 00:03:26 +00:00
Celestar 293d5bffa8 (svn r961) Fixed a problem with the new order system due to missing '{}' 2004-12-05 23:57:08 +00:00
darkvater c8d83ce557 (svn r960) -Fix: forgotten conversion of orders for the AI (Tron) 2004-12-05 21:30:58 +00:00
darkvater 860a39af2a (svn r959) -Fix: fix previous typo for workaround of braindead MSVC6 (Tron)
-Fix: added debug code to autosave cause it is buggy in multiplayer (does not remember settings; takes them from _opt instead of _new_opt (or vice versa)).
2004-12-05 20:02:49 +00:00
darkvater 78b651c2c9 (svn r957) -Fix: vehicle.c compiler problems for MSVC6 only! (Tron) 2004-12-05 19:50:58 +00:00
tron 7c2448ecea (svn r955) Replace uint16 for orders with struct Order
This adds no functionality, but is a stepping stone for future improvement (like 16bit order indices) and is easier to read.
This changes preserves binary compatibility wrt savegames.
2004-12-05 12:43:04 +00:00
truelight 1de8e294d8 (svn r954) -Fix: [Console] Hook fixes (sign_de)
-Add: [Console] Auto sort commands and variables (sign_de)
2004-12-05 12:25:25 +00:00
miham cef5ac8c8b (svn r953) Daily langfile updates (automatic) 2004-12-05 11:40:58 +00:00
darkvater 6e49b85703 (svn r952) -A tiny insignificant fix for a toyland industry gfx
-Added table\sprites.h to VS.NET project file
2004-12-04 23:43:54 +00:00
bjarni 14a025a6bf (svn r951) Makefile: fixed missing flag for libpng, which prevented lib detection if SDL was not used
Makefile: Combined the OSX specific libpng code with the general one. Now OSX have no special code for libpng
2004-12-04 23:19:31 +00:00
miham e7ee76dc56 (svn r950) Daily langfile updates (automatic) 2004-12-04 22:29:18 +00:00
bjarni 47713d05e3 (svn r949) Makefile: added DEDICATED flag to allow complilation of dedicated servers without linking to SDL. Request by Jezral 2004-12-04 20:34:59 +00:00
truelight 40121d60cd (svn r948) -Codechange: clearified my last commit a bit more with some comment in the code 2004-12-04 18:57:42 +00:00
truelight 43e495045c (svn r947) -Fix: [Network] Desync problem 2004-12-04 18:43:07 +00:00
tron 581302e147 (svn r946) Remove double patch option which crept in during merge 2004-12-04 18:27:08 +00:00
truelight 00168d4660 (svn r945) -Fix: [Network] Terraform callback went wrong in merge
-Fix: Some settings went wrong in merge
2004-12-04 18:17:52 +00:00
truelight 39382a16f3 (svn r944) -Updated vc6 project file (Hackykid) 2004-12-04 18:16:20 +00:00
truelight b8f6d41418 (svn r942) -Merged branch/network back into the trunk 2004-12-04 17:54:56 +00:00
truelight 0434287ef8 (svn r939) -Fix: Fixed compiler errors 2004-12-04 15:02:45 +00:00
tron e56c3cddd8 (svn r925) Use sound enums
Also play the correct sound when a toyland road vehicle breaks down
2004-12-04 09:26:39 +00:00
tron d036559e0e (svn r924) Use RailVehInfo() instead of &_rail_vehicle_info[] 2004-12-04 07:41:37 +00:00
tron aa183e35d8 (svn r923) Forgot s/rail_vehinfo/RailVehInfo/ 2004-12-04 00:34:20 +00:00
tron 56dd31f33b (svn r920) Replace vehicle info macros with inline functions and add asserts to check limits 2004-12-03 21:57:05 +00:00
tron 5149373467 (svn r909) Small cleanup in vehicle.c, this should fix some warnings on 64bit machines 2004-12-03 14:38:02 +00:00
tron c00258237e (svn r907) Sprinkle holy ANSI water:
- "inline" must before the return type (and after "static")
- Initialise all struct members, not just some of them
- Remove (one) spurious semicolon
2004-12-03 07:43:00 +00:00
miham b7f0b278fb (svn r906) Daily langfile updates (automatic) 2004-12-03 05:59:26 +00:00
tron fdb447ac55 (svn r901) Small step in the process to clean up the DPARAM mess:
- reduce to 2 sizes (*DParam64 for 64bit values, *DParam for the rest)
- use inline functions instead of macros
- add assert()s to check for buffer overruns
2004-12-02 22:53:07 +00:00
miham 2c88f958ed (svn r880) Daily langfile updates (automatic) 2004-12-01 21:35:14 +00:00
bjarni a317cbdc09 (svn r877) Moved bemidi.cpp correctly this time 2004-12-01 19:44:39 +00:00
bjarni 5a458590b8 (svn r876) reverted the accidently cleared bemidi.cpp 2004-12-01 19:42:42 +00:00
bjarni e9b49ebf8e (svn r870) BeOS: made the move of bemidi.cpp properly (I hope) 2004-12-01 15:25:18 +00:00
bjarni c925f452e7 (svn r869) Mac: finally made asserts open the console, so people should be able to see what went wrong even if they opened the game in the GUI
deleted the wrongly moved bemidi.cpp
2004-12-01 15:23:05 +00:00
bjarni 2fc6077a68 (svn r862) Cygwin: libdetection now sets the flags properly if no Makefile.config is found
Cygwin: workaround: libpng is automatically not used even if present until the Cygwin/libpng problem is solved
2004-12-01 11:50:20 +00:00
miham ec7586dac3 (svn r857) Daily langfile updates (automatic) 2004-11-29 23:20:07 +00:00
Bjarni 00d6b3609f (svn r856) Makefile: added the flags CYGWIN and MINGW to libdetection. They were missing in the autodetected makefile.config 2004-11-29 20:26:00 +00:00
bjarni a580b4c21e (svn r855) BeOS: moved bemidi to os/beos/ (w-ber) 2004-11-29 20:03:04 +00:00
darkvater ccd731a2ce (svn r854) -Fix [1070274] Invisible trains. Weird macros and MSVC optimizing don't always mix. (Tron) 2004-11-29 19:26:24 +00:00
tron d701668f50 (svn r853) -Feature: Implement improved vehicle loading algorithm
It's not FIFO loading, but does the right thing in the common case:
If a vehicle is empty and another vehicle is already loading the same cargo at this station then the vehicle waits.

This is an reworked version of [ 1072211 ] submitted by Hackykid, thanks!
2004-11-29 11:59:09 +00:00
miham 5733ad3e32 (svn r852) Daily langfile updates (automatic) 2004-11-28 22:43:46 +00:00
tron 29cec910fc (svn r850) Adjust the other language files according to revision 844 2004-11-28 21:37:23 +00:00
tron 9be1dadb04 (svn r847) Add the station type icons to strgen: {TRAIN}, {LORRY}, {BUS}, {PLANE} and {SHIP} 2004-11-28 19:46:24 +00:00
tron d542f5624a (svn r844) Fix some typos ([ 1074329 ]) and use a bigger font in the detailed performance rating window 2004-11-28 12:24:48 +00:00
tron 6b9a744b2d (svn r843) Remove redundant variable assignments and function calls 2004-11-27 21:28:51 +00:00
tron 12d6d679b0 (svn r842) -Fix: [ 985925 ] Start/stop flag in train depots always works, regardless of the horizontal scroll position 2004-11-27 19:53:53 +00:00
pasky 97c533eb9c (svn r831) Remove station-specific roadbits magic. Tron already fixed road stations so that they don't give out roadbits in r780. 2004-11-26 22:29:02 +00:00
pasky 0554031514 (svn r830) Move the MP_STATION roadbits guard to GetTownRoadBitsByTile() wrapper of GetRoadBitsByTile(). This should really and for once fix the road-behind-road-station bug. 2004-11-26 22:21:12 +00:00
tron 908adfc191 (svn r829) Fix small glitch: Immediately redraw the tile selection square when using the hotkey to toggle removal 2004-11-26 21:52:18 +00:00
pasky 08e16d966a (svn r828) Everyone welcome table/sprites.h in trunk - so far not in use besides enum AnimCursors migrated from viewport.h and tiny fragment of enum Sprites migrated from ttd.h (we should slowly convert trunk to use the symbolic names instead of sprite numbers too to reduce the delta to map). Ported from the map branch, where the work was done by Darkvater, Celestar and Tron. 2004-11-26 21:14:42 +00:00
tron daa599c135 (svn r827) Dye bridge ramps in the matching colours compared to the rest of the bridge
This fix was created by Celestar
2004-11-26 21:11:37 +00:00
tron 1c86acd8ba (svn r826) Seperate all bridge related tables from tunnel_land.h into their own file 2004-11-26 20:29:05 +00:00
tron 7b8bf96c2b (svn r822) Use a struct instead of pairs of bytes for the string colormap.
While here give the string colormap a more canonical name.
2004-11-26 16:55:35 +00:00
dominik d801ca16a3 (svn r819) Code cleanup: colors for langfile strings are now taken from a color table instead of a sprite 2004-11-26 14:00:57 +00:00
miham a295166754 (svn r818) Daily langfile updates (automatic) 2004-11-26 07:30:06 +00:00
tron acbd1801c7 (svn r815) Include strings.h only in the files which need it.
This should reduce the compile time after altering english.txt by about 1/3, because "only" 62 instead of 90 .c files must be recompiled.
2004-11-25 10:47:30 +00:00
miham 908d2471ec (svn r814) Daily langfile updates (automatic) 2004-11-25 08:11:48 +00:00
tron b07357373f (svn r813) Push two tables from vehicle_gui.h into vehicle_gui.c - they were in the binary 48 (!) times.
While here change the type for one table from uint16 to StringID.
2004-11-25 06:05:47 +00:00
tron e35a0b1c44 (svn r803) Switch to ISO 8859-15
It has proper support for the euro sign and includes letters which are needed by the Latvian translation (and perhaps others), though the letter sprites are missing.
2004-11-24 22:52:57 +00:00
darkvater 669368cf21 (svn r802) -add latvian to VS.net Project (bociusz) 2004-11-24 20:56:52 +00:00
dominik 372340b731 (svn r801) - re-enabled background highlighting in Newgrf GUI
- minor Newgrf GUI fixes and adjustments
2004-11-24 20:08:38 +00:00
tron 3ef3f05288 (svn r800) Check if the data tables for houses have the correct number of elements via compile time asserts 2004-11-24 17:19:26 +00:00
tron fca55e3741 (svn r793) Merge INLINE -> inline replacement (revision 376) 2004-11-24 13:19:48 +00:00
tron 0ea87b6473 (svn r792) Small cleanup: Kill a goto 2004-11-24 12:47:25 +00:00
bjarni aceb89fb7d (svn r788) added a latvian translation (currently contains 0 strings) 2004-11-24 09:10:42 +00:00
tron e8537f5512 (svn r787) Invert the sense of the DO_TRANS_BUILDINGS flag to be consistent with its own name and all other DO_* flags.
Now it is active-true.
2004-11-23 22:36:11 +00:00
miham 06158be674 (svn r786) Daily langfile updates (automatic) 2004-11-23 20:54:51 +00:00
tron 0b3cceb21d (svn r785) -Fix: A train can leave and enter the same depot at the same time, then the trai simply got stuck 2004-11-23 20:25:18 +00:00
tron c5b0ecac4f (svn r780) Always report a bus/lorry station as unpassable.
The current behavior just causes bugs and the pathfinder does the necessary magic to handle stations as destinations and enter them anyway.
This fixes [ 1058809 ]
2004-11-23 18:04:04 +00:00
matthijs a3cb5499bf (svn r779) Reverting last commit, svn didn't cancel the commit like I was meaning to tell it.
Tron will commit the real bugfix we were working on in a minute (I hope ;-)
2004-11-23 17:46:39 +00:00
matthijs ca0f5ffe60 (svn r778) -Fix: [ 1064742 ]  2004-11-23 17:16:41 +00:00
pasky 2214a9df5c (svn r773) When refitting a train engine, refit also all the attached wagons which can be refitted (applicable to DBSetXL, as shown in http://pasky.or.cz/~pasky/dev/openttd/screenshots/wagrefit.png). This is how TTDPatch does it, pointed out by Bjarni. 2004-11-22 23:05:34 +00:00
pasky 34c89d6896 (svn r772) Whoops, I know. Do not consider pointer to be a boolean value. Sorry 'bout that, sirs. 2004-11-22 22:52:01 +00:00
pasky f012e15c95 (svn r771) Do not give a file new {struct GRFFile} if it was already loaded once. Eliminates those double entries in the newgrf manager and also some possible memory leaks. 2004-11-22 22:51:19 +00:00
miham b2e973056a (svn r770) Daily langfile updates (automatic) 2004-11-22 22:22:03 +00:00
pasky 4beb4ae2bc (svn r769) Fixed a tiny mistake in the _userstring boundary check. Let's hope I got it right this time. 2004-11-22 21:53:19 +00:00
pasky bf587e9aac (svn r768) In the NewGRF manager, show GRF ids as 8-digit hex numbers (that's how they are supposed to look). 2004-11-22 21:48:40 +00:00
pasky 3ee0dee12a (svn r767) Introduce USERSTRING_LEN (128) and try to make sure we don't overflow it anywhere (as long as we keep USERSTRING_LEN above 7 or so). 2004-11-22 21:41:25 +00:00
darkvater d4b723a7c9 (svn r766) -Fix: compilation problems on windows
-There is nothing wrong with uses spacebars in the code; they are not a luxury item
-Please use standard rowsizes of 14px and less magic numbers (highlighted items drawn in white as all other windows do)
-TYPEDEF structs (this goes to pasky!!)
2004-11-22 20:49:42 +00:00
tron d51887fbed (svn r764) Enumerate the houses only one per town can exist and use the enums instead of magic numbers to check for these 2004-11-22 18:42:03 +00:00
tron 8a3d7cce1c (svn r760) Replace some bit-juggling with bit fields 2004-11-22 11:01:30 +00:00
tron a744e8e375 (svn r757) Repair the damage inflicted on english.txt in revision 745 2004-11-22 10:26:59 +00:00
tron 40a04816a4 (svn r756) Demystify and explain some piece of code regarding which house sprite to draw 2004-11-22 10:09:37 +00:00
miham 6d81770985 (svn r746) Daily langfile updates (automatic) 2004-11-21 23:20:11 +00:00
dominik 4e41cf9e2b (svn r745) Added newgrf GUI (in options menu)\nThe interface currently only displays the installed grf sets, you can't (de)activate them through the gui yet 2004-11-21 22:44:13 +00:00
miham 485102814f (svn r739) Daily langfile updates (automatic) 2004-11-21 15:18:41 +00:00
tron 17cfda1a98 (svn r727) The langauge files depend on english.txt, not strings.h 2004-11-21 12:21:23 +00:00
tron 7fea17457d (svn r726) The OpenTTD binary doesn't depend on the language files, so move this dependency to the all target 2004-11-21 12:18:52 +00:00
tron 2a3969695b (svn r725) Fix language file dependencies 2004-11-21 11:34:07 +00:00
tron 57adc97733 (svn r724) Remove restriction that a tile can only accept 3 cargo types.
This especially enables houses to accept passengers, mail, goods AND food.
Add string templates for up to 5 cargo types for the tile info window. If more are needed just add them.
Simplify (de-uglify) the logic for cargo acceptence for houses and split the goods/food table into two. The acceptance is unmodified, but accepting goods AND food is now trivially possible. The exact amounts have to be decided.
This is based on Celestar's changes in the map branch plus some further bits that will be merged there soon.
2004-11-21 10:49:40 +00:00
tron 75d002690a (svn r723) Increase size of dparam so more parameters can be passed to string output 2004-11-21 10:42:01 +00:00
miham 4bba1273aa (svn r721) Daily langfile updates (automatic) 2004-11-21 08:22:57 +00:00
pasky bf6dace925 (svn r703) Attempt to improve the town growth algorithm - now it scales over 76 houses, is slightly exponential and travels further for larger towns. 2004-11-20 11:57:45 +00:00
truelight 32f69dab0e (svn r702) -Fix: Buffer overflow in music/sound/video-driver-parameter (Oskar_) 2004-11-20 11:15:31 +00:00
pasky 578bde9aae (svn r698) Merge a town growth fix from TTDPatch - in arctic and desert climate, require food (and possibly water) only if the population is more than 90, so that the town gets chance to actually accept it. (By Marcin?) 2004-11-20 02:36:10 +00:00
pasky e1c1036648 (svn r697) Fix the town road removal crash _still_ present there. 2004-11-20 02:25:31 +00:00
pasky 5650257c0c (svn r696) Do not consider a road station as street when growing the town. 2004-11-20 01:49:42 +00:00
pasky 7a8fb5d2fd (svn r694) Make the town sometimes build streets on slopes. 2004-11-20 01:08:41 +00:00
pasky d9096f9ea4 (svn r688) Fix eol-style (hopefully). 2004-11-19 22:59:31 +00:00
pasky 989fd10d06 (svn r687) Export InitNewGRFFile() and DecodeSpecialSprite() properly. 2004-11-19 22:53:18 +00:00
pasky ad068622fb (svn r681) Support for VERBOSE configuration variable which shows the commands actually used for compilation. 2004-11-19 22:29:30 +00:00
pasky 0f7e48ead2 (svn r679) Clarify bp.sprite assignment in GfxMainBlitter(). Pointed out by Oskar. 2004-11-19 21:57:02 +00:00
darkvater 249438be88 (svn r677) -newgrf: Fix some custom electric trains appearing in maglev depots (pasky). 2004-11-19 19:13:32 +00:00
darkvater d51daeab1a (svn r669) -Add missing language files to VS.NET and VS6 project files (bociusz). 2004-11-17 21:57:00 +00:00
tron 3f91aff573 (svn r668) -Fix: [ 1068269 ]
- Number of passangers and mail in exclusive test offer window is swapped
  - Wrong data caused by double index shift is displayed in exclusive test offer window
2004-11-17 21:36:04 +00:00
tron 83ffb9c7fa (svn r667) Fix bug in rendering stations from savegames
Also don't pitch custom station sprites by railtype
(pasky)
2004-11-17 21:11:16 +00:00
darkvater 258ffc1382 (svn r666) -Added missing sprite.c for VS6 project file 2004-11-17 20:30:34 +00:00
dominik 8d91459f37 (svn r665) code fixes for newgrf.c/newgrf.h 2004-11-17 20:08:13 +00:00
tron 9dd7c284f0 (svn r664) Fix warning on MorphOS 2004-11-17 19:29:24 +00:00
dominik 31184f974e (svn r663) [newgrf] sorry, forgot newgrf.h 2004-11-17 18:53:49 +00:00
dominik 4612dcdb48 (svn r662) [newgrf] Moved grfspecial.c to newgrf.c/newgrf.h 2004-11-17 18:49:55 +00:00
tron 0f24c74b14 (svn r661) Make strgen print its own revision instead of the repo's.
This also fixes the annoying unecessary language file recompiles.
2004-11-17 18:38:07 +00:00
tron d753aeea58 (svn r660) Fix typo introduced in r655 2004-11-17 18:22:21 +00:00
tron 3a7abc2a35 (svn r659) Support for cutomized TTDPatch-style new stations (no selector GUI yet) (pasky) 2004-11-17 18:03:33 +00:00
tron c4e9896851 (svn r658) Ignore callbackish randomized spritegroups - they would just crash us (pasky) 2004-11-17 17:15:36 +00:00
celestar 155f20329b (svn r657) Do not touch 0x8000 bit in sprite index for custom waypoints. (pasky) 2004-11-17 15:14:18 +00:00
tron 87adce3ca0 (svn r655) Add the necessary bits to make building on SunOS/Solaris work 2004-11-17 09:07:29 +00:00
tron 13f0b6c0cf (svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky) 2004-11-17 08:52:47 +00:00
tron 0086bb9d06 (svn r653) Prevent SDL parachute from catching SIGSEGV and SIGFPE (pasky) 2004-11-17 08:11:24 +00:00
tron 2760ed80fd (svn r652) Factorise special case for MorphOS regarding signal() handling 2004-11-17 07:57:28 +00:00
miham 4fb8338fa6 (svn r651) LoadNewGrfFile() now doesn't care about num_sprites and just loads whatever is
available. Fixes George's long vehicles. (pasky)
2004-11-17 02:24:21 +00:00
miham dd90693a4c (svn r650) Pasky fix #4. (Misc fixes to get USSet going) 2004-11-17 02:01:12 +00:00
miham 46dddda22f (svn r649) Support for custom rail vehicle refit bitmasks. (pasky) 2004-11-17 01:09:15 +00:00
miham e2f3634db3 (svn r648) Dummy skip-support for two new station properties. Rename FOR_EACH_ENGINE() to more appropriate FOR_EACH_OBJECT(). (pasky) 2004-11-17 01:00:04 +00:00
miham 86d19cb577 (svn r647) Cleanup custom station classes handling. (pasky) 2004-11-17 00:52:54 +00:00
darkvater cd6cb84889 (svn r646) -Fix: braindead case-sensitive file extension filter replaced with a case-INsensitive one (joint effort of Bjarni and Darkvater). 2004-11-16 23:51:38 +00:00
darkvater 60184e1495 (svn r645) -Feature: Finally support for TTDLX games on Big Endian machines such as Macintosh and MorphOS; thanks for testing Bjarni :)
-Added turkish.txt to lang-project and screenshot.h to ttd-project
2004-11-16 23:26:15 +00:00
tron cc428ef6cf (svn r637) Add keycode for the key to open the console on BeOS 2004-11-16 16:13:54 +00:00
tron 69159b6e52 (svn r636) Set svn:eol-style for screenshot.h 2004-11-16 11:40:32 +00:00
tron b65bda506c (svn r635) Fix choosing a spritegroup from deterministic variational spritegroups if there is no structure to search (i.e. in purchase lists) (pasky) 2004-11-15 20:52:11 +00:00
miham 61103119fb (svn r634) Added turkish translation (iso8859-1) 2004-11-15 20:45:25 +00:00
miham f1a3b32dc4 (svn r633) Daily langfile updates (automatic) 2004-11-15 20:44:39 +00:00
tron 450c669eb2 (svn r631) Merge r440, r444, r485, r630 to trunk:
r440
Move screenshot function declarations to new file screenshot.h
Clean up screenshot.c a bit, mostly whitespace, alloca() -> malloc() and checking return values
r485
Remove unused field from struct ScreenshotFormat
2004-11-15 19:25:59 +00:00
tron fb4b5fa841 (svn r628) Merge r442 to trunk:
In bemidi.cpp
- Whitespace cleanup
- Simplify one if ()
2004-11-15 12:15:03 +00:00
tron 6da3e44fc7 (svn r627) Merge r439 to trunk:
Cleaned up whitespace in namegen.c
2004-11-15 12:11:43 +00:00
tron a0b4161a32 (svn r626) Merge r438 to trunk:
Some whitespace and magic number cleanup (in news_gui)
2004-11-15 12:05:01 +00:00
tron 2f35fea097 (svn r625) Almost complete support for deterministic variational vehicle spritegroups. (pasky) 2004-11-15 11:54:35 +00:00
tron 57c472e093 (svn r624) Merge r377 to trunk:
Remove the memmove special case for MSVC
According to the MSDN it was just plain wrong and memmove was directly used in some places anyway
2004-11-15 10:31:48 +00:00
tron 01e88bb61d (svn r623) -Feature: [ 1066504 ] Pause key pauses the game 2004-11-15 10:04:57 +00:00
tron 95a3e4fe1f (svn r621) Merge r450 to trunk:
Cleanups and #if 0 some unused debug code
2004-11-15 09:05:06 +00:00
miham 747d0fcca9 (svn r620) Daily langfile updates (automatic) 2004-11-15 08:11:04 +00:00
tron 5a07c9bd71 (svn r619) Add the necessary bits to make building under BeOS using GNU Make work 2004-11-15 07:53:09 +00:00
darkvater 4852474343 (svn r617) -newgrf: Support for parameter 0x8E (train Y-pitch in info windows) both setting and testing. This should fix displaced wagons in DBSetXL as reported by DarkVater. (pasky) 2004-11-14 23:36:19 +00:00
darkvater afca207cf0 (svn r616) -newgrf: Fixed crashing when trying to resolve references to unknown or callback result spritegroups in variational spritegroup handler of NewSpriteGroup() (pasky). 2004-11-14 23:14:44 +00:00
bjarni 5914888ad6 (svn r615) Fix the same bug in ParamSet action loading, pointer out by Bjarni too. (pasky) 2004-11-14 22:31:57 +00:00
dominik d99b89ab29 (svn r614) [newgrf] Some minor code fixes 2004-11-14 22:30:46 +00:00
bjarni 363a92bd43 (svn r613) Fix bug in GRFInhibit action loading, pointed out by Bjarni. (pasky) 2004-11-14 22:25:21 +00:00
dominik fb64b4e499 (svn r612) [newgrf] Fix: custom waypoints on monorail/maglev are displayed correctly 2004-11-14 22:10:08 +00:00
darkvater 051e094921 (svn r611) -newgrf: Change GetCustomEngineSprite() calling convention (invisible to users of GetCustomVehicle*() wrappers). Needed for deterministic spritegroups support (pasky). 2004-11-14 20:53:34 +00:00
darkvater ec434b208e (svn r610) -newgrf: Support for some basic deterministical spritegroups regarding stations. Waypoints look changes based on year now :^) (pasky). 2004-11-14 20:50:38 +00:00
dominik c2193ce1a8 (svn r609) Fixed choose waypoints dialogs, it works without assertion failures and with custom waypoint #0 selectable now. (pasky) 2004-11-14 20:25:07 +00:00
dominik 0bcc9b7573 (svn r608) [newgrf] enabled possibility to build default waypoint when custom waypoints are enabled 2004-11-14 20:02:43 +00:00
tron 249a170ace (svn r607) -Patch: [ 985102 ] static cleanup
Thanks to lvoge
2004-11-14 19:44:06 +00:00
dominik 200d3fdbe8 (svn r606) -newgrf: Fixed waypoint scrollbar 2004-11-14 18:20:40 +00:00
darkvater 183c33931d (svn r605) -newgrf: Framework for supporting variational spritegroups . Deterministic only at the moment, but random ones support shouldn't be that difficult now It doesn't do anything, but makes these actions actually possible (pasky). 2004-11-14 18:18:28 +00:00
tron a348f74c65 (svn r604) -Fix: [ 999669 ] Wrong trees (toyland's) in sub-tropical landscape style
Tree generation code sometimes set the non-existent growth state 7
This could also become manifest in snow covered trees below the swnow line in arctic climate and similar effects
2004-11-14 17:16:26 +00:00
darkvater ea48b0d05c (svn r603) -newgrf: Stupid TortoiseSVN converted the file to DOS newlines. Bah 2004-11-14 16:45:38 +00:00
darkvater e656a91736 (svn r602) -newgrf: Move DrawTileSeqStruct & co and struct SpriteGroup to sprite.h (pasky) 2004-11-14 16:42:08 +00:00
darkvater a415b8ecce (svn r601) -newgrf: blaat 2004-11-14 16:13:43 +00:00
darkvater 5fcd71cf28 (svn r600) -newgrf: Relocation offset for custom station sprites is now stored separately, making it possible to show different sprites in waypoint selection dialog (pasky). 2004-11-14 16:11:48 +00:00
tron 2b5b1f4e06 (svn r594) -Fix/Feature: [ 1066121 ] Resetting file name after deleting a file
Thanks to dannys9 for the patch
2004-11-14 15:11:25 +00:00
darkvater 80f787e60a (svn r593) -newgrf: Support for two more TTD(Patch) version relate) SkipIf in-game variables (pasky). 2004-11-14 14:54:10 +00:00
darkvater 5847317526 (svn r592) -newgrf: Dynamically allocate global custom station IDs (pasky). 2004-11-14 14:53:15 +00:00
darkvater ccc496ba2c (svn r591) -newgrf: Store whole struct StationSpec in SetCustomStation(), not just the rendering data. This will be needed for variational stationspecs (pasky). 2004-11-14 14:10:03 +00:00
darkvater 5663926aaf (svn r590) -newgrf: Instead of a bunch of statinfo arrays, use station-array of struct StationSpec-s (pasky). 2004-11-14 13:59:11 +00:00
darkvater 770eb4c8c3 (svn r589) -newgrf: Rename spritesset to spritegroups (pasky). 2004-11-14 13:45:38 +00:00
darkvater 552689b7fe (svn r588) -newgrf: Silent ignore those stupid one-byte zero special sprites (dbsetw.grf is crawling with them) (pasky). 2004-11-14 13:11:38 +00:00
darkvater 397cc50f61 (svn r587) -newgrf: Rename all /Checkpoint/i tokens to 'Waypoint's. The name actually makes some sense and is also compatible with TTDPatch (pasky). 2004-11-14 13:07:07 +00:00
darkvater 8946e92468 (svn r586) -Fix: [1066114] Code error in win32.c Thanks Shai
-Fix: ttd.vcproj change to hard-set compilation as C, as well as adding WITH_SDL to debug mode. If you don't have SDL just remove that.
2004-11-14 12:37:23 +00:00
darkvater 989289fadd (svn r585) -newgrf: GUI for selecting custom waypoint graphics to use. Patch by dominik81 and pasky. 2004-11-14 11:04:59 +00:00
darkvater 4f6fa3b468 (svn r584) -newgrf: Increase chance to get a TTDPatch savegame using custom GRF files loaded (pasky) 2004-11-14 10:18:15 +00:00
darkvater a9a7957eaa (svn r583) -newgrf: Hopefully prevent GRF files introducing new bridges or townhouses to crash the game (pasky). 2004-11-14 10:03:21 +00:00
tron 2f56162f35 (svn r582) -Fix: [ 1034318 ] place sign and blue message box
A name change wasn't possible while an always-on-top window (like news) has been visible
2004-11-14 09:31:39 +00:00
celestar eb50427670 (svn r581) -newgrf: Basic support for new stations - only waypoints supported now and only
the first custom one can be placed (no selector GUI, coming soon). This
also moves some global variables to {struct GRFFile} and reorders which
actions are processed in what stage, to get it all working together --
(pasky)
2004-11-14 09:07:15 +00:00
tron a9a852a4d6 (svn r580) Fix latent bug in BringWindowToFrontByID() - a wrong pointer was returned 2004-11-14 08:15:50 +00:00
tron 37cbae0370 (svn r579) Remove now unused function memswap() 2004-11-14 08:11:57 +00:00
tron 84d1041edf (svn r578) Simplify BringWindowToFront() 2004-11-14 08:11:05 +00:00
darkvater 7a2a973b48 (svn r577) -newgrf: fixed some typos of last commit (airports were looking weird) 2004-11-14 01:50:15 +00:00
darkvater 7930faace9 (svn r576) -newgrf: Cleanup horrible table/(station|unmovable)_land.h DrawTileSeqStruct hacks needed for custom station supports (pasky) 2004-11-14 01:25:05 +00:00
miham e9ef930155 (svn r575) Daily langfile updates (automatic) 2004-11-14 00:19:48 +00:00
darkvater 1f12dee3a0 (svn r572) -newgrf: Support for custom (newGRF-yielded) refit masks for trains and aircrafts (pasky). 2004-11-13 21:42:35 +00:00
darkvater 0a2f28c2f2 (svn r570) -newgrf: Support for custom aircrafts via GRF files. Planeset seems to work :). Also use aircraft_vehinfo() instead of the old tables (pasky). 2004-11-13 20:37:57 +00:00
tron e260aa3870 (svn r569) Fix type mismatch 2004-11-13 18:15:03 +00:00
celestar e31f37d578 (svn r568) -newgrf: Make @wagover bool, simplifying stuff. (pasky)
-newgrf: "More debugging and severity levels consolidation. (pasky)
2004-11-13 18:08:45 +00:00
celestar 20e9a8061d (svn r567) -newgrf: Support for road vehicles customization (seems to work at
least with tropicset). (pasky)
2004-11-13 18:01:33 +00:00
miham dae7b4ae21 (svn r566) Daily langfile updates (automatic) 2004-11-13 17:10:41 +00:00
darkvater 7690093b4c (svn r565) -newgrf: fixed double work of RoadVehicleInfo[]; added AircraftVehicleInfo[] as well. table/engines.h is now the same as in the _map branch. 2004-11-13 16:28:50 +00:00
tron b5e1240a8a (svn r564) Simplify scroll logic and correct one erroneous use of memcpy() 2004-11-13 16:10:25 +00:00
celestar b8327e0457 (svn r562) newgrf: Merge most of the road vehicle info to a single
road_vehicle_info table, like it already is for trains and ships. Needed
for GRF custom override support. (pasky)
2004-11-13 15:15:41 +00:00
celestar 6db750373a (svn r561) -newgrf: killed some of the magic numbers in the code (pasky) 2004-11-13 12:38:38 +00:00
celestar 04748217d1 (svn r560) -newgrf: General cleanup of the code (pasky & octo) 2004-11-13 12:21:32 +00:00
tron 3df0ff7854 (svn r559) Minor simplification 2004-11-13 11:08:50 +00:00
tron 53116247c3 (svn r558) -Fix: [ 1065247 ] Windows can be placed behind toolbar
While here make clamping against the screen border a bit nicer
2004-11-13 10:53:42 +00:00
darkvater 22f627c8e1 (svn r557) -newgrf: Rename all 'superset' tokens to 'group' and some other small renamings (pasky and octo). 2004-11-12 23:59:51 +00:00
darkvater 76341a9173 (svn r556) -newgrf: Some seemingly proper support for loading stages of grf files (octo & pasky). 2004-11-12 23:26:02 +00:00
darkvater 2ab4669251 (svn r555) -newgrf: Preliminary support for action 0xE. Inhibit another GRF file by ID. It won't really work until we get stages support (pasky & octo). 2004-11-12 22:39:00 +00:00
darkvater 27b48faad2 (svn r554) -newgrf: Keep track of GRF files. Remember them all in a linked list, this already enables tests for an already loaded GRF file in SkipIf(). Patch by octo, heavily re-hammered by pasky 2004-11-12 22:28:19 +00:00
darkvater 015cb74dd9 (svn r553) -newgrf: Special routine for loading newgrf files. LoadNewGrfFile() introduced; will get more handy when loading stages will be introduced (octo and pasky). 2004-11-12 21:51:34 +00:00
darkvater 7accdb9003 (svn r552) -newgrf: Include bits forgotten when merging octo's ReplaceSprites support - it would replace even special sprites in the way now. (pasky) 2004-11-12 21:33:18 +00:00
darkvater 2aae43a848 (svn r551) -newgrf: Preliminary support for TTDPatch flags checking (we just pretend that a bunch of things are on and the rest is off and that's it). Patch by octo, small cleanup by pasky. 2004-11-12 19:03:37 +00:00
darkvater c53cf38ffd (svn r550) -newgrf: Support for action 0xd (change a parameter (sorta variable for the GRF scripts)). Based on patch by octo, heavy changes by pasky. 2004-11-12 18:57:46 +00:00
darkvater 16f8a7b2d2 (svn r549) -newgrf: Support for action 0xd (change a parameter (sorta variable for the GRF scripts)). Based on patch by octo, heavy changes by pasky. 2004-11-12 18:47:19 +00:00
darkvater a2869639b2 (svn r548) -newgrf: minor style changes, and application of boolean type 2004-11-12 18:43:12 +00:00
darkvater fd80b53f39 (svn r547) -newgrf: Enhanced support for action 0x7 and 0x9 (skips). Killer mixture mixed from octo's patch and pasky's old patch (pasky & octo). 2004-11-12 17:27:30 +00:00
darkvater e7441c39e3 (svn r546) -newgrf: Use GetCustomVehicleIcon() for fetching sprites for vehicle selection dialogs. (Idea by octo, done by pasky). 2004-11-12 17:16:13 +00:00
celestar acaff32984 (svn r545) -newgrf: repaired indendation (pasky & octo) 2004-11-12 15:36:49 +00:00
celestar aac4fbc220 (svn r544) -newgrf: codechange for better handling (pasky and octo__) 2004-11-12 15:15:56 +00:00
tron 5d6c0a8220 (svn r543) -Fix: [ 1064742 ] Editor Map-Menu wrong String
The fix is a bit ugly, but this is due to limitations in the dropdown menu handling (the strings have to be contiguous)
2004-11-11 23:23:42 +00:00
tron 65058d0d57 (svn r542) -Fix: Display correct rail type in "build railway station" window
Thanks, ln--
2004-11-11 23:10:22 +00:00
tron 7a97e54559 (svn r541) Make windows even snappier! ^^
Thanks to nzhook, who also proposed the original patch.
2004-11-11 21:20:15 +00:00
tron 95fdf39bca (svn r540) Tell subversion to ignore some more files 2004-11-11 17:53:11 +00:00
tron 315006a28e (svn r539) Set svn:eol-style property 2004-11-11 17:17:52 +00:00
tron 872f49ae8a (svn r538) -Feature: Windows snap at each other
This is inspired by [1063636].
2004-11-10 21:14:16 +00:00
tron 603618a75b (svn r532) Disable date change buttons in scenario editor if date limit is reached.
Note: It's a /bit/ ugly, need to find a cleaner way
While I'm here enlarge the start date window to 1920-2000 (was 1950-1975).
2004-11-08 22:21:14 +00:00
bjarni b78bbf80bf (svn r531) Makefile: made asserts enabled by default
RELEASE disables asserts unless ENABLE_ASSERTS(not in makefile.config) is set
makefile.config version 3
2004-11-08 21:24:48 +00:00
bjarni 72880f2dad (svn r530) Makefile: added ability to switch asserts on and off
Updated makefile.config to versiontag 2 for autoupdating purposes
2004-11-08 21:11:52 +00:00
tron 2cf5b77d0b (svn r528) Minor fixes in german.txt 2004-11-08 20:44:10 +00:00
tron 37e199cd2b (svn r526) -Fix: [1035303] bug about lowering tracks built on slopes
While here make sure that the failing tile gets a red error marker
2004-11-08 09:11:55 +00:00
bjarni 21b1607fb5 (svn r520) Lang: added empty Russian translation 2004-11-07 14:15:38 +00:00
miham f1d552c5b6 (svn r519) Daily langfile diff 2004-11-07 08:41:38 +00:00
tron 6909bba290 (svn r518) Merge extmidi.c r441 to trunk:
- Whitespace cleanup
- Use execlp() with relative path instead of execl() with absolute path
2004-11-06 23:24:59 +00:00
tron 476dfd9f12 (svn r517) -Fix: [1033947] Wrong mapping between music titles and songs 2004-11-06 23:20:12 +00:00
celestar 9c1aa0b75f (svn r516) Solved a little bug with the order checker. 2004-11-06 15:13:44 +00:00
darkvater 92d1dd153f (svn r515) -Fix: [1050993] Incorrect Tooltip in Road Vehicle List. Already fixed in /map branch 2004-11-06 12:02:43 +00:00
tron 0a422b06a5 (svn r514) -Fix: [1053397] Refit Train Window Stays Open 2004-11-06 09:24:28 +00:00
tron d641175e3c (svn r513) Merge revisions 402, 416, 417, 478, 479, 511, 512 from map to trunk
This includes 2 fixes
-Fix: [1048596] Monorail and Maglev sounds are swapped (r511)
-Add special case to load the jackhammer sound (r478)
The rest are cleanups und enumeration to make merging possible/easier
2004-11-05 23:12:33 +00:00
tron 8348068f5f (svn r505) Tell svn to ignore some files and remove one stale entry 2004-11-04 18:41:39 +00:00
tron f2a858c6a5 (svn r504) The Bourne Shell ist spelled 'sh', not 'bash'; even if there is a 'bash', on most systems it's not in /bin
Typical Linuxism... /:
2004-11-03 21:50:21 +00:00
tron f7485d586e (svn r501) -Fix: Vehicles slow down under bridge if the track is on a foundation 2004-11-03 11:35:29 +00:00
tron fe1ccdf834 (svn r500) -Fix: Some bridge part isn't displayed transparent in transparent mode
-Fix: If bridge has no pillars cursor arrow is displayed in transparent mode
2004-11-03 11:06:21 +00:00
tron 2eb00c0bd3 (svn r499) Merge r498 to trunk:
Disabled buttons flicker no more
  This solves bug report 991101
2004-11-01 15:08:40 +00:00
miham f6690500bf (svn r472) Daily langfile updates -- 79 strings missing 2004-10-26 20:56:51 +00:00
miham 49d0f082f8 (svn r468) Daily langfile updates -- 88 strings missing 2004-10-25 08:37:01 +00:00
miham 9947627df9 (svn r461) Daily langfile updates -- Minor language tweaks 2004-10-20 21:08:39 +00:00
miham 034b0b5aef (svn r418) Daily langfile updates -- Portuguese language finished 2004-10-10 12:06:19 +00:00
miham 1fd2edf29a (svn r407) Daily langfile updates (automatic) 2004-10-09 07:12:08 +00:00
miham 88e3ef36a4 (svn r399) Daily langfile updates (automatic) 2004-10-06 21:56:44 +00:00
miham 385da141e6 (svn r396) Daily langfile updates (automatic) 2004-10-06 16:22:57 +00:00
miham 98b60a605f (svn r384) Daily langfile update -- 102/1 (3007/3) missing S/L 2004-10-05 14:38:15 +00:00
miham 9c3b9fd40d (svn r360) Daily langfile update -- Added portuguese translation + danish fixes by Bjarni (100+2 / 1) 2004-10-02 19:41:06 +00:00
miham 884fd51b68 (svn r341) Daily langfile update -- 102 strings missing for galician 2004-09-30 22:11:28 +00:00
miham af3348fe94 (svn r339) Daily langfile update -- 104 strings missing for 2 finished languages 2004-09-30 14:26:35 +00:00
miham 43ca0548da (svn r334) Daily langfile update -- 104 strings missing for 2 finished languages 2004-09-28 22:02:23 +00:00
dominik a99ac0d057 (svn r329) Fix: [ 1035066 ] 'Allow goto depot' turned off, no checkpoints in orders 2004-09-27 14:30:17 +00:00
darkvater edf841fb6f (svn r328) -Fix: remove some unlogical alloca()s (Tron) 2004-09-27 12:36:59 +00:00
miham 0dbe38fba7 (svn r327) Daily langfile update -- 112 strings missing for 3 finished languages 2004-09-26 21:35:16 +00:00
miham 35c13ef965 (svn r322) Daily langfile update -- 1683 strings missing for 5 languages 2004-09-26 08:01:08 +00:00
truelight 12c91671bf (svn r321) -Fix: crash when making png screenshot with odd resolution (Tron)
-Fix: unable to select other screenshot format in Game Option
2004-09-25 18:30:19 +00:00
truelight 3dc8dcf312 (svn r320) -Fix: some last _current_player fixes 2004-09-25 17:37:32 +00:00
truelight 75a54521e8 (svn r319) -Fix: [ 1029064 ] Building a station acted weird in some rare situations 2004-09-25 13:58:27 +00:00
miham 773737930a (svn r318) Daily langfile update -- 1895 strings missing for 6 languages 2004-09-25 10:24:11 +00:00
miham 4449917a7c (svn r317) Daily langfile update -- 1952 strings missing for 9 languages 2004-09-24 07:53:21 +00:00
darkvater 67f385ded8 (svn r316) -Fix: not +7 (Tron) 2004-09-23 21:44:36 +00:00
darkvater cee5cd6cc7 (svn r315) -Fix: starting with -r option allows all resolutions (including 666x666) (t r o n) 2004-09-23 21:39:55 +00:00
darkvater 36f18e7f40 (svn r314) -Fix: [982611] Pathfinding bug; train likes the roundabout. If train needs servicing it will now look 16 tiles along the track instead of 12 tiles manhattan style (blathijs) 2004-09-23 21:20:38 +00:00
darkvater 198f841c7e (svn r313) -Feature/Fix: directories in *nix are now sorted alphabetically in ascending order (Tron). 2004-09-23 21:16:23 +00:00
darkvater f3758d133a (svn r312) -Fix: [926105] ctrl + d bug. Longest outstanding bug has been fixed \o/ 2004-03-30 (Tron)
-Fix: [1030393] some screensizes crashes OTTD. Fix in general bug that only allows resolutions which were multiple of 8 in width and height. Also use closest possible resolution in fullscreen if window size is not a valid resolution (Tron)
2004-09-23 21:14:20 +00:00
bjarni d72abf6c3e (svn r311) Added incomplete Icelandic translation (Hinrik)
Mac: made track_starter executable by default. Needed for midi player
2004-09-23 20:12:51 +00:00
miham 408a27a64e (svn r310) Added catalan translation & daily langfile update -- 551 strings missing for 16 languages 2004-09-22 11:16:44 +00:00
miham db516f667e (svn r309) Fixed spanish translation 2004-09-22 09:34:59 +00:00
dominik f7fee73752 (svn r308) Added debug hotkey 'caps lock' for sdl builds as well 2004-09-22 07:40:41 +00:00
darkvater cd01b3890a (svn r307) -Fix: Several potential buffer-overflow fixes, and removal of 'magic-numbers' in favour of constants. (Tron) 2004-09-21 21:40:59 +00:00
darkvater 475ef74ab7 (svn r306) -Fix: [985439] un-owned rail. Trains could cross competitor's tracks if there was a road-crossing over it. 2004-09-21 21:28:42 +00:00
bjarni 93d9afca4b (svn r305) made the shellscripts executable, so the user do not have to do this manually 2004-09-21 21:19:08 +00:00
darkvater 493df26058 (svn r304) -Fix: [967096] fullscreen. New button 'Fullscreen' in 'Game Options' menu which lets you set fullscreen ingame. 2004-09-21 20:56:49 +00:00
dominik 0ba58f25a4 (svn r303) Fix: [ 1022227 ] Ships could unload cargo at stations without docks 2004-09-20 19:09:06 +00:00
miham 807da4e722 (svn r302) Added initial spanish translation 2004-09-20 14:49:53 +00:00
dominik be726e5ec4 (svn r301) Fix: game options (like drive side) are not taken from the scenario when using 'new game' command 2004-09-19 23:05:09 +00:00
dominik e0d671ab5f (svn r300) Fix: order checker now correctly detects station with invalid facilities 2004-09-19 21:44:01 +00:00
miham 72bd3bd170 (svn r299) Daily langfile update -- 209 changed finnish strings 2004-09-19 20:57:31 +00:00
dominik eb445b5189 (svn r298) Fix: Engines from other climates do not appear any more when never_expire_vehicles is enabled 2004-09-19 19:56:40 +00:00
dominik a38e2d046a (svn r297) Fix (SDL): Added a confirmation dialog when quitting the game 2004-09-19 18:23:11 +00:00
miham 6cad1071c8 (svn r296) Daily langfile update. -- 519 strings missing for 3 languages 2004-09-19 16:55:09 +00:00
darkvater e2c1370d60 (svn r295) -Fix: Rewrite and fix of console stuff, including marking (XXX) of areas that require further investigation (Tron)
-Note: booby trapped some suspicous assignments (Tron)
2004-09-19 15:24:45 +00:00
darkvater 089a2a7847 (svn r294) -Fix: autorail always builds rail, instead of occasional rail removal (on pressing hotkey after pressing 'bulldozer')
-Fix: network fixes (Tron)
-Some textfile changes, mainly URL's
2004-09-18 16:40:06 +00:00
darkvater b7fd924806 (svn r293) -Feature: Windows now shows (available) revision, release information in title bar 2004-09-18 16:36:14 +00:00
darkvater c62f670bca (svn r292) -Fix: [1030275] 'Service at' orders ignored after 2090. After 2090 year is reset to 1. Jan 2090, so most of the time, last service was in the future and no service ensured. 2004-09-18 16:31:31 +00:00
bjarni d1a88cbbca (svn r291) Minor fix to english.txt
added debian support (blathijs)
improved make install (blathijs)
2004-09-18 16:29:12 +00:00
miham f5a50c0007 (svn r290) Daily langfile update. -- 519 strings missing for 3 languages 2004-09-17 21:29:24 +00:00
dominik 894bb262ad (svn r289) Fix: Checkpoints on snow have correct ground now 2004-09-17 20:56:28 +00:00
dominik ebc18e3957 (svn r288) Fix: new checkpoint graphics now also work for monorail/maglev 2004-09-17 20:49:47 +00:00
dominik da80dabe6b (svn r287) Sorry, another mistake 2004-09-17 20:34:51 +00:00
dominik 431363908e (svn r286) Sorry, little memalloc problem 2004-09-17 20:22:31 +00:00
dominik 7e882e8fa3 (svn r285) Fix: networkc.tmp will be created in user's homedir (Loki|muh) 2004-09-17 20:08:35 +00:00
dominik 9d1bf52ce3 (svn r284) Fix: on opening the saveload dialog the game pauses again in single player games 2004-09-17 17:53:34 +00:00
dominik 345003d49f (svn r283) New checkpoint graphics (drawn by Eobet and George) 2004-09-17 17:09:00 +00:00
signde f7eccfc6fe (svn r282) -Fix: decode params change accidently commited 2004-09-17 16:59:03 +00:00
signde e049bd9b2b (svn r281) -Fix: some endian issues fixed in network code 2004-09-17 16:35:56 +00:00
signde f7cfd47261 (svn r280) -Fix: ^M removement in console.c 2004-09-17 09:51:44 +00:00
signde 7693c58e28 (svn r279) -Feature: [WIN32] Console now allows to paste data from the clipboard [ctrl + v] 2004-09-17 06:06:47 +00:00
miham 78b02129c1 (svn r278) Daily langfile update. -- 546 string(s) missing for 5 languages 2004-09-17 06:02:27 +00:00
signde 0e08a8f61c (svn r277) -Fix: removed playerseeds again until it is stable 2004-09-16 18:03:29 +00:00
bjarni 5b145f4d7c (svn r276) Lang: American fixes by Pipian and removed Unfinished from Dutch :D 2004-09-16 17:27:59 +00:00
signde dae15e81d8 (svn r275) -Fix: Client accidently marked as unready when sending framesync packets. [this caused occasional timeouts]
-Codechange: now all debug messages for network games show the frame_counter [better debugging]
2004-09-16 17:02:19 +00:00
bjarni e63f6efaef (svn r274) Mac: restored extmusic to be default, which were accidently turned off by a windows music fix 2004-09-16 16:44:36 +00:00
darkvater 11545f1c4d (svn r273) -Fix: sorry, wrongly fixed 2004-09-16 15:21:24 +00:00
darkvater 1cfc877088 (svn r272) -Fix: industries are once again generated on a new map 2004-09-16 15:15:04 +00:00
dominik 21b905e963 (svn r271) another town name confusion fix 2004-09-16 10:41:56 +00:00
dominik 19533f8992 (svn r270) Fix: [ 1028851 ] automatic and unwanted city renaming 2004-09-16 10:07:52 +00:00
miham 09fcc36c9c (svn r269) Daily lf upd #1. -- <1000 strings missing from ? languages 2004-09-16 07:49:59 +00:00
signde 25b5a727e8 (svn r268) -Fix: console-command: script command now stops recording correctly
-Fix: network client should not stop sending ready packets anymore [client should not timeout without any reason]
2004-09-16 06:17:50 +00:00
darkvater cbcf002a91 (svn r267) -Fix: Moved EUR back in its place, savegames should not list Romanian Lei anymore, and 2002 currency is also to EUR again 2004-09-15 22:32:37 +00:00
truelight a69e422cdd (svn r266) -Fix: hopefully fixed the desync problem nicely (and reverted the
workaround for it)
2004-09-15 18:36:33 +00:00
miham 0346fec1ca (svn r265) Daily lf upd #1. -- 1335 strings missing from 7 languages 2004-09-15 18:01:43 +00:00
signde f15c85d508 (svn r263) -Fix: on_server.scr contained an unneeded ";"
-Fix: saving or loading a map doesnt pauses the game anymore
2004-09-15 11:53:01 +00:00
dominik 39f1c6dda3 (svn r262) Fix: [ 1028234 ] Monorail and MagLev infrastructure not available in 1920s any more 2004-09-15 06:51:23 +00:00
signde 9dcf10eb6c (svn r261) -Workaround: unplayeable network-game on busy maps because of wrong setup of _current_player. This is only a workaround that can cause desyncs too but not that often 2004-09-14 22:51:37 +00:00
dominik eaeca76e5a (svn r260) Added updated linux RPM stuff 2004-09-14 20:56:57 +00:00
darkvater a43bc5f82e (svn r259) -Fix: Installer version updated to 12. Properly commented now. Thx teeone 2004-09-14 20:35:24 +00:00
miham 937aafd6d2 (svn r258) Daily lf upd #3. -- 1433 strings missing from 7 languages 2004-09-14 20:25:52 +00:00
225 changed files with 55865 additions and 23772 deletions
-163
View File
@@ -1,163 +0,0 @@
CFILES = ai.c aircraft_cmd.c aircraft_gui.c airport_gui.c
bridge_gui.c clear_cmd.c command.c disaster_cmd.c
dock_gui.c dummy_land.c economy.c engine.c engine_gui.c
fileio.c gfx.c graph_gui.c industry_cmd.c industry_gui.c
intro_gui.c landscape.c main_gui.c minilzo.c misc.c
misc_cmd.c misc_gui.c music_gui.c namegen.c network.c
news_gui.c oldloader.c order_cmd.c order_gui.c pathfind.c
player_gui.c players.c rail_cmd.c rail_gui.c road_cmd.c
road_gui.c roadveh_cmd.c roadveh_gui.c saveload.c sdl.c
settings.c settings_gui.c ship_cmd.c ship_gui.c smallmap_gui.c
sound.c spritecache.c station_cmd.c station_gui.c
strings.c subsidy_gui.c texteff.c town_cmd.c town_gui.c
train_cmd.c train_gui.c tree_cmd.c ttd.c
tunnelbridge_cmd.c unmovable_cmd.c vehicle.c
viewport.c water_cmd.c widget.c window.c screenshot.c
airport.c grfspecial.c terraform_gui.c ;
LANGFILES = english.txt swedish.txt french.txt german.txt italian.txt slovak.txt hungarian.txt norwegian.txt danish.txt czech.txt galician.txt polish.txt romanian.txt;
####################
# On UNIX we use gcc
####################
if $(UNIX) {
SDL_CONFIG_CFLAGS = `XX_SDL_CONFIG_PLACEHOLDER_XX --cflags` ;
SDL_CONFIG_LIBS = `XX_SDL_CONFIG_PLACEHOLDER_XX --libs` ;
LINKFLAGS += $(SDL_CONFIG_LIBS) ;
CC = gcc ;
CCFLAGS += -Wall -Wno-multichar -DUNIX -DWITH_SDL ;
OPTIMFLAGS = -O2 -fomit-frame-pointer ;
DEBUGFLAGS = -g ;
# also include extmidi
CFILES += extmidi.c unix.c ;
# compile in PNG support?
if $(WITH_PNG) {
CCFLAGS += -DWITH_PNG -I$(WITH_PNG) ;
LINKFLAGS += -lpng ;
}
# compile in zlib support?
if $(WITH_ZLIB) {
CCFLAGS += -DWITH_ZLIB ;
LINKFLAGS += -lz ;
}
# compile for BeOS 5.1 and higher
if $(WITH_BONE_NETWORKING) {
CCFLAGS += -DENABLE_NETWORK ;
LINKFLAGS += -lsocket -lbind ;
}
# link in BeOS MIDI and Be API libraries
if $(BEOS_MIDI) {
CCFLAGS += -DBEOS_MIDI ;
LINKFLAGS += -lbe -lmidi ;
CFILES += bemidi.cpp ;
}
}
####################
# MSVC on Win32
####################
actions ActWin32Res {
$(VISUALC)\\..\\common\\msdev98\\bin\\rc /r /i $(STDHDRS) /fo $(<) $(>)
}
rule Win32Res { ActWin32Res $(<) : $(>) ; DEPENDS $(<) : $(>) ; }
if $(TOOLSET) = VISUALC {
OPTIMFLAGS = /Oa /Os /Ow /Oy /Oi /Og /Ox /Gr /Gf /Gy /Zp4 /J /WX /W3 -DNDEBUG ;
CCFLAGS += -DWIN32 -DWIN32_EXCEPTION_TRACKER ;
CFILES += win32.c ;
LINKFLAGS += /opt:nowin98 /LIBPATH:$(VISUALC)\\lib ;
LINKLIBS = ws2_32.lib winmm.lib user32.lib gdi32.lib ;
# compile resources too
EOBJ = ttd.res ;
Win32Res ttd.res : ttd.rc ;
# png screenshots?
if $(WITH_PNG) {
CCFLAGS += -DWITH_PNG -I$(WITH_PNG) ;
LINKLIBS += libpng.lib ;
}
# zlib savegames?
if $(WITH_ZLIB) {
CCFLAGS += -DWITH_ZLIB ;
LINKLIBS += zlibstat.lib ;
}
# build release by default
RELEASE = 1 ;
}
####################
# Common
####################
rule MyObjects {
local _i _t _s ;
_t = $(OUTDIR)/$(>:S=$(SUFOBJ)) ;
OPTIM on $(_t) = $(3) ;
MkDir $(OUTDIR) ;
Depends $(_t) : $(OUTDIR) ;
for _i in $(>) {
_s = $(OUTDIR)/$(_i:S=$(SUFOBJ)) ;
Object $(_s) : $(_i) ;
# special handling for sdl.c and unix.c
if $(_i) = sdl.c || $(_i) = unix.c { CCFLAGS on $(_s) += $(SDL_CONFIG_CFLAGS) ; }
}
MainFromObjects $(OUTDIR)/$(<) : $(_t) $(EOBJ) ;
}
rule MyMain {
if $(RELEASE) {
OUTDIR = release ;
MyObjects ttd : $(>) : $(OPTIMFLAGS) ;
} else {
OUTDIR = debug ;
MyObjects ttd : $(>) : -D_DEBUG $(DEBUGFLAGS) ;
}
}
actions CompileLang {
strgen$(SLASH)strgen $(>)
}
rule LangFile {
if $(>) = lang/english.txt {
CompileLang $(<) table/strings.h : ;
DEPENDS table/string.h : $(>) ;
} else {
CompileLang $(<) : $(>) ;
}
Clean clean : $(<) ;
DEPENDS $(<) : $(>) ;
DEPENDS all : $(<) ;
DEPENDS $(<) : strgen/strgen ;
}
rule LangFiles {
local _i ;
for _i in $(<) { LangFile $(_i:S=.lng) : $(_i) ; }
Clean clean : table/strings.h ;
}
LangFiles lang/$(LANGFILES) ;
Main strgen/strgen : strgen/strgen.c ;
MyMain ttd : $(CFILES) ;
+366 -99
View File
@@ -36,6 +36,7 @@
# mrproper: remove intermediate files and makefile configuration
# upgradeconf: add new options to old Makefile.config
# osx: OS X application
# release: used by OSX to make a dmg file ready to release
# Options:
#
@@ -44,6 +45,8 @@
# UNIX: building on *nix derivate (Linux, FreeBSD)
# OSX: building on Mac OS X
# MORPHOS: building on MorphOS
# BEOS: building on BeOS
# SUNOS: building on SunOS (Solaris)
#
# Summary of library choice defines
# WITH_ZLIB: savegames using zlib
@@ -63,16 +66,48 @@
# 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
#
# DATA_DIR_PREFIX: This sets the dir OpenTTD looks for the needed files.
# MUST END WITH / if defined
# Paths:
# INSTALL: If not set, the game uses the directory of the binary to
# store everything (lang, data, gm, save and openttd.cfg), this is the `old' behaviour.
# In this case, none of the following paths are used, you also should _not_
# use `make install', but copy the required stuff yourself (or just play out
# of you source directory, which should work fine).
# If you want to use `make install' to install the game globally, you should
# define it _before_ you build the game. If you only define INSTALL when you
# do `make install', the game won't be able to find it's files (so you should
# also define all the following paths before building).
#
# So, the following paths should be defined if INSTALL is defined.
# None of these paths have to end with /
# PREFIX: Normally /usr/local
# BINARY_DIR: The location of the binary, normally games. (Will be prefixed
# with $PREFIX)
# DATA_DIR: The location of the data (lang, data and gm), normally
# share/games/openttd. (Will be prefixed with $PREFIX)
# PERSONAL_DIR: The directory where openttd.cfg and the save folder will be
# stored. You cannot use ~ here, define USE_HOMEDIR for that.
# USE_HOMEDIR: If this variable is set, PERSONAL_DIR will be prefixed with
# ~/ at runtime (the user's homedir)
# SECOND_DATA_PATH Use this data dir if a file is not found in the data dir in the data path
# CUSTOM_LANG_PATH If this is set, it will use the path given to search for lng files
# instead of the lang dir in the data path
# NOTE: both SECOND_DATA_PATH and CUSTOM_LANG_PATH uses paths relative to where OTTD is opened
#
# DEST_DIR: make install will use this directory instead of the filesystem
# root to install its files. This should normally not be used by
# ordinary users, currently it is only used for the debian
# packaging. This value should only be set when calling `make
# install' and is not saved in Makefile.config
#
# STATIC: link statically
# CYGWIN: build in Cygwin environment
# MINGW: build with MingW compiler, link with MingW libraries
#
# Experimental (does not work properly):
# WITH_NETWORK: enable networking
# WITH_DIRECTMUSIC: enable DirectMusic MIDI support
@@ -83,7 +118,7 @@
# Makefile version tag
# it checks if the version tag in makefile.config is the same and force update outdated config files
MAKEFILE_VERSION:=1
MAKEFILE_VERSION:=6
# CONFIG_WRITER have to be found even for manual configuration
CONFIG_WRITER=makefiledir/Makefile.config_writer
@@ -127,7 +162,17 @@ endif
# this is used if there aren't any makefile.config
ifndef CONFIG_INCLUDED
ENABLE_NETWORK:=1 # sets network on by default if there aren't any config file
# sets network on by default if there aren't any config file
ENABLE_NETWORK:=1
# paths for make install
# disabled as they would break it for some (many?) people if they were default
#PREFIX:=/usr/local
#DATA_DIR:=share/games/openttd
#BINARY_DIR:=games
#PERSONAL_DIR:=.openttd
#USE_HOMEDIR:=1
-include $(LIB_DETECTION)
endif
@@ -164,11 +209,20 @@ endif
endif
endif
ifdef RELEASE
ifdef OSX
ifndef STATIC
$(error do not make dynamically linked releases. Most users can't use those)
endif
endif
endif
# Force SDL on UNIX platforms
ifndef WITH_SDL
ifdef UNIX
$(error You need to have SDL installed in order to run OpenTTD on UNIX.)
ifndef DEDICATED
$(error You need to have SDL installed in order to run OpenTTD on UNIX. Use DEDICATED if you want to compile a CLI based server)
endif
endif
endif
@@ -205,7 +259,7 @@ REV_NUMBER := $(shell if test -d .svn; then svnversion . | tr -dc 0-9; fi)
ifdef RELEASE
REV:=$(RELEASE)
else
REV := $(shell if test -d .svn; then echo -n r; svnversion .; fi)
REV := $(shell if test -d .svn; then svnversion . | awk '{ print "r"$$0 }'; fi)
tmp_test:=$(shell echo "$(REV)" | grep "M" )
ifdef tmp_test
REV_NUMBER:=1
@@ -248,6 +302,7 @@ BASECFLAGS += -g
else
ifdef PROFILE
BASECFLAGS += -pg
LDFLAGS += -pg
else
# Release mode
ifndef MORPHOS
@@ -262,7 +317,7 @@ ifdef OSX
BASECFLAGS += -O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic -mpowerpc-gpopt -force_cpusubtype_ALL $(WARNING_DISPLAY)
else
ifdef MORPHOS
BASECFLAGS += -O2 -funroll-loops -fexpensive-optimizations -mstring -mmultiple $(WARNING_DISPLAY)
BASECFLAGS += -O3 -funroll-loops -fexpensive-optimizations -mstring -mmultiple $(WARNING_DISPLAY)
else
BASECFLAGS += -O2 $(WARNING_DISPLAY)
endif
@@ -278,15 +333,17 @@ LDFLAGS += -static
endif
endif
# If building on Cygwin/MingW don't link with Cygwin libs
# If building on MingW don't link with Cygwin libs
ifdef WIN32
ifdef MINGW
ifdef CYGWIN
BASECFLAGS += -mwin32
LDFLAGS += -mwin32
endif
ifdef MINGW
BASECFLAGS += -mno-cygwin
LDFLAGS += -mno-cygwin
endif
endif
endif
CFLAGS += $(BASECFLAGS)
@@ -294,6 +351,23 @@ ifdef UNIX
CDEFS += -DUNIX
endif
ifdef BEOS
CDEFS += -DBEOS
LDFLAGS += -lmidi -lbe
ifdef WITH_NETWORK
ifdef BEOS_NET_SERVER
CDEFS += -DBEOS_NET_SERVER
endif
endif
endif
ifdef SUNOS
CDEFS += -DSUNOS
ifdef WITH_NETWORK
LDFLAGS += -lnsl -lsocket
endif
endif
# SDL config
ifdef WITH_SDL
CDEFS += -DWITH_SDL
@@ -349,25 +423,33 @@ ifdef FREEBSD
LIBS += -lpng
else
CFLAGS += `libpng-config --cflags`
ifdef OSX
ifdef STATIC
# Seems like we need a tiny hack for OSX static to work
LIBS += `libpng-config --prefix`/lib/libpng.a
else
LIBS += `libpng-config --libs`
endif
else
# seems like older libpng versions are broken and need this
PNGCONFIG_FLAGS = --ldflags --libs
ifdef STATIC
LIBS += `libpng-config --static $(PNGCONFIG_FLAGS)`
ifdef OSX
# Seems like we need a tiny hack for OSX static to work
LIBS += `libpng-config --prefix`/lib/libpng.a
else
LIBS += `libpng-config $(PNGCONFIG_FLAGS)`
LIBS += `libpng-config --static $(PNGCONFIG_FLAGS)`
endif
else
LIBS += `libpng-config --L_opts $(PNGCONFIG_FLAGS)`
endif
endif
endif
# enables/disables assert()
ifdef DISABLE_ASSERTS
CFLAGS += -DNDEBUG
endif
# automatically disables asserts for release
ifdef RELEASE
ifndef ENABLE_ASSERTS
CFLAGS += -DNDEBUG
endif
endif
ifdef TRANSLATOR
STRGEN_FLAGS=-t
@@ -375,24 +457,18 @@ else
STRGEN_FLAGS=
endif
# file paths setup
ifdef GAME_DATA_DIR
CDEFS += -DGAME_DATA_DIR=\"$(GAME_DATA_DIR)\"
endif
ifdef PERSONAL_DIR
CDEFS += -DPERSONAL_DIR=\"$(PERSONAL_DIR)\"
endif
ifdef USE_HOMEDIR
CDEFS += -DUSE_HOMEDIR
endif
# MIDI setup
ifdef OSX
ifndef MIDI
MIDI:=$(OSXAPP)/contents/macos/track_starter
endif
ifndef SECOND_DATA_PATH
SECOND_DATA_PATH:="$(OSXAPP)/contents/data/"
endif
ifndef CUSTOM_LANG_DIR
CUSTOM_LANG_DIR:="$(OSXAPP)/contents/lang/"
endif
endif
ifdef MIDI
@@ -402,9 +478,11 @@ CDEFS += -DMIDI_ARG=\"$(MIDI_ARG)\"
endif
endif
# Experimental
ifdef WITH_NETWORK
CDEFS += -DENABLE_NETWORK
ifdef QNX
LIBS += -lsocket
endif
ifdef UNIX
ifndef OSX
ifndef MORPHOS
@@ -416,6 +494,15 @@ endif
endif
endif
ifdef SECOND_DATA_PATH
CDEFS += -DSECOND_DATA_DIR=\"$(SECOND_DATA_PATH)/\"
endif
ifdef CUSTOM_LANG_DIR
CDEFS += -DCUSTOM_LANG_DIR=\"$(CUSTOM_LANG_DIR)/\"
endif
ifdef WITH_DIRECTMUSIC
CDEFS += -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT
endif
@@ -426,15 +513,27 @@ TTDLDFLAGS += -Wl,--subsystem,windows
endif
# sets up the paths for use for make install
ifdef BINARY_DIR
BINARY_INSTALL:=$(BINARY_DIR)$(TTD)
else
BINARY_INSTALL:=$(INSTALL_DIR)$(TTD)
ifdef INSTALL
# We use _PREFIXED vars here, so the paths are recalculated every time, and
# the prefix is not prepended in the makefile config
BINARY_DIR_PREFIXED:=$(PREFIX)/$(BINARY_DIR)
DATA_DIR_PREFIXED:=$(PREFIX)/$(DATA_DIR)
# We use _INSTALL vars here, these vars are the locations where the files will
# be installed
DATA_DIR_INSTALL=$(DEST_DIR)/$(DATA_DIR_PREFIXED)
BINARY_DIR_INSTALL=$(DEST_DIR)/$(BINARY_DIR_PREFIXED)
# Let the code know where to find stuff
ifdef DATA_DIR_PREFIXED
CDEFS += -DGAME_DATA_DIR=\"$(DATA_DIR_PREFIXED)/\"
endif
ifdef PERSONAL_DIR
CDEFS += -DPERSONAL_DIR=\"$(PERSONAL_DIR)/\"
endif
ifdef USE_HOMEDIR
CDEFS += -DUSE_HOMEDIR
endif
ifdef DATA_DIR_PREFIX
DATA_DIR:=$(DATA_DIR_PREFIX)
else
DATA_DIR:=$(INSTALL_DIR)
endif
##############################################################################
@@ -446,33 +545,117 @@ endif
### Sources
ttd_SOURCES = \
ai.c ai_build.c ai_new.c ai_pathfinder.c ai_shared.c aircraft_cmd.c \
aircraft_gui.c airport.c airport_gui.c aystar.c bridge_gui.c \
clear_cmd.c command.c console.c console_cmds.c disaster_cmd.c dock_gui.c dummy_land.c economy.c \
engine.c engine_gui.c fileio.c gfx.c graph_gui.c grfspecial.c \
industry_cmd.c industry_gui.c intro_gui.c landscape.c main_gui.c \
minilzo.c misc.c misc_cmd.c misc_gui.c music_gui.c namegen.c network.c \
network_gui.c news_gui.c oldloader.c order_cmd.c order_gui.c \
pathfind.c player_gui.c players.c queue.c rail_cmd.c rail_gui.c rev.c \
road_cmd.c road_gui.c roadveh_cmd.c roadveh_gui.c saveload.c \
screenshot.c settings.c settings_gui.c ship_cmd.c ship_gui.c \
smallmap_gui.c sound.c spritecache.c station_cmd.c station_gui.c \
strings.c subsidy_gui.c terraform_gui.c texteff.c town_cmd.c \
town_gui.c train_cmd.c train_gui.c tree_cmd.c ttd.c tunnelbridge_cmd.c \
unmovable_cmd.c vehicle.c vehicle_gui.c viewport.c water_cmd.c widget.c window.c \
C_SOURCES += ai.c
C_SOURCES += ai_build.c
C_SOURCES += ai_new.c
C_SOURCES += ai_pathfinder.c
C_SOURCES += ai_shared.c
C_SOURCES += aircraft_cmd.c
C_SOURCES += aircraft_gui.c
C_SOURCES += airport.c
C_SOURCES += airport_gui.c
C_SOURCES += aystar.c
C_SOURCES += bridge_gui.c
C_SOURCES += callback_table.c
C_SOURCES += clear_cmd.c
C_SOURCES += command.c
C_SOURCES += console.c
C_SOURCES += console_cmds.c
C_SOURCES += dedicated.c
C_SOURCES += disaster_cmd.c
C_SOURCES += dock_gui.c
C_SOURCES += dummy_land.c
C_SOURCES += economy.c
C_SOURCES += engine.c
C_SOURCES += engine_gui.c
C_SOURCES += fileio.c
C_SOURCES += gfx.c
C_SOURCES += graph_gui.c
C_SOURCES += newgrf.c
C_SOURCES += industry_cmd.c
C_SOURCES += industry_gui.c
C_SOURCES += intro_gui.c
C_SOURCES += landscape.c
C_SOURCES += main_gui.c
C_SOURCES += map.c
C_SOURCES += md5.c
C_SOURCES += minilzo.c
C_SOURCES += misc.c
C_SOURCES += misc_cmd.c
C_SOURCES += misc_gui.c
C_SOURCES += music_gui.c
C_SOURCES += namegen.c
C_SOURCES += network.c
C_SOURCES += network_client.c
C_SOURCES += network_data.c
C_SOURCES += network_gamelist.c
C_SOURCES += network_gui.c
C_SOURCES += network_server.c
C_SOURCES += network_udp.c
C_SOURCES += news_gui.c
C_SOURCES += oldloader.c
C_SOURCES += order_cmd.c
C_SOURCES += order_gui.c
C_SOURCES += pathfind.c
C_SOURCES += player_gui.c
C_SOURCES += players.c
C_SOURCES += queue.c
C_SOURCES += rail_cmd.c
C_SOURCES += rail_gui.c
C_SOURCES += rev.c
C_SOURCES += road_cmd.c
C_SOURCES += road_gui.c
C_SOURCES += roadveh_cmd.c
C_SOURCES += roadveh_gui.c
C_SOURCES += saveload.c
C_SOURCES += screenshot.c
C_SOURCES += settings.c
C_SOURCES += settings_gui.c
C_SOURCES += ship_cmd.c
C_SOURCES += ship_gui.c
C_SOURCES += smallmap_gui.c
C_SOURCES += sound.c
C_SOURCES += sprite.c
C_SOURCES += spritecache.c
C_SOURCES += station_cmd.c
C_SOURCES += station_gui.c
C_SOURCES += strings.c
C_SOURCES += subsidy_gui.c
C_SOURCES += terraform_gui.c
C_SOURCES += texteff.c
C_SOURCES += town_cmd.c
C_SOURCES += town_gui.c
C_SOURCES += train_cmd.c
C_SOURCES += train_gui.c
C_SOURCES += tree_cmd.c
C_SOURCES += ttd.c
C_SOURCES += tunnelbridge_cmd.c
C_SOURCES += unmovable_cmd.c
C_SOURCES += vehicle.c
C_SOURCES += vehicle_gui.c
C_SOURCES += viewport.c
C_SOURCES += water_cmd.c
C_SOURCES += widget.c
C_SOURCES += window.c
CXX_SOURCES =
ifdef WITH_SDL
ttd_SOURCES += sdl.c
C_SOURCES += sdl.c
endif
ifdef WIN32
ttd_SOURCES += win32.c w32dm.c
C_SOURCES += win32.c w32dm.c
else
ttd_SOURCES += extmidi.c unix.c
C_SOURCES += extmidi.c unix.c
endif
ttd_OBJS = $(ttd_SOURCES:%.c=%.o)
ttd_OBJS = $(C_SOURCES:%.c=%.o) $(CXX_SOURCES:%.cpp=%.o)
ifdef BEOS
CXX_SOURCES += os/beos/bemidi.cpp
CFLAGS += -I.
endif
ifdef WIN32
# Resource file
@@ -480,8 +663,7 @@ ttd_OBJS += winres.o
endif
ifdef WITH_DIRECTMUSIC
ttd_SOURCES += w32dm2.cpp
ttd_OBJS += w32dm2.o
CXX_SOURCES += w32dm2.cpp
endif
ttd_DEPS1 = $(foreach obj,$(ttd_OBJS),.deps/$(obj))
@@ -514,7 +696,7 @@ OSX:=OSX
endif
all: endian.h $(UPDATECONFIG) $(TTD) $(OSX) $(endwarnings)
all: endian.h $(UPDATECONFIG) $(LANGS) $(TTD) $(OSX) $(endwarnings)
endian.h: $(ENDIAN_CHECK)
@# Check if system is LITTLE_ENDIAN or BIG_ENDIAN
@@ -526,21 +708,26 @@ $(ENDIAN_CHECK): endian_check.c
$(CC) $(BASECFLAGS) $(CDEFS) endian_check.c -o $@
$(TTD): table/strings.h $(ttd_OBJS) $(LANGS) $(MAKE_CONFIG)
@echo 'Compiling and Linking $@'; \
$(C_LINK) $@ $(TTDLDFLAGS) $(ttd_OBJS) $(LIBS) $(VERBOSE_FILTER)
$(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)
$(OSX):
@mkdir -p $(OSXAPP)/Contents/MacOS
@mkdir -p $(OSXAPP)/Contents/Resources
@echo "APPL????" > $(OSXAPP)/Contents/PkgInfo
@cp os/macos/ttd.icns $(OSXAPP)/Contents/Resources/openttd.icns
@os/macos/plistgen.sh $(OSXAPP) $(REV)
@cp os/macos/track_starter $(OSXAPP)/contents/macos
$(OSX): $(TTD)
@rm -fr "$(OSXAPP)"
@mkdir -p "$(OSXAPP)"/Contents/MacOS
@mkdir -p "$(OSXAPP)"/Contents/Resources
@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
@os/macos/plistgen.sh "$(OSXAPP)" "$(REV)"
@cp os/macos/track_starter "$(OSXAPP)"/contents/macos
@ls os/macos | grep -q "\.class" || \
javac os/macos/OpenTTDMidi.java
@cp os/macos/OpenTTDMidi.class $(OSXAPP)/contents/macos
@cp $(TTD) $(OSXAPP)/Contents/MacOS/$(TTD)
@cp os/macos/OpenTTDMidi.class "$(OSXAPP)"/contents/macos
@cp data/* "$(OSXAPP)"/Contents/data/
@cp lang/*.lng "$(OSXAPP)"/Contents/lang/
@cp $(TTD) "$(OSXAPP)"/Contents/MacOS/$(TTD)
$(endwarnings): $(64_bit_warnings)
@@ -548,31 +735,94 @@ $(64_bit_warnings):
$(warning 64 bit CPUs will get some 64 bit specific bugs!)
$(warning If you see any bugs, include in your bug report that you use a 64 bit CPU)
$(STRGEN): strgen/strgen.c rev.o
$(STRGEN): strgen/strgen.c endian.h
@echo 'Compiling and Linking $@'; \
$(CC) $(BASECFLAGS) $(CDEFS) -o $@ $^ $(VERBOSE_FILTER)
$(CC) $(BASECFLAGS) $(CDEFS) -o $@ $< $(VERBOSE_FILTER)
lang/english.lng: lang/english.txt $(STRGEN)
table/strings.h: lang/english.txt $(STRGEN)
@echo 'Generating $@'; \
$(STRGEN)
table/strings.h: lang/english.lng
lang/%.lng: lang/%.txt $(STRGEN)
lang/%.lng: lang/%.txt $(STRGEN) lang/english.txt
@echo 'Generating $@'; \
$(STRGEN) $(STRGEN_FLAGS) $< $(VERBOSE_FILTER) $(LANG_ERRORS)
winres.o: ttd.rc
windres -o $@ $<
ifdef MORPHOS
release: all
@rm -fr "/t/openttd-$(RELEASE)-morphos.lha"
@mkdir -p "/t/"
@mkdir -p "/t/openttd-$(RELEASE)-morphos"
@mkdir -p "/t/openttd-$(RELEASE)-morphos/docs"
@mkdir -p "/t/openttd-$(RELEASE)-morphos/data"
@mkdir -p "/t/openttd-$(RELEASE)-morphos/lang"
@cp -R $(TTD) "/t/openttd-$(RELEASE)-morphos/"
@cp data/* "/t/openttd-$(RELEASE)-morphos/data/"
@cp lang/*.lng "/t/openttd-$(RELEASE)-morphos/lang/"
@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 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"
@cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/ReadMe.info"
@cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/Console.info"
@cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/COPYING.info"
@cp os/morphos/icons/document.info "/t/openttd-$(RELEASE)-morphos/docs/ChangeLog.info"
@strip --strip-all --strip-unneeded --remove-section .comment "/t/openttd-$(RELEASE)-morphos/$(TTD)"
@lha a -r "t:openttd-$(RELEASE)-morphos.lha" "t:openttd-$(RELEASE)-morphos"
@lha a "t:openttd-$(RELEASE)-morphos.lha" "t:openttd-$(RELEASE)-morphos.info"
@rm -fr "/t/openttd-$(RELEASE)-morphos"
@rm -fr "/t/openttd-$(RELEASE)-morphos.info"
@echo "Release archive can be found in RAM:t/ now."
.PHONY: release
endif
ifdef OSX
release: all
@mkdir -p "OpenTTD $(RELEASE)"
@mkdir -p "OpenTTD $(RELEASE)"/docs
@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/
@cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD $(RELEASE)"/docs/readme\ if\ crashed\ on\ OSX.txt
@cp docs/console.txt "OpenTTD $(RELEASE)"/docs/
@cp COPYING "OpenTTD $(RELEASE)"/docs/
@cp changelog.txt "OpenTTD $(RELEASE)"/docs/
@cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD $(RELEASE)"/docs/
@cp os/macos/*.webloc "OpenTTD $(RELEASE)"
@/usr/bin/hdiutil create -ov -format UDZO -srcfolder "OpenTTD $(RELEASE)" openttd-"$(RELEASE)"-osx.dmg
@rm -fr "OpenTTD $(RELEASE)"
nightly_build: all
@mkdir -p "OpenTTD_nightly_$(DATE)"
@mkdir -p "OpenTTD_nightly_$(DATE)"/docs
@cp -R $(OSXAPP) "OpenTTD_nightly_$(DATE)"/
@cp docs/OSX_where_did_the_package_go.txt "OpenTTD_nightly_$(DATE)"/Where\ did\ the\ package\ go.txt
@cp readme.txt "OpenTTD_nightly_$(DATE)"/docs/
@cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD_nightly_$(DATE)"/docs/readme\ if\ crashed\ on\ OSX.txt
@cp docs/console.txt "OpenTTD_nightly_$(DATE)"/docs/
@cp COPYING "OpenTTD_nightly_$(DATE)"/docs/
@cp revisionlog.txt "OpenTTD_nightly_$(DATE)"/revisionlog.txt
@cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD_nightly_$(DATE)"/docs/
@cp os/macos/*.webloc "OpenTTD_nightly_$(DATE)"/
@/usr/bin/hdiutil create -ov -format UDZO -srcfolder "OpenTTD_nightly_$(DATE)" openttd-nightly-"$(DATE)".dmg
@rm -fr "OpenTTD_nightly_$(DATE)"
.PHONY: release nightly_build
endif
rev.c: FORCE
@# setting the revision number in a place, there the binary can read it
@echo 'const char _openttd_revision[] = "'$(REV)'";' >>rev.c.new
@echo 'const char _openttd_revision[] = "$(REV)";' >>rev.c.new
@echo 'const int _revision_number = $(REV_NUMBER);' >>rev.c.new
@# some additions for MorphOS versions tag
@echo '#ifdef __MORPHOS__' >>rev.c.new
@echo 'const char morphos_versions_tag[] = "\\0$$VER: OpenTTD '$(REV)' ('${BUILDDATE}') © OpenTTD Team [MorphOS, PowerPC]";' >>rev.c.new
@echo 'const char morphos_versions_tag[] = "\\0$$VER: OpenTTD $(REV) ('${BUILDDATE}') © OpenTTD Team [MorphOS, PowerPC]";' >>rev.c.new
@echo '#endif' >>rev.c.new
@# Only update the real rev.c if it actually changed, to prevent
@# useless rebuilds.
@@ -582,11 +832,9 @@ rev.c: FORCE
FORCE:
# ttd$(EXE) is removed just to make sure people execute the right binary (openttd$(EXE))
# remove this for next release!
clean:
@echo 'Cleaning up...'; \
rm -rf .deps *~ $(TTD) $(STRGEN) core table/strings.h $(LANGS) $(ttd_OBJS) endian.h $(ENDIAN_CHECK) ttd$(EXE)
rm -rf .deps *~ $(TTD) $(STRGEN) core table/strings.h $(LANGS) $(ttd_OBJS) endian.h $(ENDIAN_CHECK)
mrproper: clean
rm -rf $(MAKE_CONFIG)
@@ -594,15 +842,34 @@ mrproper: clean
ifndef OSX
ifndef MORPHOS
install:
@if [ "$(INSTALL)" == "" ]; then $(error make install is highly experimental at his state and not\
ifeq ($(INSTALL),)
$(error make install is highly experimental at his state and not\
tested very much - use at your own risk - to use run \"make install INSTALL:=1\" - make sure makefile.config\
is set correctly up - run \"make upgradeconf\")
@if [ "$(DATA_DIR)" == "" ]; then $(error no install path set - check makefile.config)
mkdir -p $(DATA_DIR)/lang
mkdir -p $(DATA_DIR)/data
cp $(TTD) $(BINARY_INSTALL)
cp lang/*.lng $(DATA_DIR)/lang
cp data/*.grf $(DATA_DIR)/data
endif
ifeq ($(PREFIX), )
$(error no prefix set - check makefile.config)
endif
# We compare against the non prefixed version here, so we won't install
# if only the prefix has been set
ifeq ($(DATA_DIR),)
$(error no data path set - check makefile.config)
endif
ifeq ($(BINARY_DIR),)
$(error no binary path set - check makefile.config)
endif
# We'll install in $DEST_DIR instead of root if it is set (we don't
# care about extra /'s
mkdir -p $(DATA_DIR_INSTALL)/lang
mkdir -p $(DATA_DIR_INSTALL)/data
mkdir -p $(DATA_DIR_INSTALL)/gm
mkdir -p $(BINARY_DIR_INSTALL)
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)
else #MorphOS
install:
$(error make install is not supported on MorphOS)
@@ -648,8 +915,8 @@ DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
#@echo '$(C_BUILD) $<'; \
%.o: %.c $(MAKE_CONFIG)
@echo 'Compiling $(*F).o'; \
%.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)
@-cp .deps/$(*F).pp .deps/$(*F).P; \
tr ' ' '\012' < .deps/$(*F).pp \
@@ -657,6 +924,6 @@ DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
>> .deps/$(*F).P; \
rm .deps/$(*F).pp
# For DirectMusic build
%.o: %.cpp $(MAKE_CONFIG)
$(CXX_BUILD) $<
# For DirectMusic build and BeOS specific parts
%.o: %.cpp $(MAKE_CONFIG) endian.h table/strings.h
$(CXX_BUILD) $< -o $@
+87 -51
View File
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include "player.h"
#include "vehicle.h"
#include "engine.h"
@@ -113,25 +114,19 @@ static void AiStateVehLoop(Player *p)
p->ai.state_counter = 0;
}
// XXX
static const byte _rail_locos_count[3] = {
27, 3, 5
};
extern const byte _rail_engines_start[3];
static int AiChooseTrainToBuild(byte railtype, int32 money, byte flag)
{
int best_veh_index = -1;
byte best_veh_score = 0;
int32 r;
int i;
int i = _rail_engines_start[railtype];
int end = i + _rail_locos_count[railtype];
Engine *e = &_engines[i];
do {
assert(!(_rail_vehicle_info[i].flags & RVI_WAGON));
for (i = 0; i < NUM_TRAIN_ENGINES; i++) {
const RailVehicleInfo *rvi = RailVehInfo(i);
Engine *e = DEREF_ENGINE(i);
if (!HASBIT(e->player_avail, _current_player) || e->reliability < 0x8A3D)
if (e->railtype != railtype || rvi->flags & RVI_WAGON
|| !HASBIT(e->player_avail, _current_player) || e->reliability < 0x8A3D)
continue;
r = DoCommandByTile(0, i, 0, 0, CMD_BUILD_RAIL_VEHICLE);
@@ -142,7 +137,7 @@ static int AiChooseTrainToBuild(byte railtype, int32 money, byte flag)
best_veh_score = _cmd_build_rail_veh_score;
best_veh_index = i;
}
} while (++e, ++i != end);
}
return best_veh_index;
}
@@ -254,7 +249,7 @@ static int AiChooseShipToReplaceWith(Player *p, Vehicle *v)
static void AiHandleGotoDepot(Player *p, int cmd)
{
if ((p->ai.cur_veh->next_order & OT_MASK) != OT_GOTO_DEPOT)
if (p->ai.cur_veh->current_order.type != OT_GOTO_DEPOT)
DoCommandByTile(0, p->ai.cur_veh->index, 0, DC_EXEC, cmd);
if (++p->ai.state_counter <= 1387) {
@@ -262,18 +257,20 @@ static void AiHandleGotoDepot(Player *p, int cmd)
return;
}
if ((p->ai.cur_veh->next_order&OT_MASK) == OT_GOTO_DEPOT) {
p->ai.cur_veh->next_order = OT_DUMMY;
if (p->ai.cur_veh->current_order.type == OT_GOTO_DEPOT) {
p->ai.cur_veh->current_order.type = OT_DUMMY;
p->ai.cur_veh->current_order.flags = 0;
InvalidateWindow(WC_VEHICLE_VIEW, p->ai.cur_veh->index);
}
}
static void AiRestoreVehicleOrders(Vehicle *v, BackuppedOrders *bak)
{
uint16 *os = bak->order, ord;
const Order *os = bak->order;
int ind = 0;
while ((ord = *os++) != 0) {
if (DoCommandByTile(0, v->index + (ind << 16), ord, DC_EXEC, CMD_INSERT_ORDER) == CMD_ERROR)
while (os++->type != OT_NOTHING) {
if (DoCommandByTile(0, v->index + (ind << 16), PackOrder(os), DC_EXEC, CMD_INSERT_ORDER) == CMD_ERROR)
break;
ind++;
}
@@ -1534,6 +1531,7 @@ static bool AiCheckTrackResources(TileIndex tile, const AiDefaultBlockData *p, b
uint values[NUM_CARGO];
int w,h;
uint tile2;
int rad;
for(;p->mode != 4;p++) if (p->mode == 1) {
tile2 = TILE_ADD(tile, p->tileoffs);
@@ -1542,11 +1540,18 @@ static bool AiCheckTrackResources(TileIndex tile, const AiDefaultBlockData *p, b
h = ((p->attr>>4) & 7);
if (p->attr&1) intswap(w, h);
if (_patches.modified_catchment) {
rad = CA_TRAIN;
} else {
rad = 4;
}
if (cargo & 0x80) {
GetProductionAroundTiles(values, tile2, w, h);
GetProductionAroundTiles(values, tile2, w, h, rad);
return values[cargo & 0x7F] != 0;
} else {
GetAcceptanceAroundTiles(values, tile2, w, h);
GetAcceptanceAroundTiles(values, tile2, w, h, rad);
if (!(values[cargo] & ~7))
return false;
if (cargo != CT_MAIL)
@@ -1942,7 +1947,7 @@ static bool AiCheckRailPathBetter(AiRailFinder *arf, const byte *p)
return better;
}
static void FORCEINLINE AiCheckBuildRailBridgeHere(AiRailFinder *arf, TileIndex tile, const byte *p)
static inline void AiCheckBuildRailBridgeHere(AiRailFinder *arf, TileIndex tile, const byte *p)
{
TileIndex tile_new;
bool flag;
@@ -1982,7 +1987,7 @@ static void FORCEINLINE AiCheckBuildRailBridgeHere(AiRailFinder *arf, TileIndex
}
}
static void FORCEINLINE AiCheckBuildRailTunnelHere(AiRailFinder *arf, TileIndex tile, const byte *p)
static inline void AiCheckBuildRailTunnelHere(AiRailFinder *arf, TileIndex tile, const byte *p)
{
FindLandscapeHeightByTile(&arf->ti, tile);
@@ -2421,15 +2426,20 @@ handle_nocash:
for(i=0; p->ai.order_list_blocks[i] != 0xFF; i++) {
AiBuildRec *aib = (&p->ai.src) + p->ai.order_list_blocks[i];
uint flags = (AiGetStationIdByDef(aib->use_tile, aib->cur_building_rule) << 8) + OT_GOTO_STATION;
bool is_pass = (p->ai.cargo_type == CT_PASSENGERS ||
p->ai.cargo_type == CT_MAIL ||
(_opt.landscape==LT_NORMAL && p->ai.cargo_type == CT_VALUABLES));
Order order;
if (!is_pass && i == 1) flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0)) flags |= OF_FULL_LOAD;
order.type = OT_GOTO_STATION;
order.flags = 0;
order.station = AiGetStationIdByDef(aib->use_tile, aib->cur_building_rule);
DoCommandByTile(0, loco_id + (i << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
if (!is_pass && i == 1) order.flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0))
order.flags |= OF_FULL_LOAD;
DoCommandByTile(0, loco_id + (i << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
}
DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_TRAIN);
@@ -2471,16 +2481,24 @@ static void AiStateDeleteRailBlocks(Player *p)
static bool AiCheckRoadResources(TileIndex tile, const AiDefaultBlockData *p, byte cargo)
{
uint values[NUM_CARGO];
int rad;
if (_patches.modified_catchment) {
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);
if (cargo & 0x80) {
GetProductionAroundTiles(values, tile2, 1, 1);
GetProductionAroundTiles(values, tile2, 1, 1, rad);
return values[cargo & 0x7F] != 0;
} else {
GetAcceptanceAroundTiles(values, tile2, 1, 1);
GetAcceptanceAroundTiles(values, tile2, 1, 1, rad);
return (values[cargo]&~7) != 0;
}
}
@@ -2772,7 +2790,7 @@ static const uint16 _ai_road_table_and[4] = {
0x2A00,
};
bool AiCheckRoadFinished(Player *p)
static bool AiCheckRoadFinished(Player *p)
{
AiRoadEnum are;
uint tile;
@@ -2819,7 +2837,7 @@ static bool AiBuildRoadHelper(uint tile, int flags, int type)
return DoCommandByTile(tile, _road_bits[type], 0, flags, CMD_BUILD_ROAD) != CMD_ERROR;
}
static void FORCEINLINE AiCheckBuildRoadBridgeHere(AiRoadFinder *arf, TileIndex tile, const byte *p)
static inline void AiCheckBuildRoadBridgeHere(AiRoadFinder *arf, TileIndex tile, const byte *p)
{
TileIndex tile_new;
bool flag;
@@ -2859,7 +2877,7 @@ static void FORCEINLINE AiCheckBuildRoadBridgeHere(AiRoadFinder *arf, TileIndex
}
}
static void FORCEINLINE AiCheckBuildRoadTunnelHere(AiRoadFinder *arf, TileIndex tile, const byte *p)
static inline void AiCheckBuildRoadTunnelHere(AiRoadFinder *arf, TileIndex tile, const byte *p)
{
FindLandscapeHeightByTile(&arf->ti, tile);
@@ -3168,15 +3186,20 @@ static void AiStateBuildRoadVehicles(Player *p)
for(i=0; p->ai.order_list_blocks[i] != 0xFF; i++) {
AiBuildRec *aib = (&p->ai.src) + p->ai.order_list_blocks[i];
uint flags = (AiGetStationIdFromRoadBlock(aib->use_tile, aib->cur_building_rule) << 8) + OT_GOTO_STATION;
bool is_pass = (p->ai.cargo_type == CT_PASSENGERS ||
p->ai.cargo_type == CT_MAIL ||
(_opt.landscape==LT_NORMAL && p->ai.cargo_type == CT_VALUABLES));
Order order;
if (!is_pass && i == 1) flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0)) flags |= OF_FULL_LOAD;
order.type = OT_GOTO_STATION;
order.flags = 0;
order.station = AiGetStationIdFromRoadBlock(aib->use_tile, aib->cur_building_rule);
DoCommandByTile(0, loco_id + (i << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
if (!is_pass && i == 1) order.flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0))
order.flags |= OF_FULL_LOAD;
DoCommandByTile(0, loco_id + (i << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
}
DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_ROADVEH);
@@ -3330,16 +3353,23 @@ static bool AiCheckAirportResources(TileIndex tile, const AiDefaultBlockData *p,
uint values[NUM_CARGO];
int w,h;
uint tile2;
int rad;
if (_patches.modified_catchment) {
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);
w = _airport_size_x[p->attr];
h = _airport_size_y[p->attr];
if (cargo & 0x80) {
GetProductionAroundTiles(values, tile2, w, h);
GetProductionAroundTiles(values, tile2, w, h, rad);
return values[cargo & 0x7F] != 0;
} else {
GetAcceptanceAroundTiles(values, tile2, w, h);
GetAcceptanceAroundTiles(values, tile2, w, h, rad);
return values[cargo] >= 8;
}
}
@@ -3478,13 +3508,18 @@ static void AiStateBuildAircraftVehicles(Player *p)
for(i=0; p->ai.order_list_blocks[i] != 0xFF; i++) {
AiBuildRec *aib = (&p->ai.src) + p->ai.order_list_blocks[i];
uint flags = (AiGetStationIdFromAircraftBlock(aib->use_tile, aib->cur_building_rule) << 8) + OT_GOTO_STATION;
bool is_pass = (p->ai.cargo_type == CT_PASSENGERS || p->ai.cargo_type == CT_MAIL);
Order order;
if (!is_pass && i == 1) flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0)) flags |= OF_FULL_LOAD;
order.type = OT_GOTO_STATION;
order.flags = 0;
order.station = AiGetStationIdFromAircraftBlock(aib->use_tile, aib->cur_building_rule);
DoCommandByTile(0, loco_id + (i << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
if (!is_pass && i == 1) order.flags |= OF_UNLOAD;
if (p->ai.num_want_fullload != 0 && (is_pass || i == 0))
order.flags |= OF_FULL_LOAD;
DoCommandByTile(0, loco_id + (i << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
}
DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_AIRCRAFT);
@@ -3525,7 +3560,7 @@ static void AiStateSellVeh(Player *p)
if (v->type == VEH_Train) {
if (!IsTrainDepotTile(v->tile) || v->u.rail.track != 0x80 || !(v->vehstatus&VS_STOPPED)) {
if ((v->next_order & OT_MASK) != OT_GOTO_DEPOT)
if (v->current_order.type != OT_GOTO_DEPOT)
DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_TRAIN_GOTO_DEPOT);
goto going_to_depot;
}
@@ -3535,7 +3570,7 @@ static void AiStateSellVeh(Player *p)
} else if (v->type == VEH_Road) {
if (!IsRoadDepotTile(v->tile) || v->u.road.state != 254 || !(v->vehstatus&VS_STOPPED)) {
if ((v->next_order & OT_MASK) != OT_GOTO_DEPOT)
if (v->current_order.type != OT_GOTO_DEPOT)
DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_SEND_ROADVEH_TO_DEPOT);
goto going_to_depot;
}
@@ -3543,7 +3578,7 @@ static void AiStateSellVeh(Player *p)
DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_SELL_ROAD_VEH);
} else if (v->type == VEH_Aircraft) {
if (!IsAircraftHangarTile(v->tile) && !(v->vehstatus&VS_STOPPED)) {
if ((v->next_order & OT_MASK) != OT_GOTO_DEPOT)
if (v->current_order.type != OT_GOTO_DEPOT)
DoCommandByTile(0, v->index, 0, DC_EXEC, CMD_SEND_AIRCRAFT_TO_HANGAR);
goto going_to_depot;
}
@@ -3560,8 +3595,9 @@ going_to_depot:;
if (++p->ai.state_counter <= 832)
return;
if ((v->next_order&OT_MASK) == OT_GOTO_DEPOT) {
v->next_order = OT_DUMMY;
if (v->current_order.type == OT_GOTO_DEPOT) {
v->current_order.type = OT_DUMMY;
v->current_order.flags = 0;
InvalidateWindow(WC_VEHICLE_VIEW, v->index);
}
return_to_loop:;
@@ -3572,7 +3608,7 @@ static void AiStateRemoveStation(Player *p)
{
// Remove stations that aren't in use by any vehicle
byte in_use[256], *used;
uint16 *ord;
Order *ord;
Station *st;
uint tile;
@@ -3581,9 +3617,9 @@ 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++) {
if ((*ord & OT_MASK) == OT_GOTO_STATION)
in_use[*ord >> 8] = 1;
for (ord = _order_array; ord != _ptr_to_next_order; ++ord) {
if (ord->type == OT_GOTO_STATION)
in_use[ord->station] = 1;
}
// Go through all stations and delete those that aren't in use
+1
View File
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include "command.h"
#include "ai.h"
#include "engine.h"
+37 -30
View File
@@ -15,6 +15,8 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "command.h"
#include "ai.h"
#include "town.h"
@@ -496,17 +498,18 @@ static void AiNew_State_LocateRoute(Player *p) {
static bool AiNew_CheckVehicleStation(Player *p, Station *st) {
int count = 0;
Vehicle *v;
uint16 *sched;
uint16 ord;
// Also check if we don't have already a lot of busses to this city...
FOR_ALL_VEHICLES(v) {
if (v->owner == _current_player) {
sched = v->schedule_ptr;
while (sched != NULL && (ord=*sched++) != 0) {
if ((ord & OT_MASK) == OT_GOTO_STATION && DEREF_STATION(ord >> 8) == st) {
// This vehicle has this city in his list
count++;
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++;
}
}
}
}
@@ -516,9 +519,6 @@ static bool AiNew_CheckVehicleStation(Player *p, Station *st) {
return true;
}
extern const byte _roadveh_speed[88];
extern const byte _roadveh_capacity[88];
// This function finds a good spot for a station
static void AiNew_State_FindStation(Player *p) {
TileIndex tile;
@@ -570,7 +570,7 @@ static void AiNew_State_FindStation(Player *p) {
if (p->ainew.tbt == AI_BUS && (FACIL_BUS_STOP & st->facilities) == FACIL_BUS_STOP) {
if (st->town == town) {
// Check how much cargo there is left in the station
if ((st->goods[p->ainew.cargo].waiting_acceptance & 0xFFF) > _roadveh_capacity[i-ROAD_ENGINES_INDEX] * AI_STATION_REUSE_MULTIPLER) {
if ((st->goods[p->ainew.cargo].waiting_acceptance & 0xFFF) > RoadVehInfo(i)->capacity * AI_STATION_REUSE_MULTIPLER) {
if (AiNew_CheckVehicleStation(p, st)) {
// We did found a station that was good enough!
new_tile = st->xy;
@@ -612,7 +612,8 @@ static void AiNew_State_FindStation(Player *p) {
if (IS_TILETYPE(new_tile, MP_CLEAR) || IS_TILETYPE(new_tile, MP_TREES)) {
// This tile we can build on!
// Check acceptance
GetAcceptanceAroundTiles(accepts, new_tile, 1, 1);
// XXX - Get the catchment area
GetAcceptanceAroundTiles(accepts, new_tile, 1, 1, 4);
// >> 3 == 0 means no cargo
if (accepts[p->ainew.cargo] >> 3 == 0) continue;
// See if we can build the station
@@ -829,11 +830,10 @@ static int AiNew_HowManyVehicles(Player *p) {
// Passenger run.. how long is the route?
length = p->ainew.path_info.route_length;
// Calculating tiles a day a vehicle moves is not easy.. this is how it must be done!
// ROAD_ENGINES_INDEX is because the first roadveh engine is ROAD_ENGINES_INDEX, and _roadveh_speed starts from 0
tiles_a_day = _roadveh_speed[i-ROAD_ENGINES_INDEX] * DAY_TICKS / 256 / 16;
tiles_a_day = RoadVehInfo(i)->max_speed * DAY_TICKS / 256 / 16;
// We want a vehicle in a station once a month at least, so, calculate it!
// (the * 2 is because we have 2 stations ;))
amount = ((int)(((float)length / (float)tiles_a_day / 30 * 2))) * 2;
amount = length * 2 * 2 / tiles_a_day / 30;
if (amount == 0) amount = 1;
return amount;
} else if (p->ainew.tbt == AI_TRUCK) {
@@ -845,8 +845,7 @@ static int AiNew_HowManyVehicles(Player *p) {
// Passenger run.. how long is the route?
length = p->ainew.path_info.route_length;
// Calculating tiles a day a vehicle moves is not easy.. this is how it must be done!
// ROAD_ENGINES_INDEX is because the first roadveh engine is ROAD_ENGINES_INDEX, and _roadveh_speed starts from 0
tiles_a_day = _roadveh_speed[i-ROAD_ENGINES_INDEX] * DAY_TICKS / 256 / 16;
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];
else
@@ -857,7 +856,7 @@ static int AiNew_HowManyVehicles(Player *p) {
// 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
// to get back here.. now let's do some math!
amount = (int)(((float)length / (float)tiles_a_day / 30 * 2) * ((float)max_cargo / (float)_roadveh_capacity[i-ROAD_ENGINES_INDEX]));
amount = 2 * length * max_cargo / tiles_a_day / 30 / RoadVehInfo(i)->capacity;
amount += 1;
return amount;
} else {
@@ -1117,7 +1116,9 @@ static void AiNew_State_BuildVehicle(Player *p) {
// Put the stations in the order list
static void AiNew_State_GiveOrders(Player *p) {
int order, flags;
int idx;
Order order;
assert(p->ainew.state == AI_STATE_GIVE_ORDERS);
if (p->ainew.veh_main_id != (VehicleID)-1) {
@@ -1134,23 +1135,29 @@ static void AiNew_State_GiveOrders(Player *p) {
}
// When more then 1 vehicle, we send them to different directions
order = 0;
flags = (_map2[p->ainew.from_tile] << 8) | OT_GOTO_STATION;
idx = 0;
order.type = OT_GOTO_STATION;
order.flags = 0;
order.station = _map2[p->ainew.from_tile];
if (p->ainew.tbt == AI_TRUCK && p->ainew.from_deliver)
flags |= OF_FULL_LOAD;
DoCommandByTile(0, p->ainew.veh_id + (order << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
order.flags |= OF_FULL_LOAD;
DoCommandByTile(0, p->ainew.veh_id + (idx << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
order = 1;
flags = (_map2[p->ainew.to_tile] << 8) | OT_GOTO_STATION;
idx = 1;
order.type = OT_GOTO_STATION;
order.flags = 0;
order.station = _map2[p->ainew.to_tile];
if (p->ainew.tbt == AI_TRUCK && p->ainew.to_deliver)
flags |= OF_FULL_LOAD;
DoCommandByTile(0, p->ainew.veh_id + (order << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
order.flags |= OF_FULL_LOAD;
DoCommandByTile(0, p->ainew.veh_id + (idx << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
// Very handy for AI, goto depot.. but yeah, it needs to be activated ;)
if (_patches.gotodepot) {
order = 2;
flags = (GetDepotByTile(p->ainew.depot_tile) << 8) | OT_GOTO_DEPOT | OF_UNLOAD;
DoCommandByTile(0, p->ainew.veh_id + (order << 16), flags, DC_EXEC, CMD_INSERT_ORDER);
idx = 2;
order.type = OT_GOTO_DEPOT;
order.flags = OF_UNLOAD;
order.station = GetDepotByTile(p->ainew.depot_tile);
DoCommandByTile(0, p->ainew.veh_id + (idx << 16), PackOrder(&order), DC_EXEC, CMD_INSERT_ORDER);
}
// Start the engines!
+1
View File
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include "command.h"
#include "ai.h"
+1
View File
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include "ai.h"
#include "vehicle.h"
+140 -194
View File
@@ -1,11 +1,14 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "vehicle.h"
#include "engine.h"
#include "command.h"
#include "station.h"
#include "news.h"
#include "gfx.h"
#include "sound.h"
#include "player.h"
#include "airport.h"
@@ -33,123 +36,49 @@ int GetAircraftImage(Vehicle *v, byte direction)
{
int spritenum = v->spritenum;
#ifdef AIRCRAFT_CUSTOM_SPRITES // TODO --pasky
if (is_custom_sprite(spritenum)) {
int sprite = GetCustomVehicleSprite(v, direction);
if (sprite) return sprite;
spritenum = _engine_original_sprites[v->engine_type];
}
#endif
return direction + _aircraft_sprite[spritenum];
}
const byte _aircraft_cost_table[NUM_AIRCRAFT_ENGINES] = {
14, 15, 16, 75, 15, 18, 17, 18,
19, 20, 16, 18, 17, 30, 18, 19,
27, 25, 20, 19, 18, 26, 16, 17,
16, 16, 17, 18, 20, 21, 19, 24,
80, 13, 18, 25, 32, 80, 15, 17,
15
};
const byte _aircraft_speed[NUM_AIRCRAFT_ENGINES] = {
37, 37, 74, 181, 37, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 181, 74,
181, 37, 37, 74, 74, 181, 25, 40,
25
};
const byte _aircraft_running_cost[NUM_AIRCRAFT_ENGINES] = {
85, 100, 130, 250, 98, 240, 150, 245,
192, 190, 135, 240, 155, 253, 210, 220,
230, 225, 235, 220, 170, 210, 125, 145,
130, 149, 170, 210, 230, 220, 160, 248,
251, 85, 100, 140, 220, 255, 81, 77,
80
};
const byte _aircraft_num_mail[NUM_AIRCRAFT_ENGINES] = {
4, 8, 10, 20, 6, 30, 15, 30,
40, 25, 10, 35, 15, 50, 25, 25,
40, 35, 30, 25, 20, 20, 10, 10,
10, 10, 18, 25, 60, 65, 45, 80,
45, 5, 9, 12, 40, 30, 15, 20,
10
};
const uint16 _aircraft_num_pass[NUM_AIRCRAFT_ENGINES] = {
25, 65, 90,100, 30,200,100,150,
220,230, 95,170,110,300,200,240,
260,240,260,210,160,220, 80, 85,
75, 85, 65,110,180,150, 85,400,
130, 25, 60, 90,200,100, 40, 55,
40
};
const byte _aircraft_sounds[NUM_AIRCRAFT_ENGINES] = {
6, 6, 7, 59, 6, 7, 7, 7,
7, 7, 7, 7, 7, 61, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 61,
59, 69, 70, 7, 61, 59, 7, 7,
7
};
const byte _aircraft_table_3[NUM_AIRCRAFT_ENGINES] = {
1, 0, 2, 8, 5, 6, 2, 2,
3, 3, 2, 2, 4, 7, 4, 4,
4, 3, 4, 4, 4, 4, 6, 2,
11, 10, 15, 12, 13, 14, 16, 17,
18, 20, 21, 22, 23, 24, 9, 19,
25
};
// &1 = regular aircraft
// &2 = crashes easily on small airports
const byte _aircraft_subtype[NUM_AIRCRAFT_ENGINES] = {
1, 1, 3, 3, 1, 3, 1, 3,
3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 1, 1,
3, 3, 3, 3, 3, 3, 3, 3,
3, 1, 1, 1, 3, 3, 0, 0,
0
};
const byte _aircraft_acceleration[NUM_AIRCRAFT_ENGINES] = {
18, 20, 35, 50, 20, 40, 35, 40,
40, 40, 35, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 50, 40,
40, 40, 40, 40, 40, 40, 40, 40,
50, 18, 20, 40, 40, 50, 20, 20,
20,
};
void DrawAircraftEngine(int x, int y, int engine, uint32 image_ormod)
{
DrawSprite((6 + _aircraft_sprite[_aircraft_table_3[engine - AIRCRAFT_ENGINES_INDEX]]) | image_ormod, x, y);
int spritenum = AircraftVehInfo(engine)->image_index;
if ((_aircraft_subtype[engine - AIRCRAFT_ENGINES_INDEX]&1) == 0)
if (is_custom_sprite(spritenum)) {
int sprite = GetCustomVehicleIcon(engine, 6);
if (sprite) {
DrawSprite(sprite | image_ormod, x, y);
return;
}
spritenum = _engine_original_sprites[engine];
}
DrawSprite((6 + _aircraft_sprite[spritenum]) | image_ormod, x, y);
if ((AircraftVehInfo(engine)->subtype & 1) == 0)
DrawSprite(0xF3D, x, y-5);
}
void DrawAircraftEngineInfo(int engine, int x, int y, int maxw)
{
engine -= AIRCRAFT_ENGINES_INDEX;
SET_DPARAM32(0, ((_price.aircraft_base >> 3) * _aircraft_cost_table[engine]) >> 5);
SET_DPARAM16(1, _aircraft_speed[engine] << 3);
SET_DPARAM16(2, _aircraft_num_pass[engine]);
SET_DPARAM16(3, _aircraft_num_mail[engine]);
SET_DPARAM32(4, _aircraft_running_cost[engine] * _price.aircraft_running >> 8);
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(3, avi->mail_capacity);
SetDParam(4, avi->running_cost * _price.aircraft_running >> 8);
DrawStringMultiCenter(x, y, STR_A02E_COST_MAX_SPEED_CAPACITY, maxw);
}
/* Allocate many vehicles */
bool AllocateVehicles(Vehicle **vl, int num)
static bool AllocateVehicles(Vehicle **vl, int num)
{
int i;
Vehicle *v;
@@ -173,7 +102,7 @@ bool AllocateVehicles(Vehicle **vl, int num)
static int32 EstimateAircraftCost(uint16 engine_type)
{
return _aircraft_cost_table[engine_type - AIRCRAFT_ENGINES_INDEX] * (_price.aircraft_base>>3)>>5;
return AircraftVehInfo(engine_type)->base_cost * (_price.aircraft_base>>3)>>5;
}
@@ -184,6 +113,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
Vehicle *vl[3], *v, *u, *w;
byte unit_num;
uint tile = TILE_FROM_XY(x,y);
const AircraftVehicleInfo *avi = AircraftVehInfo(p1);
Engine *e;
SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
@@ -194,7 +124,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
return value;
// allocate 2 or 3 vehicle structs, depending on type
if (!AllocateVehicles(vl, (_aircraft_subtype[p1 - AIRCRAFT_ENGINES_INDEX]&1) == 0 ? 3 : 2) ||
if (!AllocateVehicles(vl, (avi->subtype & 1) == 0 ? 3 : 2) ||
_ptr_to_next_order >= endof(_order_array))
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
@@ -236,11 +166,11 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
v->vehstatus = VS_HIDDEN | VS_STOPPED | VS_DEFPAL;
u->vehstatus = VS_HIDDEN | VS_UNCLICKABLE | VS_DISASTER;
v->spritenum = _aircraft_table_3[p1 - AIRCRAFT_ENGINES_INDEX];
v->spritenum = avi->image_index;
// v->cargo_count = u->number_of_pieces = 0;
v->cargo_cap = _aircraft_num_pass[p1 - AIRCRAFT_ENGINES_INDEX];
u->cargo_cap = _aircraft_num_mail[p1 - AIRCRAFT_ENGINES_INDEX];
v->cargo_cap = avi->passanger_capacity;
u->cargo_cap = avi->mail_capacity;
v->cargo_type = CT_PASSENGERS;
u->cargo_type = CT_MAIL;
@@ -253,11 +183,11 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
v->last_station_visited = 0xFF;
// v->destination_coords = 0;
v->max_speed = _aircraft_speed[p1 - AIRCRAFT_ENGINES_INDEX];
v->acceleration = _aircraft_acceleration[p1 - AIRCRAFT_ENGINES_INDEX];
v->max_speed = avi->max_speed;
v->acceleration = avi->acceleration;
v->engine_type = (byte)p1;
v->subtype = (_aircraft_subtype[p1 - AIRCRAFT_ENGINES_INDEX]&1) == 0 ? 0 : 2;
v->subtype = (avi->subtype & 1) == 0 ? 0 : 2;
v->value = value;
u->subtype = 4;
@@ -269,7 +199,9 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
_new_aircraft_id = v->index;
*(v->schedule_ptr = _ptr_to_next_order++) = 0;
_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
@@ -286,8 +218,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
byte i = 0;
st = DEREF_STATION(_map2[tile]);
Airport = GetAirport(st->airport_type);
// first element of depot array contains #of depots on the airport
for (cur_depot=&Airport->airport_depots[1]; i != Airport->airport_depots[0]; cur_depot++) {
for (cur_depot = Airport->airport_depots; i != Airport->nof_depots; cur_depot++) {
if ((uint)(st->airport_tile + *cur_depot) == tile) {
assert(Airport->layout[i].heading == HANGAR);
v->u.air.pos = Airport->layout[i].position;
@@ -336,8 +267,7 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
}
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
_vehicle_sort_dirty[VEHAIRCRAFT] = true; // build aircraft
InvalidateWindow(WC_AIRCRAFT_LIST, v->owner);
RebuildVehicleLists();
InvalidateWindow(WC_COMPANY, v->owner);
}
@@ -365,11 +295,10 @@ static bool CheckStoppedInHangar(Vehicle *v)
}
void DoDeleteAircraft(Vehicle *v)
static void DoDeleteAircraft(Vehicle *v)
{
DeleteWindowById(WC_VEHICLE_VIEW, v->index);
_vehicle_sort_dirty[VEHAIRCRAFT] = true; // delete aircraft
InvalidateWindow(WC_AIRCRAFT_LIST, v->owner);
RebuildVehicleLists();
InvalidateWindow(WC_COMPANY, v->owner);
DeleteVehicleChain(v);
}
@@ -414,7 +343,7 @@ int32 CmdStartStopAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (flags & DC_EXEC) {
v->vehstatus ^= VS_STOPPED;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
}
@@ -432,12 +361,12 @@ int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (!CheckOwnership(v->owner))
return CMD_ERROR;
if ((v->next_order&OT_MASK) == OT_GOTO_DEPOT) {
if (v->current_order.type == OT_GOTO_DEPOT) {
if (flags & DC_EXEC) {
if (v->next_order&OF_UNLOAD)
{ v->cur_order_index++; }
v->next_order = OT_DUMMY;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
if (v->current_order.flags & OF_UNLOAD) v->cur_order_index++;
v->current_order.type = OT_DUMMY;
v->current_order.flags = 0;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
}
} else {
st = DEREF_STATION(v->u.air.targetairport);
@@ -447,9 +376,10 @@ int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2)
return CMD_ERROR;
if (flags & DC_EXEC) {
v->next_order = OF_NON_STOP | OF_FULL_LOAD | OT_GOTO_DEPOT;
v->next_order_param = v->u.air.targetairport;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
v->current_order.type = OT_GOTO_DEPOT;
v->current_order.flags = OF_NON_STOP | OF_FULL_LOAD;
v->current_order.station = v->u.air.targetairport;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
}
}
@@ -489,7 +419,7 @@ int32 CmdRefitAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (!CheckOwnership(v->owner) || !CheckStoppedInHangar(v))
return CMD_ERROR;
pass = _aircraft_num_pass[v->engine_type - AIRCRAFT_ENGINES_INDEX];
pass = AircraftVehInfo(v->engine_type)->passanger_capacity;
if (p2 != 0) {
pass >>= 1;
if (p2 != 5)
@@ -506,7 +436,7 @@ int32 CmdRefitAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
v->cargo_cap = pass;
u = v->next;
mail = _aircraft_num_mail[v->engine_type - AIRCRAFT_ENGINES_INDEX];
mail = AircraftVehInfo(v->engine_type)->mail_capacity;
if (p2 != 0) {
mail = 0;
}
@@ -531,28 +461,31 @@ static void CheckIfAircraftNeedsService(Vehicle *v)
if (_patches.servint_aircraft == 0)
return;
if (SERVICE_INTERVAL)
if (!VehicleNeedsService(v))
return;
if (v->vehstatus & VS_STOPPED)
return;
if ((v->next_order & (OT_MASK | OF_FULL_LOAD)) == (OT_GOTO_DEPOT | OF_FULL_LOAD))
if (v->current_order.type == OT_GOTO_DEPOT &&
v->current_order.flags & OF_FULL_LOAD)
return;
if (_patches.gotodepot && ScheduleHasDepotOrders(v->schedule_ptr))
return;
st = DEREF_STATION(v->next_order_param);
st = DEREF_STATION(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) {
// printf("targetairport = %d, st->index = %d\n", v->u.air.targetairport, st->index);
// v->u.air.targetairport = st->index;
v->next_order = OF_NON_STOP | OT_GOTO_DEPOT;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
} else if ((v->next_order & OT_MASK) == OT_GOTO_DEPOT) {
v->next_order = OT_DUMMY;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
v->current_order.type = OT_GOTO_DEPOT;
v->current_order.flags = OF_NON_STOP;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
} else if (v->current_order.type == OT_GOTO_DEPOT) {
v->current_order.type = OT_DUMMY;
v->current_order.flags = 0;
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
}
}
@@ -575,7 +508,7 @@ void OnNewDay_Aircraft(Vehicle *v)
if (v->vehstatus & VS_STOPPED)
return;
cost = _aircraft_running_cost[v->engine_type - AIRCRAFT_ENGINES_INDEX] * _price.aircraft_running / 364;
cost = AircraftVehInfo(v->engine_type)->running_cost * _price.aircraft_running / 364;
v->profit_this_year -= cost >> 8;
@@ -623,7 +556,7 @@ static void HelicopterTickHandler(Vehicle *v)
// if true, helicopter rotors do not rotate. This should only be the case if a helicopter is
// loading/unloading at a terminal or stopped
if ((v->next_order&OT_MASK) == OT_LOADING || (v->vehstatus&VS_STOPPED)) {
if (v->current_order.type == OT_LOADING || (v->vehstatus & VS_STOPPED)) {
if (u->cur_speed != 0) {
u->cur_speed++;
if (u->cur_speed >= 0x80 && u->cur_image == 0xF40) {
@@ -717,15 +650,13 @@ static void ServiceAircraft(Vehicle *v)
SetAircraftPosition(v, v->x_pos, v->y_pos, v->z_pos);
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
v->date_of_last_service = _date;
v->breakdowns_since_last_service = 0;
v->reliability = _engines[v->engine_type].reliability;
VehicleServiceInDepot(v);
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
}
static void PlayAircraftSound(Vehicle *v)
{
SndPlayVehicleFx(_aircraft_sounds[v->engine_type - AIRCRAFT_ENGINES_INDEX], v);
SndPlayVehicleFx(AircraftVehInfo(v->engine_type)->sfx, v);
}
static bool UpdateAircraftSpeed(Vehicle *v)
@@ -743,7 +674,7 @@ static bool UpdateAircraftSpeed(Vehicle *v)
if (spd != v->cur_speed) {
v->cur_speed = spd;
if (_patches.vehicle_speed)
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
}
if (!(v->direction & 1)) {
@@ -805,7 +736,7 @@ static bool Aircraft_5(Vehicle *v)
if (u->cur_speed > 32) {
v->cur_speed = 0;
if (--u->cur_speed == 32) {
SndPlayVehicleFx(0x16, v);
SndPlayVehicleFx(SND_18_HELICOPTER, v);
}
} else {
u->cur_speed = 32;
@@ -1054,16 +985,19 @@ static void HandleAircraftSmoke(Vehicle *v)
static void ProcessAircraftOrder(Vehicle *v)
{
uint order;
Order order;
// OT_GOTO_DEPOT, OT_LOADING
if ((v->next_order & OT_MASK) >= OT_GOTO_DEPOT && (v->next_order & OT_MASK) <= OT_LOADING) {
if ((v->next_order & (OT_MASK|OF_UNLOAD)) != (OT_GOTO_DEPOT|OF_UNLOAD))
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;
}
if ((v->next_order & (OT_MASK|OF_UNLOAD|OF_FULL_LOAD)) == (OT_GOTO_DEPOT|OF_UNLOAD|OF_FULL_LOAD) &&
SERVICE_INTERVAL) {
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++;
}
@@ -1072,21 +1006,23 @@ static void ProcessAircraftOrder(Vehicle *v)
order = v->schedule_ptr[v->cur_order_index];
if (order == 0) {
v->next_order = OT_NOTHING;
if (order.type == OT_NOTHING) {
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
return;
}
if (order == (uint)((v->next_order | (v->next_order_param<<8))))
if (order.type == v->current_order.type &&
order.flags == v->current_order.flags &&
order.station == v->current_order.station)
return;
v->next_order = (byte)order;
v->next_order_param = (byte)(order >> 8);
v->current_order = order;
// orders are changed in flight, ensure going to the right station
if ((order & OT_MASK) == 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 >> 8;
v->u.air.targetairport = order.station;
}
InvalidateVehicleOrderWidget(v);
@@ -1094,11 +1030,11 @@ static void ProcessAircraftOrder(Vehicle *v)
static void HandleAircraftLoading(Vehicle *v, int mode)
{
if (v->next_order == OT_NOTHING)
if (v->current_order.type == OT_NOTHING)
return;
if (v->next_order != OT_DUMMY) {
if ((v->next_order&OT_MASK) != OT_LOADING)
if (v->current_order.type != OT_DUMMY) {
if (v->current_order.type != OT_LOADING)
return;
if (mode != 0)
@@ -1107,16 +1043,17 @@ static void HandleAircraftLoading(Vehicle *v, int mode)
if (--v->load_unload_time_rem)
return;
if (v->next_order&OF_FULL_LOAD && CanFillVehicle(v)) {
if (v->current_order.flags & OF_FULL_LOAD && CanFillVehicle(v)) {
SET_EXPENSES_TYPE(EXPENSES_AIRCRAFT_INC);
LoadUnloadVehicle(v);
return;
}
{
byte b = v->next_order;
v->next_order = OT_NOTHING;
if (!(b & OF_NON_STOP))
Order b = v->current_order;
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
if (!(b.flags & OF_NON_STOP))
return;
}
}
@@ -1135,7 +1072,7 @@ static void MaybeCrashAirplane(Vehicle *v)
//FIXME -- MaybeCrashAirplane -> increase crashing chances of very modern airplanes on smaller than AT_METROPOLITAN airports
prob = 0x10000 / 1500;
if (st->airport_type == AT_SMALL && (_aircraft_subtype[v->engine_type - AIRCRAFT_ENGINES_INDEX]&2) && !_cheats.no_jetcrash.value) {
if (st->airport_type == AT_SMALL && (AircraftVehInfo(v->engine_type)->subtype & 2) && !_cheats.no_jetcrash.value) {
prob = 0x10000 / 20;
}
@@ -1157,28 +1094,28 @@ static void MaybeCrashAirplane(Vehicle *v)
amt = 2;
if (v->cargo_type == CT_PASSENGERS) amt += v->cargo_count;
SET_DPARAM16(0, amt);
SetDParam(0, amt);
v->cargo_count = 0;
v->next->cargo_count = 0,
SET_DPARAM16(1, st->index);
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(16, v);
SndPlayVehicleFx(SND_12_EXPLOSION, v);
}
// we've landed and just arrived at a terminal
static void AircraftEntersTerminal(Vehicle *v)
{
Station *st;
byte old_order;
Order old_order;
if ((v->next_order & OT_MASK) == OT_GOTO_DEPOT)
if (v->current_order.type == OT_GOTO_DEPOT)
return;
st = DEREF_STATION(v->u.air.targetairport);
@@ -1189,7 +1126,7 @@ static void AircraftEntersTerminal(Vehicle *v)
uint32 flags;
st->had_vehicle_of_type |= HVOT_AIRCRAFT;
SET_DPARAM16(0, st->index);
SetDParam(0, st->index);
// show newsitem of celebrating citizens
flags = (v->owner == _local_player) ? NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ARRIVAL_PLAYER, 0) : NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ARRIVAL_OTHER, 0);
AddNewsItem(
@@ -1199,40 +1136,45 @@ static void AircraftEntersTerminal(Vehicle *v)
0);
}
old_order = v->next_order;
v->next_order = OT_LOADING;
old_order = v->current_order;
v->current_order.type = OT_LOADING;
v->current_order.flags = 0;
if ((old_order & OT_MASK) == OT_GOTO_STATION &&
v->next_order_param == v->last_station_visited) {
v->next_order = OT_LOADING | (old_order & (OF_UNLOAD|OF_FULL_LOAD)) | OF_NON_STOP;
if (old_order.type == OT_GOTO_STATION &&
v->current_order.station == v->last_station_visited) {
v->current_order.flags =
(old_order.flags & (OF_FULL_LOAD | OF_UNLOAD)) | OF_NON_STOP;
}
SET_EXPENSES_TYPE(EXPENSES_AIRCRAFT_INC);
LoadUnloadVehicle(v);
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, 4);
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
}
static void AircraftEnterHangar(Vehicle *v)
{
byte old_order;
Order old_order;
ServiceAircraft(v);
MaybeRenewVehicle(v, EstimateAircraftCost(v->engine_type));
if ((v->next_order & OT_MASK) == OT_GOTO_DEPOT) {
TriggerVehicle(v, VEHICLE_TRIGGER_DEPOT);
if (v->current_order.type == OT_GOTO_DEPOT) {
InvalidateWindow(WC_VEHICLE_VIEW, v->index);
old_order = v->next_order;
v->next_order = OT_NOTHING;
old_order = v->current_order;
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
if (old_order & OF_UNLOAD) { v->cur_order_index++; }
else if (old_order & OF_FULL_LOAD) { // force depot visit
if (old_order.flags & OF_UNLOAD) {
v->cur_order_index++;
} else if (old_order.flags & OF_FULL_LOAD) { // force depot visit
v->vehstatus |= VS_STOPPED;
if (v->owner == _local_player) {
SET_DPARAM16(0, v->unitnumber);
SetDParam(0, v->unitnumber);
AddNewsItem(
STR_A014_AIRCRAFT_IS_WAITING_IN,
NEWS_FLAGS(NM_SMALL, NF_VIEWPORT|NF_VEHICLE, NT_ADVICE, 0),
@@ -1251,7 +1193,7 @@ static void AircraftLand(Vehicle *v)
static void AircraftLandAirplane(Vehicle *v)
{
AircraftLand(v);
SndPlayVehicleFx(0x15, v);
SndPlayVehicleFx(SND_17_SKID_PLANE, v);
MaybeCrashAirplane(v);
}
@@ -1261,9 +1203,9 @@ static void AircraftNextAirportPos_and_Order(Vehicle *v)
Station *st;
const AirportFTAClass *Airport;
if ((v->next_order&OT_MASK) == OT_GOTO_STATION ||
(v->next_order&OT_MASK) == OT_GOTO_DEPOT)
v->u.air.targetairport = v->next_order_param;
if (v->current_order.type == OT_GOTO_STATION ||
v->current_order.type == OT_GOTO_DEPOT)
v->u.air.targetairport = v->current_order.station;
st = DEREF_STATION(v->u.air.targetairport);
Airport = GetAirport(st->airport_type);
@@ -1288,6 +1230,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);
}
@@ -1317,19 +1260,22 @@ static void AircraftEventHandler_InHangar(Vehicle *v, const AirportFTAClass *Air
return;
}
if ((v->next_order&OT_MASK) == OT_GOTO_DEPOT && (v->vehstatus&VS_STOPPED)) { // if we were sent to the depot, stay there
v->next_order = OT_NOTHING;
// if we were sent to the depot, stay there
if (v->current_order.type == OT_GOTO_DEPOT && (v->vehstatus & VS_STOPPED)) {
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
return;
}
if ((v->next_order&OT_MASK) != OT_GOTO_STATION && (v->next_order&OT_MASK) != OT_GOTO_DEPOT)
if (v->current_order.type != OT_GOTO_STATION &&
v->current_order.type != OT_GOTO_DEPOT)
return;
// if the block of the next position is busy, stay put
if (AirportHasBlock(v, &Airport->layout[v->u.air.pos], Airport)) {return;}
// We are already at the target airport, we need to find a terminal
if (v->next_order_param == v->u.air.targetairport) {
if (v->current_order.station == v->u.air.targetairport) {
// FindFreeTerminal:
// 1. Find a free terminal, 2. Occupy it, 3. Set the vehicle's state to that terminal
if (v->subtype != 0) {if(!AirportFindFreeTerminal(v, Airport)) {return;}} // airplane
@@ -1363,8 +1309,7 @@ static void AircraftEventHandler_AtTerminal(Vehicle *v, const AirportFTAClass *A
return;
}
// removed &0x1F
if (v->next_order == OT_NOTHING) {return;}
if (v->current_order.type == OT_NOTHING) return;
// if the block of the next position is busy, stay put
if (AirportHasBlock(v, &Airport->layout[v->u.air.pos], Airport)) {
@@ -1374,19 +1319,20 @@ static void AircraftEventHandler_AtTerminal(Vehicle *v, const AirportFTAClass *A
// airport-road is free. We either have to go to another airport, or to the hangar
// ---> start moving
switch (v->next_order&OT_MASK) {
switch (v->current_order.type) {
case OT_GOTO_STATION: // ready to fly to another airport
// airplane goto state takeoff, helicopter to helitakeoff
v->u.air.state = (v->subtype != 0) ? TAKEOFF : HELITAKEOFF;
break;
case OT_GOTO_DEPOT: // visit hangar for serivicing, sale, etc.
if (v->next_order_param == v->u.air.targetairport)
if (v->current_order.station == v->u.air.targetairport)
v->u.air.state = HANGAR;
else
v->u.air.state = (v->subtype != 0) ? TAKEOFF : HELITAKEOFF;
break;
default: // orders have been deleted (no orders), goto depot and don't bother us
v->next_order = OT_NOTHING;
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
v->u.air.state = HANGAR;
}
AirportMove(v, Airport);
@@ -1492,7 +1438,7 @@ static void AircraftEventHandler_EndLanding(Vehicle *v, const AirportFTAClass *A
// 1. in case all terminals are busy AirportFindFreeTerminal() returns false or
// 2. not going for terminal (but depot, no order),
// --> get out of the way to the hangar.
if ((v->next_order&OT_MASK) == OT_GOTO_STATION) {
if (v->current_order.type == OT_GOTO_STATION) {
if (AirportFindFreeTerminal(v, Airport)) {return;}
}
v->u.air.state = HANGAR;
@@ -1511,7 +1457,7 @@ static void AircraftEventHandler_HeliEndLanding(Vehicle *v, const AirportFTAClas
// --> else TAKEOFF
// the reason behind this is that if an airport has a terminal, it also has a hangar. Airplanes
// must go to a hangar.
if ((v->next_order&OT_MASK) == OT_GOTO_STATION) {
if (v->current_order.type == OT_GOTO_STATION) {
if (AirportFindFreeHelipad(v, Airport)) {return;}
}
v->u.air.state = (Airport->nofterminals != 0) ? HANGAR : HELITAKEOFF;
@@ -1789,7 +1735,7 @@ static void AircraftEventHandler(Vehicle *v, int loop)
ProcessAircraftOrder(v);
HandleAircraftLoading(v, loop);
if ((v->next_order&OT_MASK) >= OT_LOADING)
if (v->current_order.type >= OT_LOADING)
return;
// pass the right airport structure to the functions
+236 -265
View File
@@ -1,5 +1,7 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "window.h"
#include "gui.h"
#include "vehicle.h"
@@ -10,12 +12,6 @@
#include "viewport.h"
#include "player.h"
extern const byte _aircraft_cost_table[NUM_AIRCRAFT_ENGINES];
extern const byte _aircraft_speed[NUM_AIRCRAFT_ENGINES];
extern const uint16 _aircraft_num_pass[NUM_AIRCRAFT_ENGINES];
extern const byte _aircraft_num_mail[NUM_AIRCRAFT_ENGINES];
extern const byte _aircraft_running_cost[NUM_AIRCRAFT_ENGINES];
static void DrawAircraftImage(Vehicle *v, int x, int y, VehicleID selection)
{
@@ -30,7 +26,7 @@ static void DrawAircraftImage(Vehicle *v, int x, int y, VehicleID selection)
}
}
static void CcBuildAircraft(bool success, uint tile, uint32 p1, uint32 p2)
void CcBuildAircraft(bool success, uint tile, uint32 p1, uint32 p2)
{
Vehicle *v;
@@ -93,19 +89,20 @@ 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_DPARAM32(0, _aircraft_cost_table[selected_id - AIRCRAFT_ENGINES_INDEX] * (_price.aircraft_base>>3)>>5);
SET_DPARAM16(1, _aircraft_speed[selected_id - AIRCRAFT_ENGINES_INDEX] * 8);
SET_DPARAM16(2, _aircraft_num_pass[selected_id - AIRCRAFT_ENGINES_INDEX]);
SET_DPARAM16(3, _aircraft_num_mail[selected_id - AIRCRAFT_ENGINES_INDEX]);
SET_DPARAM32(4,_aircraft_running_cost[selected_id - AIRCRAFT_ENGINES_INDEX] * _price.aircraft_running >> 8);
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];
SET_DPARAM16(6, e->lifelength);
SET_DPARAM8(7, e->reliability * 100 >> 16);
SetDParam(6, e->lifelength);
SetDParam(7, e->reliability * 100 >> 16);
ConvertDayToYMD(&ymd, e->intro_date);
SET_DPARAM16(5, ymd.year + 1920);
SetDParam(5, ymd.year + 1920);
DrawString(2, 111, STR_A007_COST_SPEED_CAPACITY_PASSENGERS, 0);
}
@@ -213,36 +210,60 @@ static void AircraftRefitWndProc(Window *w, WindowEvent *e)
byte color;
int cargo;
SET_DPARAM16(0, v->string_id);
SET_DPARAM16(1, v->unitnumber);
SetDParam(0, v->string_id);
SetDParam(1, v->unitnumber);
DrawWindowWidgets(w);
DrawString(1, 15, STR_A040_SELECT_CARGO_TYPE_TO_CARRY, 0);
/* TODO: Support for custom GRFSpecial-specified refitting! --pasky */
cargo = -1;
x = 6;
y = 25;
sel = WP(w,refit_d).sel;
b = _aircraft_refit_types[_opt.landscape];
do {
color = 16;
if (sel == 0) {
cargo = *b;
color = 12;
#define show_cargo(ctype) { \
color = 16; \
if (sel == 0) { \
cargo = ctype; \
color = 12; \
} \
sel--; \
DrawString(x, y, _cargoc.names_s[ctype], color); \
y += 10; \
}
if (_engine_refit_masks[v->engine_type]) {
uint32 mask = _engine_refit_masks[v->engine_type];
int cid = 0;
for (; mask; mask >>= 1, cid++) {
if (!(mask & 1)) // not this cid
continue;
if (!(_local_cargo_id_landscape[cid] & (1 << _opt.landscape))) // not in this landscape
continue;
show_cargo(_local_cargo_id_ctype[cid]);
}
sel--;
DrawString(x,y,_cargoc.names_s[*b], color);
y += 10;
} while (*++b != 0xFF);
} else { // generic refit list
b = _aircraft_refit_types[_opt.landscape];
do {
show_cargo(*b);
} while (*++b != 0xFF);
}
#undef show_cargo
WP(w,refit_d).cargo = cargo;
if (cargo != -1) {
int32 cost = DoCommandByTile(v->tile, v->index, cargo, DC_QUERY_COST, CMD_REFIT_AIRCRAFT);
if (cost != CMD_ERROR) {
SET_DPARAM32(2, cost);
SET_DPARAM16(0, _cargoc.names_long_p[cargo]);
SET_DPARAM16(1, _aircraft_refit_capacity);
SetDParam(2, cost);
SetDParam(0, _cargoc.names_long_p[cargo]);
SetDParam(1, _aircraft_refit_capacity);
DrawString(1, 137, STR_A041_NEW_CAPACITY_COST_OF_REFIT, 0);
}
}
@@ -312,8 +333,8 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
if (!_patches.servint_aircraft) // disable service-scroller when interval is set to disabled
w->disabled_state |= (1 << 5) | (1 << 6);
SET_DPARAM16(0, v->string_id);
SET_DPARAM16(1, v->unitnumber);
SetDParam(0, v->string_id);
SetDParam(1, v->unitnumber);
DrawWindowWidgets(w);
/* Draw running cost */
@@ -321,7 +342,7 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
int year = v->age / 366;
StringID str;
SET_DPARAM16(1, year);
SetDParam(1, year);
str = STR_0199_YEAR;
if (year != 1) {
@@ -329,36 +350,36 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
if (v->max_age - 366 < v->age)
str++;
}
SET_DPARAM16(0, str);
SET_DPARAM16(2, v->max_age / 366);
SET_DPARAM32(3, _price.aircraft_running * _aircraft_running_cost[v->engine_type - AIRCRAFT_ENGINES_INDEX] >> 8);
SetDParam(0, str);
SetDParam(2, v->max_age / 366);
SetDParam(3, _price.aircraft_running * AircraftVehInfo(v->engine_type)->running_cost >> 8);
DrawString(2, 15, STR_A00D_AGE_RUNNING_COST_YR, 0);
}
/* Draw max speed */
{
SET_DPARAM16(0, v->max_speed * 8);
SetDParam(0, v->max_speed * 8);
DrawString(2, 25, STR_A00E_MAX_SPEED, 0);
}
/* Draw profit */
{
SET_DPARAM32(0, v->profit_this_year);
SET_DPARAM32(1, v->profit_last_year);
SetDParam(0, v->profit_this_year);
SetDParam(1, v->profit_last_year);
DrawString(2, 35, STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR, 0);
}
/* Draw breakdown & reliability */
{
SET_DPARAM8(0, v->reliability * 100 >> 16);
SET_DPARAM16(1, v->breakdowns_since_last_service);
SetDParam(0, v->reliability * 100 >> 16);
SetDParam(1, v->breakdowns_since_last_service);
DrawString(2, 45, STR_A010_RELIABILITY_BREAKDOWNS, 0);
}
/* Draw service interval text */
{
SET_DPARAM16(0, v->service_interval);
SET_DPARAM16(1, v->date_of_last_service);
SetDParam(0, v->service_interval);
SetDParam(1, v->date_of_last_service);
DrawString(13, 103, _patches.servint_ispercent?STR_SERVICING_INTERVAL_PERCENT:STR_883C_SERVICING_INTERVAL_DAYS, 0);
}
@@ -369,17 +390,17 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
do {
if (v->subtype <= 2) {
SET_DPARAM16(0, GetCustomEngineName(v->engine_type));
SET_DPARAM16(1, 1920 + v->build_year);
SET_DPARAM32(2, v->value);
SetDParam(0, GetCustomEngineName(v->engine_type));
SetDParam(1, 1920 + v->build_year);
SetDParam(2, v->value);
DrawString(60, y, STR_A011_BUILT_VALUE, 0);
y += 10;
SET_DPARAM16(0, _cargoc.names_long_p[v->cargo_type]);
SET_DPARAM16(1, v->cargo_cap);
SetDParam(0, _cargoc.names_long_p[v->cargo_type]);
SetDParam(1, v->cargo_cap);
u = v->next;
SET_DPARAM16(2, _cargoc.names_long_p[u->cargo_type]);
SET_DPARAM16(3, u->cargo_cap);
SetDParam(2, _cargoc.names_long_p[u->cargo_type]);
SetDParam(3, u->cargo_cap);
DrawString(60, y, STR_A019_CAPACITY + (u->cargo_cap == 0), 0);
y += 14;
}
@@ -387,9 +408,9 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
if (v->cargo_count != 0) {
/* Cargo names (fix pluralness) */
SET_DPARAM8(0, v->cargo_type);
SET_DPARAM16(1, v->cargo_count);
SET_DPARAM16(2, v->cargo_source);
SetDParam(0, v->cargo_type);
SetDParam(1, v->cargo_count);
SetDParam(2, v->cargo_source);
DrawString(60, y, STR_8813_FROM, 0);
y += 10;
@@ -401,7 +422,7 @@ static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
case WE_CLICK:
switch(e->click.widget) {
case 2: /* rename */
SET_DPARAM16(0, v->unitnumber);
SetDParam(0, v->unitnumber);
ShowQueryString(v->string_id, STR_A030_NAME_AIRCRAFT, 31, 150, w->window_class, w->window_number);
break;
@@ -482,7 +503,8 @@ 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, 249, 0, 13, STR_A00A, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ 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},
@@ -499,7 +521,7 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
switch(e->event) {
case WE_PAINT: {
Vehicle *v = &_vehicles[w->window_number];
uint32 disabled = 1<<7;
uint32 disabled = 1<<8;
StringID str;
{
@@ -511,12 +533,12 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
}
if (v->owner != _local_player)
disabled |= 1<<7 | 1<<6;
disabled |= 1<<8 | 1<<7;
w->disabled_state = disabled;
/* draw widgets & caption */
SET_DPARAM16(0, v->string_id);
SET_DPARAM16(1, v->unitnumber);
SetDParam(0, v->string_id);
SetDParam(1, v->unitnumber);
DrawWindowWidgets(w);
/* draw the flag */
@@ -527,16 +549,16 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
} else if (v->vehstatus & VS_STOPPED) {
str = STR_8861_STOPPED;
} else {
switch(v->next_order & OT_MASK) {
switch (v->current_order.type) {
case OT_GOTO_STATION: {
SET_DPARAM16(0, v->next_order_param);
SET_DPARAM16(1, v->cur_speed * 8);
SetDParam(0, v->current_order.station);
SetDParam(1, v->cur_speed * 8);
str = STR_HEADING_FOR_STATION + _patches.vehicle_speed;
} break;
case OT_GOTO_DEPOT: {
SET_DPARAM16(0, v->next_order_param);
SET_DPARAM16(1, v->cur_speed * 8);
SetDParam(0, v->current_order.station);
SetDParam(1, v->cur_speed * 8);
str = STR_HEADING_FOR_HANGAR + _patches.vehicle_speed;
} break;
@@ -547,7 +569,7 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
default:
if (v->num_orders == 0) {
str = STR_NO_ORDERS + _patches.vehicle_speed;
SET_DPARAM16(0, v->cur_speed * 8);
SetDParam(0, v->cur_speed * 8);
} else
str = STR_EMPTY;
break;
@@ -562,22 +584,22 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
Vehicle *v = &_vehicles[w->window_number];
switch(e->click.widget) {
case 4: /* start stop */
case 5: /* start stop */
DoCommandP(v->tile, v->index, 0, NULL, CMD_START_STOP_AIRCRAFT | CMD_MSG(STR_A016_CAN_T_STOP_START_AIRCRAFT));
break;
case 5: /* center main view */
case 6: /* center main view */
ScrollMainWindowTo(v->x_pos, v->y_pos);
break;
case 6: /* goto hangar */
case 7: /* goto hangar */
DoCommandP(v->tile, v->index, 0, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_MSG(STR_A012_CAN_T_SEND_AIRCRAFT_TO));
break;
case 7: /* refit */
case 8: /* refit */
ShowAircraftRefitWindow(v);
break;
case 8: /* show orders */
case 9: /* show orders */
ShowOrdersWindow(v);
break;
case 9: /* show details */
case 10: /* show details */
ShowAircraftDetailsWindow(v);
break;
}
@@ -595,7 +617,7 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
static const WindowDesc _aircraft_view_desc = {
-1,-1, 250, 116,
WC_VEHICLE_VIEW ,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_STICKY_BUTTON,
_aircraft_view_widgets,
AircraftViewWndProc
};
@@ -621,7 +643,7 @@ static void DrawAircraftDepotWindow(Window *w)
tile = w->window_number;
/* setup disabled buttons */
w->disabled_state = (_map_owner[tile]==_local_player) ? 0 : ((1<<3)|(1<<5));
w->disabled_state = (_map_owner[tile]==_local_player) ? 0 : ((1<<4)|(1<<6));
/* determine amount of items for scroller */
num = 0;
@@ -632,7 +654,7 @@ static void DrawAircraftDepotWindow(Window *w)
}
SetVScrollCount(w, (num + 3) >> 2);
SET_DPARAM16(0, _map2[tile]);
SetDParam(0, _map2[tile]);
DrawWindowWidgets(w);
x = 2;
@@ -648,7 +670,7 @@ static void DrawAircraftDepotWindow(Window *w)
DrawAircraftImage(v, x+12, y, WP(w,traindepot_d).sel);
SET_DPARAM16(0, v->unitnumber);
SetDParam(0, v->unitnumber);
DrawString(x, y+2, (uint16)(v->max_age-366) >= v->age ? STR_00E2 : STR_00E3, 0);
DrawSprite( (v->vehstatus & VS_STOPPED) ? 0xC12 : 0xC13, x, y+12);
@@ -734,7 +756,8 @@ 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, 330, 0, 13, STR_A002_AIRCRAFT_HANGAR, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ 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},
@@ -753,13 +776,13 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
case WE_CLICK:
switch(e->click.widget) {
case 2: /* click aircraft */
case 3: /* click aircraft */
AircraftDepotClickAircraft(w, e->click.pt.x, e->click.pt.y);
break;
case 5: /* show build aircraft window */
case 6: /* show build aircraft window */
ShowBuildAircraftWindow(w->window_number);
break;
case 6: /* scroll to tile */
case 7: /* scroll to tile */
ScrollMainWindowToTile(w->window_number);
break;
}
@@ -771,7 +794,7 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
case WE_DRAGDROP: {
switch(e->click.widget) {
case 2: {
case 3: {
Vehicle *v;
VehicleID sel = WP(w,traindepot_d).sel;
@@ -785,12 +808,12 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
}
} break;
case 3:
if (!HASBIT(w->disabled_state, 3) &&
case 4:
if (!HASBIT(w->disabled_state, 4) &&
WP(w,traindepot_d).sel != INVALID_VEHICLE) {
Vehicle *v;
HandleButtonClick(w, 3);
HandleButtonClick(w, 4);
v = &_vehicles[WP(w,traindepot_d).sel];
WP(w,traindepot_d).sel = INVALID_VEHICLE;
@@ -817,7 +840,7 @@ static void AircraftDepotWndProc(Window *w, WindowEvent *e)
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_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
_aircraft_depot_widgets,
AircraftDepotWndProc
};
@@ -837,15 +860,15 @@ void ShowAircraftDepotWindow(uint tile)
}
static void DrawSmallSchedule(Vehicle *v, int x, int y) {
uint16 *sched;
const Order *sched;
int sel;
uint ord;
Order ord;
int i = 0;
sched = v->schedule_ptr;
sel = v->cur_order_index;
while ((ord=*sched++) != 0) {
while ((ord = *sched++).type != OT_NOTHING) {
if (sel == 0) {
_stringwidth_base = 0xE0;
DoDrawString( "\xAF", x-6, y, 16);
@@ -853,8 +876,8 @@ static void DrawSmallSchedule(Vehicle *v, int x, int y) {
}
sel--;
if ((ord & OT_MASK) == OT_GOTO_STATION) {
SET_DPARAM16(0, ord >> 8);
if (ord.type == OT_GOTO_STATION) {
SetDParam(0, ord.station);
DrawString(x, y, STR_A036, 0);
y += 6;
@@ -864,159 +887,128 @@ static void DrawSmallSchedule(Vehicle *v, int x, int y) {
}
}
// used to get a sorted list of the vehicles
static SortStruct _aircraft_sort[NUM_NORMAL_VEHICLES];
static uint16 _num_aircraft_sort[MAX_PLAYERS];
static void GlobalSortAircraftList()
{
const Vehicle *v;
uint16 *i;
uint32 n = 0;
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},
{ WIDGETS_END},
};
// reset #-of aircraft to 0 because ++ is used for value-assignment
for (i = _num_aircraft_sort; i != endof(_num_aircraft_sort); i++) {*i = 0;}
FOR_ALL_VEHICLES(v) {
if(v->type == VEH_Aircraft && v->subtype <= 2) {
_aircraft_sort[n].index = v->index;
_aircraft_sort[n++].owner = v->owner;
_num_aircraft_sort[v->owner]++; // add number of aircraft of player
}
}
// create cumulative aircraft-ownership
// aircraft are stored as a cummulative index, eg 25, 41, 43. This means
// Player0: 25; Player1: (41-25) 16; Player2: (43-41) 2
for (i = &_num_aircraft_sort[1]; i != endof(_num_aircraft_sort); i++) {*i += *(i-1);}
qsort(_aircraft_sort, n, sizeof(_aircraft_sort[0]), GeneralOwnerSorter); // sort by owner
// since indexes are messed up after adding/removing a station, mark all lists dirty
memset(_aircraft_sort_dirty, true, sizeof(_aircraft_sort_dirty));
_vehicle_sort_dirty[VEHAIRCRAFT] = false;
DEBUG(misc, 1) ("Resorting global aircraft list...");
}
static void MakeSortedAircraftList(byte owner)
{
SortStruct *firstelement;
uint32 n = 0;
if (owner == 0) { // first element starts at 0th element and has n elements as described above
firstelement = &_aircraft_sort[0];
n = _num_aircraft_sort[0];
} else { // nth element starts at the end of the previous one, and has n elements as described above
firstelement = &_aircraft_sort[_num_aircraft_sort[owner-1]];
n = _num_aircraft_sort[owner] - _num_aircraft_sort[owner-1];
}
_internal_sort_order = _aircraft_sort_order[owner];
_internal_name_sorter_id = STR_SV_AIRCRAFT_NAME;
_last_vehicle_idx = 0; // used for "cache" in namesorting
qsort(firstelement, n, sizeof(_aircraft_sort[0]), _vehicle_sorter[_aircraft_sort_type[owner]]);
_aircraft_sort_dirty[owner] = false;
DEBUG(misc, 1) ("Resorting Aircraft list player %d...", owner+1);
}
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},
{ WIDGETS_END},
};
static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
{
int station = (int)w->window_number >> 16;
int owner = w->window_number & 0xff;
vehiclelist_d *vl = &WP(w, vehiclelist_d);
switch(e->event) {
case WE_PAINT: {
uint32 i;
const byte window_number = (byte)w->window_number;
int x = 2;
int y = PLY_WND_PRC__OFFSET_TOP_WIDGET;
int max;
int i;
if (_aircraft_sort_type[window_number] == SORT_BY_UNSORTED) // disable 'Sort By' tooltip on Unsorted sorting criteria
w->disabled_state |= (1 << 2);
BuildVehicleList(vl, VEH_Aircraft, owner, station);
SortVehicleList(vl);
// resort shipps window if roadvehicles have been added/removed
if (_vehicle_sort_dirty[VEHAIRCRAFT])
GlobalSortAircraftList();
SetVScrollCount(w, vl->list_length);
if (_aircraft_sort_dirty[window_number]) {
MakeSortedAircraftList(window_number);
/* reset sorting timeout */
w->custom[0] = DAY_TICKS;
w->custom[1] = PERIODIC_RESORT_DAYS;
}
// aircraft are stored as a cummulative index, eg 25, 41, 43. This means
// Player0: 25; Player1: (41-25) 16; Player2: (43-41) 2 aircraft
i = (window_number == 0) ? 0 : _num_aircraft_sort[window_number-1];
SetVScrollCount(w, _num_aircraft_sort[window_number] - i);
// disable 'Sort By' tooltip on Unsorted sorting criteria
if (vl->sort_type == SORT_BY_UNSORTED)
w->disabled_state |= (1 << 3);
/* draw the widgets */
{
Player *p = DEREF_PLAYER(window_number);
/* Company Name -- (###) Aircraft */
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
SET_DPARAM16(2, w->vscroll.count);
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;
} else {
/* Station Name -- (###) Aircraft */
SetDParam(0, DEREF_STATION(station)->index);
SetDParam(1, w->vscroll.count);
_player_aircraft_widgets[1].unkA = STR_SCHEDULED_AIRCRAFT;
_other_player_aircraft_widgets[1].unkA = STR_SCHEDULED_AIRCRAFT;
}
DrawWindowWidgets(w);
}
/* draw sorting criteria string */
DrawString(85, 15, _vehicle_sort_listing[_aircraft_sort_type[window_number]], 0x10);
/* draw arrow pointing up/down for ascending/descending soring */
DoDrawString(_aircraft_sort_order[window_number] & 1 ? "\xAA" : "\xA0", 69, 15, 0x10);
DrawString(85, 15, _vehicle_sort_listing[vl->sort_type], 0x10);
/* draw arrow pointing up/down for ascending/descending sorting */
DoDrawString(
vl->flags & VL_DESC ? "\xAA" : "\xA0", 69, 15, 0x10);
/* draw the aircraft */
{
Vehicle *v;
int n = 0;
const int x = 2; // offset from left side of widget
int y = PLY_WND_PRC__OFFSET_TOP_WIDGET; // offset from top of widget
i += w->vscroll.pos; // offset from sorted aircraft list of current player
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);
StringID str;
while (i < _num_aircraft_sort[window_number]) {
StringID str;
v = DEREF_VEHICLE(_aircraft_sort[i].index);
assert(v->type == VEH_Aircraft && v->subtype <= 2);
assert(v->type == VEH_Aircraft && v->subtype <= 2 && v->owner == window_number);
DrawAircraftImage(v, x + 19, y + 6, INVALID_VEHICLE);
DrawVehicleProfitButton(v, x, y + 13);
DrawAircraftImage(v, x + 19, y + 6, INVALID_VEHICLE);
DrawVehicleProfitButton(v, x, y+13);
SetDParam(0, v->unitnumber);
if (IsAircraftHangarTile(v->tile))
str = STR_021F;
else
str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2;
DrawString(x, y + 2, str, 0);
SET_DPARAM16(0, v->unitnumber);
if (IsAircraftHangarTile(v->tile)) {
str = STR_021F;
} else {
str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2;
}
DrawString(x, y+2, str, 0);
SetDParam(0, v->profit_this_year);
SetDParam(1, v->profit_last_year);
DrawString(x + 19, y + 28, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, 0);
SET_DPARAM32(0, v->profit_this_year);
SET_DPARAM32(1, v->profit_last_year);
DrawString(x+19, y + 28, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, 0);
if (v->string_id != STR_SV_AIRCRAFT_NAME) {
SET_DPARAM16(0, v->string_id);
DrawString(x+19, y, STR_01AB, 0);
}
DrawSmallSchedule(v, x+136, y);
y += PLY_WND_PRC__SIZE_OF_ROW_BIG;
i++; // next aircraft
if (++n == w->vscroll.cap) { break;} // max number of aircraft in the window
if (v->string_id != STR_SV_AIRCRAFT_NAME) {
SetDParam(0, v->string_id);
DrawString(x + 19, y, STR_01AB, 0);
}
DrawSmallSchedule(v, x + 136, y);
y += PLY_WND_PRC__SIZE_OF_ROW_BIG;
}
} break;
case WE_CLICK: {
switch(e->click.widget) {
case 2: /* Flip sorting method ascending/descending */
_aircraft_sort_order[(byte)w->window_number] ^= 1;
_aircraft_sort_dirty[(byte)w->window_number] = true;
case 3: /* Flip sorting method ascending/descending */
vl->flags ^= VL_DESC;
vl->flags |= VL_RESORT;
SetWindowDirty(w);
break;
case 3: case 4:/* Select sorting criteria dropdown menu */
ShowDropDownMenu(w, _vehicle_sort_listing, _aircraft_sort_type[(byte)w->window_number], 4, 0); // do it for widget 4
case 4: case 5:/* Select sorting criteria dropdown menu */
ShowDropDownMenu(w, _vehicle_sort_listing, vl->sort_type, 5, 0);
return;
case 6: { /* Matrix to show vehicles */
case 7: { /* Matrix to show vehicles */
uint32 id_v = (e->click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET) / PLY_WND_PRC__SIZE_OF_ROW_BIG;
if (id_v >= w->vscroll.cap) { return;} // click out of bounds
@@ -1024,21 +1016,19 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
id_v += w->vscroll.pos;
{
const byte owner = (byte)w->window_number;
Vehicle *v;
id_v += (owner == 0) ? 0 : _num_aircraft_sort[owner - 1]; // first element in list
if (id_v >= _num_aircraft_sort[owner]) { return;} // click out of vehicle bound
if (id_v >= vl->list_length) return; // click out of list bound
v = DEREF_VEHICLE(_aircraft_sort[id_v].index); // add the offset id_x to that
v = DEREF_VEHICLE(vl->sort_list[id_v].index);
assert(v->type == VEH_Aircraft && v->subtype <= 2 && v->owner == owner);
assert(v->type == VEH_Aircraft && v->subtype <= 2);
ShowAircraftViewWindow(v);
}
} break;
case 8: { /* Build new Vehicle */
case 9: { /* Build new Vehicle */
uint tile;
tile = _last_built_aircraft_depot_tile;
@@ -1058,84 +1048,65 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
} break;
case WE_DROPDOWN_SELECT: /* we have selected a dropdown item in the list */
if (_aircraft_sort_type[(byte)w->window_number] != e->dropdown.index) // if value hasn't changed, dont resort list
_aircraft_sort_dirty[(byte)w->window_number] = true;
_aircraft_sort_type[(byte)w->window_number] = e->dropdown.index;
if (_aircraft_sort_type[(byte)w->window_number] != SORT_BY_UNSORTED) // enable 'Sort By' if a sorter criteria is chosen
w->disabled_state &= ~(1 << 2);
if (vl->sort_type != e->dropdown.index) {
// value has changed -> resort
vl->flags |= VL_RESORT;
vl->sort_type = e->dropdown.index;
// enable 'Sort By' if a sorter criteria is chosen
if (vl->sort_type != SORT_BY_UNSORTED)
w->disabled_state &= ~(1 << 3);
}
SetWindowDirty(w);
break;
case WE_CREATE: /* set up resort timer */
w->custom[0] = DAY_TICKS;
w->custom[1] = PERIODIC_RESORT_DAYS;
vl->sort_list = NULL;
vl->flags = VL_REBUILD;
vl->sort_type = SORT_BY_UNSORTED;
vl->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS;
break;
case WE_DESTROY:
free(vl->sort_list);
break;
case WE_TICK: /* resort the list every 20 seconds orso (10 days) */
if (--w->custom[0] == 0) {
w->custom[0] = DAY_TICKS;
if (--w->custom[1] == 0) {
w->custom[1] = PERIODIC_RESORT_DAYS;
_aircraft_sort_dirty[(byte)w->window_number] = true;
DEBUG(misc, 1) ("Periodic resort Aircraft list player %d...", w->window_number+1);
SetWindowDirty(w);
}
if (--vl->resort_timer == 0) {
DEBUG(misc, 1) ("Periodic resort aircraft list player %d station %d",
owner, station);
vl->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS;
vl->flags |= VL_RESORT;
SetWindowDirty(w);
}
break;
}
}
static const Widget _player_aircraft_widgets[] = {
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 259, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_TIP},
{ WWT_PANEL, 14, 81, 237, 14, 25, 0x0, STR_SORT_TIP},
{ WWT_CLOSEBOX, 14, 238, 248, 14, 25, STR_0225, STR_SORT_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},
{ WIDGETS_END},
};
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_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
_player_aircraft_widgets,
PlayerAircraftWndProc
};
static const Widget _other_player_aircraft_widgets[] = {
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 259, 0, 13, STR_A009_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 14, 0, 80, 14, 25, SRT_SORT_BY, STR_SORT_TIP},
{ WWT_PANEL, 14, 81, 237, 14, 25, 0x0, STR_SORT_TIP},
{ WWT_CLOSEBOX, 14, 238, 248, 14, 25, STR_0225, STR_SORT_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},
{ WIDGETS_END},
};
static const WindowDesc _other_player_aircraft_desc = {
-1, -1, 260, 170,
WC_AIRCRAFT_LIST,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_STICKY_BUTTON,
_other_player_aircraft_widgets,
PlayerAircraftWndProc
};
void ShowPlayerAircraft(int player)
void ShowPlayerAircraft(int player, int station)
{
Window *w;
if (player == _local_player) {
w = AllocateWindowDescFront(&_player_aircraft_desc, player);
w = AllocateWindowDescFront(&_player_aircraft_desc, (station << 16) | player);
} else {
w = AllocateWindowDescFront(&_other_player_aircraft_desc, player);
w = AllocateWindowDescFront(&_other_player_aircraft_desc, (station << 16) | player);
}
if (w) {
+10 -8
View File
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include "airport.h"
AirportFTAClass *CountryAirport;
@@ -13,7 +14,7 @@ static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
const byte nofhelipads, const byte nofhelipadgroups,
const byte entry_point, const byte acc_planes,
const AirportFTAbuildup *FA,
const TileIndex *depots);
const TileIndex *depots, const byte nof_depots);
static void AirportFTAClass_Destructor(AirportFTAClass *Airport);
static uint16 AirportGetNofElements(const AirportFTAbuildup *FA);
@@ -26,23 +27,23 @@ void InitializeAirports()
{
// country airport
CountryAirport = (AirportFTAClass *)malloc(sizeof(AirportFTAClass));
AirportFTAClass_Constructor(CountryAirport, 2, 1, 0, 0, 16, ALL, _airport_fta_country, _airport_depots_country);
AirportFTAClass_Constructor(CountryAirport, 2, 1, 0, 0, 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);
AirportFTAClass_Constructor(CityAirport, 3, 1, 0, 0, 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);
AirportFTAClass_Constructor(MetropolitanAirport, 3, 1, 0, 0, 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);
AirportFTAClass_Constructor(InternationalAirport, 6, 2, 2, 1, 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, _airport_depots_heliport_oilrig);
AirportFTAClass_Constructor(Heliport, 0, 0, 1, 1, 7, HELICOPTERS_ONLY, _airport_fta_heliport_oilrig, NULL, 0);
Oilrig = Heliport; // exactly the same structure for heliport/oilrig, so share state machine
}
@@ -60,7 +61,7 @@ static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
const byte nofhelipads, const byte nofhelipadgroups,
const byte entry_point, const byte acc_planes,
const AirportFTAbuildup *FA,
const TileIndex *depots)
const TileIndex *depots, const byte nof_depots)
{
// if there are more terminals than 6, internal variables have to be changed, so don't allow that
// same goes for helipads
@@ -88,7 +89,8 @@ static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
Airport->nofhelipadgroups = nofhelipadgroups;
Airport->acc_planes = acc_planes;
Airport->entry_point = entry_point;
Airport->airport_depots = (const uint16*)depots;
Airport->airport_depots = depots;
Airport->nof_depots = nof_depots;
// build the state machine
+2 -1
View File
@@ -32,7 +32,8 @@ typedef struct AirportFTAClass {
byte nofhelipadgroups; // helipads belong to so many groups (MAX is the nofhelipads)
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 uint16 *airport_depots; // gives the position of the depots on the airports
const TileIndex *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;
+38 -36
View File
@@ -1,10 +1,12 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "window.h"
#include "gui.h"
#include "viewport.h"
#include "gfx.h"
#include "sound.h"
#include "command.h"
#include "vehicle.h"
#include "station.h"
@@ -15,10 +17,10 @@ static byte _selected_airport_type;
static void ShowBuildAirportPicker();
static void CcBuildAirport(bool success, uint tile, uint32 p1, uint32 p2)
void CcBuildAirport(bool success, uint tile, uint32 p1, uint32 p2)
{
if (success) {
SndPlayTileFx(0x1D, tile);
SndPlayTileFx(SND_1F_SPLAT, tile);
ResetObjectToPlace();
}
}
@@ -36,36 +38,24 @@ static void PlaceAir_DemolishArea(uint tile)
static void BuildAirClick_Airport(Window *w)
{
if (HandlePlacePushButton(w, 2, 0xAA4, 1, PlaceAirport)) ShowBuildAirportPicker();
if (HandlePlacePushButton(w, 3, 0xAA4, 1, PlaceAirport)) ShowBuildAirportPicker();
}
static void BuildAirClick_Demolish(Window *w)
{
HandlePlacePushButton(w, 3, ANIMCURSOR_DEMOLISH, 1, PlaceAir_DemolishArea);
HandlePlacePushButton(w, 4, ANIMCURSOR_DEMOLISH, 1, PlaceAir_DemolishArea);
}
static void BuildAirClick_Lower(Window *w)
static void BuildAirClick_Landscaping(Window *w)
{
HandlePlacePushButton(w, 4, ANIMCURSOR_LOWERLAND, 2, PlaceProc_LowerLand);
}
static void BuildAirClick_Raise(Window *w)
{
HandlePlacePushButton(w, 5, ANIMCURSOR_RAISELAND, 2, PlaceProc_RaiseLand);
}
static void BuildAirClick_Purchase(Window *w)
{
HandlePlacePushButton(w, 6, 0x12B8, 1, PlaceProc_BuyLand);
ShowTerraformToolbar();
}
typedef void OnButtonClick(Window *w);
static OnButtonClick * const _build_air_button_proc[] = {
BuildAirClick_Airport,
BuildAirClick_Demolish,
BuildAirClick_Lower,
BuildAirClick_Raise,
BuildAirClick_Purchase,
BuildAirClick_Landscaping,
};
static void BuildAirToolbWndProc(Window *w, WindowEvent *e)
@@ -76,8 +66,8 @@ static void BuildAirToolbWndProc(Window *w, WindowEvent *e)
break;
case WE_CLICK:
if (e->click.widget-2 >= 0)
_build_air_button_proc[e->click.widget - 2](w);
if (e->click.widget - 3 >= 0)
_build_air_button_proc[e->click.widget - 3](w);
break;
case WE_PLACE_OBJ:
@@ -96,7 +86,7 @@ static void BuildAirToolbWndProc(Window *w, WindowEvent *e)
break;
case WE_ABORT_PLACE_OBJ:
w->click_state = 0;
UnclickWindowButtons(w);
SetWindowDirty(w);
w = FindWindowById(WC_BUILD_STATION, 0);
if (w != 0)
@@ -106,21 +96,20 @@ 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, 129, 0, 13, STR_A000_AIRPORT_CONSTRUCT, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ 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, 0x2B7, STR_018E_LOWER_A_CORNER_OF_LAND},
{ WWT_PANEL, 7, 86, 107, 14, 35, 0x2B6, STR_018F_RAISE_A_CORNER_OF_LAND},
{ WWT_PANEL, 7, 108, 129, 14, 35, 0x12B7, STR_0329_PURCHASE_LAND_FOR_FUTURE},
{ 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},
{ WIDGETS_END},
};
static const WindowDesc _air_toolbar_desc = {
510, 22, 130, 36,
640-86, 22, 86, 36,
WC_BUILD_TOOLBAR,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
_air_toolbar_widgets,
BuildAirToolbWndProc
};
@@ -136,6 +125,7 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
switch(e->event) {
case WE_PAINT: {
int sel;
int rad = 4; // default catchment radious
if (WP(w,def_d).close)
return;
@@ -154,13 +144,25 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
// select default the coverage area to 'Off' (8)
w->click_state = ((1<<3) << sel) | ((1<<8) << _station_show_coverage);
SetTileSelectSize(_airport_size_x[sel],_airport_size_y[sel]);
if (_station_show_coverage) SetTileSelectBigSize(-4, -4, 8, 8);
if (_patches.modified_catchment) {
switch (sel) {
case AT_OILRIG: rad = CA_AIR_OILPAD; break;
case AT_HELIPORT: rad = CA_AIR_HELIPORT; break;
case AT_SMALL: rad = CA_AIR_SMALL; break;
case AT_LARGE: rad = CA_AIR_LARGE; break;
case AT_METROPOLITAN: rad = CA_AIR_METRO; break;
case AT_INTERNATIONAL: rad = CA_AIR_INTER; break;
}
}
if (_station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
DrawWindowWidgets(w);
// strings such as 'Size' and 'Coverage Area'
DrawStringCentered(74, 16, STR_305B_SIZE, 0);
DrawStringCentered(74, 78, STR_3066_COVERAGE_AREA_HIGHLIGHT, 0);
DrawStationCoverageAreaText(2, 104, (uint)-1);
DrawStationCoverageAreaText(2, 104, (uint)-1, rad);
break;
}
@@ -171,12 +173,12 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
break;
case 3: case 4: case 5: case 6: case 7:
_selected_airport_type = e->click.widget - 3;
SndPlayFx(0x13);
SndPlayFx(SND_15_BEEP);
SetWindowDirty(w);
break;
case 8: case 9:
_station_show_coverage = e->click.widget - 8;
SndPlayFx(0x13);
SndPlayFx(SND_15_BEEP);
SetWindowDirty(w);
break;
}
+5 -9
View File
@@ -4,10 +4,6 @@
#include "stdafx.h"
#include "macros.h"
// don't forget to change the airport_depots too for larger mapsizes. TILE_X_BITS 16
// won't fit in uint16 for example and overflow will occur in the checking code!
// TrueLight -- So make it a TileIndex..
typedef struct AirportMovingData {
int x,y;
byte flag;
@@ -267,7 +263,7 @@ 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[] = {1, TILE_XY(3,0)};
static const TileIndex _airport_depots_country[] = {TILE_XY(3,0)};
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},
@@ -297,7 +293,7 @@ static const AirportFTAbuildup _airport_fta_country[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
static const TileIndex _airport_depots_city[] = {1, TILE_XY(5,0)};
static const TileIndex _airport_depots_city[] = {TILE_XY(5,0)};
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
@@ -331,7 +327,7 @@ static const AirportFTAbuildup _airport_fta_city[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
static const TileIndex _airport_depots_metropolitan[] = {1, TILE_XY(5,0)};
static const TileIndex _airport_depots_metropolitan[] = {TILE_XY(5,0)};
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
@@ -367,7 +363,7 @@ static const AirportFTAbuildup _airport_fta_metropolitan[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
static const TileIndex _airport_depots_international[] = {2, TILE_XY(0,3), TILE_XY(6,1)};
static const TileIndex _airport_depots_international[] = {TILE_XY(0,3), TILE_XY(6,1)};
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},
@@ -429,7 +425,7 @@ static const AirportFTAbuildup _airport_fta_international[] = {
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
};
static const TileIndex _airport_depots_heliport_oilrig[] = {0};
// heliports, oilrigs don't have depots
static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = {
{0,HELIPAD1,HELIPAD1_block,1},
{1,HELITAKEOFF,NOTHING_block,0}, // takeoff
+8 -6
View File
@@ -1,11 +1,13 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "window.h"
#include "gui.h"
#include "viewport.h"
#include "gfx.h"
#include "command.h"
#include "sound.h"
static struct BridgeData {
int count;
@@ -22,9 +24,9 @@ extern const PalSpriteID _bridge_sprites[MAX_BRIDGES];
extern const uint16 _bridge_speeds[MAX_BRIDGES];
extern const StringID _bridge_material[MAX_BRIDGES];
static void CcBuildBridge(bool success, uint tile, uint32 p1, uint32 p2)
void CcBuildBridge(bool success, uint tile, uint32 p1, uint32 p2)
{
if (success) { SndPlayTileFx(0x25, tile); }
if (success) SndPlayTileFx(SND_27_BLACKSMITH_ANVIL, tile);
}
static void BuildBridge(Window *w, int i)
@@ -45,9 +47,9 @@ static void BuildBridgeWndProc(Window *w, WindowEvent *e)
for(i=0; i < 4 && i + w->vscroll.pos < _bridge.count; i++) {
int ind = _bridge.indexes[i + w->vscroll.pos];
SET_DPARAM32(2, _bridge.costs[i + w->vscroll.pos]);
SET_DPARAM16(1, (_bridge_speeds[ind] >> 4) * 10);
SET_DPARAM16(0, _bridge_material[ind]);
SetDParam(2, _bridge.costs[i + w->vscroll.pos]);
SetDParam(1, (_bridge_speeds[ind] >> 4) * 10);
SetDParam(0, _bridge_material[ind]);
DrawSprite(_bridge_sprites[ind], 3, 15 + i * 22);
DrawString(44, 15 + i*22 , STR_500D, 0);
+74
View File
@@ -0,0 +1,74 @@
#include "stdafx.h"
#include "ttd.h"
#include "functions.h"
// If you add a callback for DoCommandP, also add the callback in here
// see below for the full list!
// If you don't do it, it won't work across the network!!
/* aircraft_gui.c */
CommandCallback CcBuildAircraft;
/* airport_gui.c */
CommandCallback CcBuildAirport;
/* bridge_gui.c */
CommandCallback CcBuildBridge;
/* dock_gui.c */
CommandCallback CcBuildDocks;
CommandCallback CcBuildCanal;
/* main_gui.c */
CommandCallback CcPlaySound10;
CommandCallback CcPlaceSign;
CommandCallback CcTerraform;
//CommandCallback CcDemolish;
CommandCallback CcBuildTown;
/* rail_gui.c */
CommandCallback CcPlaySound1E;
CommandCallback CcRailDepot;
CommandCallback CcStation;
CommandCallback CcBuildRailTunnel;
/* road_gui.c */
CommandCallback CcPlaySound1D;
CommandCallback CcBuildRoadTunnel;
CommandCallback CcRoadDepot;
/* roadveh_gui.c */
CommandCallback CcBuildRoadVeh;
/* ship_gui.c */
CommandCallback CcBuildShip;
/* train_gui.c */
CommandCallback CcBuildWagon;
CommandCallback CcBuildLoco;
CommandCallback *_callback_table[] = {
/* 0x00 */ NULL,
/* 0x01 */ CcBuildAircraft,
/* 0x02 */ CcBuildAirport,
/* 0x03 */ CcBuildBridge,
/* 0x04 */ CcBuildCanal,
/* 0x05 */ CcBuildDocks,
/* 0x06 */ CcBuildLoco,
/* 0x07 */ CcBuildRoadVeh,
/* 0x08 */ CcBuildShip,
/* 0x09 */ CcBuildTown,
/* 0x0A */ CcBuildRoadTunnel,
/* 0x0B */ CcBuildRailTunnel,
/* 0x0C */ CcBuildWagon,
/* 0x0D */ CcRoadDepot,
/* 0x0E */ CcRailDepot,
/* 0x0F */ CcPlaceSign,
/* 0x10 */ CcPlaySound10,
/* 0x11 */ CcPlaySound1D,
/* 0x12 */ CcPlaySound1E,
/* 0x13 */ CcStation,
/* 0x14 */ CcTerraform
};
const int _callback_table_count = sizeof (_callback_table) / sizeof (*_callback_table);
+7
View File
@@ -0,0 +1,7 @@
#ifndef CALLBACK_TABLE_H
#define CALLBACK_TABLE_H
extern CommandCallback *_callback_table[];
extern const int _callback_table_count;
#endif
+89
View File
@@ -1,3 +1,92 @@
0.3.5 (2004-12-24)
------------------------------------------------------------------------
- Feature: [Network] New network, very stable, a lot of new features
- Feature: [Network] Ingame Serverlist (with online game-servers to join)
- Feature: [Network] Webbased Serverlist: http://servers.openttd.org/
- Feature: [Network] Added dedicated server support
- Feature: [Network] Cheat protection in MultiPlayer
- Feature: [Network] Patch settings are also synced with the server
- Feature: [Network] Chat
- Feature: Custom currency settings
- Feature: Per-station vehicle lists
- Feature: More realistically sized catchment areas
- Feature: Sticky windows
- Feature: Even better support for newgrf-files
- Feature: Implement improved vehicle loading algorithm
- Feature: Even more advanced console
- Feature: Game compiles under BEOS_SERVER
- Feature: Game compiles under OS/2 (no network-support)
- Feature: OpenTTD runs with the grf files of the DOS version
- Feature: [Big Endian computers, which are mac and MorphOS]: are able to load savegames by TTD(Patch)
- Feature: Many more new things...
- Add: 'l' openes the landscaping toolbar globally
- Add: Make the town sometimes build streets on slopes
- Add: Manpage
- Add: New checkpoint grahpics
- Add: SHIFT+DEL now deletes all non-vital windows (only status bar and main bar remain)
- Add: Windows now shows revision, release information in title bar
- Add: Windows snap at each other
- Change: [OSX build] Moved data and lang folders inside OpenTTD. This got rid of the package system too, making installing/updating easier
- Fix: [OSX build] Music is now on by default again
- Fix: [OSX build] Made error opens the console
- Fix: [SDL] Added a confirmation dialog when quitting the game
- Fix: A train can leave and enter the same depot at the same time, then the trai simply got stuck
- Fix: Crash when making png screenshot with odd resolution (Tron)
- Fix: Directories in *nix are now sorted alphabetically in ascending order (Tron).
- Fix: Do not consider a road station as street when growing the town
- Fix: Engines from other climates do not appear any more when never_expire_vehicles is enabled
- Fix: Game options (like drive side) are not taken from the scenario when using 'new game' command
- Fix: Order checker now correctly detects station with invalid facilities
- Fix: Polished GUI in a lot of ways
- Fix: Saving or loading a map doesnt pauses the game anymore
- Fix: Some bridge part isn't displayed transparent in transparent mode
- Fix: Starting with -r option allows all resolutions (Tron)
- Fix: The pathfinder no longer sees rail with an other owner as a possible route.
- Fix: Unable to select other screenshot format in Game Option
- Fix: Unwanted town renaming
- Fix: Vehicles slow down under bridge if the track is on a foundation
- Fix: You can no longer change name of waypoints whom are owned by somebody else
- Fix: [ 1090313 ] Shares are now also sold when a company goes bankrupt
- Fix: [ 1087701 ] It is no longer possible to crash trains of other companies by building a depot close to a station. (even more: trains do no longer enter tiles that do not belong to his owner)
- Fix: [ 1087403 ] Crashed trains aren't reported to have too few orders any more
- Fix: [ 1086375 ] Backup-order-list was not closed with an OT_NOTHING,
- Fix: [ 1085255 ] Docks now have a button to display the catchment area
- Fix: [ 1070274 ] Invisible trains. Weird macros and MSVC optimizing don't always mix. (Tron)
- Fix: [ 1068269 ] Number of passangers and mail in exclusive test offer window is swapped
- Fix: [ 1066504 ] Pause key pauses the game
- Fix: [ 1066121 ] Resetting file name after deleting a file (dannys9)
- Fix: [ 1066114 ] Code error in win32.c Thanks Shai
- Fix: [ 1065247 ] Windows can be placed behind toolbar
- Fix: [ 1064742 ] Editor Map-Menu wrong String
- Fix: [ 1058809 ] Always report a bus/lorry station as unpassable
- Fix: [ 1053397 ] Refit train window stays open
- Fix: [ 1050993 ] Incorrect Tooltip in Road Vehicle List.
- Fix: [ 1048596 ] Monorail and Maglev sounds are swapped
- Fix: [ 1040119 ] Flooded wagons in depots don't keep constantly exploding any more
- Fix: [ 1035303 ] Bug about lowering tracks built on slopes
- Fix: [ 1035066 ] 'Allow goto depot' turned off, no checkpoints in orders
- Fix: [ 1034318 ] Place sign and blue message box
- Fix: [ 1033947 ] Wrong mapping between music titles and songs
- Fix: [ 1030393 ] Some screensizes crashes OTTD. Fix in general bug that only allows resolutions which were multiple of 8 in width and height. Also use closest possible resolution in fullscreen if window size is not a valid resolution (Tron)
- Fix: [ 1030275 ] 'Service at' orders ignored after 2090. After 2090 year is reset to 1. Jan 2090, so most of the time, last service was in the future and no service ensured.
- Fix: [ 1029064 ] Building a station acted weird in some rare situations
- Fix: [ 1022227 ] Ships could unload cargo at stations without docks
- Fix: [ 999669 ] Wrong trees (toyland's) in sub-tropical landscape style
- Fix: [ 993500 ] High bridge rendering error
- Fix: [ 991101 ] Disabled buttons flicker no more
- Fix: [ 985925 ] Start/stop flag in train depots always works, regardless of the horizontal scroll position
- Fix: [ 985439 ] Un-owned rail. Trains could cross competitor's tracks if there was a road-crossing over it.
- Fix: [ 982611 ] Pathfinding bug; train likes the roundabout. If train needs servicing it will now look 16 tiles along the track instead of 12 tiles manhattan style (blathijs)
- Fix: [ 967096 ] Fullscreen. New button 'Fullscreen' in 'Game Options' menu which lets you set fullscreen ingame.
- Fix: [ 958098 ] No longer road/rail crossing signals hang when a train is reversed at the wrong moment (Yeah, our longest open bug finally fixed :) :) :))
- Fix: [ 926105 ] Ctrl + d bug. Longest outstanding bug has been fixed \o/ 2004-03-30 (Tron)
- Language: Added Spanish
- Language: Added Catalan
- Language: Added Icelandic
- Language: Updated most languages
- Fix: Many more things....
0.3.4 (2004-09-14)
------------------------------------------------------------------------
- Add: Dutch translation
+10 -4
View File
@@ -1,5 +1,7 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "viewport.h"
#include "command.h"
@@ -92,11 +94,15 @@ static int TerraformProc(TerraformerState *ts, uint tile, int mode)
if ((_map_type_and_height[tile] >> 4) == 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};
// Nothing could be built at the steep slope - this avoids a bug
// when you have a single diagonal track in one corner on a
// basement and then you raise the other corner.
if ((GetTileSlope(tile, NULL)&0xF) == _railway_dangslopes[mode]) {
// basement and then you raise/lower the other corner.
int tileh = GetTileSlope(tile, NULL) & 0xF;
if (tileh == _railway_dangslopes[mode] ||
tileh == _railway_dangslopes2[mode]) {
_terraform_err_tile = tile;
_error_message = STR_1008_MUST_REMOVE_RAILROAD_TRACK;
return -1;
}
@@ -519,7 +525,7 @@ uint GetSlopeTileh_Clear(TileInfo *ti)
return ti->tileh;
}
static void GetAcceptedCargo_Clear(uint tile, AcceptedCargo *ac)
static void GetAcceptedCargo_Clear(uint tile, AcceptedCargo ac)
{
/* unused */
}
@@ -757,7 +763,7 @@ static void ClickTile_Clear(uint tile)
/* not used */
}
uint32 GetTileTrackStatus_Clear(uint tile, TransportType mode)
static uint32 GetTileTrackStatus_Clear(uint tile, TransportType mode)
{
return 0;
}
+39 -37
View File
@@ -1,8 +1,11 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "gui.h"
#include "command.h"
#include "player.h"
#include "network.h"
#define DEF_COMMAND(yyyy) int32 yyyy(int x, int y, uint32 flags, uint32 p1, uint32 p2)
@@ -30,9 +33,9 @@ DEF_COMMAND(CmdSellLandArea);
DEF_COMMAND(CmdBuildTunnel);
DEF_COMMAND(CmdBuildTrainDepot);
DEF_COMMAND(CmdBuildTrainCheckpoint);
DEF_COMMAND(CmdRenameCheckpoint);
DEF_COMMAND(CmdRemoveTrainCheckpoint);
DEF_COMMAND(CmdBuildTrainWaypoint);
DEF_COMMAND(CmdRenameWaypoint);
DEF_COMMAND(CmdRemoveTrainWaypoint);
DEF_COMMAND(CmdBuildTruckStation);
@@ -127,6 +130,7 @@ DEF_COMMAND(CmdSetRoadDriveSide);
DEF_COMMAND(CmdSetTownNameType);
DEF_COMMAND(CmdChangeDifficultyLevel);
DEF_COMMAND(CmdChangePatchSetting);
DEF_COMMAND(CmdStartStopShip);
DEF_COMMAND(CmdSellShip);
@@ -148,6 +152,7 @@ DEF_COMMAND(CmdCloneOrder);
DEF_COMMAND(CmdClearArea);
DEF_COMMAND(CmdGiveMoney);
DEF_COMMAND(CmdMoneyCheat);
DEF_COMMAND(CmdBuildCanal);
DEF_COMMAND(CmdBuildLock);
@@ -180,9 +185,9 @@ static CommandProc * const _command_proc_table[] = {
CmdBuildTunnel, /* 13 */
CmdRemoveFromRailroadStation, /* 14 */
CmdConvertRail, /* 15 */
CmdBuildTrainCheckpoint, /* 16 */
CmdRenameCheckpoint, /* 17 */
CmdRemoveTrainCheckpoint, /* 18 */
CmdBuildTrainWaypoint, /* 16 */
CmdRenameWaypoint, /* 17 */
CmdRemoveTrainWaypoint, /* 18 */
CmdBuildTruckStation, /* 19 */
NULL, /* 20 */
CmdBuildBusStation, /* 21 */
@@ -300,6 +305,8 @@ static CommandProc * const _command_proc_table[] = {
CmdBuildManySignals, /* 110 */
//CmdDestroyIndustry, /* 109 */
CmdDestroyCompanyHQ, /* 111 */
CmdGiveMoney, /* 112 */
CmdChangePatchSetting, /* 113 */
};
int32 DoCommandByTile(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc)
@@ -385,15 +392,6 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
assert(_docommand_recursive == 0);
if (_networking && !(cmd & CMD_NET_INSTANT) && _pause) {
// When the game is paused, and we are in a network game
// we do not allow any commands. This is because
// of some technical reasons
ShowErrorMessage(-1, STR_MULTIPLAYER_PAUSED, x, y);
_docommand_recursive = 0;
return true;
}
_error_message = INVALID_STRING_ID;
_error_message_2 = cmd >> 16;
_additional_cash_required = 0;
@@ -412,19 +410,25 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
assert((cmd & 0xFF) < lengthof(_command_proc_table));
proc = _command_proc_table[cmd & 0xFF];
// this command is a notest command?
// Some commands have a different output in dryrun then 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
// CMD_REMOVE_ROAD: This command has special local authority
// restrictions which may cause the test run to fail (the previous
// road fragments still stay there and the town won't let you
// disconnect the road system), but the exec will succeed and this
// fact will trigger an assertion failure. --pasky
notest =
(cmd & 0xFF) == CMD_CLEAR_AREA ||
(cmd & 0xFF) == CMD_CONVERT_RAIL ||
(cmd & 0xFF) == CMD_LEVEL_LAND ||
(cmd & 0xFF) == CMD_TRAIN_GOTO_DEPOT;
if (_networking && (cmd & CMD_ASYNC)) notest = true;
(cmd & 0xFF) == CMD_REMOVE_ROAD;
_docommand_recursive = 1;
// cost estimation only?
if (_shift_pressed && _current_player == _local_player && !(cmd & CMD_DONT_NETWORK)) {
if (_shift_pressed && _current_player == _local_player && !(cmd & CMD_NETWORK_COMMAND)) {
// estimate the cost.
res = proc(x, y, flags, p1, p2);
if ((uint32)res >> 16 == 0x8000) {
@@ -439,30 +443,26 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
}
// unless the command is a notest command, check if it can be executed.
if (!notest) {
if (!((cmd & CMD_NO_TEST_IF_IN_NETWORK) && _networking)) {
// first test if the command can be executed.
res = proc(x,y, flags, p1, p2);
if ((uint32)res >> 16 == 0x8000) {
if (res & 0xFFFF) _error_message = res & 0xFFFF;
goto show_error;
}
// no money?
if (res != 0 && !CheckPlayerHasMoney(res)) goto show_error;
// no money? Only check if notest is off
if (!notest && res != 0 && !CheckPlayerHasMoney(res)) goto show_error;
}
// put the command in a network queue and execute it later?
if (_networking && !(cmd & CMD_DONT_NETWORK)) {
if (!(cmd & CMD_NET_INSTANT)) {
NetworkSendCommand(tile, p1, p2, cmd, callback);
_docommand_recursive = 0;
return true;
} else {
// Instant Command ... Relay and Process then
NetworkSendCommand(tile, p1, p2, cmd, callback);
}
#ifdef ENABLE_NETWORK
// If we are in network, and the command is not from the network
// send it to the command-queue and abort execution
if (_networking && !(cmd & CMD_NETWORK_COMMAND)) {
NetworkSend_Command(tile, p1, p2, cmd, callback);
_docommand_recursive = 0;
return true;
}
#endif /* ENABLE_NETWORK */
// update last build coordinate of player.
if ( tile != 0 && _current_player < MAX_PLAYERS) DEREF_PLAYER(_current_player)->last_build_coordinate = tile;
@@ -471,7 +471,9 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
_yearly_expenses_type = 0;
res2 = proc(x,y, flags|DC_EXEC, p1, p2);
if (!notest) {
// If notest is on, it means the result of the test can be different then
// the real command.. so ignore the test
if (!notest && !((cmd & CMD_NO_TEST_IF_IN_NETWORK) && _networking)) {
assert(res == res2); // sanity check
} else {
if ((uint32)res2 >> 16 == 0x8000) {
@@ -486,7 +488,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
if (res2 != 0)
ShowCostOrIncomeAnimation(x, y, GetSlopeZ(x, y), res2);
if (_additional_cash_required) {
SET_DPARAM32(0, _additional_cash_required);
SetDParam(0, _additional_cash_required);
ShowErrorMessage(STR_0003_NOT_ENOUGH_CASH_REQUIRES, _error_message_2, x,y);
if (res2 == 0) goto callb_err;
}
+7 -6
View File
@@ -20,9 +20,9 @@ enum {
CMD_REMOVE_FROM_RAILROAD_STATION = 14,
CMD_CONVERT_RAIL = 15,
CMD_BUILD_TRAIN_CHECKPOINT = 16,
CMD_RENAME_CHECKPOINT = 17,
CMD_REMOVE_TRAIN_CHECKPOINT = 18,
CMD_BUILD_TRAIN_WAYPOINT = 16,
CMD_RENAME_WAYPOINT = 17,
CMD_REMOVE_TRAIN_WAYPOINT = 18,
CMD_BUILD_TRUCK_STATION = 19,
CMD_BUILD_BUS_STATION = 21,
@@ -146,6 +146,8 @@ enum {
//CMD_DESTROY_INDUSTRY = 109,
CMD_DESTROY_COMPANY_HQ = 111,
CMD_GIVE_MONEY = 112,
CMD_CHANGE_PATCH_SETTING = 113,
};
enum {
@@ -166,9 +168,8 @@ enum {
enum {
CMD_AUTO = 0x200,
CMD_NO_WATER = 0x400,
CMD_DONT_NETWORK = 0x800, // execute the command without sending it on the network
CMD_ASYNC = 0x1000, // execute the command asynchronously without testing first in networking
CMD_NET_INSTANT = 0x2000,
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
};
//#define return_cmd_error(errcode) do { _error_message=(errcode); return CMD_ERROR; } while(0)
Vendored
-24
View File
@@ -1,24 +0,0 @@
#!/bin/sh -
SDLCONFIG=`which sdl-config || which sdl11-config || which sdl12-config || echo `
if [ -n "$SDLCONFIG" ] ; then
echo "SDL config is located at: $SDLCONFIG"
sed -e"s@XX_SDL_CONFIG_PLACEHOLDER_XX@$SDLCONFIG@g" < Jamfile.next > tmp && mv tmp Jamfile
else
echo "********************************"
echo "ERROR! SDL CONFIG WAS NOT FOUND!"
echo "********************************"
exit 1
fi
echo "Configure complete. Now use 'jam' to build"
echo "Add -sWITH_PNG=<dir to png.h> to build with PNG support"
echo "Add -sWITH_ZLIB=1 to enable zlib savegame support"
echo "Add -sRELEASE=1 to build an optimized executable"
echo "Add -sWITH_BONE_NETWORKING=1 to build with BeOS BONE networking support"
echo "Add -sBEOS_MIDI=1 to enable BeOS native MIDI (libmidi.so) music output"
echo ""
echo "For people using make:"
echo "write make (or gmake)"
echo "configure have nothing to do with the makefile"
+1169 -914
View File
File diff suppressed because it is too large Load Diff
+96 -66
View File
@@ -1,19 +1,13 @@
#ifndef CONSOLE_H
#define CONSOLE_H
// ** console ** //
enum {
ICONSOLE_OPENED=0,
ICONSOLE_CLOSED,
} _iconsole_modes;
// ** console parser ** //
enum {
ICONSOLE_VAR_NONE=0,
typedef enum _iconsole_var_types {
ICONSOLE_VAR_NONE,
ICONSOLE_VAR_BOOLEAN,
ICONSOLE_VAR_BYTE,
ICONSOLE_VAR_UINT8,
ICONSOLE_VAR_UINT16,
ICONSOLE_VAR_UINT32,
ICONSOLE_VAR_INT16,
@@ -21,47 +15,83 @@ enum {
ICONSOLE_VAR_STRING,
ICONSOLE_VAR_POINTER,
ICONSOLE_VAR_REFERENCE,
ICONSOLE_VAR_UNKNOWN,
ICONSOLE_VAR_UNKNOWN
} _iconsole_var_types;
enum {
typedef enum {
ICONSOLE_FULL,
ICONSOLE_OPENED,
ICONSOLE_CLOSED
} _iconsole_modes;
typedef enum _iconsole_hook_types {
ICONSOLE_HOOK_ACCESS,
ICONSOLE_HOOK_BEFORE_CHANGE,
ICONSOLE_HOOK_BEFORE_EXEC,
ICONSOLE_HOOK_AFTER_CHANGE,
ICONSOLE_HOOK_AFTER_EXEC,
ICONSOLE_HOOK_AFTER_EXEC
} _iconsole_hook_types;
typedef struct {
// -------------- //
void * addr;
byte * name;
// -------------- //
void * hook_access;
void * hook_before_exec;
void * hook_after_exec;
// -------------- //
void * _next;
} _iconsole_cmd;
struct _iconsole_var;
typedef bool (*iconsole_var_hook)(struct _iconsole_var* hook_var);
typedef struct {
typedef struct _iconsole_var {
// --------------- //
void * addr;
const byte * name;
byte type;
union {
void* addr;
bool* bool_;
byte* byte_;
uint16* uint16_;
uint32* uint32_;
int16* int16_;
int32* int32_;
char* string_;
struct _iconsole_var* reference_;
} data;
char* name;
_iconsole_var_types type;
// -------------- //
void * hook_access;
void * hook_before_change;
void * hook_after_change;
iconsole_var_hook hook_access;
iconsole_var_hook hook_before_change;
iconsole_var_hook hook_after_change;
// -------------- //
void * _next;
struct _iconsole_var* _next;
bool _malloc;
} _iconsole_var;
} _iconsole_var;
struct _iconsole_cmd;
typedef bool (*iconsole_cmd_hook)(struct _iconsole_cmd* hook_cmd);
typedef _iconsole_var* (*_iconsole_cmd_addr)(byte argc, char* argv[], byte argt[]);
typedef struct _iconsole_cmd {
// -------------- //
_iconsole_cmd_addr addr;
char* name;
// -------------- //
iconsole_cmd_hook hook_access;
iconsole_cmd_hook hook_before_exec;
iconsole_cmd_hook hook_after_exec;
// -------------- //
void* _next;
} _iconsole_cmd;
void IConsoleAliasRegister(const char* name, const char* cmdline);
typedef struct _iconsole_alias {
// -------------- //
char * cmdline;
char* name;
void* _next;
} _iconsole_alias;
_iconsole_alias* IConsoleAliasGet(const char* name);
// ** console parser ** //
_iconsole_cmd * _iconsole_cmds; // list of registred commands
_iconsole_var * _iconsole_vars; // list of registred vars
_iconsole_cmd* _iconsole_cmds; // list of registred commands
_iconsole_var* _iconsole_vars; // list of registred vars
_iconsole_alias* _iconsole_aliases; // list of registred aliases
// ** console colors ** //
VARDEF byte _iconsole_color_default;
@@ -69,61 +99,61 @@ VARDEF byte _iconsole_color_error;
VARDEF byte _iconsole_color_warning;
VARDEF byte _iconsole_color_debug;
VARDEF byte _iconsole_color_commands;
VARDEF _iconsole_modes _iconsole_mode;
// ** ttd.c functions ** //
void SetDebugString(const char *s);
void SetDebugString(const char* s);
// ** console functions ** //
void IConsoleClearCommand();
void IConsoleInit();
void IConsoleClear();
void IConsoleFree();
void IConsoleResize();
void IConsoleSwitch();
void IConsoleClose();
void IConsoleOpen();
void IConsoleInit(void);
void IConsoleClear(void);
void IConsoleFree(void);
void IConsoleResize(void);
void IConsoleSwitch(void);
void IConsoleClose(void);
void IConsoleOpen(void);
// ** console cmd buffer ** //
void IConsoleCmdBufferAdd(const byte *cmd);
void IConsoleCmdBufferAdd(const char* cmd);
void IConsoleCmdBufferNavigate(signed char direction);
// ** console output ** //
void IConsolePrint(byte color_code, const byte* string);
void CDECL IConsolePrintF(byte color_code, const char *s, ...);
void IConsoleDebug(byte* string);
void IConsoleError(const byte* string);
void IConsoleWarning(const byte* string);
void IConsolePrint(uint16 color_code, const char* string);
void CDECL IConsolePrintF(uint16 color_code, const char* s, ...);
void IConsoleDebug(const char* string);
void IConsoleError(const char* string);
void IConsoleWarning(const char* string);
// *** Commands *** //
void IConsoleCmdRegister(const byte * name, void * addr);
_iconsole_cmd * IConsoleCmdGet(const byte * name);
void IConsoleCmdRegister(const char* name, _iconsole_cmd_addr addr);
_iconsole_cmd* IConsoleCmdGet(const char* name);
// *** Variables *** //
void IConsoleVarRegister(const byte * name, void * addr, byte type);
void IConsoleVarMemRegister(const byte * name, byte type);
void IConsoleVarInsert(_iconsole_var * var, const byte * name);
_iconsole_var * IConsoleVarGet(const byte * name);
_iconsole_var * IConsoleVarAlloc(byte type);
void IConsoleVarFree(_iconsole_var * var);
void IConsoleVarSetString(_iconsole_var * var, const byte * string);
void IConsoleVarSetValue(_iconsole_var * var, int value);
void IConsoleVarDump(_iconsole_var * var, const byte * dump_desc);
void IConsoleVarRegister(const char* name, void* addr, _iconsole_var_types type);
void IConsoleVarMemRegister(const char* name, _iconsole_var_types type);
void IConsoleVarInsert(_iconsole_var* item_new, const char* name);
_iconsole_var* IConsoleVarGet(const char* name);
_iconsole_var* IConsoleVarAlloc(_iconsole_var_types type);
void IConsoleVarFree(_iconsole_var* var);
void IConsoleVarSetString(_iconsole_var* var, const char* string);
void IConsoleVarSetValue(_iconsole_var* var, int value);
void IConsoleVarDump(const _iconsole_var* var, const char* dump_desc);
// *** Parser *** //
void IConsoleCmdExec(const byte* cmdstr);
void IConsoleCmdExec(const char* cmdstr);
// ** console std lib ** //
void IConsoleStdLibRegister();
void IConsoleStdLibRegister(void);
// ** hook code ** //
void IConsoleVarHook(const byte * name, byte type, void * proc);
void IConsoleCmdHook(const byte * name, byte type, void * proc);
bool IConsoleVarHookHandle(_iconsole_var * hook_var, byte type);
bool IConsoleCmdHookHandle(_iconsole_cmd * hook_cmd, byte type);
void IConsoleVarHook(const char* name, _iconsole_hook_types type, iconsole_var_hook proc);
void IConsoleCmdHook(const char* name, _iconsole_hook_types type, iconsole_cmd_hook proc);
bool IConsoleVarHookHandle(_iconsole_var* hook_var, _iconsole_hook_types type);
bool IConsoleCmdHookHandle(_iconsole_cmd* hook_cmd, _iconsole_hook_types type);
#endif /* CONSOLE_H */
+715 -196
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+268
View File
@@ -0,0 +1,268 @@
#include "stdafx.h"
#include "ttd.h"
#include "network.h"
#include "hal.h"
#ifdef ENABLE_NETWORK
#include "gfx.h"
#include "window.h"
#include "command.h"
#include "console.h"
#ifdef WIN32
# include <windows.h> /* GetTickCount */
# include <conio.h>
#endif
#ifdef __OS2__
# include <sys/time.h> /* gettimeofday */
# include <sys/types.h>
# include <unistd.h>
# include <conio.h>
# define STDIN 0 /* file descriptor for standard input */
#endif
#ifdef UNIX
# include <sys/time.h> /* gettimeofday */
# include <sys/types.h>
# include <unistd.h>
# include <signal.h>
# define STDIN 0 /* file descriptor for standard input */
#endif
#ifdef __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; }
#define fork morphos_dummy_fork
#endif
// This file handles all dedicated-server in- and outputs
static void *_dedicated_video_mem;
#ifdef UNIX
/* We want to fork our dedicated server */
void DedicatedFork(void)
{
/* Fork the program */
_dedicated_pid = fork();
switch (_dedicated_pid) {
case -1:
perror("Unable to fork");
exit(1);
case 0:
// We're the child
/* Open the log-file to log all stuff too */
_log_file_fd = fopen(_log_file, "a");
if (!_log_file_fd) {
perror("Unable to open logfile");
exit(1);
}
/* Redirect stdout and stderr to log-file */
if (dup2(fileno(_log_file_fd), fileno(stdout)) == -1) {
perror("Re-routing stdout");
exit(1);
}
if (dup2(fileno(_log_file_fd), fileno(stderr)) == -1) {
perror("Re-routing stderr");
exit(1);
}
break;
default:
// We're the parent
printf("Loading dedicated server...\n");
printf(" - Forked to background with pid %d\n", _dedicated_pid);
exit(0);
}
}
/* Signal handlers */
static void DedicatedSignalHandler(int sig)
{
_exit_game = true;
signal(sig, DedicatedSignalHandler);
}
#endif
static const char *DedicatedVideoStart(char **parm) {
_screen.width = _screen.pitch = _cur_resolution[0];
_screen.height = _cur_resolution[1];
_dedicated_video_mem = malloc(_cur_resolution[0]*_cur_resolution[1]);
_debug_net_level = 6;
_debug_misc_level = 0;
#ifdef WIN32
// For win32 we need to allocate an console (debug mode does the same)
CreateConsole();
SetConsoleTitle("OpenTTD Dedicated Server");
#endif
DEBUG(misc,0)("Loading dedicated server...");
return NULL;
}
static void DedicatedVideoStop() { 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()
{
struct timeval tv;
fd_set readfds;
byte ret;
tv.tv_sec = 0;
tv.tv_usec = 1;
FD_ZERO(&readfds);
FD_SET(STDIN, &readfds);
/* don't care about writefds and exceptfds: */
ret = select(STDIN + 1, &readfds, NULL, NULL, &tv);
if (ret > 0)
return true;
else
return false;
}
#else
static bool InputWaiting()
{
return kbhit();
}
#endif
static void DedicatedHandleKeyInput()
{
#ifdef WIN32
char input;
#endif
static char input_line[200] = "";
#if defined(UNIX) || defined(__OS2__)
if (InputWaiting()) {
if (_exit_game)
return;
fgets(input_line, 200, stdin);
// Forget about the final \n (or \r)
strtok(input_line, "\r\n");
IConsoleCmdExec(input_line);
}
#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';
}
}
#endif
}
static int DedicatedVideoMainLoop()
{
#ifndef WIN32
struct timeval tim;
#endif
uint32 next_tick;
uint32 cur_ticks;
#ifdef WIN32
next_tick = GetTickCount() + 30;
#else
gettimeofday(&tim, NULL);
next_tick = (tim.tv_usec / 1000) + 30 + (tim.tv_sec * 1000);
#endif
/* Signal handlers */
#ifdef UNIX
signal(SIGTERM, DedicatedSignalHandler);
signal(SIGINT, DedicatedSignalHandler);
signal(SIGQUIT, DedicatedSignalHandler);
#endif
// Load the dedicated server stuff
_is_network_server = true;
_network_dedicated = true;
_switch_mode = SM_NONE;
_network_playas = OWNER_SPECTATOR;
_local_player = OWNER_SPECTATOR;
DoCommandP(0, Random(), InteractiveRandom(), NULL, CMD_GEN_RANDOM_NEW_GAME);
// Done loading, start game!
if (!_networking) {
DEBUG(net, 1)("Dedicated server could not be launced. Aborting..");
return ML_QUIT;
}
while (true) {
InteractiveRandom(); // randomness
if (_exit_game) return ML_QUIT;
if (!_dedicated_forks)
DedicatedHandleKeyInput();
#ifdef WIN32
cur_ticks = GetTickCount();
#else
gettimeofday(&tim, NULL);
cur_ticks = (tim.tv_usec / 1000) + (tim.tv_sec * 1000);
#endif
if (cur_ticks >= next_tick) {
next_tick += 30;
GameLoop();
_screen.dst_ptr = _dedicated_video_mem;
UpdateWindows();
}
CSleep(1);
}
return ML_QUIT;
}
const HalVideoDriver _dedicated_video_driver = {
DedicatedVideoStart,
DedicatedVideoStop,
DedicatedVideoMakeDirty,
DedicatedVideoMainLoop,
DedicatedVideoChangeRes,
};
#else
static void *_dedicated_video_mem;
static const char *DedicatedVideoStart(char **parm) {
DEBUG(misc,0)("OpenTTD compiled without network-support, quiting...");
return NULL;
}
void DedicatedFork(void) {}
static void DedicatedVideoStop() { 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; }
const HalVideoDriver _dedicated_video_driver = {
DedicatedVideoStart,
DedicatedVideoStop,
DedicatedVideoMakeDirty,
DedicatedVideoMainLoop,
DedicatedVideoChangeRes,
};
#endif /* ENABLE_NETWORK */
+48 -41
View File
@@ -1,5 +1,7 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "vehicle.h"
#include "command.h"
#include "news.h"
@@ -9,6 +11,7 @@
#include "industry.h"
#include "player.h"
#include "airport_movement.h"
#include "sound.h"
static void DisasterClearSquare(uint tile)
{
@@ -77,7 +80,9 @@ static void InitializeDisasterVehicle(Vehicle *v, int x, int y, byte z, byte dir
v->owner = OWNER_NONE;
v->vehstatus = VS_UNCLICKABLE;
v->u.disaster.image_override = 0;
v->next_order = 0;
v->current_order.type = OT_NOTHING;
v->current_order.flags = 0;
v->current_order.station = 0;
DisasterVehicleUpdateImage(v);
VehiclePositionChanged(v);
@@ -139,7 +144,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
++v->tick_counter;
if (v->next_order < 2) {
if (v->current_order.station < 2) {
if (v->tick_counter&1)
return;
@@ -147,26 +152,26 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
if (v->next_order == 1) {
if (v->current_order.station == 1) {
if (++v->age == 38) {
v->next_order = 2;
v->current_order.station = 2;
v->age = 0;
}
if ((v->tick_counter&7)==0) {
CreateEffectVehicleRel(v, 0, -17, 2, EV_SMOKE_3);
}
} else if (v->next_order == 0) {
} else if (v->current_order.station == 0) {
tile = v->tile; /**/
if (IS_TILETYPE(tile, MP_STATION) &&
IS_BYTE_INSIDE(_map5[tile], 8, 0x43) &&
IS_HUMAN_PLAYER(_map_owner[tile])) {
v->next_order = 1;
v->current_order.station = 1;
v->age = 0;
SET_DPARAM16(0, _map2[tile]);
SetDParam(0, _map2[tile]);
AddNewsItem(STR_B000_ZEPPELIN_DISASTER_AT,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_VEHICLE, NT_ACCIDENT, 0),
v->index,
@@ -178,7 +183,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
return;
}
if (v->next_order > 2) {
if (v->current_order.station > 2) {
if (++v->age <= 13320)
return;
@@ -206,7 +211,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
if (++v->age == 1) {
CreateEffectVehicleRel(v, 0, 7, 8, EV_CRASHED_SMOKE);
SndPlayVehicleFx(0x10, v);
SndPlayVehicleFx(SND_12_EXPLOSION, v);
v->u.disaster.image_override = 0xF42;
} else if (v->age == 70) {
v->u.disaster.image_override = 0xF43;
@@ -221,7 +226,7 @@ static void DisasterTick_Zeppeliner(Vehicle *v)
EV_DEMOLISH);
}
} else if (v->age == 350) {
v->next_order = 3;
v->current_order.station = 3;
v->age = 0;
}
@@ -246,7 +251,7 @@ static void DisasterTick_UFO(Vehicle *v)
v->u.disaster.image_override = (++v->tick_counter & 8) ? 0xF45 : 0xF44;
if (v->next_order == 0) {
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;
@@ -260,7 +265,7 @@ static void DisasterTick_UFO(Vehicle *v)
v->dest_tile = TILE_MASK(Random());
return;
}
v->next_order = 1;
v->current_order.station = 1;
FOR_ALL_VEHICLES(u) {
if (u->type == VEH_Road && IS_HUMAN_PLAYER(u->owner)) {
@@ -309,7 +314,7 @@ static void DisasterTick_UFO(Vehicle *v)
// destroy?
if (v->age > 50) {
CreateEffectVehicleRel(v, 0, 7, 8, EV_CRASHED_SMOKE);
SndPlayVehicleFx(0x10, v);
SndPlayVehicleFx(SND_12_EXPLOSION, v);
DeleteDisasterVeh(v);
}
}
@@ -334,7 +339,8 @@ static void DisasterTick_2(Vehicle *v)
GetNewVehiclePosResult gp;
v->tick_counter++;
v->u.disaster.image_override = (v->next_order == 1 && v->tick_counter&4) ? 0xF4F : 0;
v->u.disaster.image_override =
(v->current_order.station == 1 && v->tick_counter&4) ? 0xF4F : 0;
GetNewVehiclePos(v, &gp);
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
@@ -344,7 +350,7 @@ static void DisasterTick_2(Vehicle *v)
return;
}
if (v->next_order == 2) {
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;
@@ -358,23 +364,23 @@ static void DisasterTick_2(Vehicle *v)
EV_DEMOLISH);
if (++v->age >= 55)
v->next_order = 3;
v->current_order.station = 3;
}
} else if (v->next_order == 1) {
} else if (v->current_order.station == 1) {
if (++v->age == 112) {
Industry *i;
v->next_order = 2;
v->current_order.station = 2;
v->age = 0;
i = DEREF_INDUSTRY(v->dest_tile);
DestructIndustry(i);
SET_DPARAM16(0, i->town->index);
SetDParam(0, i->town->index);
AddNewsItem(STR_B002_OIL_REFINERY_EXPLOSION, NEWS_FLAGS(NM_THIN,NF_VIEWPORT|NF_TILE,NT_ACCIDENT,0), i->xy, 0);
SndPlayTileFx(0x10, i->xy);
SndPlayTileFx(SND_12_EXPLOSION, i->xy);
}
} else if (v->next_order == 0) {
} else if (v->current_order.station == 0) {
int x,y;
uint tile;
int ind;
@@ -392,7 +398,7 @@ static void DisasterTick_2(Vehicle *v)
v->dest_tile = ind = _map2[tile];
if (DEREF_INDUSTRY(ind)->type == IT_OIL_REFINERY) {
v->next_order = 1;
v->current_order.station = 1;
v->age = 0;
}
}
@@ -404,7 +410,8 @@ static void DisasterTick_3(Vehicle *v)
GetNewVehiclePosResult gp;
v->tick_counter++;
v->u.disaster.image_override = (v->next_order == 1 && v->tick_counter&4) ? 0xF53 : 0;
v->u.disaster.image_override =
(v->current_order.station == 1 && v->tick_counter&4) ? 0xF53 : 0;
GetNewVehiclePos(v, &gp);
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
@@ -414,7 +421,7 @@ static void DisasterTick_3(Vehicle *v)
return;
}
if (v->next_order == 2) {
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;
@@ -428,23 +435,23 @@ static void DisasterTick_3(Vehicle *v)
EV_DEMOLISH);
if (++v->age >= 55)
v->next_order = 3;
v->current_order.station = 3;
}
} else if (v->next_order == 1) {
} else if (v->current_order.station == 1) {
if (++v->age == 112) {
Industry *i;
v->next_order = 2;
v->current_order.station = 2;
v->age = 0;
i = DEREF_INDUSTRY(v->dest_tile);
DestructIndustry(i);
SET_DPARAM16(0, i->town->index);
SetDParam(0, i->town->index);
AddNewsItem(STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS, NEWS_FLAGS(NM_THIN,NF_VIEWPORT|NF_TILE,NT_ACCIDENT,0), i->xy, 0);
SndPlayTileFx(0x10, i->xy);
SndPlayTileFx(SND_12_EXPLOSION, i->xy);
}
} else if (v->next_order == 0) {
} else if (v->current_order.station == 0) {
int x,y;
uint tile;
int ind;
@@ -462,7 +469,7 @@ static void DisasterTick_3(Vehicle *v)
v->dest_tile = ind = _map2[tile];
if (DEREF_INDUSTRY(ind)->type == IT_FACTORY) {
v->next_order = 1;
v->current_order.station = 1;
v->age = 0;
}
}
@@ -494,7 +501,7 @@ static void DisasterTick_4(Vehicle *v)
v->tick_counter++;
if (v->next_order == 1) {
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;
if (abs(v->x_pos - x) + abs(v->y_pos - y) >= 8) {
@@ -511,7 +518,7 @@ static void DisasterTick_4(Vehicle *v)
return;
}
v->next_order = 2;
v->current_order.station = 2;
FOR_ALL_VEHICLES(u) {
if (u->type == VEH_Train || u->type == VEH_Road) {
@@ -523,7 +530,7 @@ static void DisasterTick_4(Vehicle *v)
}
t = ClosestTownFromTile(v->dest_tile, (uint)-1);
SET_DPARAM16(0, t->index);
SetDParam(0, t->index);
AddNewsItem(STR_B004_UFO_LANDS_NEAR,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_TILE, NT_ACCIDENT, 0),
v->tile,
@@ -545,7 +552,7 @@ static void DisasterTick_4(Vehicle *v)
u->next = w;
InitializeDisasterVehicle(w, -6*16, v->y_pos, 0, 5, 12);
w->vehstatus |= VS_DISASTER;
} else if (v->next_order < 1) {
} 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;
@@ -560,7 +567,7 @@ static void DisasterTick_4(Vehicle *v)
v->dest_tile = TILE_MASK(Random());
return;
}
v->next_order = 1;
v->current_order.station = 1;
tile_org = tile = TILE_MASK(Random());
do {
@@ -592,14 +599,14 @@ static void DisasterTick_4b(Vehicle *v)
return;
}
if (v->next_order == 0) {
if (v->current_order.station == 0) {
u = &_vehicles[v->u.disaster.unk2];
if (abs(v->x_pos - u->x_pos) > 16)
return;
v->next_order = 1;
v->current_order.station = 1;
CreateEffectVehicleRel(u, 0, 7, 8, EV_CRASHED_SMOKE);
SndPlayVehicleFx(0x10, u);
SndPlayVehicleFx(SND_12_EXPLOSION, u);
DeleteDisasterVeh(u);
@@ -892,7 +899,7 @@ static void Disaster7_Init()
for(i=_industries; i != endof(_industries); i++) {
if (i->xy != 0 && i->type == IT_COAL_MINE && --index < 0) {
SET_DPARAM16(0, i->town->index);
SetDParam(0, i->town->index);
AddNewsItem(STR_B005_COAL_MINE_SUBSIDENCE_LEAVES,
NEWS_FLAGS(NM_THIN,NF_VIEWPORT|NF_TILE,NT_ACCIDENT,0), i->xy + TILE_XY(1,1), 0);
@@ -939,7 +946,7 @@ static const DisasterYears _dis_years[8] = {
};
void DoDisaster()
static void DoDisaster()
{
byte buf[8];
byte year = _cur_year;
+85 -69
View File
@@ -1,10 +1,13 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "window.h"
#include "station.h"
#include "gui.h"
#include "viewport.h"
#include "gfx.h"
#include "sound.h"
#include "command.h"
static void ShowBuildDockStationPicker();
@@ -12,17 +15,17 @@ static void ShowBuildDocksDepotPicker();
static byte _ship_depot_direction;
static void CcBuildDocks(bool success, uint tile, uint32 p1, uint32 p2)
void CcBuildDocks(bool success, uint tile, uint32 p1, uint32 p2)
{
if (success) {
SndPlayTileFx(0, tile);
SndPlayTileFx(SND_02_SPLAT, tile);
ResetObjectToPlace();
}
}
static void CcBuildCanal(bool success, uint tile, uint32 p1, uint32 p2)
void CcBuildCanal(bool success, uint tile, uint32 p1, uint32 p2)
{
if (success) { SndPlayTileFx(0, tile); }
if (success) SndPlayTileFx(SND_02_SPLAT, tile);
}
@@ -57,63 +60,52 @@ static void PlaceDocks_BuildLock(uint tile)
}
static void BuildDocksClick_Dock(Window *w)
{
if (HandlePlacePushButton(w, 2, 0xE54, 3, PlaceDocks_Dock)) ShowBuildDockStationPicker();
}
static void BuildDocksClick_Depot(Window *w)
{
if (HandlePlacePushButton(w, 3, 0x2D1, 1, PlaceDocks_Depot)) ShowBuildDocksDepotPicker();
}
static void BuildDocksClick_Buoy(Window *w)
{
HandlePlacePushButton(w, 4, 0x2BE, 1, PlaceDocks_Buoy);
}
static void BuildDocksClick_Demolish(Window *w)
{
HandlePlacePushButton(w, 5, ANIMCURSOR_DEMOLISH, 1, PlaceDocks_DemolishArea);
}
static void BuildDocksClick_Lower(Window *w)
{
HandlePlacePushButton(w, 6, ANIMCURSOR_LOWERLAND, 2, PlaceProc_LowerLand);
}
static void BuildDocksClick_Raise(Window *w)
{
HandlePlacePushButton(w, 7, ANIMCURSOR_RAISELAND, 2, PlaceProc_RaiseLand);
}
static void BuildDocksClick_Purchase(Window *w)
{
HandlePlacePushButton(w, 8, 0x12B8, 1, PlaceProc_BuyLand);
}
static void BuildDocksClick_Canal(Window *w)
{
HandlePlacePushButton(w, 9, SPR_OPENTTD_BASE + 11, 1, PlaceDocks_BuildCanal);
HandlePlacePushButton(w, 3, SPR_OPENTTD_BASE + 11, 1, PlaceDocks_BuildCanal);
}
static void BuildDocksClick_Lock(Window *w)
{
HandlePlacePushButton(w, 10, SPR_OPENTTD_BASE + 64, 1, PlaceDocks_BuildLock);
HandlePlacePushButton(w, 4, SPR_OPENTTD_BASE + 64, 1, PlaceDocks_BuildLock);
}
static void BuildDocksClick_Demolish(Window *w)
{
HandlePlacePushButton(w, 6, ANIMCURSOR_DEMOLISH, 1, PlaceDocks_DemolishArea);
}
static void BuildDocksClick_Depot(Window *w)
{
if (HandlePlacePushButton(w, 7, 0x2D1, 1, PlaceDocks_Depot)) ShowBuildDocksDepotPicker();
}
static void BuildDocksClick_Dock(Window *w)
{
if (HandlePlacePushButton(w, 8, 0xE54, 3, PlaceDocks_Dock)) ShowBuildDockStationPicker();
}
static void BuildDocksClick_Buoy(Window *w)
{
HandlePlacePushButton(w, 9, 0x2BE, 1, PlaceDocks_Buoy);
}
static void BuildDocksClick_Landscaping(Window *w)
{
ShowTerraformToolbar();
}
typedef void OnButtonClick(Window *w);
static OnButtonClick * const _build_docks_button_proc[] = {
BuildDocksClick_Dock,
BuildDocksClick_Depot,
BuildDocksClick_Buoy,
BuildDocksClick_Demolish,
BuildDocksClick_Lower,
BuildDocksClick_Raise,
BuildDocksClick_Purchase,
BuildDocksClick_Canal,
BuildDocksClick_Lock,
0,
BuildDocksClick_Demolish,
BuildDocksClick_Depot,
BuildDocksClick_Dock,
BuildDocksClick_Buoy,
BuildDocksClick_Landscaping,
};
static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
@@ -124,7 +116,7 @@ static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
break;
case WE_CLICK: {
if (e->click.widget - 2 >= 0) _build_docks_button_proc[e->click.widget - 2](w);
if (e->click.widget - 3 >= 0 && e->click.widget != 5) _build_docks_button_proc[e->click.widget - 3](w);
} break;
case WE_PLACE_OBJ:
@@ -146,7 +138,7 @@ static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
break;
case WE_ABORT_PLACE_OBJ:
w->click_state = 0;
UnclickWindowButtons(w);
SetWindowDirty(w);
w = FindWindowById(WC_BUILD_STATION, 0);
@@ -173,23 +165,25 @@ 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, 197, 0, 13, STR_9801_DOCK_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PANEL, 7, 0, 21, 14, 35, 746, STR_981D_BUILD_SHIP_DOCK},
{ WWT_PANEL, 7, 22, 43, 14, 35, 748, STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING},
{ WWT_PANEL, 7, 44, 65, 14, 35, 693, STR_9834_POSITION_BUOY_WHICH_CAN},
{ WWT_PANEL, 7, 66, 87, 14, 35, 703, STR_018D_DEMOLISH_BUILDINGS_ETC},
{ WWT_PANEL, 7, 88, 109, 14, 35, 695, STR_018E_LOWER_A_CORNER_OF_LAND},
{ WWT_PANEL, 7, 110, 131, 14, 35, 694, STR_018F_RAISE_A_CORNER_OF_LAND},
{ WWT_PANEL, 7, 132, 153, 14, 35, 4791, STR_0329_PURCHASE_LAND_FOR_FUTURE},
{ WWT_PANEL, 7, 154, 175, 14, 35, SPR_OPENTTD_BASE+65, STR_BUILD_CANALS_TIP},
{ WWT_PANEL, 7, 176, 197, 14, 35, SPR_CANALS_BASE+69, STR_BUILD_LOCKS_TIP},
{ 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_PANEL, 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},
{ WIDGETS_END},
};
static const WindowDesc _build_docks_toolbar_desc = {
640-197, 22, 198, 36,
640-158, 22, 158, 36,
WC_BUILD_TOOLBAR,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
_build_docks_toolb_widgets,
BuildDocksToolbWndProc
};
@@ -202,17 +196,37 @@ void ShowBuildDocksToolbar()
static void BuildDockStationWndProc(Window *w, WindowEvent *e)
{
int rad;
switch(e->event) {
case WE_PAINT: {
if (WP(w,def_d).close)
return;
w->click_state = (1<<3) << _station_show_coverage;
DrawWindowWidgets(w);
DrawStationCoverageAreaText(2, 15, (uint)-1);
if (_patches.modified_catchment) {
rad = CA_DOCK;
} else {
rad = 4;
}
if (_station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
else SetTileSelectBigSize(0, 0, 0, 0);
DrawStringCentered(74, 17, STR_3066_COVERAGE_AREA_HIGHLIGHT, 0);
DrawStationCoverageAreaText(4, 50, (uint)-1, rad);
} break;
case WE_CLICK: {
if (e->click.widget == 0) {
switch(e->click.widget) {
case 0:
ResetObjectToPlace();
break;
case 3: case 4:
_station_show_coverage = e->click.widget - 3;
SndPlayFx(SND_15_BEEP);
SetWindowDirty(w);
break;
}
} break;
@@ -231,12 +245,14 @@ static void BuildDockStationWndProc(Window *w, WindowEvent *e)
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, 45, 0x0, STR_NULL},
{ 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},
{ WIDGETS_END},
};
static const WindowDesc _build_dock_station_desc = {
-1, -1, 148, 46,
-1, -1, 148, 75,
WC_BUILD_STATION,WC_BUILD_TOOLBAR,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_build_dock_station_widgets,
@@ -278,7 +294,7 @@ static void BuildDocksDepotWndProc(Window *w, WindowEvent *e)
case 3:
case 4:
_ship_depot_direction = e->click.widget - 3;
SndPlayFx(0x13);
SndPlayFx(SND_15_BEEP);
UpdateDocksDirection();
SetWindowDirty(w);
break;
+2 -1
View File
@@ -24,6 +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.)
If you want MIDI music, copy the 'gm' folder from the original game directory/CD to the OpenTTD folder.
@@ -90,7 +91,7 @@ Virtually any settings - train numbers, start date, what vehicles your competito
2.11 Network Play
OpenTTD now supports rudimentary TCP/IP based network play. This is not supported on all platforms. To start a server, use the '-n' CLI switch, and start a client with '-n' and the servers IP adress. The OpenTTD network play runs over port 12345, so you may need to open this on your firewall.
See multiplayer.txt for more info.
2.12 Rail Recycling.
+24
View File
@@ -0,0 +1,24 @@
It's gone
The main goal with the package system was to make it as simple as possible to update. The problem was that some files inside the data folder should be updated and not others. Now the data files have been moved inside OpenTTD itself and to make it even easier, the same goes for the lang dir. There will no longer be an issue where people have different versions of grf files, language files and OpenTTD.
To install simply copy OpenTTD into the folder you want
If it is your current folder with outdated grf files, you should remove
canalsw.grf
openttd.grf
opntitle.dat
signalsw.grf
trkfoundw.grf
THE TTD GRF FILES ARE STILL NEEDED!
They need to be inside a folder called "data" in the same folder as OpenTTD. Create it if you have none. It should contain:
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.)
You should also use the data folder to add any custom grf files if you like
+2 -4
View File
@@ -2,10 +2,8 @@ Since you are reading this, OpenTTD have crashed. This file tells you how
to fix the most common problems or make to make a bug report, that the
developers can use to track down the problem
The first thing you need to do is to get the error message. You can access OSX's build-in log by double-clicking Crash_Log_Opener. OTTD will do that if that file is present in the same folder as OTTD and is not renamed. However, major crashes can prevent the autoopen feature and you have to do it manually then
If Crash_Log_Opener doesn't work you can view the log by opening Console inside Applications/utilities.
If you use the Console app, you should look at the buttom of the console.log window
If it is an assert, OpenTTD will open the console for you, if it is truly a crash, you have to do it yourself. The Console is located at /Applications/Utilities/Console.
The problem is near the button of the page
The problems are as follows:
NOTE: build from source means to download the source and compile
+4 -2
View File
@@ -31,14 +31,16 @@ You can undo changes to a file with
3.) Required data files:
Copy the following files from the WINDOWS version of Transport Tycoon Deluxe to openttd/data/
Copy the following files from Transport Tycoon Deluxe to openttd/data/
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.)
4.) Compiling and running:
+48
View File
@@ -0,0 +1,48 @@
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
+2 -2
View File
@@ -58,7 +58,7 @@ b) libraru files (the lib dir, D:\Program Files\Microsoft Visual Studio\VC98\Dir
Step 4
-----------------
Copy the following files from the WINDOWS version of Transport Tycoon Deluxe to the data folder
Copy the following files from Transport Tycoon Deluxe to the data folder
sample.cat
trg1r.grf
trgcr.grf
@@ -66,7 +66,7 @@ Copy the following files from the WINDOWS version of Transport Tycoon Deluxe to
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
-----------------
+11 -7
View File
@@ -1,8 +1,12 @@
OPENTTD INGAME CONSOLE DOCUMENTATION
====================================
http://openttd.rulez.org/wiki2/index.php/OpenTTDDevBlackBook
http://wiki.openttd.org/index.php/OpenTTDDevBlackBook
for detailed information
*** WARNING **
This document is out of date
*** WARNING **
HOTKEY: BACKQUOTE (aka tilde, the key left to "1")
COMMANDS:
@@ -34,19 +38,19 @@ VARIABLES:
-> 2 = console error and debug output
*cursor_rate
-> 1-12 = defines the cursor blink interval
-> 1-12 = defines the cursor blink interval
VARIABLE HANDLING:
------------------
*developer = 0
*developer ++
developer = 0
developer ++
*temp_string = test
*temp_string = "my little"
temp_string = test
temp_string = "my little"
printf "%s world" *temp_string
printf "%s world" temp_string
---------------------------------------------------
+615 -611
View File
File diff suppressed because it is too large Load Diff
+99 -57
View File
@@ -1,70 +1,112 @@
Multiplayer Manual for OpenTTD
----------------------------------------
Multiplayer Manual for OpenTTD (0.3.5)
=======================================
1. Starting a Server
---------------------
- Click "multiplayer" on the startup screen
- Click "start server"
- Type in a game name
- Select the type of game ('LAN/Internet' or 'Internet (advertise)'. With the last one
other people are able to see you online. Else they need your IP and port to join)
- Click "start game" ,"load game" or "load scenario"
- Start playing
- click "multiplayer" on the startup screen
- click "start server"
- type in a game name
- click "start game" ,"load game" or "load scenario"
2. Connecting to a Server
- click "multiplayer" on the startup screen
- if you want to connect to any network game in your LAN click "find server"
- if there were more then one server
- select one in the list below the buttons
- click on "join game".
--------------------------
- if you want to play over the internet you should have the ip of the game server you want connect to.
- click direct connect
- Click "multiplayer" on the startup screen
- If you want to connect to any network game in your LAN click on 'LAN', then on
'Find Server'
- If you want to see which servers all online on the Internet, click on 'Internet'
and 'Find Server'
- If there were more then one server
- select one in the list below the buttons
- click on 'join game'
- If you want to play and you have the ip or hostname of the game server you want connect to.
- click add server
- type in the ip address or hostname
- if you want to add a port use :<port>
- if you want to connect as an special player use #<player-no>
3. Connecting to a Server over the Console
- open the console and type in the following command:
- Now you can select a company and press: "Join company", to help that company
- Or you can press "Spectate game", to spectate the game
- Or you can press "New company", and start your own company (if there are slots free)
- You see a progressbar how far you are with joining the server.
- Happy playing
3. Connecting to a Server over the Console
-------------------------------------------
- Open the console and type in the following command:
]connect <ip/host>:<port>#<player-no>
4. Playing Internet-Games
--------------------------
- since OpenTTD 0.3.4 you can also play internet games over higher latency connections.
- to do this the gameservers sync frequency should be highered to a decent value.
- open the console [on the server]
- type in the following command:
] *net_sync_freq = <4-80>
default value: 4
- this is lowering the sync frequency of the server and your game should be less laggy.
- this is a server variable: it has nothing to do with the clients
- you can also change when the clients ready packet is sent if you still have lags.
- open the console
- type in the following command:
] *net_ready_ahead = <1-8>
default value: 1
- in that way your client is sending its "i am ready for next sync" a bit earlier
thats quite good for games where some players have higher latencies than the others.
- this is a client variable: it has nothing to do with the server
- to change the client timeout time
- open the console [on the server]
- type in the following command:
] *net_client_timeout = <30-x>
default value: 300
- warning: a too low value will disconnect your clients if they have a short lag
- Since OpenTTD 0.3.5 the network protocol has been rewritten and is very stable, even over slow connections.
- Server with a red dot behind it have a different version then you have. You will not be able to join those servers.
- It can happen that a connection is that slow, or you have that many clients connected to your server, that your clients start to loose their connection. Some things you can do about it:
- net_frame_freq:
change it in console with: net_frame_freq = <number>
the number should be between the 0 and 10, not much higher. It indicates the delay between clicking and showing up. The higher, the more you notice it, but the less bandwidth you use.
A good value for Internet-games is 2 or 3.
- net_sync_freq:
change it in console with: net_sync_freq = <number>
the number should be between the 50 and 1000, not much lower, not much higer. It indicates the time between sync-frames. A sync-frame is a frame which checks if all clients are still in sync. When the value it too high, clients can desync in 1960, but the server detects it in 1970. Not really handy. The lower the value, the more bandwidth it uses.
NB: changing net_frame_freq has more effect on the bandwidth then net_sync_freq. You should never change net_sync_freq!
5. Tips for servers
--------------------
- You can launch a dedicated server by adding -D as parameter
- In UNIX like systems, you can fork your dedicated server by adding -f as parameter
- You can automaticly clean companies that do not have a client connected to them, for, let's say,
3 years. You can do this via: 'set autoclean_companies' and 'set autoclean_protected' and
'set autoclean_unprotected'. Unprotected removes a password from a company when it is
not used for more then the defined amount of months.
- You can also do this manually via the console: 'reset_company'.
Both ways, the company will go bankrupt.
- You can let your server automaticly restart a map when, let's say, year 2030 is reached.
See 'set restart_game_date' for detail.
- If you want to be on the server-list, enable Advertising. To do this, select 'Internet (advertise)'
in the Start Server menu, or type in console: 'set server_advertise 1'.
- You can protect your server with a password via the console: 'set server_pw', or via the
Start Server menu.
- When you have many clients connected to your server via Internet, watch your bandwidth (if
you have any limit on it, set by your ISP). 1 client uses +/- 3 kb/s up and down. To decrease
this amount, set 'net_frame_freq' to 1 for example. This will reduce it to 1.5 kb/s per client.
6. Some useful things
----------------------
- You can protect your company so nobody else can join uninvited. To do this, check your Company Screen
- You can give other players some money via the ClientList (under the 'head' in the mainbar).
- You can chat with other players via ENTER or via SHIFT+T or via the ClientList
- Servers can now kick players, so don't make them use it!
- From 0.3.5, desyncs should not happen anymore
- From 0.3.5, patch-settings are also synced. You can now play without deleting openttd.cfg, and with, for example, extra large trains enabled.
+50
View File
@@ -0,0 +1,50 @@
.\" Hey, EMACS: -*- nroff -*-
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH OPENTTD 6 "September 16, 2004"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
openttd \- An open source clone of the Microprose game "Transport Tycoon Deluxe"
.SH SYNOPSIS
.B openttd
.RI [ options ]
.br
.SH DESCRIPTION
Unfortanetely, 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,
.\" respectively.
.\" \fBopenttd\fP is a program that...
.SH OPTIONS
Wouldn't we like to have something here?
.\" below are commented out, to serve as layout examples for when somebody
.\" does actually fill this page
.\" .TP
.\" .B \-h, \-\-help
.\" Show summary of options.
.\" .TP
.\" .B \-v, \-\-version
.\" Show version of program.
.\" .SH SEE ALSO
.\" .BR bar (1),
.\" .BR baz (1).
.br
.SH AUTHOR
This manual page was written by Matthijs Kooijman <matthijs@katherina.student.utwente.nl>,
for the Debian project (but may be used by others).
+2 -1
View File
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "viewport.h"
#include "command.h"
@@ -22,7 +23,7 @@ static int32 ClearTile_Dummy(uint tile, byte flags) {
}
static void GetAcceptedCargo_Dummy(uint tile, AcceptedCargo *ac)
static void GetAcceptedCargo_Dummy(uint tile, AcceptedCargo ac)
{
/* not used */
}
+265 -101
View File
@@ -1,5 +1,7 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "news.h"
#include "player.h"
#include "station.h"
@@ -12,6 +14,34 @@
#include "industry.h"
#include "town.h"
#include "network.h"
#include "sound.h"
#include "engine.h"
#include "network_data.h"
// get a mask of the allowed currencies depending on the year
uint GetMaskOfAllowedCurrencies(void)
{
int i;
uint mask = 0;
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;
mask |= (1 << i);
}
return mask;
}
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)) {
_opt.currency = 2; // this is the index of euro above.
AddNewsItem(STR_EURO_INTRODUCE, NEWS_FLAGS(NM_NORMAL,0,NT_ECONOMY,0), 0, 0);
}
}
void UpdatePlayerHouse(Player *p, uint score)
{
@@ -136,7 +166,7 @@ int UpdateCompanyRatingAndValue(Player *p, bool update)
PlayerEconomyEntry *pee;
int numec;
int32 min_income;
uint32 max_income;
int32 max_income;
numec = min(p->num_valid_stat_ent, 12);
if (numec != 0) {
@@ -331,6 +361,24 @@ void ChangeOwnershipOfPlayerItems(byte old_player, byte new_player)
}
}
{
Player *p;
uint i;
/* Check for shares */
FOR_ALL_PLAYERS(p) {
for(i = 0; i < 4; i++) {
/* 'Sell' the share if this player has any */
if (p->share_owners[i] == _current_player)
p->share_owners[i] = 0xFF;
}
}
p = DEREF_PLAYER(_current_player);
/* Sell all the shares that people have on this company */
for(i = 0; i < 4; i++)
p->share_owners[i] = 0xFF;
}
_current_player = old;
MarkWholeScreenDirty();
@@ -343,6 +391,7 @@ static void PlayersCheckBankrupt(Player *p)
int owner;
int64 val;
// If the player has money again, it does not go bankrupt
if (p->player_money >= 0) {
p->quarters_of_bankrupcy = 0;
return;
@@ -352,43 +401,74 @@ static void PlayersCheckBankrupt(Player *p)
owner = p->index;
if (p->quarters_of_bankrupcy == 2) {
year_2:
AddNewsItem( (StringID)(owner + 16),
NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
switch (p->quarters_of_bankrupcy) {
case 2:
AddNewsItem( (StringID)(owner + 16),
NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
break;
case 3: {
/* XXX - In multiplayer, should we ask other players if it wants to take
over when it is a human company? -- TrueLight */
if (IS_HUMAN_PLAYER(owner)) {
AddNewsItem( (StringID)(owner + 16),
NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
break;
}
} else if (p->quarters_of_bankrupcy == 3) {
if (IS_HUMAN_PLAYER(owner))
goto year_2;
val = CalculateCompanyValue(p);
if (val == 0) goto year_4;
p->bankrupt_value = val;
p->bankrupt_asked = 1 << owner;
p->bankrupt_timeout = 0;
} else if (p->quarters_of_bankrupcy == 4) {
year_4:
DeletePlayerWindows(owner);
if (IS_HUMAN_PLAYER(owner)) {
// what does this code do??
InitNewsItemStructs();
DeleteWindowById(WC_NEWS_WINDOW, 0);
// Check if the company has any value.. if not, declare it bankrupt
// right now
val = CalculateCompanyValue(p);
if (val > 0) {
p->bankrupt_value = val;
p->bankrupt_asked = 1 << owner; // Don't ask the owner
p->bankrupt_timeout = 0;
break;
}
// Else, falltrue to case 4...
}
case 4: {
// Close everything the owner has open
DeletePlayerWindows(owner);
// Show bankrupt news
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
AddNewsItem( (StringID)(owner + 16*3), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
// Show bankrupt news
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
AddNewsItem( (StringID)(owner + 16*3), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
if (IS_HUMAN_PLAYER(owner)) {
p->bankrupt_asked = 255;
p->bankrupt_timeout = 0x456;
} else {
p->money64 = p->player_money = 100000000;
ChangeOwnershipOfPlayerItems(owner, 0xFF); // 255 is no owner
p->is_active = false;
// If the player is human, and it is no network play, leave the player playing
if (IS_HUMAN_PLAYER(owner) && !_networking) {
p->bankrupt_asked = 255;
p->bankrupt_timeout = 0x456;
} else {
#ifdef ENABLE_NETWORK
if (IS_HUMAN_PLAYER(owner) && _network_server) {
// If we are the server, make sure it is clear that his player is no
// longer with us!
NetworkClientInfo *ci;
NetworkClientState *cs;
/* Find all clients that were in control of this company */
FOR_ALL_CLIENTS(cs) {
ci = DEREF_CLIENT_INFO(cs);
if ((ci->client_playas-1) == owner) {
ci->client_playas = OWNER_SPECTATOR;
// Send the new info to all the clients
NetworkUpdateClientInfo(_network_own_client_index);
}
}
}
// Make sure the player no longer controls the company
if (IS_HUMAN_PLAYER(owner) && owner == _local_player) {
// Switch the player to spectator..
_local_player = OWNER_SPECTATOR;
}
#endif /* ENABLE_NETWORK */
// Convert everything the player owns to NO_OWNER
p->money64 = p->player_money = 100000000;
ChangeOwnershipOfPlayerItems(owner, 0xFF); // 255 is no owner
// Register the player as not-active
p->is_active = false;
}
}
}
}
@@ -403,8 +483,8 @@ void DrawNewsBankrupcy(Window *w)
DrawPlayerFace(p->face, p->player_color, 2, 23);
GfxFillRect(3, 23, 3+91, 23+118, 0x4323);
SET_DPARAM16(0, p->president_name_1);
SET_DPARAM32(1, p->president_name_2);
SetDParam(0, p->president_name_1);
SetDParam(1, p->president_name_2);
DrawStringMultiCenter(49, 148, STR_7058_PRESIDENT, 94);
@@ -412,8 +492,8 @@ void DrawNewsBankrupcy(Window *w)
case 1:
DrawStringCentered(w->width>>1, 1, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE, 0);
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
DrawStringMultiCenter(
((w->width - 101) >> 1) + 98,
@@ -427,10 +507,10 @@ void DrawNewsBankrupcy(Window *w)
DrawStringCentered(w->width>>1, 1, STR_7059_TRANSPORT_COMPANY_MERGER, 0);
COPY_IN_DPARAM(0,WP(w,news_d).ni->params, 2);
SET_DPARAM16(2, p->name_1);
SET_DPARAM32(3, p->name_2);
SetDParam(2, p->name_1);
SetDParam(3, p->name_2);
price = WP(w,news_d).ni->params[2];
SET_DPARAM32(4, price);
SetDParam(4, price);
DrawStringMultiCenter(
((w->width - 101) >> 1) + 98,
90,
@@ -451,8 +531,8 @@ void DrawNewsBankrupcy(Window *w)
case 4:
DrawStringCentered(w->width>>1, 1, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED, 0);
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
COPY_IN_DPARAM(2,WP(w,news_d).ni->params, 2);
DrawStringMultiCenter(
((w->width - 101) >> 1) + 98,
@@ -472,29 +552,29 @@ StringID GetNewsStringBankrupcy(NewsItem *ni)
switch(ni->string_id >> 4) {
case 1:
SET_DPARAM16(0, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE);
SET_DPARAM16(1, STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED);
SET_DPARAM16(2, p->name_1);
SET_DPARAM32(3, p->name_2);
SetDParam(0, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE);
SetDParam(1, STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED);
SetDParam(2, p->name_1);
SetDParam(3, p->name_2);
return STR_02B6;
case 2:
SET_DPARAM16(0, STR_7059_TRANSPORT_COMPANY_MERGER);
SET_DPARAM16(1, STR_705A_HAS_BEEN_SOLD_TO_FOR);
SetDParam(0, STR_7059_TRANSPORT_COMPANY_MERGER);
SetDParam(1, STR_705A_HAS_BEEN_SOLD_TO_FOR);
COPY_IN_DPARAM(2,ni->params, 2);
SET_DPARAM16(4, p->name_1);
SET_DPARAM32(5, p->name_2);
SetDParam(4, p->name_1);
SetDParam(5, p->name_2);
COPY_IN_DPARAM(6,ni->params + 2, 1);
return STR_02B6;
case 3:
SET_DPARAM16(0, STR_705C_BANKRUPT);
SET_DPARAM16(1, STR_705D_HAS_BEEN_CLOSED_DOWN_BY);
SetDParam(0, STR_705C_BANKRUPT);
SetDParam(1, STR_705D_HAS_BEEN_CLOSED_DOWN_BY);
COPY_IN_DPARAM(2,ni->params, 2);
return STR_02B6;
case 4:
SET_DPARAM16(0, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED);
SET_DPARAM16(1, STR_705F_STARTS_CONSTRUCTION_NEAR);
SET_DPARAM16(2, p->name_1);
SET_DPARAM32(3, p->name_2);
SetDParam(0, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED);
SetDParam(1, STR_705F_STARTS_CONSTRUCTION_NEAR);
SetDParam(2, p->name_1);
SetDParam(3, p->name_2);
COPY_IN_DPARAM(4,ni->params, 2);
return STR_02B6;
default:
@@ -713,50 +793,50 @@ Pair SetupSubsidyDecodeParam(Subsidy *s, bool mode)
Pair tp;
/* if mode is false, convert into plural */
SET_DPARAM16(0, _cargoc.names_s[s->cargo_type] + (mode?0:32));
SetDParam(0, _cargoc.names_s[s->cargo_type] + (mode?0:32));
if (s->age < 12) {
if (!(s->cargo_type == CT_PASSENGERS || s->cargo_type == CT_MAIL)) {
SET_DPARAM16(1, STR_2029);
SetDParam(1, STR_2029);
i = DEREF_INDUSTRY(s->from);
tile = i->xy;
SET_DPARAM16(2, i->town->townnametype);
SET_DPARAM32(3, i->town->townnameparts);
SetDParam(2, i->town->townnametype);
SetDParam(3, i->town->townnameparts);
SET_DPARAM16(4, i->type + STR_4802_COAL_MINE);
SetDParam(4, i->type + STR_4802_COAL_MINE);
if (s->cargo_type != CT_GOODS && s->cargo_type != CT_FOOD) {
SET_DPARAM16(5, STR_2029);
SetDParam(5, STR_2029);
i = DEREF_INDUSTRY(s->to);
tile2 = i->xy;
SET_DPARAM16(8, i->type + STR_4802_COAL_MINE);
SET_DPARAM16(6, i->town->townnametype);
SET_DPARAM32(7, i->town->townnameparts);
SetDParam(8, i->type + STR_4802_COAL_MINE);
SetDParam(6, i->town->townnametype);
SetDParam(7, i->town->townnameparts);
} else {
t = DEREF_TOWN(s->to);
tile2 = t->xy;
SET_DPARAM16(5, t->townnametype);
SET_DPARAM32(6, t->townnameparts);
SetDParam(5, t->townnametype);
SetDParam(6, t->townnameparts);
}
} else {
t = DEREF_TOWN(s->from);
tile = t->xy;
SET_DPARAM16(1, t->townnametype);
SET_DPARAM32(2, t->townnameparts);
SetDParam(1, t->townnametype);
SetDParam(2, t->townnameparts);
t = DEREF_TOWN(s->to);
tile2 = t->xy;
SET_DPARAM16(3, t->townnametype);
SET_DPARAM32(4, t->townnameparts);
SetDParam(3, t->townnametype);
SetDParam(4, t->townnameparts);
}
} else {
st = DEREF_STATION(s->from);
tile = st->xy;
SET_DPARAM16(1, st->index);
SetDParam(1, st->index);
st = DEREF_STATION(s->to);
tile2 = st->xy;
SET_DPARAM16(2, st->index);
SetDParam(2, st->index);
}
tp.a = tile;
@@ -808,11 +888,11 @@ static void FindSubsidyPassengerRoute(FoundRoute *fr)
fr->distance = (uint)-1;
fr->from = from = DEREF_TOWN(InteractiveRandomRange(_total_towns));
fr->from = from = DEREF_TOWN(RandomRange(_total_towns));
if (from->xy == 0 || from->population < 400)
return;
fr->to = to = DEREF_TOWN(InteractiveRandomRange(_total_towns));
fr->to = to = DEREF_TOWN(RandomRange(_total_towns));
if (from==to || to->xy == 0 || to->population < 400 || to->pct_pass_transported > 42)
return;
@@ -827,12 +907,12 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
fr->distance = (uint)-1;
fr->from = i = DEREF_INDUSTRY(InteractiveRandomRange(_total_industries));
fr->from = i = DEREF_INDUSTRY(RandomRange(_total_industries));
if (i->xy == 0)
return;
// Randomize cargo type
if (InteractiveRandom()&1 && i->produced_cargo[1] != 0xFF) {
if (Random()&1 && i->produced_cargo[1] != 0xFF) {
cargo = i->produced_cargo[1];
trans = i->pct_transported[1];
total = i->total_production[1];
@@ -852,7 +932,7 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
if (cargo == CT_GOODS || cargo == CT_FOOD) {
// The destination is a town
Town *t = DEREF_TOWN(InteractiveRandomRange(_total_towns));
Town *t = DEREF_TOWN(RandomRange(_total_towns));
// Only want big towns
if (t->xy == 0 || t->population < 900)
@@ -861,7 +941,7 @@ static void FindSubsidyCargoRoute(FoundRoute *fr)
fr->to = t;
} else {
// The destination is an industry
Industry *i2 = DEREF_INDUSTRY(InteractiveRandomRange(_total_industries));
Industry *i2 = DEREF_INDUSTRY(RandomRange(_total_industries));
// The industry must accept the cargo
if (i == i2 || i2->xy == 0 ||
@@ -940,10 +1020,8 @@ static void SubsidyMonthlyHandler()
}
}
if ((_networking) && (!_networking_server)) return;
// 25% chance to go on
if (ICHANCE16(1,4)) {
if (CHANCE16(1,4)) {
// Find a free slot
s = _subsidies;
while (s->cargo_type != 0xFF) {
@@ -969,7 +1047,6 @@ static void SubsidyMonthlyHandler()
if (!CheckSubsidyDuplicate(s)) {
s->age = 0;
pair = SetupSubsidyDecodeParam(s, 0);
if (_networking_server) NetworkSendEvent(NET_EVENT_SUBSIDY,sizeof(Subsidy),s);
AddNewsItem(STR_2030_SERVICE_SUBSIDY_OFFERED, NEWS_FLAGS(NM_NORMAL, NF_TILE, NT_SUBSIDIES, 0), pair.a, pair.b);
modified = true;
break;
@@ -1115,8 +1192,8 @@ static bool CheckSubsidised(Station *from, Station *to, byte cargo_type)
INJECT_DPARAM(2);
p = DEREF_PLAYER(_current_player);
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
AddNewsItem(
STR_2031_SERVICE_SUBSIDY_AWARDED + _opt.diff.subsidy_multiplier,
NEWS_FLAGS(NM_NORMAL, NF_TILE, NT_SUBSIDIES, 0),
@@ -1197,6 +1274,59 @@ static int32 DeliverGoods(int num_pieces, byte cargo_type, byte source, byte des
return profit;
}
/*
* Returns true if Vehicle v should wait loading because other vehicle is
* already loading the same cargo type
* v = vehicle to load, u = GetFirstInChain(v)
*/
static bool LoadWait(const Vehicle *v, const Vehicle *u) {
const Vehicle *w;
const Vehicle *x;
bool has_any_cargo = false;
if (!(u->current_order.flags & OF_FULL_LOAD)) return false;
for (w = u; w != NULL; w = w->next) {
if (w->cargo_count != 0) {
if (v->cargo_type == w->cargo_type &&
u->last_station_visited == w->cargo_source)
return false;
has_any_cargo = true;
}
}
FOR_ALL_VEHICLES(x) {
if ((x->type != VEH_Train || x->subtype == 0) && // 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
u != x) { // not itself
bool other_has_any_cargo = false;
bool has_space_for_same_type = false;
bool other_has_same_type = false;
for (w = x; w != NULL; w = w->next) {
if (w->cargo_count < w->cargo_cap && v->cargo_type == w->cargo_type)
has_space_for_same_type = true;
if (w->cargo_count != 0) {
if (v->cargo_type == w->cargo_type &&
u->last_station_visited == w->cargo_source)
other_has_same_type = true;
other_has_any_cargo = true;
}
}
if (has_space_for_same_type) {
if (other_has_same_type) return true;
if (other_has_any_cargo && !has_any_cargo) return true;
}
}
}
return false;
}
int LoadUnloadVehicle(Vehicle *v)
{
int profit = 0;
@@ -1208,17 +1338,19 @@ int LoadUnloadVehicle(Vehicle *v)
GoodsEntry *ge;
int t;
uint count, cap;
byte old_player;
bool completely_empty = true;
assert((v->next_order&0x1F) == OT_LOADING);
assert(v->current_order.type == OT_LOADING);
v->cur_speed = 0;
old_player = _current_player;
_current_player = v->owner;
st = DEREF_STATION(last_visited = v->last_station_visited);
for(;;) {
if (v->cargo_cap == 0)
goto next_vehicle;
for (; v != NULL; v = v->next) {
if (v->cargo_cap == 0) continue;
ge = &st->goods[v->cargo_type];
@@ -1230,7 +1362,7 @@ int LoadUnloadVehicle(Vehicle *v)
profit += DeliverGoods(v->cargo_count, v->cargo_type, v->cargo_source, last_visited, v->cargo_days);
result |= 1;
v->cargo_count = 0;
} else if (u->next_order & OF_UNLOAD) {
} else if (u->current_order.flags & OF_UNLOAD) {
/* unload goods and let it wait at the station */
st->time_since_unload = 0;
@@ -1250,11 +1382,13 @@ int LoadUnloadVehicle(Vehicle *v)
result |= 2;
v->cargo_count = 0;
}
if (v->cargo_count != 0)
completely_empty = false;
}
/* don't pick up goods that we unloaded */
if (u->next_order & OF_UNLOAD)
goto next_vehicle;
if (u->current_order.flags & OF_UNLOAD) continue;
/* update stats */
ge->days_since_pickup = 0;
@@ -1269,6 +1403,22 @@ int LoadUnloadVehicle(Vehicle *v)
// has capacity for it, load it on the vehicle.
if ((count=ge->waiting_acceptance & 0xFFF) != 0 &&
(cap = v->cargo_cap - v->cargo_count) != 0) {
if (v->cargo_count == 0)
TriggerVehicle(v, VEHICLE_TRIGGER_NEW_CARGO);
/* Skip loading this vehicle if another train/vehicle is already handling
* the same cargo type at this station */
if (_patches.improved_load && LoadWait(v,u)) continue;
/* TODO: Regarding this, when we do gradual loading, we
* should first unload all vehicles and then start
* loading them. Since this will cause
* VEHICLE_TRIGGER_EMPTY to be called at the time when
* the whole vehicle chain is really totally empty, the
* @completely_empty assignment can then be safely
* removed; that's how TTDPatch behaves too. --pasky */
completely_empty = false;
if (cap > count) cap = count;
v->cargo_count += cap;
ge->waiting_acceptance -= cap;
@@ -1281,10 +1431,6 @@ int LoadUnloadVehicle(Vehicle *v)
result |= 2;
st->last_vehicle = v->index;
}
next_vehicle:;
if (!(v = v->next))
break;
}
v = u;
@@ -1301,6 +1447,10 @@ next_vehicle:;
v->load_unload_time_rem = unloading_time;
if (completely_empty) {
TriggerVehicle(v, VEHICLE_TRIGGER_EMPTY);
}
if (result != 0) {
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
@@ -1312,12 +1462,13 @@ next_vehicle:;
SubtractMoneyFromPlayer(-profit);
if (_current_player == _local_player)
SndPlayVehicleFx(0x12, v);
SndPlayVehicleFx(SND_14_CASHTILL, v);
ShowCostOrIncomeAnimation(v->x_pos, v->y_pos, v->z_pos, -profit);
}
}
_current_player = old_player;
return result;
}
@@ -1339,9 +1490,9 @@ static void DoAcquireCompany(Player *p)
int i,pi;
int64 value;
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
SET_DPARAM32(2, p->bankrupt_value);
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
SetDParam(2, p->bankrupt_value);
AddNewsItem( (StringID)(_current_player + 16*2), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0);
// original code does this a little bit differently
@@ -1368,6 +1519,8 @@ static void DoAcquireCompany(Player *p)
DeletePlayerWindows(pi);
}
extern int GetAmountOwnedBy(Player *p, byte owner);
int32 CmdBuyShareInCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
Player *p;
@@ -1378,6 +1531,13 @@ int32 CmdBuyShareInCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_OTHER);
p = DEREF_PLAYER(p1);
/* 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;
cost = CalculateCompanyValue(p) >> 2;
if (flags & DC_EXEC) {
b = p->share_owners;
@@ -1405,6 +1565,10 @@ int32 CmdSellShareInCompany(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_OTHER);
p = DEREF_PLAYER(p1);
/* Those lines are here for network-protection (clients can be slow) */
if (GetAmountOwnedBy(p, _current_player) == 0)
return 0;
/* adjust it a little to make it less profitable to sell and buy */
cost = CalculateCompanyValue(p) >> 2;
cost = -(cost - (cost >> 7));
+358 -37
View File
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "engine.h"
#include "table/engines.h"
#include "player.h"
@@ -7,6 +8,7 @@
#include "vehicle.h"
#include "news.h"
#include "saveload.h"
#include "sprite.h"
#define UPDATE_PLAYER_RAILTYPE(e,p) if ((byte)(e->railtype + 1) > p->max_railtype) p->max_railtype = e->railtype + 1;
@@ -105,7 +107,10 @@ static void CalcEngineReliability(Engine *e)
uint max = e->reliability_max;
e->reliability = (int)age * (int)(e->reliability_final - max) / e->duration_phase_3 + max;
} else {
e->player_avail = _patches.never_expire_vehicles ? -1 : 0;
// time's up for this engine
// make it either available to all players (if never_expire_vehicles is enabled and if it was available earlier)
// or disable this engine completely
e->player_avail = (_patches.never_expire_vehicles && e->player_avail)? -1 : 0;
e->reliability = e->reliability_final;
}
}
@@ -172,7 +177,7 @@ uint32 _engine_refit_masks[256];
struct WagonOverride {
byte *train_id;
int trains;
struct SpriteSuperSet superset;
struct SpriteGroup group;
};
static struct WagonOverrides {
@@ -180,7 +185,7 @@ static struct WagonOverrides {
struct WagonOverride *overrides;
} _engine_wagon_overrides[256];
void SetWagonOverrideSprites(byte engine, struct SpriteSuperSet *superset,
void SetWagonOverrideSprites(byte engine, struct SpriteGroup *group,
byte *train_id, int trains)
{
struct WagonOverrides *wos;
@@ -192,19 +197,24 @@ void SetWagonOverrideSprites(byte engine, struct SpriteSuperSet *superset,
wos->overrides_count * sizeof(struct WagonOverride));
wo = &wos->overrides[wos->overrides_count - 1];
wo->superset = *superset;
/* FIXME: If we are replacing an override, release original SpriteGroup
* to prevent leaks. But first we need to refcount the SpriteGroup.
* --pasky */
wo->group = *group;
wo->trains = trains;
wo->train_id = malloc(trains);
memcpy(wo->train_id, train_id, trains);
}
static struct SpriteSuperSet *GetWagonOverrideSpriteSet(byte engine, byte overriding_engine)
static struct SpriteGroup *GetWagonOverrideSpriteSet(byte engine, byte overriding_engine)
{
struct WagonOverrides *wos = &_engine_wagon_overrides[engine];
int i;
// XXX: This could turn out to be a timesink on profiles. We could always just
// dedicate 65535 bytes for an [engine][train] trampoline.
// XXX: This could turn out to be a timesink on profiles. We could
// always just dedicate 65535 bytes for an [engine][train] trampoline
// for O(1). Or O(logMlogN) and searching binary tree or smt. like
// that. --pasky
for (i = 0; i < wos->overrides_count; i++) {
struct WagonOverride *wo = &wos->overrides[i];
@@ -212,7 +222,7 @@ static struct SpriteSuperSet *GetWagonOverrideSpriteSet(byte engine, byte overri
for (j = 0; j < wo->trains; j++) {
if (wo->train_id[j] == overriding_engine)
return &wo->superset;
return &wo->group;
}
}
return NULL;
@@ -224,44 +234,263 @@ byte _engine_original_sprites[256];
// (It isn't and shouldn't be like this in the GRF files since new cargo types
// may appear in future - however it's more convenient to store it like this in
// memory. --pasky)
static struct SpriteSuperSet _engine_custom_sprites[256][NUM_CID];
static struct SpriteGroup _engine_custom_sprites[256][NUM_CID];
void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteSuperSet *superset)
void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteGroup *group)
{
assert(superset->sprites_per_set == 4 || superset->sprites_per_set == 8);
_engine_custom_sprites[engine][cargo] = *superset;
/* FIXME: If we are replacing an override, release original SpriteGroup
* to prevent leaks. But first we need to refcount the SpriteGroup.
* --pasky */
_engine_custom_sprites[engine][cargo] = *group;
}
int GetCustomEngineSprite(byte engine, uint16 overriding_engine, byte cargo,
byte loaded, byte in_motion, byte direction)
typedef struct RealSpriteGroup *(*resolve_callback)(struct SpriteGroup *spritegroup,
struct Vehicle *veh,
void *callback); /* XXX data pointer used as function pointer */
static struct RealSpriteGroup *
ResolveVehicleSpriteGroup(struct SpriteGroup *spritegroup, struct Vehicle *veh,
resolve_callback callback)
{
struct SpriteSuperSet *superset = &_engine_custom_sprites[engine][cargo];
//debug("spgt %d", spritegroup->type);
switch (spritegroup->type) {
case SGT_REAL:
return &spritegroup->g.real;
case SGT_DETERMINISTIC: {
struct DeterministicSpriteGroup *dsg = &spritegroup->g.determ;
struct SpriteGroup *target;
int value = -1;
//debug("[%p] Having fun resolving variable %x", veh, dsg->variable);
if ((dsg->variable >> 6) == 0) {
/* General property */
value = GetDeterministicSpriteValue(dsg->variable);
} else {
/* Vehicle-specific property. */
if (veh == NULL) {
/* We are in a purchase list of something,
* and we are checking for something undefined.
* That means we should get the first target
* (NOT the default one). */
if (dsg->num_ranges > 0) {
target = &dsg->ranges[0].group;
} else {
target = dsg->default_group;
}
return callback(target, NULL, callback);
}
if (dsg->var_scope == VSG_SCOPE_PARENT) {
/* First engine in the vehicle chain */
if (veh->type == VEH_Train)
veh = GetFirstVehicleInChain(veh);
}
if (dsg->variable == 0x40) {
if (veh->type == VEH_Train) {
Vehicle *u = GetFirstVehicleInChain(veh);
byte chain_before = 0, chain_after = 0;
while (u != veh) {
u = u->next;
chain_before++;
}
while (u->next != NULL) {
u = u->next;
chain_after++;
};
value = chain_before << 16 | chain_after << 8
| (chain_before + chain_after + 1);
} else {
value = 1; /* 1 vehicle in the chain */
}
} else {
// TTDPatch runs on little-endian arch;
// Variable is 0x80 + offset in TTD's vehicle structure
switch (dsg->variable - 0x80) {
#define veh_prop(id_, value_) case (id_): value = (value_); break
veh_prop(0x00, veh->type);
veh_prop(0x01, veh->subtype);
veh_prop(0x04, veh->index);
veh_prop(0x05, veh->index & 0xFF);
/* XXX? Is THIS right? */
veh_prop(0x0A, PackOrder(&veh->current_order));
veh_prop(0x0B, PackOrder(&veh->current_order) & 0xff);
veh_prop(0x0C, veh->num_orders);
veh_prop(0x0D, veh->cur_order_index);
veh_prop(0x10, veh->load_unload_time_rem);
veh_prop(0x11, veh->load_unload_time_rem & 0xFF);
veh_prop(0x12, veh->date_of_last_service);
veh_prop(0x13, veh->date_of_last_service & 0xFF);
veh_prop(0x14, veh->service_interval);
veh_prop(0x15, veh->service_interval & 0xFF);
veh_prop(0x16, veh->last_station_visited);
veh_prop(0x17, veh->tick_counter);
veh_prop(0x18, veh->max_speed);
veh_prop(0x19, veh->max_speed & 0xFF);
veh_prop(0x1F, veh->direction);
veh_prop(0x28, veh->cur_image);
veh_prop(0x29, veh->cur_image & 0xFF);
veh_prop(0x32, veh->vehstatus);
veh_prop(0x33, veh->vehstatus);
veh_prop(0x34, veh->cur_speed);
veh_prop(0x35, veh->cur_speed & 0xFF);
veh_prop(0x36, veh->subspeed);
veh_prop(0x37, veh->acceleration);
veh_prop(0x39, veh->cargo_type);
veh_prop(0x3A, veh->cargo_cap);
veh_prop(0x3B, veh->cargo_cap & 0xFF);
veh_prop(0x3C, veh->cargo_count);
veh_prop(0x3D, veh->cargo_count & 0xFF);
veh_prop(0x3E, veh->cargo_source); // Probably useless; so what
veh_prop(0x3F, veh->cargo_days);
veh_prop(0x40, veh->age);
veh_prop(0x41, veh->age & 0xFF);
veh_prop(0x42, veh->max_age);
veh_prop(0x43, veh->max_age & 0xFF);
veh_prop(0x44, veh->build_year);
veh_prop(0x45, veh->unitnumber);
veh_prop(0x46, veh->engine_type);
veh_prop(0x47, veh->engine_type & 0xFF);
veh_prop(0x48, veh->spritenum);
veh_prop(0x49, veh->day_counter);
veh_prop(0x4A, veh->breakdowns_since_last_service);
veh_prop(0x4B, veh->breakdown_ctr);
veh_prop(0x4C, veh->breakdown_delay);
veh_prop(0x4D, veh->breakdown_chance);
veh_prop(0x4E, veh->reliability);
veh_prop(0x4F, veh->reliability & 0xFF);
veh_prop(0x50, veh->reliability_spd_dec);
veh_prop(0x51, veh->reliability_spd_dec & 0xFF);
veh_prop(0x52, veh->profit_this_year);
veh_prop(0x53, veh->profit_this_year & 0xFFFFFF);
veh_prop(0x54, veh->profit_this_year & 0xFFFF);
veh_prop(0x55, veh->profit_this_year & 0xFF);
veh_prop(0x56, veh->profit_last_year);
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(0x5C, veh->value);
veh_prop(0x5D, veh->value & 0xFFFFFF);
veh_prop(0x5E, veh->value & 0xFFFF);
veh_prop(0x5F, veh->value & 0xFF);
veh_prop(0x60, veh->string_id);
veh_prop(0x61, veh->string_id & 0xFF);
/* 00h..07h=sub image? 40h=in tunnel; actually some kind of status
* aircraft: >=13h when in flight
* train, ship: 80h=in depot
* rv: 0feh=in depot */
/* TODO veh_prop(0x62, veh->???); */
/* TODO: The rest is per-vehicle, I hope no GRF file looks so far.
* But they won't let us have an easy ride so surely *some* GRF
* file does. So someone needs to do this too. --pasky */
#undef veh_prop
}
}
}
target = value != -1 ? EvalDeterministicSpriteGroup(dsg, value) : dsg->default_group;
//debug("Resolved variable %x: %d, %p", dsg->variable, value, callback);
return callback(target, veh, callback);
}
case SGT_RANDOMIZED: {
struct RandomizedSpriteGroup *rsg = &spritegroup->g.random;
if (veh == NULL) {
/* Purchase list of something. Show the first one. */
assert(rsg->num_groups > 0);
//debug("going for %p: %d", rsg->groups[0], rsg->groups[0].type);
return callback(&rsg->groups[0], NULL, callback);
}
if (rsg->var_scope == VSG_SCOPE_PARENT) {
/* First engine in the vehicle chain */
if (veh->type == VEH_Train)
veh = GetFirstVehicleInChain(veh);
}
return callback(EvalRandomizedSpriteGroup(rsg, veh->random_bits), veh, callback);
}
default:
error("I don't know how to handle such a spritegroup %d!", spritegroup->type);
return NULL;
}
}
static struct SpriteGroup *GetVehicleSpriteGroup(byte engine, Vehicle *v)
{
struct SpriteGroup *group;
uint16 overriding_engine = -1;
byte cargo = CID_PURCHASE;
if (v != NULL) {
overriding_engine = v->type == VEH_Train ? v->u.rail.first_engine : -1;
cargo = _global_cargo_id[_opt.landscape][v->cargo_type];
}
group = &_engine_custom_sprites[engine][cargo];
if (overriding_engine != 0xffff) {
struct SpriteGroup *overset;
overset = GetWagonOverrideSpriteSet(engine, overriding_engine);
if (overset) group = overset;
}
return group;
}
int GetCustomEngineSprite(byte engine, Vehicle *v, byte direction)
{
struct SpriteGroup *group;
struct RealSpriteGroup *rsg;
byte cargo = CID_PURCHASE;
byte loaded = 0;
bool in_motion = 0;
int totalsets, spriteset;
int r;
if (overriding_engine != 0xffff) {
struct SpriteSuperSet *overset;
if (v != NULL) {
int capacity = v->cargo_cap;
overset = GetWagonOverrideSpriteSet(engine, overriding_engine);
if (overset) superset = overset;
cargo = _global_cargo_id[_opt.landscape][v->cargo_type];
if (capacity == 0) capacity = 1;
loaded = (v->cargo_count * 100) / capacity;
in_motion = (v->cur_speed != 0);
}
if (!superset->sprites_per_set && cargo != 29) {
// This superset is empty but perhaps there'll be a default one.
superset = &_engine_custom_sprites[engine][29];
group = GetVehicleSpriteGroup(engine, v);
rsg = ResolveVehicleSpriteGroup(group, v, (resolve_callback) ResolveVehicleSpriteGroup);
if (rsg->sprites_per_set == 0 && cargo != 29) { /* XXX magic number */
// This group is empty but perhaps there'll be a default one.
rsg = ResolveVehicleSpriteGroup(&_engine_custom_sprites[engine][29], v,
(resolve_callback) ResolveVehicleSpriteGroup);
}
if (!superset->sprites_per_set) {
// This superset is empty. This function users should therefore
if (!rsg->sprites_per_set) {
// This group is empty. This function users should therefore
// look up the sprite number in _engine_original_sprites.
return 0;
}
direction %= 8;
if (superset->sprites_per_set == 4)
if (rsg->sprites_per_set == 4)
direction %= 4;
totalsets = in_motion ? superset->loaded_count : superset->loading_count;
totalsets = in_motion ? rsg->loaded_count : rsg->loading_count;
// My aim here is to make it possible to visually determine absolutely
// empty and totally full vehicles. --pasky
@@ -278,11 +507,91 @@ int GetCustomEngineSprite(byte engine, uint16 overriding_engine, byte cargo,
spriteset--;
}
r = (in_motion ? superset->loaded[spriteset] : superset->loading[spriteset]) + direction;
r = (in_motion ? rsg->loaded[spriteset] : rsg->loading[spriteset]) + direction;
return r;
}
// Global variables are evil, yes, but we would end up with horribly overblown
// calling convention otherwise and this should be 100% reentrant.
static byte _vsg_random_triggers;
static byte _vsg_bits_to_reseed;
extern int _custom_sprites_base;
static struct RealSpriteGroup *
TriggerVehicleSpriteGroup(struct SpriteGroup *spritegroup, struct Vehicle *veh,
resolve_callback callback)
{
if (spritegroup->type == SGT_RANDOMIZED)
_vsg_bits_to_reseed |= RandomizedSpriteGroupTriggeredBits(&spritegroup->g.random,
_vsg_random_triggers,
&veh->waiting_triggers);
return ResolveVehicleSpriteGroup(spritegroup, veh, callback);
}
static void DoTriggerVehicle(Vehicle *veh, enum VehicleTrigger trigger, byte base_random_bits, bool first)
{
struct RealSpriteGroup *rsg;
byte new_random_bits;
_vsg_random_triggers = trigger;
_vsg_bits_to_reseed = 0;
rsg = TriggerVehicleSpriteGroup(GetVehicleSpriteGroup(veh->engine_type, veh), veh,
(resolve_callback) TriggerVehicleSpriteGroup);
if (rsg->sprites_per_set == 0 && veh->cargo_type != 29) { /* XXX magic number */
// This group turned out to be empty but perhaps there'll be a default one.
rsg = TriggerVehicleSpriteGroup(&_engine_custom_sprites[veh->engine_type][29], veh,
(resolve_callback) TriggerVehicleSpriteGroup);
}
new_random_bits = Random();
veh->random_bits &= ~_vsg_bits_to_reseed;
veh->random_bits |= (first ? new_random_bits : base_random_bits) & _vsg_bits_to_reseed;
switch (trigger) {
case VEHICLE_TRIGGER_NEW_CARGO:
/* All vehicles in chain get ANY_NEW_CARGO trigger now.
* So we call it for the first one and they will recurse. */
/* Indexing part of vehicle random bits needs to be
* same for all triggered vehicles in the chain (to get
* all the random-cargo wagons carry the same cargo,
* i.e.), so we give them all the NEW_CARGO triggered
* vehicle's portion of random bits. */
assert(first);
DoTriggerVehicle(GetFirstVehicleInChain(veh), VEHICLE_TRIGGER_ANY_NEW_CARGO, new_random_bits, false);
break;
case VEHICLE_TRIGGER_DEPOT:
/* We now trigger the next vehicle in chain recursively.
* The random bits portions may be different for each
* vehicle in chain. */
if (veh->next != NULL)
DoTriggerVehicle(veh->next, trigger, 0, true);
break;
case VEHICLE_TRIGGER_EMPTY:
/* We now trigger the next vehicle in chain
* recursively. The random bits portions must be same
* for each vehicle in chain, so we give them all
* first chained vehicle's portion of random bits. */
if (veh->next != NULL)
DoTriggerVehicle(veh->next, trigger, first ? new_random_bits : base_random_bits, false);
break;
case VEHICLE_TRIGGER_ANY_NEW_CARGO:
/* Now pass the trigger recursively to the next vehicle
* in chain. */
assert(!first);
if (veh->next != NULL)
DoTriggerVehicle(veh->next, VEHICLE_TRIGGER_ANY_NEW_CARGO, base_random_bits, false);
break;
}
}
void TriggerVehicle(Vehicle *veh, enum VehicleTrigger trigger)
{
DoTriggerVehicle(veh, trigger, 0, true);
}
static char *_engine_custom_names[256];
void SetCustomEngineName(int engine, char *name)
@@ -294,7 +603,8 @@ StringID GetCustomEngineName(int engine)
{
if (!_engine_custom_names[engine])
return _engine_name_strings[engine];
strcpy(_userstring, _engine_custom_names[engine]);
strncpy(_userstring, _engine_custom_names[engine], USERSTRING_LEN);
_userstring[USERSTRING_LEN - 1] = '\0';
return STR_SPEC_USERSTRING;
}
@@ -328,7 +638,7 @@ void EnginesDailyLoop()
for(e=_engines,i=0; i!=TOTAL_NUM_ENGINES; e++,i++) {
if (e->flags & ENGINE_INTRODUCING) {
if (e->flags & ENGINE_PREVIEWING) {
if (!--e->preview_wait) {
if (e->preview_player != 0xFF && !--e->preview_wait) {
e->flags &= ~ENGINE_PREVIEWING;
DeleteWindowById(WC_ENGINE_PREVIEW, i);
e->preview_player++;
@@ -377,7 +687,18 @@ int32 CmdWantEnginePreview(int x, int y, uint32 flags, uint32 p1, uint32 p2)
return 0;
}
void NewVehicleAvailable(Engine *e)
// Determine if an engine type is a wagon (and not a loco)
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;
}
static void NewVehicleAvailable(Engine *e)
{
Vehicle *v;
Player *p;
@@ -410,11 +731,8 @@ void NewVehicleAvailable(Engine *e)
e->player_avail = (byte)-1;
// Do not introduce new rail wagons
if ((byte)index < NUM_TRAIN_ENGINES) {
const RailVehicleInfo *rvi = &_rail_vehicle_info[index];
if(rvi->flags & RVI_WAGON)
return;
}
if(isWagon(index))
return;
// make maglev / monorail available
FOR_ALL_PLAYERS(p) {
@@ -451,7 +769,10 @@ void EnginesMonthlyLoop()
} else if (!(e->flags & (ENGINE_AVAILABLE|ENGINE_INTRODUCING)) && _date >= e->intro_date) {
// Introduction date has passed.. show introducing dialog to one player.
e->flags |= ENGINE_INTRODUCING;
e->preview_player = 1; // Give to the player with the highest rating.
// Do not introduce new rail wagons
if(!isWagon(e - _engines))
e->preview_player = 1; // Give to the player with the highest rating.
}
}
}
@@ -462,7 +783,7 @@ int32 CmdRenameEngine(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
StringID str;
str = AllocateName((byte*)_decode_parameters, 0);
str = AllocateNameUnique((byte*)_decode_parameters, 0);
if (str == 0)
return CMD_ERROR;
+71 -24
View File
@@ -1,6 +1,8 @@
#ifndef ENGINE_H
#define ENGINE_H
#include "sprite.h"
typedef struct RailVehicleInfo {
byte image_index;
byte flags; /* 1=multihead engine, 2=wagon */
@@ -25,6 +27,27 @@ typedef struct ShipVehicleInfo {
byte refittable;
} ShipVehicleInfo;
typedef struct AircraftVehicleInfo {
byte image_index;
byte base_cost;
byte running_cost;
byte subtype;
byte sfx;
byte acceleration;
byte max_speed;
byte mail_capacity;
uint16 passanger_capacity;
} AircraftVehicleInfo;
typedef struct RoadVehicleInfo {
byte image_index;
byte base_cost;
byte running_cost;
byte sfx;
byte max_speed;
byte capacity;
byte cargo_type;
} RoadVehicleInfo;
typedef struct EngineInfo {
uint16 base_intro;
@@ -59,18 +82,6 @@ enum {
void StartupEngines();
struct SpriteSuperSet {
// XXX: Would anyone ever need more than 16 spritesets? Maybe we should
// use even less, now we take whole 8kb for custom sprites table, oh my!
byte sprites_per_set; // means number of directions - 4 or 8
// Loaded = in motion, loading = not moving
// Each superset contains several spritesets, for various loading stages
byte loaded_count;
uint16 loaded[16]; // sprite ids
byte loading_count;
uint16 loading[16]; // sprite ids
};
extern byte _global_cargo_id[NUM_LANDSCAPE][NUM_CARGO];
enum {
CID_DEFAULT = 29,
@@ -83,15 +94,23 @@ extern byte _local_cargo_id_landscape[NUM_CID];
extern uint32 _engine_refit_masks[256];
extern byte _engine_original_sprites[256];
void SetWagonOverrideSprites(byte engine, struct SpriteSuperSet *superset, byte *train_id, int trains);
void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteSuperSet *superset);
void SetWagonOverrideSprites(byte engine, struct SpriteGroup *group, byte *train_id, int trains);
void SetCustomEngineSprites(byte engine, byte cargo, struct SpriteGroup *group);
// loaded is in percents, overriding_engine 0xffff is none
int GetCustomEngineSprite(byte engine, uint16 overriding_engine, byte cargo, byte loaded, byte in_motion, byte direction);
#define GetCustomVehicleSprite(v, direction) \
GetCustomEngineSprite(v->engine_type, v->type == VEH_Train ? v->u.rail.first_engine : -1, \
_global_cargo_id[_opt.landscape][v->cargo_type], \
((v->cargo_count + 1) * 100) / (v->cargo_cap + 1), \
!!v->cur_speed, direction);
int GetCustomEngineSprite(byte engine, Vehicle *v, byte direction);
#define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction)
#define GetCustomVehicleIcon(et, direction) GetCustomEngineSprite(et, NULL, direction)
enum VehicleTrigger {
VEHICLE_TRIGGER_NEW_CARGO = 1,
// Externally triggered only for the first vehicle in chain
VEHICLE_TRIGGER_DEPOT = 2,
// Externally triggered only for the first vehicle in chain, only if whole chain is empty
VEHICLE_TRIGGER_EMPTY = 4,
// Not triggered externally (called for the whole chain if we got NEW_CARGO)
VEHICLE_TRIGGER_ANY_NEW_CARGO = 8,
};
void TriggerVehicle(Vehicle *veh, enum VehicleTrigger trigger);
void SetCustomEngineName(int engine, char *name);
StringID GetCustomEngineName(int engine);
@@ -121,17 +140,45 @@ enum {
NUM_ROAD_ENGINES = 88,
NUM_SHIP_ENGINES = 11,
NUM_AIRCRAFT_ENGINES = 41,
TOTAL_NUM_ENGINES = NUM_NORMAL_RAIL_ENGINES+NUM_MONORAIL_ENGINES+NUM_MAGLEV_ENGINES+NUM_ROAD_ENGINES+NUM_SHIP_ENGINES+NUM_AIRCRAFT_ENGINES,
TOTAL_NUM_ENGINES = NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES + NUM_SHIP_ENGINES + NUM_AIRCRAFT_ENGINES,
AIRCRAFT_ENGINES_INDEX = NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES + NUM_SHIP_ENGINES,
SHIP_ENGINES_INDEX = NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES,
ROAD_ENGINES_INDEX = NUM_TRAIN_ENGINES,
};
VARDEF Engine _engines[TOTAL_NUM_ENGINES];
#define DEREF_ENGINE(i) (&_engines[i])
VARDEF StringID _engine_name_strings[TOTAL_NUM_ENGINES];
/* Access Vehicle Data */
//#include "table/engines.h"
extern EngineInfo _engine_info[TOTAL_NUM_ENGINES];
extern RailVehicleInfo _rail_vehicle_info[];
#define ship_vehicle_info(e) _ship_vehicle_info[e - SHIP_ENGINES_INDEX]
extern ShipVehicleInfo _ship_vehicle_info[];
extern RailVehicleInfo _rail_vehicle_info[NUM_TRAIN_ENGINES];
extern ShipVehicleInfo _ship_vehicle_info[NUM_SHIP_ENGINES];
extern AircraftVehicleInfo _aircraft_vehicle_info[NUM_AIRCRAFT_ENGINES];
extern RoadVehicleInfo _road_vehicle_info[NUM_ROAD_ENGINES];
static inline RailVehicleInfo *RailVehInfo(uint e)
{
assert(e < lengthof(_rail_vehicle_info));
return &_rail_vehicle_info[e];
}
static inline ShipVehicleInfo *ShipVehInfo(uint e)
{
assert(e - SHIP_ENGINES_INDEX < lengthof(_ship_vehicle_info));
return &_ship_vehicle_info[e - SHIP_ENGINES_INDEX];
}
static inline AircraftVehicleInfo *AircraftVehInfo(uint e)
{
assert(e - AIRCRAFT_ENGINES_INDEX < lengthof(_aircraft_vehicle_info));
return &_aircraft_vehicle_info[e - AIRCRAFT_ENGINES_INDEX];
}
static inline RoadVehicleInfo *RoadVehInfo(uint e)
{
assert(e - ROAD_ENGINES_INDEX < lengthof(_road_vehicle_info));
return &_road_vehicle_info[e - ROAD_ENGINES_INDEX];
}
#endif
+26 -24
View File
@@ -1,6 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "window.h"
#include "gui.h"
#include "viewport.h"
@@ -15,14 +15,16 @@ void DrawShipEngineInfo(int engine, int x, int y, int maxw);
StringID GetEngineCategoryName(byte engine)
{
if (engine < NUM_NORMAL_RAIL_ENGINES)
return STR_8102_RAILROAD_LOCOMOTIVE;
if (engine < NUM_NORMAL_RAIL_ENGINES + NUM_MONORAIL_ENGINES)
return STR_8106_MONORAIL_LOCOMOTIVE;
if (engine < NUM_TRAIN_ENGINES)
return STR_8107_MAGLEV_LOCOMOTIVE;
if (engine < NUM_TRAIN_ENGINES) {
switch (_engines[engine].railtype) {
case 0:
return STR_8102_RAILROAD_LOCOMOTIVE;
case 1:
return STR_8106_MONORAIL_LOCOMOTIVE;
case 2:
return STR_8107_MAGLEV_LOCOMOTIVE;
}
}
if (engine < NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES)
return STR_8103_ROAD_VEHICLE;
@@ -69,7 +71,7 @@ static void EnginePreviewWndProc(Window *w, WindowEvent *e)
DrawWindowWidgets(w);
engine = w->window_number;
SET_DPARAM16(0, GetEngineCategoryName(engine));
SetDParam(0, GetEngineCategoryName(engine));
DrawStringMultiCenter(150, 44, STR_8101_WE_HAVE_JUST_DESIGNED_A, 296);
DrawStringCentered(w->width >> 1, 80, GetCustomEngineName(engine), 0x10);
@@ -121,12 +123,12 @@ void DrawNewsNewTrainAvail(Window *w)
DrawNewsBorder(w);
engine = WP(w,news_d).ni->string_id;
SET_DPARAM16(0, GetEngineCategoryName(engine));
SetDParam(0, GetEngineCategoryName(engine));
DrawStringMultiCenter(w->width >> 1, 20, STR_8859_NEW_NOW_AVAILABLE, w->width - 2);
GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
SET_DPARAM16(0, GetCustomEngineName(engine));
SetDParam(0, GetCustomEngineName(engine));
DrawStringMultiCenter(w->width >> 1, 57, STR_885A, w->width - 2);
DrawTrainEngine(w->width >> 1, 88, engine, 0);
@@ -137,9 +139,9 @@ void DrawNewsNewTrainAvail(Window *w)
StringID GetNewsStringNewTrainAvail(NewsItem *ni)
{
int engine = ni->string_id;
SET_DPARAM16(0, STR_8859_NEW_NOW_AVAILABLE);
SET_DPARAM16(1, GetEngineCategoryName(engine));
SET_DPARAM16(2, GetCustomEngineName(engine));
SetDParam(0, STR_8859_NEW_NOW_AVAILABLE);
SetDParam(1, GetEngineCategoryName(engine));
SetDParam(2, GetCustomEngineName(engine));
return STR_02B6;
}
@@ -154,7 +156,7 @@ void DrawNewsNewAircraftAvail(Window *w)
DrawStringMultiCenter(w->width >> 1, 20, STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE, w->width - 2);
GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
SET_DPARAM16(0, GetCustomEngineName(engine));
SetDParam(0, GetCustomEngineName(engine));
DrawStringMultiCenter(w->width >> 1, 57, STR_A02D, w->width - 2);
DrawAircraftEngine(w->width >> 1, 93, engine, 0);
@@ -165,8 +167,8 @@ void DrawNewsNewAircraftAvail(Window *w)
StringID GetNewsStringNewAircraftAvail(NewsItem *ni)
{
int engine = ni->string_id;
SET_DPARAM16(0, STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE);
SET_DPARAM16(1, GetCustomEngineName(engine));
SetDParam(0, STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE);
SetDParam(1, GetCustomEngineName(engine));
return STR_02B6;
}
@@ -180,7 +182,7 @@ void DrawNewsNewRoadVehAvail(Window *w)
DrawStringMultiCenter(w->width >> 1, 20, STR_9028_NEW_ROAD_VEHICLE_NOW_AVAILABLE, w->width - 2);
GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
SET_DPARAM16(0, GetCustomEngineName(engine));
SetDParam(0, GetCustomEngineName(engine));
DrawStringMultiCenter(w->width >> 1, 57, STR_9029, w->width - 2);
DrawRoadVehEngine(w->width >> 1, 88, engine, 0);
@@ -191,8 +193,8 @@ void DrawNewsNewRoadVehAvail(Window *w)
StringID GetNewsStringNewRoadVehAvail(NewsItem *ni)
{
int engine = ni->string_id;
SET_DPARAM16(0, STR_9028_NEW_ROAD_VEHICLE_NOW_AVAILABLE);
SET_DPARAM16(1, GetCustomEngineName(engine));
SetDParam(0, STR_9028_NEW_ROAD_VEHICLE_NOW_AVAILABLE);
SetDParam(1, GetCustomEngineName(engine));
return STR_02B6;
}
@@ -207,7 +209,7 @@ void DrawNewsNewShipAvail(Window *w)
DrawStringMultiCenter(w->width >> 1, 20, STR_982C_NEW_SHIP_NOW_AVAILABLE, w->width - 2);
GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
SET_DPARAM16(0, GetCustomEngineName(engine));
SetDParam(0, GetCustomEngineName(engine));
DrawStringMultiCenter(w->width >> 1, 57, STR_982D, w->width - 2);
DrawShipEngine(w->width >> 1, 93, engine, 0);
@@ -218,7 +220,7 @@ void DrawNewsNewShipAvail(Window *w)
StringID GetNewsStringNewShipAvail(NewsItem *ni)
{
int engine = ni->string_id;
SET_DPARAM16(0, STR_982C_NEW_SHIP_NOW_AVAILABLE);
SET_DPARAM16(1, GetCustomEngineName(engine));
SetDParam(0, STR_982C_NEW_SHIP_NOW_AVAILABLE);
SetDParam(1, GetCustomEngineName(engine));
return STR_02B6;
}
+53 -52
View File
@@ -12,83 +12,83 @@
#include <errno.h>
#ifndef EXTERNAL_PLAYER
#define EXTERNAL_PLAYER "/usr/bin/timidity"
#define EXTERNAL_PLAYER "timidity"
#endif
static pid_t _pid;
static void extmidi_kill(void) {
if(_pid > 0) {
kill(_pid, SIGKILL);
while(waitpid(_pid, NULL, WNOHANG) != _pid);
}
_pid = 0;
static void extmidi_kill(void)
{
if (_pid > 0) {
kill(_pid, SIGKILL);
while (waitpid(_pid, NULL, WNOHANG) != _pid);
}
_pid = 0;
}
static char *extmidi_start(char **parm) {
_pid = 0;
return NULL;
static char *extmidi_start(char **parm)
{
_pid = 0;
return NULL;
}
static void extmidi_stop(void) {
extmidi_kill();
static void extmidi_stop(void)
{
extmidi_kill();
}
static void extmidi_play_song(const char *filename) {
extmidi_kill();
static void extmidi_play_song(const char *filename)
{
extmidi_kill();
_pid = fork();
if(_pid < 0) {
fprintf(stderr, "extmidi: couldn't fork: %s\n", strerror(errno));
_pid = 0;
return;
}
_pid = fork();
if (_pid < 0) {
fprintf(stderr, "extmidi: couldn't fork: %s\n", strerror(errno));
_pid = 0;
return;
}
if(_pid == 0) {
#if defined(MIDI_ARG)
execl(EXTERNAL_PLAYER, "extmidi", MIDI_ARG, filename, NULL);
if (_pid == 0) {
#if defined(MIDI_ARG)
execlp(EXTERNAL_PLAYER, "extmidi", MIDI_ARG, filename, NULL);
#else
execl(EXTERNAL_PLAYER, "extmidi", filename, NULL);
execlp(EXTERNAL_PLAYER, "extmidi", filename, NULL);
#endif
fprintf(stderr, "extmidi: couldn't execl: %s\n", strerror(errno));
exit(0);
}
fprintf(stderr, "extmidi: couldn't execl: %s\n", strerror(errno));
usleep(500);
exit(0);
}
if (_pid == waitpid(_pid, NULL, WNOHANG)) {
fprintf(stderr, "extmidi: play song failed\n");
_pid = 0;
usleep(500);
if(_pid == waitpid(_pid, NULL, WNOHANG)) {
fprintf(stderr, "extmidi: play song failed\n");
_pid = 0;
usleep(5000);
}
usleep(5000);
}
}
static void extmidi_stop_song(void) {
extmidi_kill();
static void extmidi_stop_song(void)
{
extmidi_kill();
}
static bool extmidi_is_playing(void) {
if(_pid == 0)
return 0;
static bool extmidi_is_playing(void)
{
if (_pid == 0)
return 0;
if(waitpid(_pid, NULL, WNOHANG) == _pid) {
_pid = 0;
return 0;
}
if (waitpid(_pid, NULL, WNOHANG) == _pid) {
_pid = 0;
return 0;
}
return 1;
return 1;
}
static void extmidi_set_volume(byte vol) {
fprintf(stderr, "extmidi: set volume not implemented\n");
static void extmidi_set_volume(byte vol)
{
fprintf(stderr, "extmidi: set volume not implemented\n");
}
const HalMusicDriver _extmidi_music_driver = {
@@ -99,5 +99,6 @@ const HalMusicDriver _extmidi_music_driver = {
extmidi_is_playing,
extmidi_set_volume,
};
#endif /* __MORPHOS__ */
#endif /* __BEOS__ */
+10
View File
@@ -110,6 +110,16 @@ 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) {
sprintf(buf, "%s%s", _path.second_data_dir, filename);
for(s=buf + strlen(_path.second_data_dir) - 1; *s != 0; s++)
*s = tolower(*s);
f = fopen(buf, "rb");
}
#endif
}
#endif
+67 -59
View File
@@ -1,8 +1,6 @@
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
#include "network.h"
/* vehicle.c */
/* window.c */
@@ -23,7 +21,7 @@ void RunTileLoop();
uint GetPartialZ(int x, int y, int corners);
uint GetSlopeZ(int x, int y);
uint32 GetTileTrackStatus(uint tile, TransportType mode);
void GetAcceptedCargo(uint tile, AcceptedCargo *ac);
void GetAcceptedCargo(uint tile, AcceptedCargo ac);
void ChangeTileOwner(uint tile, byte old_player, byte new_player);
void AnimateTile(uint tile);
void ClickTile(uint tile);
@@ -37,13 +35,24 @@ enum {
bool IsValidTile(uint tile);
static inline Point RemapCoords(int x, int y, int z)
{
#if !defined(NEW_ROTATION)
static Point FORCEINLINE RemapCoords(int x, int y, int z) { Point pt = { (y-x)*2, y + x -z }; return pt; }
Point pt;
pt.x = (y - x) * 2;
pt.y = y + x - z;
#else
static Point FORCEINLINE RemapCoords(int x, int y, int z) { Point pt = { (x + y)*2, x - y -z }; return pt; }
Point pt;
pt.x = (x + y) * 2;
pt.y = x - y - z;
#endif
return pt;
}
static Point FORCEINLINE RemapCoords2(int x, int y) { return RemapCoords(x, y, GetSlopeZ(x, y)); }
static inline Point RemapCoords2(int x, int y)
{
return RemapCoords(x, y, GetSlopeZ(x, y));
}
/* game.c */
byte *GetString(byte *buffr, uint16 string);
@@ -55,11 +64,6 @@ int GetParamInt8();
int GetParamUint16();
/* sound.c */
void SndPlayTileFx(int sound, TileIndex tile);
void SndPlayVehicleFx(int sound, Vehicle *v);
void SndPlayFx(int sound);
/* clear_land.c */
void DrawHillyLandTile(TileInfo *ti);
void DrawClearLandTile(TileInfo *ti, byte set);
@@ -71,6 +75,7 @@ void StationPickerDrawSprite(int x, int y, int railtype, int image);
/* track_land.c */
void DrawTrainDepotSprite(int x, int y, int image, int railtype);
void DrawWaypointSprite(int x, int y, int image, int railtype);
/* road_land.c */
void DrawRoadDepotSprite(int x, int y, int image);
@@ -91,11 +96,30 @@ StringID GetPlayerNameString(byte player, byte index);
void ShowInfo(const char *str);
void CDECL ShowInfoF(const char *str, ...);
void NORETURN CDECL error(const char *str, ...);
void memswap(void *a, void *b, size_t size);
/* ttd.c */
uint32 Random();
uint RandomRange(uint max);
// **************
// * Warning: DO NOT enable this unless you understand what it does
// *
// * If enabled, in a network game all randoms will be dumped to the
// * stdout if the first client joins (or if you are a client). This
// * is to help finding desync problems.
// *
// * Warning: DO NOT enable this unless you understand what it does
// **************
//#define RANDOM_DEBUG
#ifdef RANDOM_DEBUG
#define Random() DoRandom(__LINE__, __FILE__)
uint32 DoRandom(uint line, char *file);
#define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
uint DoRandomRange(uint max, uint line, char *file);
#else
uint32 Random();
uint RandomRange(uint max);
#endif
void InitPlayerRandoms();
@@ -112,6 +136,12 @@ void AddTextEffect(StringID msg, int x, int y, uint16 duration);
void InitTextEffects();
void DrawTextEffects(DrawPixelInfo *dpi);
void InitTextMessage();
void DrawTextMessage();
void CDECL AddTextMessage(uint16 color, uint8 duration, const char *message, ...);
void UndrawTextMessage();
void TextMessageDailyLoop();
bool AddAnimatedTile(uint tile);
void DeleteAnimatedTile(uint tile);
void AnimateAnimatedTiles();
@@ -123,46 +153,20 @@ bool CheckBridge_Stuff(byte bridge_type, int bridge_len);
uint32 GetBridgeLength(TileIndex begin, TileIndex end);
int CalcBridgeLenCostFactor(int x);
/* network.c */
typedef void CommandCallback(bool success, uint tile, uint32 p1, uint32 p2);
bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd);
void NetworkReceive();
void NetworkSend();
void NetworkProcessCommands();
void NetworkListen();
void NetworkInitialize();
void NetworkShutdown();
void NetworkSendCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback);
void NetworkSendEvent(uint16 type, uint16 data_len, void * data);
void NetworkStartSync(bool fcreset);
void NetworkClose(bool client);
void NetworkSendReadyPacket();
void NetworkSendSyncPackets();
void NetworkSendFrameSyncPackets();
bool NetworkCheckClientReady();
void NetworkIPListInit();
void NetworkCoreInit();
void NetworkCoreShutdown();
void NetworkCoreDisconnect();
void NetworkCoreLoop(bool incomming);
bool NetworkCoreConnectGame(const byte* b, unsigned short port);
bool NetworkCoreConnectGameStruct(NetworkGameList * item);
bool NetworkCoreStartGame();
void NetworkLobbyShutdown();
void NetworkLobbyInit();
void NetworkGameListClear();
NetworkGameList * NetworkGameListAdd();
void NetworkGameListFromLAN();
void NetworkGameListFromInternet();
NetworkGameList * NetworkGameListItem(uint16 index);
void NetworkGameFillDefaults();
void NetworkGameChangeDate(uint16 newdate);
/* network.c */
void NetworkUDPClose(void);
void NetworkStartUp();
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 NetworkSend_Command(uint32 tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback);
/* misc_cmd.c */
void PlaceTreesRandomly();
@@ -178,11 +182,16 @@ void InitializeLandscapeVariables(bool only_constants);
/* misc.c */
void DeleteName(StringID id);
byte *GetName(int id, byte *buff);
StringID AllocateName(const byte *name, byte skip);
// AllocateNameUnique also tests if the name used is not used anywere else
// and if it is used, it returns an error.
#define AllocateNameUnique(name, skip) RealAllocateName(name, skip, true)
#define AllocateName(name, skip) RealAllocateName(name, skip, false)
StringID RealAllocateName(const byte *name, byte skip, bool check_double);
void ConvertDayToYMD(YearMonthDay *ymd, uint16 date);
uint ConvertYMDToDay(uint year, uint month, uint day);
uint ConvertIntDate(uint date);
void CSleep(int milliseconds);
/* misc functions */
@@ -219,8 +228,12 @@ 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 ShowRenameCheckpointWindow(Checkpoint *cp);
void ShowRenameWaypointWindow(Waypoint *cp);
int FindFirstBit(uint32 x);
void ShowHighscoreTable(int tbl);
TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng);
@@ -262,17 +275,12 @@ void ttd_strlcpy(char *dst, const char *src, size_t len);
// callback from drivers that is called if the game size changes dynamically
void GameSizeChanged();
bool MakeScreenshot();
bool MakeWorldScreenshot(int left, int top, int width, int height, int zoom);
bool FileExists(const char *filename);
bool ReadLanguagePack(int index);
void InitializeLanguagePacks();
byte *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize);
int GetLanguageList(char **languages, int max);
const char *GetScreenshotFormatDesc(int i);
void InitializeScreenshotFormats();
void SetScreenshotFormat(int i);
void CheckSwitchToEuro();
void LoadFromConfig();
+109 -56
View File
@@ -17,7 +17,8 @@ static byte _string_colorremap[3];
static byte _dirty_blocks[DIRTY_BYTES_PER_LINE * MAX_SCREEN_HEIGHT / 8];
static void memcpy_pitch(void *d, void *s, int w, int h, int spitch, int dpitch)
void memcpy_pitch(void *d, void *s, int w, int h, int spitch, int dpitch)
{
byte *dp = (byte*)d;
byte *sp = (byte*)s;
@@ -41,12 +42,13 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo) {
if (_cursor.visible)
UndrawMouseCursor();
UndrawTextMessage();
p = _screen.pitch;
if (yo > 0 || (yo == 0 && xo > 0)) {
if (yo > 0) {
// Calculate pointers
dst = _screen.dst_ptr + (top+height-1) * p + (left+width-1);
dst = _screen.dst_ptr + (top + height - 1) * p + left;
src = dst - yo * p;
// Decrease height and increase top
@@ -56,31 +58,21 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo) {
// Adjust left & width
if (xo >= 0) {
dst += xo;
left += xo;
src -= xo;
width -= xo;
} else {
dst += xo;
src -= xo;
width += xo;
}
// Offset pointers to fit into the memmove call
dst += -width + 1;
src += -width + 1;
ht = height;
do {
memmove(dst, src, width);
for (ht = height; ht > 0; --ht) {
memcpy(dst, src, width);
src -= p;
dst -= p;
} while (--ht);
// This part of the screen is now dirty.
_video_driver->make_dirty(left, top, width, height);
}
} else {
// Calculate pointers to mem.
// Calculate pointers
dst = _screen.dst_ptr + top * p + left;
src = dst - yo * p;
@@ -98,23 +90,24 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo) {
width += xo;
}
ht = height;
do {
memcpy(dst, src, width);
// the y-displacement may be 0 therefore we have to use memmove,
// because source and destination may overlap
for (ht = height; ht > 0; --ht) {
memmove(dst, src, width);
src += p;
dst += p;
} while (--ht);
// This part of the screen is now dirty.
_video_driver->make_dirty(left, top, width, height);
}
}
// This part of the screen is now dirty.
_video_driver->make_dirty(left, top, width, height);
}
void GfxFillRect(int left, int top, int right, int bottom, int color) {
DrawPixelInfo *dpi = _cur_dpi;
byte *dst,*ctab;
const int otop = top;
const int oleft = left;
if (dpi->zoom != 0)
return;
@@ -159,19 +152,17 @@ void GfxFillRect(int left, int top, int right, int bottom, int color) {
} while (--bottom);
}
} else {
byte bo = 0;
byte bo = (oleft - left + dpi->left + otop - top + dpi->top) & 1;
do {
int i;
byte b = (bo^=1);
for(i=0; i!=right;i++)
if ((b^=1) != 0)
dst[i] = (byte)color;
for (i = (bo ^= 1); i < right; i += 2)
dst[i] = (byte)color;
dst += dpi->pitch;
} while (--bottom);
} while (--bottom > 0);
}
}
void GfxSetPixel(int x, int y, int color)
static void GfxSetPixel(int x, int y, int color)
{
DrawPixelInfo *dpi = _cur_dpi;
if ((x-=dpi->left) < 0 || x>=dpi->width || (y-=dpi->top)<0 || y>=dpi->height)
@@ -265,7 +256,7 @@ enum {
/* returns right coordinate */
int DrawString(int x, int y, uint16 str, byte color)
int DrawString(int x, int y, uint16 str, uint16 color)
{
GetString(str_buffr, str);
assert(strlen(str_buffr) < sizeof(str_buffr) - 1);
@@ -273,7 +264,7 @@ int DrawString(int x, int y, uint16 str, byte color)
}
void DrawStringRightAligned(int x, int y, uint16 str, byte color)
void DrawStringRightAligned(int x, int y, uint16 str, uint16 color)
{
GetString(str_buffr, str);
assert(strlen(str_buffr) < sizeof(str_buffr) - 1);
@@ -281,7 +272,7 @@ void DrawStringRightAligned(int x, int y, uint16 str, byte color)
}
int DrawStringCentered(int x, int y, uint16 str, byte color)
int DrawStringCentered(int x, int y, uint16 str, uint16 color)
{
int w;
@@ -294,7 +285,7 @@ int DrawStringCentered(int x, int y, uint16 str, byte color)
return w;
}
void DrawStringCenterUnderline(int x, int y, uint16 str, byte color)
void DrawStringCenterUnderline(int x, int y, uint16 str, uint16 color)
{
int w = DrawStringCentered(x, y, str, color);
GfxFillRect(x-(w>>1), y+10, x-(w>>1)+w, y+10, _string_colorremap[1]);
@@ -483,12 +474,15 @@ void DrawFrameRect(int left, int top, int right, int bottom, int ctab, int flags
}
}
int DoDrawString(const byte *string, int x, int y, byte color) {
int DoDrawString(const byte *string, int x, int y, uint16 real_color) {
DrawPixelInfo *dpi = _cur_dpi;
int base = _stringwidth_base;
byte c, *b;
byte c;
byte color;
int xo = x, yo = y;
color = real_color & 0xFF;
if (color != 0xFE) {
if (x >= dpi->left + dpi->width ||
x + _screen.width*2 <= dpi->left ||
@@ -498,9 +492,13 @@ int DoDrawString(const byte *string, int x, int y, byte color) {
if (color != 0xFF) {
switch_color:;
b = GetSpritePtr(674);
_string_colorremap[1] = b[color*2+8];
_string_colorremap[2] = b[color*2+9];
if (real_color & IS_PALETTE_COLOR) {
_string_colorremap[1] = color;
_string_colorremap[2] = 215;
} else {
_string_colorremap[1] = _string_colormap[color].text;
_string_colorremap[2] = _string_colormap[color].shadow;
}
_color_remap_ptr = _string_colorremap;
}
}
@@ -1437,7 +1435,7 @@ static void GfxMainBlitter(byte *sprite, int x, int y, int mode)
byte *src = bp.sprite_org;
signed char b;
bp.sprite += (dst - src);
bp.sprite = dst + (bp.sprite - bp.sprite_org);
while (totpix != 0) {
assert(totpix > 0);
@@ -1465,8 +1463,8 @@ static void GfxMainBlitter(byte *sprite, int x, int y, int mode)
}
}
void GfxScalePalette(int pal, byte scaling)
#if 0
static void GfxScalePalette(int pal, byte scaling)
{
byte *dst, *src;
size_t count;
@@ -1484,15 +1482,20 @@ void GfxScalePalette(int pal, byte scaling)
src += 3;
} while (--count);
}
#endif
void DoPaletteAnimations();
void GfxInitPalettes()
{
memcpy(_cur_palette, _palettes[0], 256*3);
int pal = _use_dos_palette?1:0;
memcpy(_cur_palette, _palettes[pal], 256*3);
_pal_first_dirty = 0;
_pal_last_dirty = 255;
DoPaletteAnimations();
}
#define EXTR(p,q) (((uint16)(_timer_counter * (p)) * (q)) >> 16)
#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)
@@ -1501,13 +1504,17 @@ void DoPaletteAnimations()
{
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 j;
int i;
const ExtraPaletteValues *ev = &_extra_palette_values;
byte old_val[28*3];
byte old_val[114]; // max(c*(38:28)) = 114
d = _cur_palette + 217*3;
memcpy(old_val, d, 28*3);
memcpy(old_val, d, c*3);
// Dark blue water
s = ev->a;
@@ -1576,9 +1583,32 @@ void DoPaletteAnimations()
if (j == 3*4) j = 0;
}
if (memcmp(old_val, _cur_palette + 217*3, 28*3)) {
// Animate water for old DOS graphics
if(_use_dos_palette) {
// Dark blue water DOS
s = ev->a;
if (_opt.landscape == LT_CANDY) s = ev->ac;
j = EXTR(320,5) * 3;
for(i=0; i!=5; i++) {
COPY_TRIPLET;
j+=3;
if (j == 15) j = 0;
}
// Glittery water DOS
s = ev->b;
if (_opt.landscape == LT_CANDY) s = ev->bc;
j = EXTR(128, 15) * 3;
for(i=0; i!=5; i++) {
COPY_TRIPLET;
j += 9;
if (j >= 45) j -= 45;
}
}
if (memcmp(old_val, _cur_palette + 217*3, c*3)) {
if (_pal_first_dirty > 217) _pal_first_dirty = 217;
if (_pal_last_dirty < 217+29-1) _pal_last_dirty = 217+29-1;
if (_pal_last_dirty < 217+c) _pal_last_dirty = 217+c;
}
}
@@ -1660,7 +1690,7 @@ void DrawMouseCursor()
memcpy_pitch(
_cursor_backup,
_screen.dst_ptr + _cursor.draw_pos.x + _cursor.draw_pos.y * _screen.pitch,
_cursor.draw_size.x, _cursor.draw_size.y, _screen.width, _cursor.draw_size.x);
_cursor.draw_size.x, _cursor.draw_size.y, _screen.pitch, _cursor.draw_size.x);
// Draw cursor on screen
_cur_dpi = &_screen;
@@ -1672,7 +1702,8 @@ void DrawMouseCursor()
_cursor.dirty = false;
}
void DbgScreenRect(int left, int top, int right, int bottom)
#if defined(_DEBUG)
static void DbgScreenRect(int left, int top, int right, int bottom)
{
DrawPixelInfo dp,*old;
@@ -1682,6 +1713,7 @@ void DbgScreenRect(int left, int top, int right, int bottom)
GfxFillRect(left, top, right-1, bottom-1, rand() & 255);
_cur_dpi = old;
}
#endif
extern bool _dbg_screen_rect;
@@ -1696,6 +1728,7 @@ void RedrawScreenRect(int left, int top, int right, int bottom)
UndrawMouseCursor();
}
}
UndrawTextMessage();
#if defined(_DEBUG)
if (_dbg_screen_rect)
@@ -1711,8 +1744,8 @@ void DrawDirtyBlocks()
{
byte *b = _dirty_blocks;
int x=0,y=0;
int w = (_screen.width + 63) & ~63;
int h = _screen.height;
const int w = (_screen.width + 63) & ~63;
const int h = (_screen.height + 7) & ~7;
do {
if (*b != 0) {
@@ -1928,3 +1961,23 @@ bool ChangeResInGame(int w, int h)
_cur_resolution[1] = h;
return true;
}
void ToggleFullScreen(const bool full_screen)
{
_fullscreen = full_screen;
/* use preset resolutions, not _screen.height and _screen.width. On windows for example
if Desktop-size is 1280x1024, and gamesize is also 1280x1024, _screen.height will be
only 1000 because of possible start-bar. For this reason you cannot switch to
fullscreen mode from this resolution. Use of preset resolution will fix this */
if (!_video_driver->change_resolution(_cur_resolution[0], _cur_resolution[1]))
_fullscreen ^= true; // switching resolution failed, put back full_screen to original status
}
uint16 GetDrawStringPlayerColor(byte player)
{
// Get the color for DrawString-subroutines which matches the color
// of the player
if (player == OWNER_SPECTATOR || player == OWNER_SPECTATOR - 1)
return 1;
return (_color_list[_player_colors[player]].window_color_1b) | IS_PALETTE_COLOR;
}
+14 -5
View File
@@ -42,14 +42,15 @@ typedef struct CursorVars {
void RedrawScreenRect(int left, int top, int right, int bottom);
void GfxScroll(int left, int top, int width, int height, int xo, int yo);
int DrawStringCentered(int x, int y, uint16 str, byte color);
int DrawString(int x, int y, uint16 str, byte color);
void DrawStringCenterUnderline(int x, int y, uint16 str, byte color);
int DoDrawString(const byte *string, int x, int y, byte color);
void DrawStringRightAligned(int x, int y, uint16 str, byte color);
int DrawStringCentered(int x, int y, uint16 str, uint16 color);
int DrawString(int x, int y, uint16 str, uint16 color);
void DrawStringCenterUnderline(int x, int y, uint16 str, uint16 color);
int DoDrawString(const byte *string, int x, int y, uint16 color);
void DrawStringRightAligned(int x, int y, uint16 str, uint16 color);
void GfxFillRect(int left, int top, int right, int bottom, int color);
void GfxDrawLine(int left, int top, int right, int bottom, int color);
void DrawFrameRect(int left, int top, int right, int bottom, int color, int flags);
uint16 GetDrawStringPlayerColor(byte player);
int GetStringWidth(const byte *str);
void LoadStringWidthTable();
@@ -78,6 +79,7 @@ void DrawMouseCursor();
void ScreenSizeChanged();
void UndrawMouseCursor();
bool ChangeResInGame(int w, int h);
void ToggleFullScreen(const bool full_screen);
typedef struct {
int xoffs, yoffs;
@@ -98,6 +100,8 @@ VARDEF CursorVars _cursor;
VARDEF int _pal_first_dirty;
VARDEF int _pal_last_dirty;
VARDEF bool _use_dos_palette;
/* spritecache.c */
//enum { NUM_SPRITES = 0x1320 };
//enum { NUM_SPRITES = 0x1500 };
@@ -107,4 +111,9 @@ enum { NUM_SPRITES = 0x3500 }; // 1500 + space for custom GRF sets
extern byte _palettes[4][256 * 3];
VARDEF byte _cur_palette[768];
typedef enum StringColorFlags {
IS_PALETTE_COLOR = 0x100, // color value is already a real palette color index, not an index of a StringColor
} StringColorFlags;
#endif
+43 -42
View File
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "window.h"
#include "gui.h"
#include "gfx.h"
@@ -35,7 +36,7 @@ typedef struct GraphDrawer {
#define INVALID_VALUE 0x80000000
void DrawGraph(GraphDrawer *gw)
static void DrawGraph(GraphDrawer *gw)
{
int i,j,k;
@@ -129,8 +130,8 @@ void DrawGraph(GraphDrawer *gw)
y = gw->top - 3;
i = 9;
do {
SET_DPARAM16(0, gw->format_str_y_axis);
SET_DPARAM64(1, (int64)tmp);
SetDParam(0, gw->format_str_y_axis);
SetDParam64(1, (int64)tmp);
tmp -= (value >> 3);
DrawStringRightAligned(x, y, STR_0170, gw->color_3);
y += gw->height >> 3;
@@ -144,9 +145,9 @@ void DrawGraph(GraphDrawer *gw)
k = gw->year + 1920;
i = gw->num_on_x_axis;assert(i>0);
do {
SET_DPARAM16(2, k);
SET_DPARAM16(0, j + STR_0162_JAN);
SET_DPARAM16(1, j + STR_0162_JAN + 2);
SetDParam(2, k);
SetDParam(0, j + STR_0162_JAN);
SetDParam(1, j + STR_0162_JAN + 2);
DrawString(x, y, j == 0 ? STR_016F : STR_016E, gw->color_3);
j += 3;
@@ -162,7 +163,7 @@ void DrawGraph(GraphDrawer *gw)
j = gw->unk61A;
i = gw->num_on_x_axis;assert(i>0);
do {
SET_DPARAM16(0, j);
SetDParam(0, j);
DrawString(x, y, STR_01CB, gw->color_3);
j += gw->unk61C;
x += 22;
@@ -227,9 +228,9 @@ static void GraphLegendWndProc(Window *w, WindowEvent *e)
DrawPlayerIcon(p->index, 4, 18+p->index*12);
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
SET_DPARAM16(2, GetPlayerNameString(p->index, 3));
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
SetDParam(2, GetPlayerNameString(p->index, 3));
DrawString(21,17+p->index*12,STR_7021,HASBIT(_legend_showbits, p->index) ? 0x10 : 0xC);
}
break;
@@ -574,7 +575,7 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
}
if (i == owner) x = 1; else x = 0;
DrawPlayerIcon(i, i*33+11+x, 16+x);
DrawPlayerIcon(i, i * 37 + 13 + x, 16 + x);
}
// The colors used to show how the progress is going
@@ -597,7 +598,7 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
DrawString(7, y, STR_PERFORMANCE_DETAIL_VEHICLES + i, 0);
// Draw the score
SET_DPARAM32(0, score);
SetDParam(0, score);
DrawStringRightAligned(107, y, SET_PERFORMANCE_DETAIL_INT, 0);
// Calculate the %-bar
@@ -624,7 +625,7 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
x = 0;
// Draw it
SET_DPARAM32(0, x);
SetDParam(0, x);
DrawStringCentered(137, y, STR_PERFORMANCE_DETAIL_PERCENT, 0);
// SCORE_LOAN is inversed
@@ -633,8 +634,8 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
// Draw the amount we have against what is needed
// For some of them it is in currency format
SET_DPARAM32(0, val);
SET_DPARAM32(1, needed);
SetDParam(0, val);
SetDParam(1, needed);
switch (i) {
case SCORE_MIN_PROFIT:
case SCORE_MIN_INCOME:
@@ -711,33 +712,33 @@ static void PerformanceRatingDetailWndProc(Window *w, WindowEvent *e)
static const Widget _performance_rating_detail_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 266, 0, 13, STR_PERFORMANCE_DETAIL, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 14, 0, 266, 14, 27, 0x0, STR_NULL},
{ WWT_CAPTION, 14, 11, 298, 0, 13, STR_PERFORMANCE_DETAIL, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_IMGBTN, 14, 0, 298, 14, 27, 0x0, STR_NULL},
{ WWT_IMGBTN, 14, 0, 266, 28, 47, 0x0,STR_PERFORMANCE_DETAIL_VEHICLES_TIP},
{ WWT_IMGBTN, 14, 0, 266, 48, 67, 0x0,STR_PERFORMANCE_DETAIL_STATIONS_TIP},
{ WWT_IMGBTN, 14, 0, 266, 68, 87, 0x0,STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP},
{ WWT_IMGBTN, 14, 0, 266, 88, 107, 0x0,STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP},
{ WWT_IMGBTN, 14, 0, 266, 108, 127, 0x0,STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP},
{ WWT_IMGBTN, 14, 0, 266, 128, 147, 0x0,STR_PERFORMANCE_DETAIL_DELIVERED_TIP},
{ WWT_IMGBTN, 14, 0, 266, 148, 167, 0x0,STR_PERFORMANCE_DETAIL_CARGO_TIP},
{ WWT_IMGBTN, 14, 0, 266, 168, 187, 0x0,STR_PERFORMANCE_DETAIL_MONEY_TIP},
{ WWT_IMGBTN, 14, 0, 266, 188, 207, 0x0,STR_PERFORMANCE_DETAIL_LOAN_TIP},
{ WWT_IMGBTN, 14, 0, 266, 208, 227, 0x0,STR_PERFORMANCE_DETAIL_TOTAL_TIP},
{ WWT_IMGBTN, 14, 0, 298, 28, 47, 0x0,STR_PERFORMANCE_DETAIL_VEHICLES_TIP},
{ WWT_IMGBTN, 14, 0, 298, 48, 67, 0x0,STR_PERFORMANCE_DETAIL_STATIONS_TIP},
{ WWT_IMGBTN, 14, 0, 298, 68, 87, 0x0,STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP},
{ WWT_IMGBTN, 14, 0, 298, 88, 107, 0x0,STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP},
{ WWT_IMGBTN, 14, 0, 298, 108, 127, 0x0,STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP},
{ WWT_IMGBTN, 14, 0, 298, 128, 147, 0x0,STR_PERFORMANCE_DETAIL_DELIVERED_TIP},
{ WWT_IMGBTN, 14, 0, 298, 148, 167, 0x0,STR_PERFORMANCE_DETAIL_CARGO_TIP},
{ WWT_IMGBTN, 14, 0, 298, 168, 187, 0x0,STR_PERFORMANCE_DETAIL_MONEY_TIP},
{ WWT_IMGBTN, 14, 0, 298, 188, 207, 0x0,STR_PERFORMANCE_DETAIL_LOAN_TIP},
{ WWT_IMGBTN, 14, 0, 298, 208, 227, 0x0,STR_PERFORMANCE_DETAIL_TOTAL_TIP},
{ WWT_IMGBTN, 14, 2, 34, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 35, 67, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 68, 100, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 101, 133, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 134, 166, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 167, 199, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 200, 232, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 233, 265, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 2, 38, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 39, 75, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 76, 112, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 113, 149, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 150, 186, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 187, 223, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 224, 260, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WWT_IMGBTN, 14, 261, 297, 14, 26, 0x0,STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY},
{ WIDGETS_END},
};
static const WindowDesc _performance_rating_detail_desc = {
-1, -1, 267, 228,
-1, -1, 299, 228,
WC_PERFORMANCE_DETAIL,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_performance_rating_detail_widgets,
@@ -923,7 +924,7 @@ static void CargoPaymentRatesWndProc(Window *w, WindowEvent *e)
for(i=0; i!=NUM_CARGO; i++) {
GfxFillRect(x, y, x+8, y+5, 0);
GfxFillRect(x+1, y+1, x+7, y+4, _cargo_legend_colors[i]);
SET_DPARAM16(0, _cargoc.names_s[i]);
SetDParam(0, _cargoc.names_s[i]);
DrawString(x+14, y, STR_7065, 0);
y += 8;
}
@@ -1058,19 +1059,19 @@ static void CompanyLeagueWndProc(Window *w, WindowEvent *e)
i = 0;
do {
SET_DPARAM16(0, i + 1 + STR_01AB);
SetDParam(0, i + 1 + STR_01AB);
p = plist[i];
SET_DPARAM16(1, p->name_1);
SET_DPARAM32(2, p->name_2);
SetDParam(1, p->name_1);
SetDParam(2, p->name_2);
SET_DPARAM16(3, GetPlayerNameString(p->index, 4));
SetDParam(3, GetPlayerNameString(p->index, 4));
/* WARNING ugly hack!
GetPlayerNameString sets up (Player #) if the player is human in an extra DPARAM16
It seems that if player is non-human, nothing is set up, so param is 0. GetString doesn't like
that because there is another param after it.
So we'll just shift the rating one back if player is AI and all is fine
*/
SET_DPARAM16((IS_HUMAN_PLAYER(p->index) ? 5 : 4), GetPerformanceTitleFromValue(p->old_economy[1].performance_history));
SetDParam((IS_HUMAN_PLAYER(p->index) ? 5 : 4), GetPerformanceTitleFromValue(p->old_economy[1].performance_history));
DrawString(2, 15 + i * 10, i == 0 ? STR_7054 : STR_7055, 0);
DrawPlayerIcon(p->index, 27, 16 + i * 10);
-1072
View File
File diff suppressed because it is too large Load Diff
+14 -6
View File
@@ -12,6 +12,8 @@ void PlaceProc_Sign(uint tile);
void ShowGameOptions();
void ShowGameDifficulty();
void ShowPatchesSelection();
void ShowNewgrf();
void ShowCustCurrency();
/* graph_gui.c */
void ShowOperatingProfitGraph();
@@ -33,7 +35,7 @@ void ShowBuildRailToolbar(int index, int button);
void PlaceProc_BuyLand(uint tile);
/* train_gui.c */
void ShowPlayerTrains(int player);
void ShowPlayerTrains(int player, int station);
void ShowTrainViewWindow(Vehicle *v);
void ShowTrainDetailsWindow(Vehicle *v);
void ShowOrdersWindow(Vehicle *v);
@@ -43,17 +45,17 @@ void ShowRoadVehViewWindow(Vehicle *v);
/* road_gui.c */
void ShowBuildRoadToolbar();
void ShowBuildRoadScenToolbar();
void ShowPlayerRoadVehicles(int player);
void ShowPlayerRoadVehicles(int player, int station);
/* dock_gui.c */
void ShowBuildDocksToolbar();
void ShowPlayerShips(int player);
void ShowPlayerShips(int player, int station);
void ShowShipViewWindow(Vehicle *v);
/* aircraft_gui.c */
void ShowBuildAirToolbar();
void ShowPlayerAircraft(int player);
void ShowPlayerAircraft(int player, int station);
/* terraform_gui.c */
void PlaceProc_DemolishArea(uint tile);
@@ -77,7 +79,7 @@ void ShowPlayerCompany(int player);
void ShowEstimatedCostOrIncome(int32 cost, int x, int y);
void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y);
void DrawStationCoverageAreaText(int sx, int sy, uint mask);
void DrawStationCoverageAreaText(int sx, int sy, uint mask,int rad);
void CheckRedrawStationCoverage(Window *w);
void ShowSmallMap();
@@ -92,10 +94,16 @@ void AskForNewGameToStart();
void DrawEditBox(Window *w, int wid);
void HandleEditBox(Window *w, int wid);
void BuildFileList();
void SetFiosType(const byte fiostype);
/* FIOS_TYPE_FILE, FIOS_TYPE_OLDFILE etc. different colours */
static const byte _fios_colors[] = {13, 9, 9, 6, 5, 6, 5};
/* network gui */
void ShowNetworkGameWindow();
void ShowChatWindow(StringID str, StringID caption, int maxlen, int maxwidth, byte window_class, uint16 window_number);
/* bridge_gui.c */
void ShowBuildBridgeWindow(uint start, uint end, byte type);
+8
View File
@@ -71,6 +71,8 @@ extern const HalMusicDriver _extmidi_music_driver;
extern const HalMusicDriver _bemidi_music_driver;
#endif
extern const HalVideoDriver _dedicated_video_driver;
enum DriverType {
VIDEO_DRIVER = 0,
SOUND_DRIVER = 1,
@@ -119,6 +121,12 @@ enum {
FIOS_TYPE_OLD_SCENARIO = 6,
};
// Variables to display file lists
FiosItem *_fios_list;
int _fios_num;
int _saveload_mode;
// get the name of an oldstyle savegame
void GetOldSaveGameName(char *title, const char *file);
// get the name of an oldstyle scenario
+62 -54
View File
@@ -1,5 +1,7 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "viewport.h"
#include "command.h"
#include "industry.h"
@@ -8,6 +10,7 @@
#include "news.h"
#include "saveload.h"
#include "economy.h"
#include "sound.h"
byte _industry_sound_ctr;
TileIndex _industry_sound_tile;
@@ -227,7 +230,7 @@ static void IndustryDrawTileProc3(TileInfo *ti)
AddChildSpriteScreen(0x128B, 5,
_industry_anim_offs_2[_map3_lo[ti->tile]]);
}
AddChildSpriteScreen(0x30B928A, 3, 67);
AddChildSpriteScreen(4746, 3, 67);
}
static void IndustryDrawTileProc4(TileInfo *ti)
@@ -306,7 +309,7 @@ static void DrawTile_Industry(TileInfo *ti)
if (image&0x8000 && (image & 0xFFFF0000) == 0)
image |= ormod;
if (!(_display_opt & DO_TRANS_BUILDINGS))
if (_display_opt & DO_TRANS_BUILDINGS)
image = (image & 0x3FFF) | 0x3224000;
AddSortableSpriteToDraw(image,
@@ -317,7 +320,7 @@ static void DrawTile_Industry(TileInfo *ti)
dits->dz,
z);
if (!(_display_opt & DO_TRANS_BUILDINGS))
if (_display_opt & DO_TRANS_BUILDINGS)
return;
}
@@ -338,28 +341,19 @@ static uint GetSlopeTileh_Industry(TileInfo *ti) {
return 0;
}
static void GetAcceptedCargo_Industry(uint tile, AcceptedCargo *ac)
static void GetAcceptedCargo_Industry(uint tile, AcceptedCargo ac)
{
int m5 = _map5[tile];
int a;
a = _industry_map5_accepts_1[m5];
if (a >= 0) {
ac->type_1 = a;
ac->amount_1 = (a == 0) ? 1 : 8;
}
if (a >= 0) ac[a] = (a == 0) ? 1 : 8;
a = _industry_map5_accepts_2[m5];
if (a >= 0) {
ac->type_2 = a;
ac->amount_2 = 8;
}
if (a >= 0) ac[a] = 8;
a = _industry_map5_accepts_3[m5];
if (a >= 0) {
ac->type_3 = a;
ac->amount_3 = 8;
}
if (a >= 0) ac[a] = 8;
}
static void GetTileDesc_Industry(uint tile, TileDesc *td)
@@ -369,7 +363,7 @@ static void GetTileDesc_Industry(uint tile, TileDesc *td)
td->owner = i->owner;
td->str = STR_4802_COAL_MINE + i->type;
if ((_map_owner[tile] & 0x80) == 0) {
SET_DPARAMX16(td->dparam, 0, td->str);
SetDParamX(td->dparam, 0, td->str);
td->str = STR_2058_UNDER_CONSTRUCTION;
}
}
@@ -386,7 +380,7 @@ static int32 ClearTile_Industry(uint tile, byte flags)
if ((_current_player != OWNER_WATER && _game_mode != GM_EDITOR &&
!_cheats.magic_bulldozer.value) ||
(_current_player == OWNER_WATER && i->type == IT_OIL_RIG) ) {
SET_DPARAM16(0, STR_4802_COAL_MINE + i->type);
SetDParam(0, STR_4802_COAL_MINE + i->type);
return_cmd_error(STR_4800_IN_THE_WAY);
}
@@ -427,7 +421,7 @@ static const byte _industry_min_cargo[] = {
5, 5, 5, 5, 5,
};
void TransportIndustryGoods(uint tile)
static void TransportIndustryGoods(uint tile)
{
Industry *i;
int type;
@@ -480,8 +474,8 @@ static void AnimateTile_Industry(uint tile)
m = _map3_lo[tile] + 1;
switch(m & 7) {
case 2: SndPlayTileFx(45, tile); break;
case 6: SndPlayTileFx(41, tile); break;
case 2: SndPlayTileFx(SND_2D_RIP_2, tile); break;
case 6: SndPlayTileFx(SND_29_RIP, tile); break;
}
if (m >= 96) {
@@ -499,7 +493,7 @@ static void AnimateTile_Industry(uint tile)
m = _map3_lo[tile];
if (_industry_anim_offs[m] == 0xFF) {
SndPlayTileFx(48, tile);
SndPlayTileFx(SND_30_CARTOON_SOUND, tile);
}
if (++m >= 70) {
@@ -545,11 +539,11 @@ static void AnimateTile_Industry(uint tile)
m = _map3_lo[tile] + 1;
if (m == 1) {
SndPlayTileFx(44, tile);
SndPlayTileFx(SND_2C_MACHINERY, tile);
} else if (m == 23) {
SndPlayTileFx(43, tile);
SndPlayTileFx(SND_2B_COMEDY_HIT, tile);
} else if (m == 28) {
SndPlayTileFx(42, tile);
SndPlayTileFx(SND_2A_EXTRACT_AND_POP, tile);
}
if (m >= 50 && (m=0,++_map3_hi[tile] >= 8)) {
@@ -602,7 +596,7 @@ static void AnimateTile_Industry(uint tile)
if (state < 0x20 || state >= 0x180) {
if (! (_map_owner[tile] & 0x40)) {
_map_owner[tile] |= 0x40;
SndPlayTileFx(9, tile);
SndPlayTileFx(SND_0B_MINING_MACHINERY, tile);
}
if (state & 7)
return;
@@ -691,7 +685,7 @@ static void TileLoopIndustryCase161(uint tile)
49, 59, 60, 65,
};
SndPlayTileFx(46, tile);
SndPlayTileFx(SND_2E_EXTRACT_AND_POP, tile);
dir = Random() & 3;
@@ -777,7 +771,7 @@ static void TileLoop_Industry(uint tile)
case 10:
if (CHANCE16(1,3)) {
SndPlayTileFx(10, tile);
SndPlayTileFx(SND_0C_ELECTRIC_SPARK, tile);
AddAnimatedTile(tile);
}
break;
@@ -976,7 +970,9 @@ static void MaybePlantFarmField(Industry *i)
{
uint tile;
if (CHANCE16(1,8)) {
tile = TileAddWrap(i->xy, ((i->width>>1) + Random() % 31 - 16), ((i->height>>1) + Random() % 31 - 16));
int x = (i->width>>1) + Random() % 31 - 16;
int y = (i->height>>1) + Random() % 31 - 16;
tile = TileAddWrap(i->xy, x, y);
if (tile != TILE_WRAPPED)
PlantFarmField(tile);
}
@@ -999,17 +995,20 @@ static void ChopLumberMillTrees(Industry *i)
do {
tile = TILE_MASK(tile);
if (IS_TILETYPE(tile, MP_TREES)) {
uint old_player = _current_player;
/* found a tree */
_current_player = OWNER_NONE;
_industry_sound_ctr = 1;
_industry_sound_tile = tile;
SndPlayTileFx(56, tile);
SndPlayTileFx(SND_38_CHAINSAW, tile);
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
SetMapExtraBits(tile, 0);
i->cargo_waiting[0] = min(0xffff, i->cargo_waiting[0] + 45);
_current_player = old_player;
return;
}
tile += _chop_dir[dir];
@@ -1022,19 +1021,19 @@ static void ChopLumberMillTrees(Industry *i)
static const byte _industry_sounds[37][2] = {
{0},
{0},
{1,38},
{1, SND_28_SAWMILL},
{0},
{0},
{0},
{1,1},
{1,1},
{1, SND_03_FACTORY_WHISTLE},
{1, SND_03_FACTORY_WHISTLE},
{0},
{3,34},
{3, SND_24_SHEEP},
{0},
{0},
{0},
{0},
{1,38},
{1, SND_28_SAWMILL},
{0},
{0},
{0},
@@ -1043,7 +1042,7 @@ static const byte _industry_sounds[37][2] = {
{0},
{0},
{0},
{1,1},
{1, SND_03_FACTORY_WHISTLE},
{0},
{0},
{0},
@@ -1052,7 +1051,7 @@ static const byte _industry_sounds[37][2] = {
{0},
{0},
{0},
{1,51},
{1, SND_33_PLASTIC_MINE},
{0},
{0},
{0},
@@ -1096,10 +1095,10 @@ void OnTick_Industry()
_industry_sound_ctr++;
if (_industry_sound_ctr == 75) {
SndPlayTileFx(55, _industry_sound_tile);
SndPlayTileFx(SND_37_BALLOON_SQUEAK, _industry_sound_tile);
} else if (_industry_sound_ctr == 160) {
_industry_sound_ctr = 0;
SndPlayTileFx(54, _industry_sound_tile);
SndPlayTileFx(SND_36_CARTOON_CRASH, _industry_sound_tile);
}
}
@@ -1395,7 +1394,7 @@ static Industry *AllocateIndustry()
for(i=_industries; i != endof(_industries); i++) {
if (i->xy == 0) {
int index = i - _industries;
if (index > _total_industries) _total_industries++;
if (index > _total_industries) _total_industries = index;
return i;
}
}
@@ -1480,7 +1479,9 @@ static void DoCreateNewIndustry(Industry *i, uint tile, int type, const Industry
if (i->type == IT_FARM || i->type == IT_FARM_2) {
tile = i->xy + TILE_XY((i->width >> 1), (i->height >> 1));
for(j=0; j!=50; j++) {
uint new_tile = TileAddWrap(tile, Random() % 31 - 16, Random() % 31 - 16);
int x = Random() % 31 - 16;
int y = Random() % 31 - 16;
uint new_tile = TileAddWrap(tile, x, y);
if (new_tile != TILE_WRAPPED)
PlantFarmField(new_tile);
}
@@ -1584,6 +1585,8 @@ static void PlaceInitialIndustry(byte type, int amount)
if (_opt.diff.number_industries != 0)
{
byte old_player = _current_player;
_current_player = OWNER_NONE;
assert(num > 0);
do {
@@ -1593,6 +1596,8 @@ static void PlaceInitialIndustry(byte type, int amount)
break;
} while (--i != 0);
} while (--num);
_current_player = old_player;
}
}
@@ -1643,10 +1648,10 @@ static void ExtChangeIndustryProduction(Industry *i)
mag = abs(percent);
if (mag >= 10) {
SET_DPARAM16(3, mag);
SET_DPARAM16(0,_cargoc.names_s[i->produced_cargo[j]]);
SET_DPARAM16(1, i->town->index);
SET_DPARAM16(2, i->type + STR_4802_COAL_MINE);
SetDParam(3, mag);
SetDParam(0,_cargoc.names_s[i->produced_cargo[j]]);
SetDParam(1, i->town->index);
SetDParam(2, i->type + STR_4802_COAL_MINE);
AddNewsItem(percent>=0 ? STR_INDUSTRY_PROD_GOUP : STR_INDUSTRY_PROD_GODOWN,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_TILE, NT_ECONOMY, 0),
i->xy + TILE_XY(1,1), 0);
@@ -1656,8 +1661,8 @@ static void ExtChangeIndustryProduction(Industry *i)
if (closeit) {
i->prod_level = 0;
SET_DPARAM16(1, i->type + STR_4802_COAL_MINE);
SET_DPARAM16(0, i->town->index);
SetDParam(1, i->type + STR_4802_COAL_MINE);
SetDParam(0, i->town->index);
AddNewsItem(_industry_close_strings[i->type], NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_TILE, NT_ECONOMY, 0), i->xy + TILE_XY(1,1), 0);
}
}
@@ -1728,7 +1733,6 @@ static void MaybeNewIndustry(uint32 r)
return;
j = 2000;
_current_player = OWNER_NONE;
for(;;) {
i = CreateNewIndustry(TILE_MASK(Random()), type);
if (i != NULL)
@@ -1737,8 +1741,8 @@ static void MaybeNewIndustry(uint32 r)
return;
}
SET_DPARAM16(0, type + STR_4802_COAL_MINE);
SET_DPARAM16(1, i->town->index);
SetDParam(0, type + STR_4802_COAL_MINE);
SetDParam(1, i->town->index);
AddNewsItem( STR_482D_NEW_UNDER_CONSTRUCTION + (type == IT_FOREST), NEWS_FLAGS(NM_THIN,NF_VIEWPORT|NF_TILE,NT_ECONOMY,0), i->xy, 0);
}
@@ -1790,8 +1794,8 @@ close_industry:
i->prod_level = 0;
str = _industry_close_strings[type];
add_news:
SET_DPARAM16(1, type + STR_4802_COAL_MINE);
SET_DPARAM16(0, i->town->index);
SetDParam(1, type + STR_4802_COAL_MINE);
SetDParam(0, i->town->index);
AddNewsItem(str, NEWS_FLAGS(NM_THIN, NF_VIEWPORT|NF_TILE, NT_ECONOMY, 0), i->xy + TILE_XY(1,1), 0);
}
}
@@ -1800,6 +1804,8 @@ add_news:
void IndustryMonthlyLoop()
{
Industry *i;
byte old_player = _current_player;
_current_player = OWNER_NONE;
for(i=_industries; i != endof(_industries); i++) {
if (i->xy != 0)
@@ -1815,6 +1821,9 @@ void IndustryMonthlyLoop()
} else if (!_patches.smooth_economy) {
MaybeCloseIndustry(i);
}
_current_player = old_player;
// production-change
_industry_sort_dirty = true;
InvalidateWindow(WC_INDUSTRY_DIRECTORY, 0);
@@ -1894,8 +1903,7 @@ static void Load_INDY()
_total_industries = 0;
while ((index = SlIterateArray()) != -1) {
SlObject(DEREF_INDUSTRY(index), _industry_desc);
if (index + 1 > _total_industries)
_total_industries = index + 1;
if (index > _total_industries) _total_industries = index;
}
}
+42 -38
View File
@@ -1,5 +1,7 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
//#include "gui.h"
#include "window.h"
#include "gfx.h"
@@ -25,7 +27,7 @@ static void BuildIndustryWndProc(Window *w, WindowEvent *e)
if (_thd.place_mode == 1 && _thd.window_class == WC_BUILD_INDUSTRY) {
int ind_type = _build_industry_types[_opt.landscape][WP(w,def_d).data_1];
SET_DPARAM32(0, (_price.build_industry >> 5) * _industry_type_costs[ind_type]);
SetDParam(0, (_price.build_industry >> 5) * _industry_type_costs[ind_type]);
DrawStringCentered(85, w->height - 21, STR_482F_COST, 0);
}
break;
@@ -274,18 +276,18 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
// 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);
SET_DPARAM16(0, i->town->index);
SET_DPARAM16(1, i->type + STR_4802_COAL_MINE);
SetDParam(0, i->town->index);
SetDParam(1, i->type + STR_4802_COAL_MINE);
DrawWindowWidgets(w);
if (i->accepts_cargo[0] != 0xFF) {
SET_DPARAM16(0, _cargoc.names_s[i->accepts_cargo[0]]);
SetDParam(0, _cargoc.names_s[i->accepts_cargo[0]]);
str = STR_4827_REQUIRES;
if (i->accepts_cargo[1] != 0xFF) {
SET_DPARAM16(1, _cargoc.names_s[i->accepts_cargo[1]]);
SetDParam(1, _cargoc.names_s[i->accepts_cargo[1]]);
str++;
if (i->accepts_cargo[2] != 0xFF) {
SET_DPARAM16(2, _cargoc.names_s[i->accepts_cargo[2]]);
SetDParam(2, _cargoc.names_s[i->accepts_cargo[2]]);
str++;
}
}
@@ -295,15 +297,15 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
if (i->produced_cargo[0] != 0xFF) {
DrawString(2, 117, STR_482A_PRODUCTION_LAST_MONTH, 0);
SET_DPARAM16(1, i->total_production[0]);
SET_DPARAM16(0, _cargoc.names_long_s[i->produced_cargo[0]] + ((i->total_production[0]!=1)<<5));
SET_DPARAM16(2, i->pct_transported[0] * 100 >> 8);
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);
if (i->produced_cargo[1] != 0xFF) {
SET_DPARAM16(1, i->total_production[1]);
SET_DPARAM16(0, _cargoc.names_long_s[i->produced_cargo[1]] + ((i->total_production[1]!=1)<<5));
SET_DPARAM16(2, i->pct_transported[1] * 100 >> 8);
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);
}
}
@@ -313,11 +315,11 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
case WE_CLICK:
switch(e->click.widget) {
case 5:
case 6:
i = DEREF_INDUSTRY(w->window_number);
ScrollMainWindowToTile(i->xy + TILE_XY(1,1));
break;
case 6:
case 7:
// Destroy Industry button costing money removed per request of dominik
//i = DEREF_INDUSTRY(w->window_number);
/* passing only i->xy is not safe if industry has a weird shape like:
@@ -335,7 +337,8 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
static const Widget _industry_view_widgets[] = {
{ WWT_TEXTBTN, 9, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 9, 11, 259, 0, 13, STR_4801, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ 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},
@@ -349,7 +352,7 @@ static const Widget _industry_view_widgets[] = {
static const WindowDesc _industry_view_desc = {
-1, -1, 260, 160,
WC_INDUSTRY_VIEW,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_STICKY_BUTTON,
_industry_view_widgets,
IndustryViewWndProc
};
@@ -369,11 +372,12 @@ void ShowIndustryViewWindow(int industry)
static const Widget _industry_directory_widgets[] = {
{ WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 13, 11, 507, 0, 13, STR_INDUSTRYDIR_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_PUSHTXTBTN, 13, 0, 100, 14, 25, STR_SORT_BY_NAME, STR_SORT_TIP},
{ WWT_PUSHTXTBTN, 13, 101, 200, 14, 25, STR_SORT_BY_TYPE, STR_SORT_TIP},
{ WWT_PUSHTXTBTN, 13, 201, 300, 14, 25, STR_SORT_BY_PRODUCTION, STR_SORT_TIP},
{ WWT_PUSHTXTBTN, 13, 301, 400, 14, 25, STR_SORT_BY_TRANSPORTED, STR_SORT_TIP},
{ 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},
@@ -434,12 +438,12 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
// default to string sorting if they are otherwise equal
if (r == 0) {
SET_DPARAM32(0, i->town->townnameparts);
SetDParam(0, i->town->townnameparts);
GetString(buf1, i->town->townnametype);
if ( (val=*(const byte*)b) != _last_industry_idx) {
_last_industry_idx = val;
SET_DPARAM32(0, j->town->townnameparts);
SetDParam(0, j->town->townnameparts);
GetString(_bufcache, j->town->townnametype);
}
r = strcmp(buf1, _bufcache);
@@ -491,20 +495,20 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
while (p < _num_industry_sort) {
i = DEREF_INDUSTRY(_industry_sort[p]);
SET_DPARAM16(0, i->town->index);
SET_DPARAM16(1, i->type + STR_4802_COAL_MINE);
SetDParam(0, i->town->index);
SetDParam(1, i->type + STR_4802_COAL_MINE);
if (i->produced_cargo[0] != 0xFF) {
SET_DPARAM16(3, i->total_production[0]);
SET_DPARAM16(2, _cargoc.names_long_s[i->produced_cargo[0]] + ((i->total_production[0]!=1)<<5));
SetDParam(3, i->total_production[0]);
SetDParam(2, _cargoc.names_long_s[i->produced_cargo[0]] + ((i->total_production[0]!=1)<<5));
if (i->produced_cargo[1] != 0xFF) {
SET_DPARAM16(5, i->total_production[1]);
SET_DPARAM16(4, _cargoc.names_long_s[i->produced_cargo[1]] + ((i->total_production[1]!=1)<<5));
SET_DPARAM16(6, i->pct_transported[0] * 100 >> 8);
SET_DPARAM16(7, i->pct_transported[1] * 100 >> 8);
SetDParam(5, i->total_production[1]);
SetDParam(4, _cargoc.names_long_s[i->produced_cargo[1]] + ((i->total_production[1]!=1)<<5));
SetDParam(6, i->pct_transported[0] * 100 >> 8);
SetDParam(7, i->pct_transported[1] * 100 >> 8);
DrawString(4, 28+n*10, STR_INDUSTRYDIR_ITEM_TWO, 0);
} else {
SET_DPARAM16(4, i->pct_transported[0] * 100 >> 8);
SetDParam(4, i->pct_transported[0] * 100 >> 8);
DrawString(4, 28+n*10, STR_INDUSTRYDIR_ITEM, 0);
}
} else {
@@ -518,31 +522,31 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
case WE_CLICK:
switch(e->click.widget) {
case 2: {
case 3: {
_industry_sort_order = _industry_sort_order==0 ? 1 : 0;
_industry_sort_dirty = true;
SetWindowDirty(w);
} break;
case 3: {
case 4: {
_industry_sort_order = _industry_sort_order==2 ? 3 : 2;
_industry_sort_dirty = true;
SetWindowDirty(w);
} break;
case 4: {
case 5: {
_industry_sort_order = _industry_sort_order==4 ? 5 : 4;
_industry_sort_dirty = true;
SetWindowDirty(w);
} break;
case 5: {
case 6: {
_industry_sort_order = _industry_sort_order==6 ? 7 : 6;
_industry_sort_dirty = true;
SetWindowDirty(w);
} break;
case 7: {
case 8: {
int y = (e->click.pt.y - 28) / 10;
byte p;
Industry *c;
@@ -569,7 +573,7 @@ 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_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
_industry_directory_widgets,
IndustryDirectoryWndProc
};
+36 -28
View File
@@ -1,6 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "window.h"
#include "gui.h"
#include "viewport.h"
@@ -8,9 +8,9 @@
#include "player.h"
#include "command.h"
#include "console.h"
#include "network.h"
extern void MakeNewGame();
extern void StartScenario();
extern void SwitchMode(int new_mode);
/*
static void ShowSelectTutorialWindow()
@@ -22,16 +22,16 @@ 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_FROM},
{ 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_TWO_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_LEAVE_OPENTTD},
{ 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},
@@ -39,12 +39,14 @@ static const Widget _select_game_widgets[] = {
{ WIDGETS_END},
};
extern void HandleOnEditText(WindowEvent *e);
extern void HandleOnEditTextCancel();
static void SelectGameWndProc(Window *w, WindowEvent *e) {
switch(e->event) {
case WE_PAINT:
w->click_state = (w->click_state & ~(0xC0) & ~(0xF << 12)) | (1 << (_new_opt.landscape+12)) | (!_networking?(1<<6):(1<<7));
w->disabled_state = _networking ? 0x30 : 0;
SET_DPARAM16(0, STR_6801_EASY + _new_opt.diff_level);
w->click_state = (w->click_state & ~(0xC0) & ~(0xF << 12)) | (1 << (_new_opt.landscape+12)) | (1<<6);
SetDParam(0, STR_6801_EASY + _new_opt.diff_level);
DrawWindowWidgets(w);
break;
@@ -54,17 +56,15 @@ static void SelectGameWndProc(Window *w, WindowEvent *e) {
case 3: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
case 4: ShowPatchesSelection(); break;
case 5: DoCommandP(0, InteractiveRandom(), 0, NULL, CMD_CREATE_SCENARIO); break;
case 6:
if (_networking)
DoCommandP(0, 0, 0, NULL, CMD_SET_SINGLE_PLAYER);
break;
case 7:
#ifdef ENABLE_NETWORK
if (!_network_available) {
ShowErrorMessage(-1,STR_NETWORK_ERR_NOTAVAILABLE, 0, 0);
} else {
ShowErrorMessage(-1, STR_NETWORK_ERR_NOTAVAILABLE, 0, 0);
} else
ShowNetworkGameWindow();
ShowErrorMessage(-1, TEMP_STRING_NO_NETWORK, 0, 0);
}
#else
ShowErrorMessage(-1 ,STR_NETWORK_ERR_NOTAVAILABLE, 0, 0);
#endif /* ENABLE_NETWORK */
break;
case 8: ShowGameOptions(); break;
case 9: ShowGameDifficulty(); break;
@@ -79,7 +79,11 @@ static void SelectGameWndProc(Window *w, WindowEvent *e) {
case WKC_BACKQUOTE: IConsoleSwitch(); break;
}
break;
case WE_ON_EDIT_TEXT: HandleOnEditText(e); break;
case WE_ON_EDIT_TEXT_CANCEL: HandleOnEditTextCancel(); break;
}
}
static const WindowDesc _select_game_desc = {
@@ -128,9 +132,7 @@ int32 CmdGenRandomNewGame(int x, int y, uint32 flags, uint32 p1, uint32 p2)
_random_seeds[0][0] = p1;
_random_seeds[0][1] = p2;
if (_networking) { NetworkStartSync(true); }
MakeNewGame();
SwitchMode(SM_NEWGAME);
return 0;
}
@@ -169,9 +171,7 @@ int32 CmdStartScenario(int x, int y, uint32 flags, uint32 p1, uint32 p2)
_random_seeds[0][0] = p1;
_random_seeds[0][1] = p2;
if (_networking) { NetworkStartSync(true); }
StartScenario();
SwitchMode(SM_START_SCENARIO);
return 0;
}
@@ -190,15 +190,17 @@ static void AskAbandonGameWndProc(Window *w, WindowEvent *e) {
case WE_PAINT:
DrawWindowWidgets(w);
#if defined(_WIN32)
SET_DPARAM16(0, STR_0133_WINDOWS);
SetDParam(0, STR_0133_WINDOWS);
#elif defined(__APPLE__)
SET_DPARAM16(0, STR_0135_OSX);
SetDParam(0, STR_0135_OSX);
#elif defined(__BEOS__)
SET_DPARAM16(0, STR_OSNAME_BEOS);
SetDParam(0, STR_OSNAME_BEOS);
#elif defined(__MORPHOS__)
SET_DPARAM16(0, STR_OSNAME_MORPHOS);
SetDParam(0, STR_OSNAME_MORPHOS);
#elif defined(__AMIGA__)
SetDParam(0, STR_OSNAME_AMIGAOS);
#else
SET_DPARAM16(0, STR_0134_UNIX);
SetDParam(0, STR_0134_UNIX);
#endif
DrawStringMultiCenter(0x5A, 0x26, STR_00CA_ARE_YOU_SURE_YOU_WANT_TO, 178);
return;
@@ -263,6 +265,12 @@ static void AskQuitGameWndProc(Window *w, WindowEvent *e) {
break;
}
break;
case WE_KEYPRESS: /* Return to main menu on pressing 'Enter' */
if (e->keypress.keycode == WKC_RETURN)
_switch_mode = SM_MENU;
break;
}
}
+68
View File
@@ -0,0 +1,68 @@
README
------------------------------------------------------------------------
All bugs listed below are marked as known. Please do not submit any bugs
that are the same as these. If you do, don't act surprised, because
we WILL flame you!!
There is an experimental AI included in the game which you can enable
from the "Configure Patches" window. All bugs related to this AI should
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
in the latest SVN version.
Bugs for 0.3.5
------------------------------------------------------------------------
URL: http://sourceforge.net/tracker/?atid=636365&group_id=103924&func=browse
-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.
-968036 Ship blocked at the edge
Minor Bugs for 0.3.5
------------------------------------------------------------------------
URL: http://sourceforge.net/tracker/?atid=669662&group_id=103924&func=browse
-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
-941694 Clipping problems stations/vehicles on slopes
-936997 Stationname too long to fit in trainwindow bug
+10 -16
View File
@@ -1,19 +1,12 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
#include <stdarg.h>
#include "gfx.h"
#include "viewport.h"
#include "command.h"
#include "vehicle.h"
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];
extern const TileTypeProcs
_tile_type_clear_procs,
_tile_type_rail_procs,
@@ -311,7 +304,7 @@ 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);
}
void GetAcceptedCargo(uint tile, AcceptedCargo *ac)
void GetAcceptedCargo(uint tile, AcceptedCargo ac)
{
memset(ac, 0, sizeof(AcceptedCargo));
_tile_type_procs[GET_TILETYPE(tile)]->get_accepted_cargo_proc(tile, ac);
@@ -487,19 +480,20 @@ void RunTileLoop()
void InitializeLandscape()
{
uint map_size = MapSize();
int i;
memset(_map_owner, OWNER_NONE, sizeof(_map_owner));
memset(_map2, 0, sizeof(_map2));
memset(_map3_lo, 0, sizeof(_map3_lo));
memset(_map3_hi, 0, sizeof(_map3_hi));
memset(_map_extra_bits, 0, sizeof(_map_extra_bits));
memset(_map_type_and_height, MP_WATER << 4, sizeof(_map_type_and_height));
memset(_map_owner, OWNER_NONE, map_size);
memset(_map2, 0, map_size);
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);
for(i=0; i!=TILES_Y-1; i++)
memset(_map_type_and_height + i*TILES_X, 0, TILES_X-1);
memset(_map5, 3, sizeof(_map5));
memset(_map5, 3, map_size);
}
void ConvertGroundTilesIntoWaterTiles()
+255 -86
View File
@@ -310,6 +310,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 :Imperial (miles)
STR_013A_METRIC_KILOMETERS :Metric (kilometers)
@@ -352,7 +353,8 @@ STR_015E_QUIT_GAME :Quit game
STR_015F_QUIT :Quit
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Are you sure you want to quit this game ?
STR_0161_QUIT_GAME :{WHITE}Quit Game
STR_SORT_TIP :{BLACK}Select sorting order
STR_SORT_ORDER_TIP :{BLACK}Select sorting order descending/ascending
STR_SORT_CRITERIA_TIP :{BLACK}Select sorting criteria
SRT_SORT_BY :{BLACK}Sort by
STR_SORT_BY_POPULATION :{BLACK}Population
@@ -390,7 +392,7 @@ STR_016E :{TINYFONT}{STRING}{} {STRING}
STR_016F :{TINYFONT}{STRING}{} {STRING}{}{NUMU16}
STR_0170 :{TINYFONT}{STRING}-
STR_0171_PAUSE_GAME :{BLACK}Pause game
STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}Save game, abandon game, quit
STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}Save game, quit game, quit
STR_0173_DISPLAY_LIST_OF_COMPANY :{BLACK}Display list of company's stations
STR_0174_DISPLAY_MAP :{BLACK}Display map
STR_0175_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Display map, town directory
@@ -417,6 +419,7 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
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_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
@@ -495,6 +498,8 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Select Tutorial/Demonstration
STR_01CE_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Cargo accepted: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Cargo accepted: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -537,7 +542,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Select 'new style music' program
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Select 'Custom 1' (user-defined) program
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select 'Custom 2' (user-defined) program
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Clear current program (Custom1 or Custom2 only)
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Save music settings to disk
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Save music settings
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Click on music track to add to current program (Custom1 or Custom2 only)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle program shuffle on/off
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Show music track selection window
@@ -722,7 +727,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Vehicle design names
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Default
STR_02BF_CUSTOM :Custom
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Save custom names to disk
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Save custom names
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Vehicle design names selection
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Save customized vehicle design names to disk
@@ -733,16 +738,20 @@ STR_02C5_DIFFICULTY_SETTINGS :Difficulty settings
STR_02C6_DIFFICULTY_SETTINGS :Difficulty settings
STR_02C7_CONFIG_PATCHES :Configure patches
STR_02C8_CONFIG_PATCHES :Configure patches
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
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Station names displayed
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Signs displayed
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Signs displayed
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Checkpoints displayed
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Checkpoints displayed
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Waypoints displayed
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Waypoints displayed
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Full animation
STR_02D0_FULL_ANIMATION :{SETX 12}Full animation
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Full detail
@@ -765,13 +774,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Display subsidies
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_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
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Paste from viewport
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Paste the location of this viewport to the global view
STR_02DF_TOWN_DIRECTORY :Town directory
STR_02E0_CURRENCY_UNITS :{BLACK}Currency units
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Currency units selection
@@ -795,16 +804,16 @@ STR_02F8_EVERY_3_MONTHS :Every 3 months
STR_02F9_EVERY_6_MONTHS :Every 6 months
STR_02FA_EVERY_12_MONTHS :Every 12 months
STR_02FB_START_A_NEW_GAME :{BLACK}Start a new game
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Load a saved game from disk
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Load a saved game
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}View demonstrations/tutorials
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Create a customized game world/scenario
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Select single-player game
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Select two-player game
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Select multiplayer game of 2-8 players
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Display game options
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Display difficulty options
STR_0303_START_A_NEW_GAME_USING :{BLACK}Start a new game, using a customized scenario
STR_0304_QUIT :{BLACK}Quit
STR_0305_LEAVE_OPENTTD :{BLACK}Leave 'OpenTTD', and quit
STR_0305_QUIT_OPENTTD :{BLACK}Quit 'OpenTTD'
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}View demonstration/tutorial
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...can only be built in towns
@@ -852,41 +861,46 @@ STR_TOWNNAME_SWEDISH :Swedish
STR_TOWNNAME_DUTCH :Dutch
STR_TOWNNAME_FINNISH :Finnish
STR_TOWNNAME_POLISH :Polish
STR_TOWNNAME_CZECH :Czech
STR_TOWNNAME_SLOVAKISH :Slovakish
STR_TOWNNAME_HUNGARIAN :Hungarian
STR_TOWNNAME_AUSTRIAN :Austrian
STR_TOWNNAME_ROMANIAN :Romanian
STR_TOWNNAME_CZECH :Czech
############ end of townname region
STR_CURR_POUNDS :Pounds ({POUNDSIGN})
STR_CURR_DOLLARS :Dollars ($)
STR_CURR_FF :Franc (FF)
STR_CURR_DM :Deutschmark (DM)
STR_CURR_GBP :Pounds ({POUNDSIGN})
STR_CURR_USD :Dollars ($)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_PT :Peseta (Pt)
STR_CURR_FT :Hungarian Forint (Ft)
STR_CURR_ZL :Polish Zloty (zl)
STR_CURR_ATS :Austrian Shilling (ATS)
STR_CURR_BEF :Belgian Franc (BEF)
STR_CURR_DKK :Danish Krone (DKK)
STR_CURR_FIM :Finnish Markka (FIM)
STR_CURR_GRD :Greek Drachma (GRD)
STR_CURR_CHF :Swiss Franc (CHF)
STR_CURR_NLG :Dutch Guilder (NLG)
STR_CURR_ITL :Italian Lira (ITL)
STR_CURR_SEK :Swedish Krona (SEK)
STR_CURR_RUR :Russian Rubel (rur)
STR_CURR_CZK :Czech Koruna (CZK)
STR_CURR_DEM :Deutschmark (DEM)
STR_CURR_DKK :Danish Krone (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Finnish Markka (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Greek Drachma (GRD)
STR_CURR_HUF :Hungarian Forint (HUF)
STR_CURR_ISK :Icelandic Krona (ISK)
STR_CURR_ITL :Italian Lira (ITL)
STR_CURR_NLG :Dutch Guilder (NLG)
STR_CURR_NOK :Norwegian Krone (NOK)
STR_CURR_PLN :Polish Zloty (PLN)
STR_CURR_ROL :Romanian Leu (Lei)
STR_CURR_EUR :Euro (€)
STR_CURR_RUR :Russian Rubel (rur)
STR_CURR_SEK :Swedish Krona (SEK)
STR_CURR_CUSTOM :Custom...
STR_OPTIONS_LANG :{BLACK}Language
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Select the interface language to use
STR_OPTIONS_FULLSCREEN :{BLACK}Fullscreen
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Check this box to play OpenTTD fullscreen mode
STR_OPTIONS_RES :{BLACK}Screen resolution
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Select the screen resolution to use
@@ -966,11 +980,13 @@ STR_CONFIG_PATCHES_OFF :Off
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_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}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Leave station when any cargo is full, if 'full load': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Use improved loading algorithm: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflation: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Deliver cargo to a station only when there is a demand: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Allow building very long bridges: {ORANGE}{STRING}
@@ -1037,6 +1053,8 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position of main toolbar: {ORANGE}{S
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Left
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Centre
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Right
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Window snap radius: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Window snap radius: {ORANGE}disabled
STR_CONFIG_PATCHES_GUI :{BLACK}Interface
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Construction
@@ -1069,24 +1087,28 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetplanes will not crash (frequently) on sma
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Switch climate: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Change date: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Heading for {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Heading for {CHECKPOINT}, {VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Heading for {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Heading for {WAYPOINT}, {VELOCITY}
STR_GO_TO_CHECKPOINT :Go via {CHECKPOINT}
STR_GO_TO_WAYPOINT :Go via {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Go non-stop via {WAYPOINT}
STR_CHECKPOINTNAME_CITY :Checkpoint {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Checkpoint {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Checkpoint
STR_WAYPOINTNAME_CITY :Waypoint {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Waypoint {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Waypoint
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Edit checkpoint name
STR_WAYPOINT :{WHITE}Waypoint
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Select waypoint type
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Can't change checkpoint name...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Convert rail to checkpoint
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Can't build train checkpoint here...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Can't remove train checkpoint here...
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Edit waypoint name
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Can't change waypoint name...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Convert rail to waypoint
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Can't build train waypoint here...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Can't remove train waypoint here...
STR_BUILD_AUTORAIL_TIP :{BLACK}Build railroad track using the Autorail mode
@@ -1099,6 +1121,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Many random industries
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Cover the map with randomly placed industries
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Can't generate industries...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Open the landscaping toolbar to raise/lower land, plant trees, etc.
STR_LANDSCAPING_TOOLBAR :{WHITE}Landscaping
STR_LEVEL_LAND_TOOLTIP :{BLACK}Level land
@@ -1171,37 +1194,44 @@ TEMP_AI_ACTIVATED :{WHITE}Warning: this new AI is still alpha! Currently, o
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Network interface is not fully working yet!{}Some options work, but others like lobby, etc. don't. Just so you know.
STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
STR_NETWORK_FIND_SERVER :{BLACK}Find server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Search network for a server
STR_NETWORK_DIRECT_CONNECT :{BLACK}Direct connect
STR_NETWORK_ENTER_IP :{BLACK}Enter the IP address of the server
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Connect to a known IP
STR_NETWORK_START_SERVER :{BLACK}Start server
STR_NETWORK_START_SERVER_TIP :{BLACK}Start an own server
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 nework game
STR_NETWORK_SELECT_CONNECTION :{BLACK}Select connection type:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Chose between an internet game or a local area nework game
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_START_SERVER :{BLACK}Start server
STR_NETWORK_START_SERVER_TIP :{BLACK}Start an own server
STR_NETWORK_GAME_NAME :{BLACK}Name
STR_NETWORK_GAME_NAME_TIP :{BLACK}Name of the game
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Players currently in this game / Maximum number of players
STR_NETWORK_MAP_SIZE :{BLACK}Size
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Size of the map
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Language, server version, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Click a game from the list to select it
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_FIND_SERVER :{BLACK}Find server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Search network for a server
STR_NETWORK_ADD_SERVER :{BLACK}Add server
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Adds a server to the list which will always be checked for running games.
STR_NETWORK_ENTER_IP :{BLACK}Enter the IP address of the 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}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_START_DATE :{SILVER}Start date: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Current date: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Password protected!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SERVER FULL
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERSION MISMATCH
STR_NETWORK_JOIN_GAME :{BLACK}Join game
@@ -1210,20 +1240,30 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Start new game
STR_NETWORK_NEW_GAME_NAME :{BLACK}Game name:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}The game name will be displayed to other players in the multiplayer game selection menu
STR_NETWORK_PASSWORD :{BLACK}Password:
STR_NETWORK_SET_PASSWORD :{BLACK}Set password
STR_NETWORK_PASSWORD_TIP :{BLACK}Protect your game with a password if you don't want other people to join it
STR_NETWORK_SELECT_MAP :{BLACK}Select a map:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Which map do you want to play?
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Number of players:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Chose a maximum number of players. Not all slots need to be filled.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 players
STR_NETWORK_3_PLAYERS :3 players
STR_NETWORK_4_PLAYERS :4 players
STR_NETWORK_5_PLAYERS :5 players
STR_NETWORK_6_PLAYERS :6 players
STR_NETWORK_7_PLAYERS :7 players
STR_NETWORK_8_PLAYERS :8 players
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maximum allowed clients:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Choose a maximum number of clients. Not all slots need to be filled.
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 (advertise)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 clients
STR_NETWORK_3_CLIENTS :3 clients
STR_NETWORK_4_CLIENTS :4 clients
STR_NETWORK_5_CLIENTS :5 clients
STR_NETWORK_6_CLIENTS :6 clients
STR_NETWORK_7_CLIENTS :7 clients
STR_NETWORK_8_CLIENTS :8 clients
STR_NETWORK_9_CLIENTS :9 clients
STR_NETWORK_10_CLIENTS :10 clients
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Language spoken:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Other players will know which language is spoken on the server.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Start Game
STR_NETWORK_START_GAME_TIP :{BLACK}Start a new network game from a random map, or scenario
STR_NETWORK_LOAD_GAME :{BLACK}Load Game
@@ -1231,17 +1271,62 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Resume an earlier saved multiplayer game (
STR_NETWORK_LOAD_SCENARIO :{BLACK}Load Scenario
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Start a new network game from a scenario
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Any
STR_NETWORK_LANG_ENGLISH :English
STR_NETWORK_LANG_GERMAN :German
STR_NETWORK_LANG_FRENCH :French
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Multiplayer game lobby
STR_NETWORK_SEND :{BLACK}Send
STR_NETWORK_SEND_TIP :{BLACK}Send a message to the other players
STR_NETWORK_COMPANY_NAME :{BLACK}Company name:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Change the name of your company. Hit enter to apply changes
STR_NETWORK_SPECTATE_GAME :{BLACK}Spectate game
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Watch the game as a spectator
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Preparing to join: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}A list of all companies currently in this game. You can either join one or start a
STR_NETWORK_NEW_COMPANY :{BLACK}New company
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Open a new company
STR_NETWORK_READY :{BLACK}Ready
STR_NETWORK_SPECTATE_GAME :{BLACK}Watch game
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Watch the game as a spectator
STR_NETWORK_JOIN_COMPANY :{BLACK}Join company
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Help managing this company
STR_NETWORK_REFRESH :{BLACK}Refresh server
STR_NETWORK_REFRESH_TIP :{BLACK}Refresh the server info
STR_NETWORK_COMPANY_INFO :{SILVER}COMPANY INFO
STR_NETWORK_COMPANY_NAME :{SILVER}Company name: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Inauguration: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Company value: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Current balance: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Last year's income: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Performance: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Vehicles: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stations: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Players: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Connecting...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Connecting..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Authorizing..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Waiting..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Downloading map..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Processing data..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registering..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Fetching game info..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fetching company info..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} client(s) in front of us
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kbytes downloaded so far
STR_NETWORK_DISCONNECT :{BLACK}Disconnect
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Enter your text message to send
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server is protected. Enter password
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Company is protected. Enter password
STR_NETWORK_CLIENT_LIST :{WHITE}Client List
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} No network devices found or compiled without ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Could not find any network games
@@ -1249,7 +1334,56 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE} The server didn't answer the request
STR_NETWORK_ERR_DESYNC :{WHITE} Network-Game synchronization failed.
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Network-Game connection lost.
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Could not load server-savegame.
STR_NETWORK_ERR_SERVER_START :{WHITE} Could not start the server.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Could not connect.
STR_NETWORK_ERR_TIMEOUT :{WHITE} Connection #{NUMU16} timed out.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} We made a protocol-error and our connection is closed.
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_KICKED :{WHITE} You are kicked out of the server
STR_NETWORK_ERR_CHEATER :{WHITE} Cheating is not allowed on this server
STR_NETWORK_ERR_LEFT :has left the game
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :general error
STR_NETWORK_ERR_CLIENT_DESYNC :desync error
STR_NETWORK_ERR_CLIENT_SAVEGAME :could not load map
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :connection lost
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :protocol error
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :not authorized
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :received strange packet
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :wrong revision
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :name already in use
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :wrong game-password
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :wrong player-id in DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :kicked by server
STR_NETWORK_ERR_CLIENT_CHEATER :was trying to use a cheat
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :has joined the game
STR_NETWORK_GIVE_MONEY :gave you some money ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :you gave {STRING} some money ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Team] {STRING}:
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_SERVER_SHUTDOWN :{WHITE} The server closed the session
STR_NETWORK_SERVER_REBOOT :{WHITE} The server is restarting...{}Please wait...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Client
STR_NETWORK_CLIENTLIST_NONE :(none)
STR_NETWORK_CLIENTLIST_KICK :Kick
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Give money
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Speak to all
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Speak to company
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Private message
STR_NETWORK_SEND :{BLACK}Send
############ end network gui strings
@@ -1363,7 +1497,7 @@ STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passengers last month: {ORANGE}{CO
STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Mail last month: {ORANGE}{COMMA16}{BLACK} max: {ORANGE}{COMMA16}
STR_200F_TALL_OFFICE_BLOCK :Tall office block
STR_2010_OFFICE_BLOCK :Office block
STR_2011_SMALL_BLOCK_OF_FLATS :Small block of flats
STR_2011_SMALL_BLOCK_OF_FLATS :Small block of apartments
STR_2012_CHURCH :Church
STR_2013_LARGE_OFFICE_BLOCK :Large office block
STR_2014_TOWN_HOUSES :Town houses
@@ -1402,7 +1536,7 @@ STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Service subsidy awarded to
STR_2035_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} local authority refuses to allow another airport to be built in this town
STR_2036_COTTAGES :Cottages
STR_2037_HOUSES :Houses
STR_2038_FLATS :Flats
STR_2038_FLATS :Apartments
STR_2039_TALL_OFFICE_BLOCK :Tall office block
STR_203A_SHOPS_AND_OFFICES :Shops and offices
STR_203B_SHOPS_AND_OFFICES :Shops and offices
@@ -1460,7 +1594,7 @@ STR_280C_CAN_T_CHANGE_SIGN_NAME :{WHITE}Can't change sign name...
STR_280D_SELECT_TREE_TYPE_TO_PLANT :{BLACK}Select tree type to plant
STR_280E_TREES :Trees
STR_280F_RAINFOREST :Rainforest
STR_2810_CACTUS_PLANTS :Cactus Plants
STR_2810_CACTUS_PLANTS :Cactuses
##id 0x3000
STR_3000_RAIL_STATION_SELECTION :{WHITE}Rail Station Selection
@@ -1820,7 +1954,7 @@ STR_683B_HOSTILE :Hostile
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7002_PLAYER :(Player {COMMA16})
STR_7004_NEW_FACE :{BLACK}New Face
STR_7005_COLOR_SCHEME :{BLACK}Color Scheme
@@ -1832,7 +1966,7 @@ STR_700A_COMPANY_NAME :Company Name
STR_700B_PRESIDENT_S_NAME :President's Name
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Can't change company name...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Can't change president's name...
STR_700E_FINANCES :{WHITE}{STRING} Finances{BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} Finances {BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Expenditure/Income
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Construction
@@ -1937,6 +2071,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Rebuild company headquarters elsewh
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Can't build company headquarters...
STR_7072_VIEW_HQ :{BLACK}View HQ
STR_RELOCATE_HQ :{BLACK}Relocate HQ
STR_COMPANY_PASSWORD :{BLACK}Password
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Password-protect your company to prevent unauthorised users from joining.
STR_SET_COMPANY_PASSWORD :Set company password
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}World Recession!{}{}Financial experts fear worst as economy slumps!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Recession Over!{}{}Upturn in trade gives confidence to industries as economy strengthens!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Toggle large/small window size
@@ -2475,7 +2612,7 @@ STR_GO_TO_SHIP_DEPOT :Go to {TOWN} Ship Depot
SERVICE_AT_SHIP_DEPOT :Service at {TOWN} Ship Depot
##id 0xA000
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Airport Construct.
STR_A000_AIRPORTS :{WHITE}Airports
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Can't build airport here...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Aircraft Hangar
STR_A003_NEW_AIRCRAFT :{BLACK}New Aircraft
@@ -2563,8 +2700,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}Game is paused.{}Command cannot be executed
STR_PERFORMANCE_DETAIL :{WHITE}Detail performance rating
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detail
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2590,3 +2727,35 @@ STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Amount of cash on hand
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Do you have a high loan?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Total points out of possible points
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Newgrf settings
STR_NEWGRF_APPLY_CHANGES :{BLACK}Apply changes
STR_NEWGRF_SET_PARAMETERS :{BLACK}Set parameters
STR_NEWGRF_TIP :{BLACK}A list of all the Newgrf sets that you have installed. Click a set to change the settings.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}There are currently no newgrf files installed! Please refer to the manual for instructions to install new graphics.
STR_NEWGRF_FILENAME :{BLACK}Filename:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Custom currency
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Exchange rate: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separator:
STR_CURRENCY_PREFIX :{LTBLUE}Prefix:
STR_CURRENCY_SUFFIX :{LTBLUE}Suffix:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Switch to Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Switch to Euro: {ORANGE}never
STR_CURRENCY_PREVIEW :{LTBLUE}Preview: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Change custom currency parameter
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Trains
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Road Vehicles
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Aircraft
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Ships
STR_SCHEDULED_TRAINS_TIP :{BLACK}Show all trains which have this station on their schedule
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
+2760
View File
File diff suppressed because it is too large Load Diff
+351 -182
View File
@@ -98,7 +98,7 @@ STR_005C_TON_OF_FRUIT :{COMMA16} tuna ovoce
STR_005D_BAG_OF_DIAMONDS :{COMMA16} pytel diamantu
STR_005E_TON_OF_FOOD :{COMMA16} tuna jídla
STR_005F_TON_OF_PAPER :{COMMA16} tuna papíru
STR_0060_BAG_OF_GOLD :{COMMA16} balík posty
STR_0060_BAG_OF_GOLD :{COMMA16} balík zlata
STR_0061_OF_WATER :{VOLUME} vody
STR_0062_TON_OF_WHEAT :{COMMA16} tuna kukurice
STR_0063_OF_RUBBER :{VOLUME} kaucuku
@@ -256,7 +256,7 @@ STR_00FF_FARM :{BLACK}{TINYFONT}Farma
STR_0100_FACTORY :{BLACK}{TINYFONT}Tovarna
STR_0101_PRINTING_WORKS :{BLACK}{TINYFONT}Tiskarna
STR_0102_OIL_WELLS :{BLACK}{TINYFONT}Ropný vrt
STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Dul na medenou rudu
STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Dul na zeleznou rudu
STR_0104_STEEL_MILL :{BLACK}{TINYFONT}Ocelarna
STR_0105_BANK :{BLACK}{TINYFONT}Banka
STR_0106_PAPER_MILL :{BLACK}{TINYFONT}Papirna
@@ -277,17 +277,17 @@ STR_0114_TOY_SHOP :{BLACK}{TINYFONT}Hrackarstvi
STR_0115_TOY_FACTORY :{BLACK}{TINYFONT}Tovarna na hracky
STR_0116_PLASTIC_FOUNTAINS :{BLACK}{TINYFONT}Plastove fontany
STR_0117_FIZZY_DRINK_FACTORY :{BLACK}{TINYFONT}Stacirna limonad
STR_0118_BUBBLE_GENERATOR :{BLACK}{TINYFONT}Generator bublin
STR_0118_BUBBLE_GENERATOR :{BLACK}{TINYFONT}Generátor bublin
STR_0119_TOFFEE_QUARRY :{BLACK}{TINYFONT}Karamelolom
STR_011A_SUGAR_MINE :{BLACK}{TINYFONT}Cukerny dul
STR_011A_SUGAR_MINE :{BLACK}{TINYFONT}Cukerný dul
STR_011B_RAILROAD_STATION :{BLACK}{TINYFONT}Nadrazi
STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Nakladaci plosina
STR_011D_BUS_STATION :{BLACK}{TINYFONT}Autobusova zastavka
STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Nakládací rampa
STR_011D_BUS_STATION :{BLACK}{TINYFONT}Autobusová zastávka
STR_011E_AIRPORT_HELIPORT :{BLACK}{TINYFONT}Letiste/Heliport
STR_011F_DOCK :{BLACK}{TINYFONT}Pristavy
STR_0120_ROUGH_LAND :{BLACK}{TINYFONT}Hrbolata zem
STR_0121_GRASS_LAND :{BLACK}{TINYFONT}Travnata zem
STR_0122_BARE_LAND :{BLACK}{TINYFONT}Prazdna zem
STR_0120_ROUGH_LAND :{BLACK}{TINYFONT}Hrbolatá zem
STR_0121_GRASS_LAND :{BLACK}{TINYFONT}Travnatá zem
STR_0122_BARE_LAND :{BLACK}{TINYFONT}Holá zem
STR_0123_FIELDS :{BLACK}{TINYFONT}Pole
STR_0124_TREES :{BLACK}{TINYFONT}Stromy
STR_0125_ROCKS :{BLACK}{TINYFONT}Kameny
@@ -302,14 +302,15 @@ STR_012D :{WHITE}{STRING}
STR_012E_CANCEL :{BLACK}Zrusit
STR_012F_OK :{BLACK}OK
STR_0130_RENAME :{BLACK}Prejmenovat
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Definovano prilis mnoho jmen
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Definováno prilis mnoho jmen
STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Zvolené jméno se jiz pouziva
STR_0133_WINDOWS :Windows
STR_0134_UNIX :Unix
STR_0134_UNIX :Unixu
STR_0135_OSX :OSX
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_0139_IMPERIAL_MILES :Imperiální (míle)
STR_013A_METRIC_KILOMETERS :Metrické (kilometry)
@@ -352,20 +353,21 @@ STR_015E_QUIT_GAME :Ukoncit hru
STR_015F_QUIT :Ukoncit program
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Opravdu chces ukoncit tuto hru?
STR_0161_QUIT_GAME :{WHITE}Konec hry
STR_SORT_TIP :{BLACK}Vyberte zpusob razeni ulozeni
STR_SORT_ORDER_TIP :{BLACK}Vyber zpusob razeni (sestupne/vzestupne)
STR_SORT_CRITERIA_TIP :{BLACK}Vyber, podle ceho se má tridit
SRT_SORT_BY :{BLACK}Radit podle
STR_SORT_BY_POPULATION :{BLACK}Populace
STR_SORT_BY_PRODUCTION :{BLACK}Prudukce
STR_SORT_BY_TYPE :{BLACK}Typ
STR_SORT_BY_TRANSPORTED :{BLACK}Prepraveno
STR_SORT_BY_NAME :{BLACK}Jméno
STR_SORT_BY_NAME :{BLACK}Podle jména
STR_SORT_BY_DROPDOWN_NAME :jména
STR_SORT_BY_DATE :{BLACK}Datum
STR_SORT_BY_DATE :{BLACK}Podle data
STR_SORT_BY_UNSORTED :(neradit)
STR_SORT_BY_NUMBER :cisla
STR_SORT_BY_PROFIT_LAST_YEAR :hrubého zisku letos
STR_SORT_BY_PROFIT_THIS_YEAR :hrubého zisku vloni
STR_SORT_BY_PROFIT_LAST_YEAR :hrubého zisku vloni
STR_SORT_BY_PROFIT_THIS_YEAR :hrubého zisku letos
STR_SORT_BY_AGE :stari
STR_SORT_BY_RELIABILITY :spolehlivosti
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :celkové kapacity podle druhu nákladu
@@ -396,15 +398,15 @@ STR_0174_DISPLAY_MAP :{BLACK}Zobrazit mapu
STR_0175_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Zobrazit mapu a seznam mest
STR_0176_DISPLAY_TOWN_DIRECTORY :{BLACK}Zobrazit seznam mest
STR_0177_DISPLAY_COMPANY_FINANCES :{BLACK}Zobrazit financni informace o spolecnosti
STR_0178_DISPLAY_COMPANY_GENERAL :{BLACK}Zobrazit obecne informace o spolecnosti
STR_0178_DISPLAY_COMPANY_GENERAL :{BLACK}Zobrazit obecné informace o spolecnosti
STR_0179_DISPLAY_GRAPHS :{BLACK}Zobrazit grafy
STR_017A_DISPLAY_COMPANY_LEAGUE :{BLACK}Zobrazit tabulku spolecnosti
STR_017B_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam vlaku spolecnosti
STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam silnicni vozidlou spolecnosti
STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam lodi spolecnosti
STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam silnicnich vozidel spolecnosti
STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam lodí spolecnosti
STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}Zobrazit seznam letadel spolecnosti
STR_017F_ZOOM_THE_VIEW_IN :{BLACK}Priblizit pohled
STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Oddalit pohled
STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Oddálit pohled
STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Stavet koleje
STR_0182_BUILD_ROADS :{BLACK}Stavet silnice
STR_0183_BUILD_SHIP_DOCKS :{BLACK}Stavet doky
@@ -417,10 +419,11 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
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_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
STR_0190_SCROLL_BAR_SCROLLS_LIST :{BLACK}Posuvnik - posouva vypisem nahoru a dolu
STR_0190_SCROLL_BAR_SCROLLS_LIST :{BLACK}Posuvník - posouvá výpisem nahoru nebo dolu ci doleva nebo doprava
STR_0191_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Zobrazit na mape relief krajiny
STR_0192_SHOW_VEHICLES_ON_MAP :{BLACK}Zobrazit na mape dopravní prostredky
STR_0193_SHOW_INDUSTRIES_ON_MAP :{BLACK}Zobrazit na mape prumysl
@@ -495,6 +498,8 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Zvolit Tutorial/Ukazka
STR_01CE_CARGO_ACCEPTED :{BLACK}Prijimane zbozi: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Prijimane zbozi: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Prijimane zbozi: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Prijimane zbozi: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Prijimane zbozi: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -537,7 +542,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Zvolit program 'nov
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Zvolit program 'Volba 1' (uzivatelsky nastaveny)
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Zvolit program 'Volba 2' (uzivatelsky nastaveny)
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Vymaz aktualni program ( Jen Volba 1 a Volba 2 )
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Ulozit nastaveni hudby na disk
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Ulozit nastavení hudby
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Stiskni název skladby pro pridani do momentalniho programu ( Volba 1 nebo Volba 2 )
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Zapnout/vypnout nahodne opakovani skladeb
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Ukaz skladbu ve vyberovem okne
@@ -722,7 +727,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}N
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Základní
STR_02BF_CUSTOM :Uzivatelske
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Ulozit uzivatelske názvy na disk
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Ulozit vlastní jména
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Vyber nazvu dopravnich prostredku
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Ulozit uzivatelske názvy dopravních prostredku na disk
@@ -733,16 +738,20 @@ STR_02C5_DIFFICULTY_SETTINGS :Nastaveni obtiznosti
STR_02C6_DIFFICULTY_SETTINGS :Nastaveni obtiznosti
STR_02C7_CONFIG_PATCHES :Nastavení patchu
STR_02C8_CONFIG_PATCHES :Nastavení patchu
STR_NEWGRF_SETTINGS :Nastavení newgrf
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
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Zobrazení jmen stanic
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazení napisu
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Zobrazení napisu
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazení kontrolních bodu
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Zobrazení kontrolních bodu
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Zobrazení kontrolních bodu
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Zobrazení kontrolních bodu
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Plné animace
STR_02D0_FULL_ANIMATION :{SETX 12}Plné animace
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Plné detaily
@@ -765,13 +774,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Zobrazit nabidky dotaci
STR_02DD_SUBSIDIES :Dotace
STR_02DE_MAP_OF_WORLD :Mapa sveta
STR_EXTRA_VIEW_PORT :Dalsi pohled
STR_02DF_TOWN_DIRECTORY :Seznam mest
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
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Prejit na pohled
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Nastavit pohled do zorného pole
STR_02DF_TOWN_DIRECTORY :Seznam mest
STR_02E0_CURRENCY_UNITS :{BLACK}Jednotky meny
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Vyber jednotek meny
@@ -795,16 +804,16 @@ STR_02F8_EVERY_3_MONTHS :Kazde 3 mesice
STR_02F9_EVERY_6_MONTHS :Kazdych 6 mesicu
STR_02FA_EVERY_12_MONTHS :Kazdych 12 mesicu
STR_02FB_START_A_NEW_GAME :{BLACK}Zalozit novou hru
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Otevrit ulozenou hru z disku
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Nahrát hru
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Prohlédnout ukázky / tutorialy
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Vytvorit uzivatelsky svet (scenario)
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Vybrat hru pro jednoho hrace
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Vybrat hru pro více hracu
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Vyberte hru pro 2-8 hracu
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Zobrazit moznosti hry
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Zobrazit nastavení obtiznosti
STR_0303_START_A_NEW_GAME_USING :{BLACK}Zalozit novou hru, pouzit uzivatelske scenario
STR_0304_QUIT :{BLACK}Ukoncit
STR_0305_LEAVE_OPENTTD :{BLACK}Opustit 'OpenTTD' a skoncit
STR_0305_QUIT_OPENTTD :{BLACK}Ukoncit 'OpenTTD'
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Prohlédnout ukázku (tutorial)
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...muze být budováno jen ve mestech
@@ -812,7 +821,7 @@ STR_030E_SELECT_TEMPERATE_LANDSCAPE :{BLACK}Krajina m
STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE :{BLACK}Subarktická krajina
STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE :{BLACK}Subtropická krajina
STR_0311_SELECT_TOYLAND_LANDSCAPE :{BLACK}Zeme hracek
STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Investovat do nového prumyslu
STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Prumysl
############ range for menu starts
STR_INDUSTRY_DIR :Seznam prumyslu
@@ -852,41 +861,46 @@ STR_TOWNNAME_SWEDISH :Svedska
STR_TOWNNAME_DUTCH :Holandská
STR_TOWNNAME_FINNISH :Finská
STR_TOWNNAME_POLISH :Polská
STR_TOWNNAME_CZECH :Ceska
STR_TOWNNAME_SLOVAKISH :Slovenská
STR_TOWNNAME_HUNGARIAN :Madarska
STR_TOWNNAME_AUSTRIAN :Rakouská
STR_TOWNNAME_ROMANIAN :Rumunská
STR_TOWNNAME_CZECH :Ceska
############ end of townname region
STR_CURR_POUNDS :Anglické libry ({POUNDSIGN})
STR_CURR_DOLLARS :Americké dolary ($)
STR_CURR_FF :Francouzské franky (FF)
STR_CURR_DM :Nemecke marky (DM)
STR_CURR_GBP :Libry ({POUNDSIGN})
STR_CURR_USD :Dolary ($)
STR_CURR_EUR :Eura (¤)
STR_CURR_YEN :Japonské jeny ({YENSIGN})
STR_CURR_PT :Spanelske pesety (Pt)
STR_CURR_FT :Madarske forinty (Ft)
STR_CURR_ZL :Polské zlote (zl)
STR_CURR_ATS :Rakouské silinky (ATS)
STR_CURR_BEF :Belgické franky (BEF)
STR_CURR_DKK :Dánské koruny (DKK)
STR_CURR_FIM :Finské marky (FIM)
STR_CURR_GRD :Recke drachmy (GRD)
STR_CURR_CHF :Svycarske franky (CHF)
STR_CURR_NLG :Holandské guldeny (NLG)
STR_CURR_ITL :Italské liry (ITL)
STR_CURR_SEK :Svedske koruny (SEK)
STR_CURR_RUR :Ruské rubly (RUR)
STR_CURR_CZK :Ceske koruny (CZK)
STR_CURR_DEM :Nemecke marky (DEM)
STR_CURR_DKK :Dánské koruny (DKK)
STR_CURR_ESP :Pesety (ESP)
STR_CURR_FIM :Finské marky (FIM)
STR_CURR_FRF :Franky (FRF)
STR_CURR_GRD :Recke drachmy (GRD)
STR_CURR_HUF :Madarske forinty (HUF)
STR_CURR_ISK :Islandské koruny (ISK)
STR_CURR_ITL :Italské liry (ITL)
STR_CURR_NLG :Holandské guldeny (NLG)
STR_CURR_NOK :Norské koruny (NOK)
STR_CURR_ROL :Rumunský Lei
STR_CURR_EUR :Eura (€)
STR_CURR_PLN :Polské zloté (PLN)
STR_CURR_ROL :Rumunský Lei (ROL)
STR_CURR_RUR :Ruské rubly (RUR)
STR_CURR_SEK :Svedske koruny (SEK)
STR_CURR_CUSTOM :Vlastní...
STR_OPTIONS_LANG :{BLACK}Jazyk
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Zvolit jazyk uzivatelskeho rozhraní
STR_OPTIONS_FULLSCREEN :{BLACK}Na celou obrazovku
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Kdyz chcete hrát OpenTTD na celé obrazovce, zaskrtnete tuto volbu
STR_OPTIONS_RES :{BLACK}Rozliseni obrazovky
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Zvolit rozliseni obrazovky
@@ -911,8 +925,8 @@ STR_MONTH_OCT :Rijen
STR_MONTH_NOV :Listopad
STR_MONTH_DEC :Prosinec
STR_HEADING_FOR_STATION :{LTBLUE}Jedu do {STATION}
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Jedu do {STATION}, {VELOCITY}
STR_HEADING_FOR_STATION :{LTBLUE}Mirim do {STATION}
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Mirim do {STATION}, {VELOCITY}
STR_NO_ORDERS :{LTBLUE}Bez prikazu
STR_NO_ORDERS_VEL :{LTBLUE}Bez prikazu, {VELOCITY}
@@ -966,11 +980,13 @@ STR_CONFIG_PATCHES_OFF :Vypnuto
STR_CONFIG_PATCHES_ON :Zapnuto
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Ukazovat rychlost vozidla ve stavové liste: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Povolit výstavbu na svazích kopcu a na pobrezich: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Povolit u oblasti pokrytí realistictejsi velikost: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Povolit bourání více mestskych silnic, mostu, tunelu, atp.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Povolit stavbu dlouhých vlaku: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Zapnout realistické zrychlování vlaku: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Spojovat stanice postavené vedle sebe: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Odjet, kdyz je plne nalozen jakýkoli náklad pri 'nalozit': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Pouzij vylepseny algoritmus nakládání: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflace: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Vozit zbozi do stanice jen pokud je poptávka: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Povolit stavbu velmi dlouhých mostu: {ORANGE}{STRING}
@@ -1037,6 +1053,8 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Umisteni hlavn
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Vlevo
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Uprostred
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Vpravo
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Okno se prichyti k druhému, kdyz je bliz, nez: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Okno se prichyti k druhému, kdyz je bliz, nez: {ORANGE}vypnuto
STR_CONFIG_PATCHES_GUI :{BLACK}Ovládaní
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Konstrukce
@@ -1069,24 +1087,28 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Letadla nebudou na mal
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Zmenit podnebí: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Zmenit datum: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Mirim do {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Mirim do {CHECKPOINT}, {VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Mirim do {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Mirim do {WAYPOINT}, {VELOCITY}
STR_GO_TO_CHECKPOINT :Jet pres {CHECKPOINT}
STR_GO_TO_WAYPOINT :Jet pres {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Jet bez zastávky pres {WAYPOINT}
STR_CHECKPOINTNAME_CITY :Kontrolni bod {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Kontrolni bod {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Kontrolni bod
STR_WAYPOINTNAME_CITY :Kontrolní bod {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Kontrolní bod {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Kontrolní bod
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Zmenit jméno kontrolniho bodu
STR_WAYPOINT :{WHITE}Kontrolní bod
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Vyber typ kontrolního bodu
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Nemohu zmenit jméno kontrolniho bodu...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Zmenit koleje v kontrolni bod
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Nemohu zde vybudovat zeleznicni kontrolni bod...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Nemohu zde zrusit zeleznicni kontrolni bod...
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Zmenit jméno kontrolního bodu
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Nemohu zmenit jméno kontrolního bodu...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Zmenit koleje v kontrolní bod
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Nemohu zde vybudovat zeleznicni kontrolní bod...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Nemohu zde zrusit zeleznicni kontrolní bod...
STR_BUILD_AUTORAIL_TIP :{BLACK}Budovat koleje pouzitim rezimu Autokoleje
@@ -1099,6 +1121,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Hodne n
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Pokryje krajinu náhodným prumyslem
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nemuzu generovat prumysl...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Otevrit nástrojovou listu na snizeni / zvyseni terénu, výsadbu stromu, atd.
STR_LANDSCAPING_TOOLBAR :{WHITE}Úpravy krajiny
STR_LEVEL_LAND_TOOLTIP :{BLACK}Srovnat terén
@@ -1171,37 +1194,44 @@ TEMP_AI_ACTIVATED :{WHITE}Pozor: tato nov
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Sitove rozhraní jeste není plne funkcni!{}Nektera nastavení fungují, ale napr. vstupní místnost atd. ne. Jen abyste vedeli.
STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
STR_NETWORK_FIND_SERVER :{BLACK}Najít server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Hledat server v síti
STR_NETWORK_DIRECT_CONNECT :{BLACK}Pripojit se primo
STR_NETWORK_ENTER_IP :{BLACK}Vloz IP adresu serveru
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Pripojit se na urcitou IP adresu
STR_NETWORK_START_SERVER :{BLACK}Spustit server
STR_NETWORK_START_SERVER_TIP :{BLACK}Spusti tvuj vlastni server
STR_NETWORK_PLAYER_NAME :{BLACK}Jméno hrace:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Podle tohoto jména te ostatní hraci poznají
STR_NETWORK_CONNECTION :{BLACK}Pripojeni:
STR_NETWORK_CONNECTION_TIP :{BLACK}Vyber si mezi hrou internetovou nebo v místní síti
STR_NETWORK_SELECT_CONNECTION :{BLACK}Vyber typ pripojeni:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Vyber si hru na internetu nebo v místní síti
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_START_SERVER :{BLACK}Spustit server
STR_NETWORK_START_SERVER_TIP :{BLACK}Spusti tvuj vlastni server
STR_NETWORK_GAME_NAME :{BLACK}Název
STR_NETWORK_GAME_NAME_TIP :{BLACK}Název hry
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Kolik je ted ve hre hracu / Maximum hracu ve hre
STR_NETWORK_MAP_SIZE :{BLACK}Velikost
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Velikost mapy
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Jazyk, verze serveru, atd.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Hru vyberes kliknutim do seznamu
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_FIND_SERVER :{BLACK}Najít server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Hledat server v síti
STR_NETWORK_ADD_SERVER :{BLACK}Pridat server
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Prida server do seznamu, ve kterém se budou hledat bezici hry.
STR_NETWORK_ENTER_IP :{BLACK}Vloz IP adresu serveru
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Hracu
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Hracu online / maximalne
STR_NETWORK_GAME_INFO :{SILVER}INFO O HRE
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klientu: {WHITE}{COMMA8} / {COMMA8}
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_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!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER JE OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SERVER JE PLNÝ
STR_NETWORK_VERSION_MISMATCH :{SILVER}NESOUHLASÍ VERZE
STR_NETWORK_JOIN_GAME :{BLACK}Pridat se
@@ -1210,20 +1240,30 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Zacit novou hru
STR_NETWORK_NEW_GAME_NAME :{BLACK}Jméno hry:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Jméno hry se zobrazi ostatnim hracum v menu, kde si vybiraji sitovou hru
STR_NETWORK_PASSWORD :{BLACK}Heslo:
STR_NETWORK_SET_PASSWORD :{BLACK}Nastavit heslo
STR_NETWORK_PASSWORD_TIP :{BLACK}Svoji hru si muzes ochranit heslem, kdyz nechces, aby se ti do ni hlasili jini lide
STR_NETWORK_SELECT_MAP :{BLACK}Vyber mapu:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Ve ktere mape si chces zahrat?
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Pocet hracu:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Zvol maximalni pocet hracu. Nemusis vybirat maximalni pocet.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 hraci
STR_NETWORK_3_PLAYERS :3 hraci
STR_NETWORK_4_PLAYERS :4 hraci
STR_NETWORK_5_PLAYERS :5 hracu
STR_NETWORK_6_PLAYERS :6 hracu
STR_NETWORK_7_PLAYERS :7 hracu
STR_NETWORK_8_PLAYERS :8 hracu
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Ve které mape si chces zahrát?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maximální pocet hracu:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Zvol maximální pocet hracu. Muze se jich pripojit i mene.
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 (oznámit)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 hraci
STR_NETWORK_3_CLIENTS :3 hraci
STR_NETWORK_4_CLIENTS :4 hraci
STR_NETWORK_5_CLIENTS :5 hracu
STR_NETWORK_6_CLIENTS :6 hracu
STR_NETWORK_7_CLIENTS :7 hracu
STR_NETWORK_8_CLIENTS :8 hracu
STR_NETWORK_9_CLIENTS :9 hracu
STR_NETWORK_10_CLIENTS :10 hracu
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Jazyk ve hre:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Aby ostatní hraci vedeli, jakým jazykem se bude ve hre mluvit.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Zacit hru
STR_NETWORK_START_GAME_TIP :{BLACK}Hru po síti zacit s náhodnou mapou nebo se scenariem
STR_NETWORK_LOAD_GAME :{BLACK}Nahrát hru
@@ -1231,25 +1271,119 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Pokracovat ve drive ulozene hre pro v
STR_NETWORK_LOAD_SCENARIO :{BLACK}Hrát mapu
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Zacit sitovou hru ze scenaria
STR_NETWORK_GAME_LOBBY :{WHITE}Vstupni mistnost do multiplayerove hry
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Jakýkoli
STR_NETWORK_LANG_ENGLISH :Anglictina
STR_NETWORK_LANG_GERMAN :Nemcina
STR_NETWORK_LANG_FRENCH :Francouzstina
############ End of leave-in-this-order
STR_NETWORK_SEND :{BLACK}Poslat
STR_NETWORK_SEND_TIP :{BLACK}Polat zpravu ostatnim hracum
STR_NETWORK_COMPANY_NAME :{BLACK}Jméno spolecnosti:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Muzes zmenit jméno tve spolecnosti. Enterem potvrdis zmeny
STR_NETWORK_SPECTATE_GAME :{BLACK}Navstivit hru
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Koukat na hru jako divak
STR_NETWORK_GAME_LOBBY :{WHITE}Vstupní místnost do multiplayerové hry
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Pripravuji se na vstoupení: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Soucasny seznam vsech spolecnosti v této hre. Bud muzes do jedné vstoupit, nebo muzes zalozit novou.
STR_NETWORK_NEW_COMPANY :{BLACK}Nová spolecnost
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Zalozit novou spolecnost
STR_NETWORK_READY :{BLACK}Pripraven
STR_NETWORK_SPECTATE_GAME :{BLACK}Navstivit hru
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Pripojit se do hry jako divák
STR_NETWORK_JOIN_COMPANY :{BLACK}Vstoupit do spolecnosti
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Pomoz vést tuto spolecnost
STR_NETWORK_REFRESH :{BLACK}Obnovit info
STR_NETWORK_REFRESH_TIP :{BLACK}Znovu nacte informace o serveru
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Zadna sitova zarizeni nebyla nalezena (nebo nejsou zkompilována s/bez ENABLE_NETWORK)
STR_NETWORK_COMPANY_INFO :{SILVER}INFO O SPOLECNOSTI
STR_NETWORK_COMPANY_NAME :{SILVER}Jméno spolecnosti: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Zalozeno: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Hodnota spolecnosti: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Stav na uctu: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Lonsky hrubý zisk: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Výkon: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Vozidla: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stanice: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Hraci: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Pripojovani...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Pripojovani..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Overovani..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Cekani..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Stahování mapy..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Zpracovávání dat..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registování..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Prijimani informací o hre..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Prijimani informací o spolecnosti..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} klient(u) pred námi
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kB stazeno
STR_NETWORK_DISCONNECT :{BLACK}Odpojit se
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Napis zprávu, kterou chces poslat
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Napis castku, kterou chces poskytnout
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server je chraneny. Napis heslo
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Spolecnost je chranena. Napis heslo
STR_NETWORK_CLIENT_LIST :{WHITE}Seznam hracu
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Zadna sitova zarizeni nebyla nalezena (nebo je hra zkompilována bez ENABLE_NETWORK)
STR_NETWORK_ERR_NOSERVER :{WHITE} Nenalezena zadna sitova hra
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_FULL :{WHITE} Server je plný
STR_NETWORK_ERR_KICKED :{WHITE} Byl jsi vyhozen ze hry
STR_NETWORK_ERR_CHEATER :{WHITE} Pouzivani cheatu není na tomto serveru povoleno
STR_NETWORK_ERR_LEFT :opustil hru
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :vseobecna (generální) chyba
STR_NETWORK_ERR_CLIENT_DESYNC :chyba v synchronizaci
STR_NETWORK_ERR_CLIENT_SAVEGAME :nemohu nahrát hru
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :spojení ztraceno
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :chyba v protokolu
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :nevydáno povolení
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :prisel neplatný paket
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :spatna revize hry
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :jméno se uz pouziva
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :spatne heslo
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :spatne id hrace v DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :vyhozen serverem
STR_NETWORK_ERR_CLIENT_CHEATER :se pokousel podvadet
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :vstoupil do hry
STR_NETWORK_GIVE_MONEY :ti dal nejake penize ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :dal jsi {STRING} trochu penez ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Tým] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Tým] pro {STRING}:
STR_NETWORK_CHAT_CLIENT :[Osobní] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Osobní] pro {STRING}:
STR_NETWORK_CHAT_ALL :[Vsichni] {STRING}:
STR_NETWORK_NAME_CHANGE :si zmenil jméno na
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Server ukoncil relaci
STR_NETWORK_SERVER_REBOOT :{WHITE} Server se restartuje...{}Vyckejte prosím...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Klient
STR_NETWORK_CLIENTLIST_NONE :(nikdo)
STR_NETWORK_CLIENTLIST_KICK :Vyhodit
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Darovat peníze
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Napsat vsem
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Napsat spolecnosti
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Soukromá zpráva
STR_NETWORK_SEND :{BLACK}Poslat
############ end network gui strings
@@ -1259,34 +1393,34 @@ STR_0800_COST :{TINYFONT}{RED}Cena: {CURRENCY}
STR_0801_COST :{RED}Cena: {CURRENCY}
STR_0802_INCOME :{TINYFONT}{GREEN}Prijem: {CURRENCY}
STR_0803_INCOME :{GREEN}Prijem: {CURRENCY}
STR_0804_ESTIMATED_COST :{TINYFONT}{WHITE}Odhadovana cena: {CURRENCY}
STR_0805_ESTIMATED_COST :{WHITE}Odhadovana cena: {CURRENCY}
STR_0806_ESTIMATED_INCOME :{TINYFONT}{WHITE}Odhadovany prijem: {CURRENCY}
STR_0807_ESTIMATED_INCOME :{WHITE}Odhadovany prijem: {CURRENCY}
STR_0808_CAN_T_RAISE_LAND_HERE :{WHITE}Nemohu zde zvednout zemi...
STR_0809_CAN_T_LOWER_LAND_HERE :{WHITE}Nemohu zde snizit zemi...
STR_080A_ROCKS :Kameni
STR_080B_ROUGH_LAND :Hrbolata zeme
STR_080C_BARE_LAND :Prazdna zeme
STR_080D_GRASS :Travnata zeme
STR_0804_ESTIMATED_COST :{TINYFONT}{WHITE}Odhadovaná cena: {CURRENCY}
STR_0805_ESTIMATED_COST :{WHITE}Odhadovaná cena: {CURRENCY}
STR_0806_ESTIMATED_INCOME :{TINYFONT}{WHITE}Odhadovaný prijem: {CURRENCY}
STR_0807_ESTIMATED_INCOME :{WHITE}Odhadovaný prijem: {CURRENCY}
STR_0808_CAN_T_RAISE_LAND_HERE :{WHITE}Zde nemohu zvednout zemi...
STR_0809_CAN_T_LOWER_LAND_HERE :{WHITE}Zde nemohu snizit zemi...
STR_080A_ROCKS :Kamení
STR_080B_ROUGH_LAND :Hrbolatá zeme
STR_080C_BARE_LAND :Prázdná zeme
STR_080D_GRASS :Travnatá zeme
STR_080E_FIELDS :Pole
STR_080F_SNOW_COVERED_LAND :Zasnezena zeme
STR_0810_DESERT :Poust
##id 0x1000
STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Zeme sklonena nespravnym smerem
STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Nemozna kombinace koleji
STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}Uprava terenu by poskodila tunel
STR_1003_ALREADY_AT_SEA_LEVEL :{WHITE}Jiz na urovni more
STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Zeme sklonena nesprávným smerem
STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Nemozna kombinace kolejí
STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}Úprava terénu by poskodila tunel
STR_1003_ALREADY_AT_SEA_LEVEL :{WHITE}Jiz na úrovni more
STR_1004_TOO_HIGH :{WHITE}Prilis vysoko
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Zadne pouzitelne koleje
STR_1006_TRAIN_INSIDE_DEPOT :{WHITE}Vlak v depu
STR_1007_ALREADY_BUILT :{WHITE}...jiz vystaveno
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Musis nejprve odstranit koleje
STR_1009_TOO_MANY_DEPOTS :{WHITE}Prilis mnoho dep
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Vystavba koleji
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Vystavba monorailu
STR_100C_MAGLEV_CONSTRUCTION :{WHITE}Vystavba maglevu
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Výstavba kolejí
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Výstavba monorailu
STR_100C_MAGLEV_CONSTRUCTION :{WHITE}Výstavba maglevu
STR_100D_SELECT_RAIL_BRIDGE :{WHITE}Zvolit zeleznicni most
STR_100E_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Zde nemohu postavit depo...
STR_100F_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Zde nemohu postavit nadrazi...
@@ -1295,9 +1429,9 @@ STR_1011_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Zde nemohu postavit koleje...
STR_1012_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Nemohu odsud odstranit koleje...
STR_1013_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Nemohu odsud odstranit semafory...
STR_1014_TRAIN_DEPOT_ORIENTATION :{WHITE}Orientace vlakoveho depa
STR_1015_RAILROAD_CONSTRUCTION :Vystavba koleji
STR_1016_MONORAIL_CONSTRUCTION :Vystavba monorailu
STR_1017_MAGLEV_CONSTRUCTION :Vystavba maglevu
STR_1015_RAILROAD_CONSTRUCTION :Výstavba kolejí
STR_1016_MONORAIL_CONSTRUCTION :Výstavba monorailu
STR_1017_MAGLEV_CONSTRUCTION :Výstavba maglevu
STR_1018_BUILD_RAILROAD_TRACK :{BLACK}Polozit koleje
STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Postavit zeleznicni depo ( pro nakup a servis vlaku )
STR_101A_BUILD_RAILROAD_STATION :{BLACK}Postavit nadrazi
@@ -1321,7 +1455,7 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Zeleznicni trat s kombinovanymi signaly
##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Nespravny sklon zeme pro silnici
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Musis nejprve odstranit silnici
STR_1802_ROAD_CONSTRUCTION :{WHITE}Vystavba silnic
STR_1802_ROAD_CONSTRUCTION :{WHITE}Výstavba silnic
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Zvolit silnicni most
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Zde nemohu postavit silnici...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Nemohu odsud odstranit silnici
@@ -1329,7 +1463,7 @@ STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Orientace garaze
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Tady nejde postavit garaz
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Nemohu postavit autobusovou stanici...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nemohu postavit nakladovou rampu...
STR_180A_ROAD_CONSTRUCTION :Vystavba silnic
STR_180A_ROAD_CONSTRUCTION :Výstavba silnic
STR_180B_BUILD_ROAD_SECTION :{BLACK}Postavit silnici
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Postavit garaz (pro nakup a servis vozidel)
STR_180D_BUILD_BUS_STATION :{BLACK}Postavit autobusovou stanici
@@ -1647,51 +1781,51 @@ STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}Produkce {STRING} v {TOWN} {STRING
STR_5000_TRAIN_IN_TUNNEL :{WHITE}Vlak v tunelu
STR_5001_ROAD_VEHICLE_IN_TUNNEL :{WHITE}Silnicni vozidlo v tunelu
STR_5002 :
STR_5003_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}V ceste je jiny tunel
STR_5003_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}V ceste je jiný tunel
STR_5004 :
STR_5005_UNABLE_TO_EXCAVATE_LAND :{WHITE}Nemohu vyrovnat zemi na druhem konci tunelu
STR_5005_UNABLE_TO_EXCAVATE_LAND :{WHITE}Nemohu vyrovnat zemi na druhém konci tunelu
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Nutno nejprve znicit tunel
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Nutno nejprve znicit most
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Nelze zacit a skoncit na stejnem miste
STR_5009_LEVEL_LAND_OR_WATER_REQUIRED :{WHITE}Pod mostem je nutna rovna zeme nebo voda
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Zacatek a konec musi byt v jedne vysce
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Misto nevhodne pro vjezd do tunelu
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Nelze zacit a skoncit na stejném miste
STR_5009_LEVEL_LAND_OR_WATER_REQUIRED :{WHITE}Pod mostem je nutná rovná zeme nebo voda
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Zacatek a konec musí být ve stejné vysce
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Místo nevhodné pro vjezd do tunelu
STR_500C :
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
STR_500E_SUSPENSION_STEEL :Zaveseny, Ocelovy
STR_500F_GIRDER_STEEL :Tramovy, Ocelovy
STR_5010_CANTILEVER_STEEL :Konzolovy, Ocelovy
STR_5011_SUSPENSION_CONCRETE :Zaveseny, Betonovy
STR_500E_SUSPENSION_STEEL :Zaveseny, ocelový
STR_500F_GIRDER_STEEL :Trámový, ocelový
STR_5010_CANTILEVER_STEEL :Konzolový, ocelový
STR_5011_SUSPENSION_CONCRETE :Zaveseny, betonový
STR_5012_WOODEN :Dreveny
STR_5013_CONCRETE :Betonovy
STR_5014_TUBULAR_STEEL :Potrubni, Ocelovy
STR_BRIDGE_TUBULAR_SILICON :Potrubni, Kremikovy
STR_5013_CONCRETE :Betonový
STR_5014_TUBULAR_STEEL :Potrubní, ocelový
STR_BRIDGE_TUBULAR_SILICON :Potrubní, kremikovy
STR_5015_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Zde nelze postavit most...
STR_5016_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Zde nelze postavit most...
STR_5016_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Zde nelze postavit tunel...
STR_5017_RAILROAD_TUNNEL :Zeleznicni tunel
STR_5018_ROAD_TUNNEL :Silnicni tunel
STR_5019 :
STR_501A :
STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Ocelovy zaveseny zeleznicni most
STR_501C_STEEL_GIRDER_RAIL_BRIDGE :Ocelovy tramovy zeleznicni most
STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE :Ocelovy konzolovy zeleznicni most
STR_501E_REINFORCED_CONCRETE_SUSPENSION :Zpevneny betonovy zaveseny zeleznicni most
STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Ocelový zaveseny zeleznicni most
STR_501C_STEEL_GIRDER_RAIL_BRIDGE :Ocelový trámový zeleznicni most
STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE :Ocelový konzolový zeleznicni most
STR_501E_REINFORCED_CONCRETE_SUSPENSION :Zpevneny betonový zaveseny zeleznicni most
STR_501F_WOODEN_RAIL_BRIDGE :Dreveny zeleznicni most
STR_5020_CONCRETE_RAIL_BRIDGE :Betonovy zeleznicni most
STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Ocelovy zaveseny silnicni most
STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Ocelovy tramovy silnicni most
STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE :Ocelovy konzolovy silnicni most
STR_5024_REINFORCED_CONCRETE_SUSPENSION :Zpevneny betonovy zaveseny silnicni most
STR_5020_CONCRETE_RAIL_BRIDGE :Betonový zeleznicni most
STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Ocelový zaveseny silnicni most
STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Ocelový trámový silnicni most
STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE :Ocelový konzolový silnicni most
STR_5024_REINFORCED_CONCRETE_SUSPENSION :Zpevneny betonový zaveseny silnicni most
STR_5025_WOODEN_ROAD_BRIDGE :Dreveny silnicni most
STR_5026_CONCRETE_ROAD_BRIDGE :Betonovy silnicni most
STR_5027_TUBULAR_RAIL_BRIDGE :Potrubni zeleznicni most
STR_5028_TUBULAR_ROAD_BRIDGE :Potrubni silnicni most
STR_5029_STEEL :Ocelovy
STR_5026_CONCRETE_ROAD_BRIDGE :Betonový silnicni most
STR_5027_TUBULAR_RAIL_BRIDGE :Potrubní zeleznicni most
STR_5028_TUBULAR_ROAD_BRIDGE :Potrubní silnicni most
STR_5029_STEEL :Ocelový
##id 0x5800
STR_5800_OBJECT_IN_THE_WAY :{WHITE}V ceste je objekt
STR_5801_TRANSMITTER :Vysilac
STR_5802_LIGHTHOUSE :Majak
STR_5802_LIGHTHOUSE :Maják
STR_5803_COMPANY_HEADQUARTERS :Reditelstvi spolecnosti
STR_5804_COMPANY_HEADQUARTERS_IN :{WHITE}...v ceste je reditelstvi spolecnosti
STR_5805_COMPANY_OWNED_LAND :Puda vlastnena spolecnosti
@@ -1712,18 +1846,18 @@ STR_SV_AIRCRAFT_NAME :Letadlo {COMMA16}
STR_SV_STNAME :{STRING}
STR_SV_STNAME_NORTH :{STRING} sever
STR_SV_STNAME_SOUTH :{STRING} jih
STR_SV_STNAME_EAST :{STRING} vychod
STR_SV_STNAME_WEST :{STRING} zapad
STR_SV_STNAME_EAST :{STRING} východ
STR_SV_STNAME_WEST :{STRING} západ
STR_SV_STNAME_CENTRAL :{STRING} stred
STR_SV_STNAME_TRANSFER :{STRING} prestupni
STR_SV_STNAME_HALT :{STRING} zastavka
STR_SV_STNAME_VALLEY :{STRING} udoli
STR_SV_STNAME_HALT :{STRING} zastávka
STR_SV_STNAME_VALLEY :{STRING} údolí
STR_SV_STNAME_HEIGHTS :{STRING} vysina
STR_SV_STNAME_WOODS :{STRING} polesi
STR_SV_STNAME_WOODS :{STRING} polesí
STR_SV_STNAME_LAKESIDE :{STRING} jezero
STR_SV_STNAME_EXCHANGE :{STRING} centrala
STR_SV_STNAME_EXCHANGE :{STRING} centrála
STR_SV_STNAME_AIRPORT :{STRING} letiste
STR_SV_STNAME_OILFIELD :{STRING} ropna plosina
STR_SV_STNAME_OILFIELD :{STRING} ropná plosina
STR_SV_STNAME_MINES :{STRING} doly
STR_SV_STNAME_DOCKS :{STRING} pristav
STR_SV_STNAME_BUOY_1 :{STRING} bojka 1
@@ -1736,7 +1870,7 @@ STR_SV_STNAME_BUOY_7 :{STRING} bojka 7
STR_SV_STNAME_BUOY_8 :{STRING} bojka 8
STR_SV_STNAME_BUOY_9 :{STRING} bojka 9
STR_SV_STNAME_ANNEXE :{STRING} pripojne
STR_SV_STNAME_SIDINGS :{STRING} odstavne
STR_SV_STNAME_SIDINGS :{STRING} odstavné
STR_SV_STNAME_BRANCH :{STRING} odbocka
STR_SV_STNAME_UPPER :horni {STRING}
STR_SV_STNAME_LOWER :dolni {STRING}
@@ -1764,7 +1898,7 @@ STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Mnozstvi prumyslu: {ORANGE}{STRING}
STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Maximalni pocatecni dluh: {ORANGE}{CURRENCY}
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Pocatecni urokova sazba: {ORANGE}{COMMA16}%
STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Cena provozu vozidel: {ORANGE}{STRING}
STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Rychlost stavby protivnika: {ORANGE}{STRING}
STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Rychlost stavby protivniku: {ORANGE}{STRING}
STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Inteligence protivniku: {ORANGE}{STRING}
STR_680E_VEHICLE_BREAKDOWNS :{LTBLUE}Poruchy vozidel: {ORANGE}{STRING}
STR_680F_SUBSIDY_MULTIPLIER :{LTBLUE}Cinitel dotaci: {ORANGE}{STRING}
@@ -1820,7 +1954,7 @@ STR_683B_HOSTILE :zaujat
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7002_PLAYER :(hrac {COMMA16})
STR_7004_NEW_FACE :{BLACK}Nový oblicej
STR_7005_COLOR_SCHEME :{BLACK}Barva
@@ -1832,7 +1966,7 @@ STR_700A_COMPANY_NAME :Jm
STR_700B_PRESIDENT_S_NAME :Jméno prezidenta
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nemohu zmenit jméno spolecnosti...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Nemohu zmenit jméno prezidenta...
STR_700E_FINANCES :{WHITE}{STRING} Finance{BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} Finance {BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Prijmy / výdaje
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Výstavba
@@ -1888,8 +2022,8 @@ STR_7040_SHIP :{WHITE}{COMMA16} lod
STR_7041_SHIPS :{WHITE}{COMMA16} lodí
STR_7042_NONE :{WHITE}Nic
STR_7043_FACE_SELECTION :{WHITE}Volba tvare
STR_7044_MALE :{BLACK}Muz
STR_7045_FEMALE :{BLACK}Zena
STR_7044_MALE :{BLACK}Muzske
STR_7045_FEMALE :{BLACK}Zenske
STR_7046_NEW_FACE :{BLACK}Nový oblicej
STR_7047_CANCEL_NEW_FACE_SELECTION :{BLACK}Zrusit volbu noveho obliceje
STR_7048_ACCEPT_NEW_FACE_SELECTION :{BLACK}Potvrdit vyber obliceje
@@ -1933,10 +2067,13 @@ STR_706D_PRESIDENT :Prezident
STR_706E_TYCOON :Magnát
STR_706F_BUILD_HQ :{BLACK}Reditelstvi
STR_7070_BUILD_COMPANY_HEADQUARTERS :{BLACK}Vybudovat reditelstvi spolecnosti / ukázat reditelstvi spolecnosti
STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sídlo spolecnosti se vystaví jinde za 1% její hodnoty
STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sídlo spolecnosti muzes vystavit jinde za 1% její hodnoty
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nemohu postavit reditelstvi spolecnosti
STR_7072_VIEW_HQ :{BLACK}Reditelstvi
STR_RELOCATE_HQ :{BLACK}Presidlit
STR_COMPANY_PASSWORD :{BLACK}Heslo
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Heslo - zabrante neautorizovanym uzivatelum v pripojeni se k vasi spolecnosti.
STR_SET_COMPANY_PASSWORD :Nastavte heslo spolecnosti.
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Celosvetovy hospodarsky úpadek!{}{}Financni experti se kvuli prudkému poklesu ekonomiky obávají nejhorsiho!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Konec hospodarskeho úpadku!{}{}Posílení trhu zvysilo u prumyslu duveru!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Prepnout velke/male okno
@@ -2246,7 +2383,7 @@ STR_UNKNOWN_DESTINATION :nezn
STR_8812_EMPTY :{LTBLUE}Prázdný
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é vlaky
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_8818_INFORMATION :{BLACK}Informace
@@ -2273,7 +2410,7 @@ STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE :{WHITE}Nemohu koupit vagon/lokomotivu.
STR_882C_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Koupeno: {LTBLUE}{NUMU16}{BLACK} Hodnota: {LTBLUE}{CURRENCY}
STR_882D_VALUE :{LTBLUE}{STRING}{BLACK} Hodnota: {LTBLUE}{CURRENCY}
STR_882E :{WHITE}{STRING}
STR_882F_LOADING_UNLOADING :{LTBLUE}Nákládaní / Vykládání
STR_882F_LOADING_UNLOADING :{LTBLUE}Nakládání / Vykládání
STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Nelze poslat vlak do depa...
STR_8831_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Nedostatek prostoru na prikazy
STR_8832_TOO_MANY_ORDERS :{WHITE}Prilis mnoho prikazu
@@ -2475,7 +2612,7 @@ STR_GO_TO_SHIP_DEPOT :Zajet do lodn
SERVICE_AT_SHIP_DEPOT :Udrzba v lodním depu {TOWN}
##id 0xA000
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Stavba letiste.
STR_A000_AIRPORTS :{WHITE}Letiste
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Zde nelze postavit letiste...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Letistni hangár
STR_A003_NEW_AIRCRAFT :{BLACK}Nová letadla
@@ -2494,8 +2631,8 @@ STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Prijem tento rok: {LTBLUE}{CURREN
STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Spolehlivost: {LTBLUE}{COMMA8}% {BLACK}Poruch od posledního servisu: {LTBLUE}{COMMA16}
STR_A011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Koupeno: {LTBLUE}{NUMU16}{BLACK} Cena: {LTBLUE}{CURRENCY}
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Nelze poslat letadlo do hangáru...
STR_HEADING_FOR_HANGAR :{LTBLUE}Mirim do hangáru {STATION}
STR_HEADING_FOR_HANGAR_VEL :{LTBLUE}Mirim do hangáru {STATION}, {VELOCITY}
STR_HEADING_FOR_HANGAR :{LTBLUE}Jedu do hangáru {STATION}
STR_HEADING_FOR_HANGAR_VEL :{LTBLUE}Jedu do hangáru {STATION}, {VELOCITY}
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Letadlo {COMMA16} ceka v hangáru
STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Letadlo v ceste
STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Nemohu rozjet/zastavit letadlo...
@@ -2563,8 +2700,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}Hra je v pauze.{}Prikaz nemuze b
STR_PERFORMANCE_DETAIL :{WHITE}Podrobné hodnocení výkonu
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Podrobne
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2579,14 +2716,46 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Hotovost:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Dluh:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Celkem:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Pocet dopravních prostredku, tzn. silnicnich vozidel, vlaku, lodí a letadel.
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Pocet soucasti stanic. Kazda soucast stanice (napr. nadrazi, autobusové zastávky, letiste) se zapocitava, i kdyz patri jediné stanici.
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Pocet dopravních prostredku, tzn. silnicnich vozidel, vlaku, lodí a letadel
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Pocet soucasti stanic. Kazda soucast stanice (napr. nadrazi, autobusová zastávka, letiste) se zapocitava, i kdyz patri jediné stanici
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Minimální hrubý zisk (= s provoz. náklady) vozidla s nejnizsim prijmem (starsiho 2 let)
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Cisty zisk (= bez provoz. nakladu) v nejslabsim mesici za posledních 12 ctvrtleti
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Cisty zisk v mesici s nejvetsim prijmem za posledních 12 ctvrtleti.
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Pocet dorucenych jednotek nákladu za poslední rok (4Q).
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Pocet dorucenych druhu nákladu za poslední 3 mesice (1Q).
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Tvoje soucasna hotovost
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Mas velký dluh?
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Cisty zisk v mesici s nejvetsim prijmem za posledních 12 ctvrtleti
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Pocet dorucenych jednotek nákladu za poslední rok (4Q)
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Pocet dorucenych druhu nákladu za poslední 3 mesice (1Q)
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Soucasna hotovost spolecnosti
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Má spolecnost velký dluh?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Celkový pocet bodu z 1000 moznych
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Nastavení nových grafických souboru
STR_NEWGRF_APPLY_CHANGES :{BLACK}Potvrdit zmeny
STR_NEWGRF_SET_PARAMETERS :{BLACK}Nastavit parametry
STR_NEWGRF_TIP :{BLACK}Tady je seznam vsech nainstalovaných grafických setu. Nastavení zmenite kliknutím na set.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Zadne soubory s novou grafikou nejsou nainstalovány! Pro instrukce, jak nainstalovat nové grafické soubory, se podívejte se do manuálu.
STR_NEWGRF_FILENAME :{BLACK}Jméno souboru:
STR_NEWGRF_GRF_ID :{BLACK}ID GRF:
STR_CURRENCY_WINDOW :{WHITE}Vlastní 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 k Euru: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Prechod k Euru: {ORANGE}nikdy
STR_CURRENCY_PREVIEW :{LTBLUE}Náhled: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Zmenit parametry vlastní meny
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} vlaku
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} silnicnich vozidel
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} letadel
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} lodi
STR_SCHEDULED_TRAINS_TIP :{BLACK}Zobrazit vsechny vlaky, které mají tuto stanici v jízdním radu
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
+424 -118
View File
@@ -25,13 +25,13 @@ STR_0013_LIVESTOCK :Kv
STR_0014_GOODS :Stykgods
STR_0015_GRAIN :Korn
STR_0016_WOOD :Træ
STR_0017_IRON_ORE :Jern Malm
STR_0017_IRON_ORE :Jernmalm
STR_0018_STEEL :Stål
STR_0019_VALUABLES :Værdigendstande
STR_001A_COPPER_ORE :Kobber Malm
STR_0019_VALUABLES :Værdigenstande
STR_001A_COPPER_ORE :Kobbermalm
STR_001B_MAIZE :Majs
STR_001C_FRUIT :Frugt
STR_001D_DIAMONDS :Diamands
STR_001D_DIAMONDS :Diamander
STR_001E_FOOD :Mad
STR_001F_PAPER :Papir
STR_0020_GOLD :Guld
@@ -57,10 +57,10 @@ STR_0033_LIVESTOCK :Kv
STR_0034_GOODS :Stykgods
STR_0035_GRAIN :Korn
STR_0036_WOOD :Træ
STR_0037_IRON_ORE :Jern Malm
STR_0037_IRON_ORE :Jernmalm
STR_0038_STEEL :Stål
STR_0039_VALUABLES :Værdigendstand
STR_003A_COPPER_ORE :Kobber Malm
STR_003A_COPPER_ORE :Kobbermalm
STR_003B_MAIZE :Majs
STR_003C_FRUIT :Frugt
STR_003D_DIAMOND :Diamand
@@ -89,10 +89,10 @@ STR_0053_ITEM_OF_LIVESTOCK :{COMMA16} stk. kv
STR_0054_CRATE_OF_GOODS :{COMMA16} kasse gods
STR_0055_TON_OF_GRAIN :{COMMA16} ton korn
STR_0056_TON_OF_WOOD :{COMMA16} ton træ
STR_0057_TON_OF_IRON_ORE :{COMMA16} ton jern malm
STR_0057_TON_OF_IRON_ORE :{COMMA16} ton jernmalm
STR_0058_TON_OF_STEEL :{COMMA16} ton stål
STR_0059_BAG_OF_VALUABLES :{COMMA16} sæk værdigendstande
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tons kobber malm
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tons kobbermalm
STR_005B_TON_OF_MAIZE :{COMMA16} ton majs
STR_005C_TON_OF_FRUIT :{COMMA16} ton frugt
STR_005D_BAG_OF_DIAMONDS :{COMMA16} sæk diamanter
@@ -121,10 +121,10 @@ STR_0073_ITEMS_OF_LIVESTOCK :{COMMA16} stk. kv
STR_0074_CRATES_OF_GOODS :{COMMA16} kasser gods
STR_0075_TONS_OF_GRAIN :{COMMA16} tons korn
STR_0076_TONS_OF_WOOD :{COMMA16} tons træ
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tons jern malm
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tons jernmalm
STR_0078_TONS_OF_STEEL :{COMMA16} tons stål
STR_0079_BAGS_OF_VALUABLES :{COMMA16} sække værdigendstande
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tons kobber malm
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tons kobbermalm
STR_007B_TONS_OF_MAIZE :{COMMA16} tons majs
STR_007C_TONS_OF_FRUIT :{COMMA16} tons frugt
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} sække diamanter
@@ -145,36 +145,7 @@ 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}
@@ -229,7 +200,7 @@ STR_00E4_LOCATION :{BLACK}Placering
STR_00E5_CONTOURS :Konturer
STR_00E6_VEHICLES :Køretøjer
STR_00E7_INDUSTRIES :Industrier
STR_00E8_ROUTES :Router
STR_00E8_ROUTES :Ruter
STR_00E9_VEGETATION :Vegetation
STR_00EA_OWNERS :Ejere
STR_00EB_ROADS :{BLACK}{TINYFONT}Veje
@@ -246,7 +217,7 @@ STR_00F5_TRAINS :{BLACK}{TINYFONT}Toge
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Lastbiler
STR_00F7_SHIPS :{BLACK}{TINYFONT}Skibe
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Fly
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Transport Router
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Transport Ruter
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Kulmine
STR_00FB_POWER_STATION :{BLACK}{TINYFONT}Kraftværk
STR_00FC_FOREST :{BLACK}{TINYFONT}Skov
@@ -310,6 +281,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 :Imperial (miles)
STR_013A_METRIC_KILOMETERS :Meter (kilometer)
@@ -342,6 +314,7 @@ STR_0157_PERFORMANCE_HISTORY_GRAPH :Graf over pr
STR_0158_COMPANY_VALUE_GRAPH :Graf over selskabsværdi
STR_0159_CARGO_PAYMENT_RATES :Graf over last udbetalingsrater
STR_015A_COMPANY_LEAGUE_TABLE :Selskabsoversigt
STR_PERFORMANCE_DETAIL_MENU :Præstations oversigt
############ range for menu ends
STR_015B_OPENTTD :{WHITE}OpenTTD
@@ -351,9 +324,14 @@ STR_015E_QUIT_GAME :Afslut Spil
STR_015F_QUIT :Afslut
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Er du sikker på du vil afslutte dette spil ?
STR_0161_QUIT_GAME :{WHITE}Afslut Spil
STR_SORT_TIP :{BLACK}Vælg sorteringsorden
STR_SORT_ORDER_TIP :{BLACK}Vælg sorteringsorden (faldende/stigende)
STR_SORT_CRITERIA_TIP :{BLACK}Vælg sortering kriterie
SRT_SORT_BY :{BLACK}Sorter efter
STR_SORT_BY_POPULATION :{BLACK}Indbyggertal
STR_SORT_BY_PRODUCTION :{BLACK}Produktion
STR_SORT_BY_TYPE :{BLACK}Type
STR_SORT_BY_TRANSPORTED :{BLACK}Transporteret
STR_SORT_BY_NAME :{BLACK}Navn
STR_SORT_BY_DROPDOWN_NAME :Navn
STR_SORT_BY_DATE :{BLACK}Dato
@@ -412,6 +390,7 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikke ændre service interval...
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_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
@@ -431,7 +410,7 @@ STR_019A_YEARS :{COMMA16}
STR_019B_YEARS :{RED}{COMMA16} år ({COMMA16})
############ range for service numbers ends
STR_019C_ROAD_VEHICLE :Lastbil
STR_019C_ROAD_VEHICLE :Vejkøretøj
STR_019D_AIRCRAFT :Fly
STR_019E_SHIP :Skibe
STR_019F_TRAIN :Tog
@@ -490,6 +469,8 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}V
STR_01CE_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Accepteret last: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Accepteret last: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -532,7 +513,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}V
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Vælg 'Custom 1' (brugerdefineret) programmet
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select 'Custom 2' (brugerdefineret) programmet
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Ryd det valgte program (Gælder kun Custom1/Custom2)
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Gem musik indstillinger til disken
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Gem opsætning for musik
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Klik på et musiknummer for at tilføje det til programlisten (Kun for Custom1/Custom2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Skift mellem tilfældig afspilning af/på
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vis musiknummer valg vinduet
@@ -717,7 +698,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}K
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Standard
STR_02BF_CUSTOM :Brugerdefineret
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Gem brugerdefinerede navne til disken
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Gem ikke standard navne
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Køretøjsdesignnavne valg
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Gem brugerdefinerede køretøjsdesignnavne til disken
@@ -728,16 +709,20 @@ STR_02C5_DIFFICULTY_SETTINGS :Sv
STR_02C6_DIFFICULTY_SETTINGS :Sværhedsgrad
STR_02C7_CONFIG_PATCHES :Indstil patches
STR_02C8_CONFIG_PATCHES :Indstil patches
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
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Stationsnavne vist
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Skilte vist
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Skilte vist
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Checkpoints vist
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Checkpoints vist
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Kontrolsteder vist
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Kontrolsteder vist
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Fuld animation
STR_02D0_FULL_ANIMATION :{SETX 12}Fuld animation
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Fuld detalje
@@ -760,12 +745,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Vis specialaftaler
STR_02DD_SUBSIDIES :Specialaftaler
STR_02DE_MAP_OF_WORLD :Kort over verden
STR_EXTRA_VIEW_PORT :Flere lokalitetsvinduer
STR_02DF_TOWN_DIRECTORY :Byoversigt
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
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Hent fra lokalitetsvindue
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Kopier lokaliteten af dette vindue til det globale vindue
STR_02DF_TOWN_DIRECTORY :Byoversigt
STR_02E0_CURRENCY_UNITS :{BLACK}Valutaenhed
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Valutaenhed selection
@@ -789,16 +775,16 @@ STR_02F8_EVERY_3_MONTHS :Hver 3. m
STR_02F9_EVERY_6_MONTHS :Hver 6. måned
STR_02FA_EVERY_12_MONTHS :Hver 12. måned
STR_02FB_START_A_NEW_GAME :{BLACK}Start et nyt spil
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Hent et gemt spil fra disken
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Hent et gemt spil
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Se demonstrationer/tutorials
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Lav en brugerdefineret verden/scenarie
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Vælg singleplayer spil
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Vælg tospiller spil
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Vælg flerspiller spil med 2-8 spillere
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Vis spilindstillinger
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Vis sværhedsgrad indstillinger
STR_0303_START_A_NEW_GAME_USING :{BLACK}Start et nyt spil, med et brugerdefineret scenarie
STR_0304_QUIT :{BLACK}Afslut
STR_0305_LEAVE_OPENTTD :{BLACK}Forlad 'OpenTTD', og aflsut
STR_0305_QUIT_OPENTTD :{BLACK}Afslut 'OpenTTD'
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Se demonstration/tutorial
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan kun bygges i byer
@@ -849,35 +835,43 @@ STR_TOWNNAME_POLISH :Polske
STR_TOWNNAME_SLOVAKISH :Slovakiske
STR_TOWNNAME_HUNGARIAN :Ungarske
STR_TOWNNAME_AUSTRIAN :Østrigske
STR_TOWNNAME_ROMANIAN :Rumænske
STR_TOWNNAME_CZECH :Tjekkiske
############ end of townname region
STR_CURR_POUNDS :Pund ({POUNDSIGN})
STR_CURR_DOLLARS :Dollar ($)
STR_CURR_FF :Franc (FF)
STR_CURR_DM :Deutschmark (DM)
STR_CURR_GBP :Pund ({POUNDSIGN})
STR_CURR_USD :Dollar ($)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_PT :Peseta (Pt)
STR_CURR_FT :Ungarsk Forint (Ft)
STR_CURR_ZL :Polsk Zloty (zl)
STR_CURR_ATS :Østrisk Shilling (ATS)
STR_CURR_BEF :Belgisk Franc (BEF)
STR_CURR_DKK :Danske Kroner (DKK)
STR_CURR_FIM :Finske Markka (FIM)
STR_CURR_GRD :Græske Drachmer (GRD)
STR_CURR_CHF :Sweiziske Franc (CHF)
STR_CURR_NLG :Hollandske Guilder (NLG)
STR_CURR_ITL :Italienske Lire (ITL)
STR_CURR_SEK :Svenske Kroner (SEK)
STR_CURR_RUR :Russiske Rubel (rur)
STR_CURR_CZK :Tjekkiske Koruna (CZK)
STR_CURR_DEM :Deutschmark (DEM)
STR_CURR_DKK :Danske Kroner (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Finske Markka (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Græske Drachmer (GRD)
STR_CURR_HUF :Ungarnske Forint (HUF)
STR_CURR_ISK :Islandske Kroner (ISK)
STR_CURR_ITL :Italienske Lire (ITL)
STR_CURR_NLG :Hollandske Guilder (NLG)
STR_CURR_NOK :Norske Kroner (NOK)
STR_CURR_EUR :Euro (€)
STR_CURR_PLN :Polske Zloty (PLN)
STR_CURR_ROL :Rumænske Lei
STR_CURR_RUR :Russiske Rubel (rur)
STR_CURR_SEK :Svenske Kroner (SEK)
STR_CURR_CUSTOM :Brugerdefineret...
STR_OPTIONS_LANG :{BLACK}Sprog
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Vælg sprog til brugerfladen
STR_OPTIONS_FULLSCREEN :{BLACK}Fuld skærm
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Afkryds for at spille OpenTTD i fuld skærm
STR_OPTIONS_RES :{BLACK}Skærmopløsning
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Vælg skørmopløsning
@@ -941,8 +935,13 @@ STR_SHIP_HAS_INVALID_ENTRY :{WHITE}Skib {COMMA16} har en ugyldig havn i sin
STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}Fly {COMMA16} har for få ordre i sin flyveplan
STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}Fly {COMMA16} har en ugyldig ordre
STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}Fly {COMMA16} har dobbelt ordre
STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}Fly {COMMA16} har en ugyldig station i sin flyveplan
# end of order system
STR_TRAIN_AUTORENEW_FAILED :{WHITE}Automatisk fornyelse mislykkedes på tog {COMMA16} (ikke penge nok)
STR_ROADVEHICLE_AUTORENEW_FAILED :{WHITE}Automatisk fornyelse mislykkedes på lastbil {COMMA16} (ikke penge nok)
STR_SHIP_AUTORENEW_FAILED :{WHITE}Automatisk fornyelse mislykkedes på skib {COMMA16} (ikke penge nok)
STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Automatisk fornyelse mislykkedes på fly {COMMA16} (ikke penge nok)
STR_CONFIG_PATCHES :{BLACK}Indstil Patches
STR_CONFIG_PATCHES_TIP :{BLACK}Indstil Patchesne
@@ -952,11 +951,14 @@ STR_CONFIG_PATCHES_OFF :Fra
STR_CONFIG_PATCHES_ON :Til
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Vis køretøjets fart i statusbaren: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Tillad bygning på skråninger og kyster: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Tillad mere realistisk størrelse på stationernes opland: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Tillad nedriving af industribygninger, flere veje, osv: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Aktiver bygning af meget lange tog: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Aktiver realistisk acceleration af tog: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Foren togstationer der bygges ved siden af hinanden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Forlad stationen hvis en slags last bliver fyldt, hvis 'fuld last': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Brug forbedret indlæsnings algoritme: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflation: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Aflever kun last til en station hvis der er en forespørgsel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Tillad bygning af meget lange broer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Tillad go til depot ordrer: {ORANGE}{STRING}
@@ -976,9 +978,19 @@ STR_CONFIG_PATCHES_NEW_TRAIN_PATHFIND :{LTBLUE}Ny stifindingsalgoritme til to
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Tillad altid små lufthavne: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS :{LTBLUE}Et tog er væk hvis der ikke forekommer fremskridt inden for: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS :{LTBLUE}Et tog er faret vild hvis der ikke er sket fremskridt i: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS_DISABLED :{LTBLUE}Et tog er faret vild hvis der ikke er sket fremskridt i: {ORANGE}deaktiveret
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Kontroller køretøjers ordreliste: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :Nej
STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :Ja, på nær ved stoppet køretøjer
STR_CONFIG_PATCHES_ORDER_REVIEW_ON :Ja, på alle køretøjer
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Advar hvis et tog har underskud: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Køretøjernes levealder udløber aldrig: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Automatisk fornyelse af køretøjer når de bliver gamle
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_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
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Automatisk service på helikopterlandingspladser: {ORANGE}{STRING}
@@ -993,28 +1005,46 @@ STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}Deaktiver lastbiler for compute
STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Deaktiver fly for computeren: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}Deaktiver skibe for computeren: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Slå den nye kunstige intelligents til (alpha): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Standard serviceinterval for tog: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Standard serviceinterval for lastbiler: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard serviceinterval for fly: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard serviceinterval for skibe: {ORANGE}{STRING} dage
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Standard service interval for tog: {ORANGE}{STRING} dage/%
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Standard service interval for tog: {ORANGE}slået fra
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Standard service interval for vejkøretøjer: {ORANGE}{STRING} dage/%
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Standard service interval for vejkøretøjer: {ORANGE}slået fra
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard service interval for fly: {ORANGE}{STRING} dage/%
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_COLORED_NEWS_DATE :{LTBLUE}Farvede nyheder dukker op i: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Start dato: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Aktiver rolig økonomi (flere små ændringer)
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
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Center
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Højre
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Vinduernes sammenkoblings afstand: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Vinduernes sammenkoblings afstand: {ORANGE}slået fra
STR_CONFIG_PATCHES_GUI :{BLACK}Brugerflade
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Konstruktion
STR_CONFIG_PATCHES_VEHICLES :{BLACK}Køretøjer
STR_CONFIG_PATCHES_STATIONS :{BLACK}Stationer
STR_CONFIG_PATCHES_ECONOMY :{BLACK}Økonomi
STR_CONFIG_PATCHES_AI :{BLACK}Modstandere
STR_CONFIG_PATCHES_DISABLED :deaktiveret
STR_CONFIG_PATCHES_INT32 :{INT32}
STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Skift indstillingsværdi
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Nogle eller alle standard service intervaller nedenunder er uforenelige med den valgte opsætning! 5-90% og 30-800 dage er gyldige
STR_TEMPERATE_LANDSCAPE :Tempereret klima
STR_SUB_ARCTIC_LANDSCAPE :Arktisk klima
STR_SUB_TROPICAL_LANDSCAPE :Tropisk klima
STR_TOYLAND_LANDSCAPE :Legetøjsland
STR_CHEATS :{WHITE}Snydefunktioner
STR_CHEATS_TIP :{BLACK}Checkboxes viser om du bruger denne snydefunktion before
@@ -1024,30 +1054,47 @@ STR_CHEAT_CHANGE_PLAYER :{LTBLUE}Spil som spiller: {ORANGE}{COMMA16}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk bulldozer (nedriv ting, som normalt ikke kan fjernes): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunneler kan krydse hinanden: {ORANGE}{STRING}
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Tillad at bygge mens pause er aktiveret: {ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetfly vil ikke styrte (ofte) i små lufthavne: {ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Skift klima: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Ændre dato: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Retning mod {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Retning mod {CHECKPOINT}, {VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Retning mod {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Retning mod {WAYPOINT}, {VELOCITY}
STR_GO_TO_CHECKPOINT :Via {CHECKPOINT}
STR_GO_TO_WAYPOINT :Via {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Kør uden stop via {WAYPOINT}
STR_CHECKPOINTNAME_CITY :Checkpoint {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Checkpoint {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Checkpoint
STR_WAYPOINTNAME_CITY :Kontrolsted {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Kontrolsted {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Kontrolsted
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Ændrer checkpointets navn
STR_WAYPOINT :{WHITE}Kontrolsted
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Vælg udsendene på kontrolsteder
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Kan ikke ændre checkpointets navn...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Konverter togskinner til checkpoint
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Kan ikke bygge et togcheckpoint her...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Kan ikke fjerne et togcheckpoint her...
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Omdøb kontrolsted
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Kan ikke omdøbe kontrolsted...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Ændre jernbane til kontrolsted
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Kan ikke bygge kontrolsted for tog her...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan ikke fjerne kontrolsted for tog her...
STR_BUILD_AUTORAIL_TIP :{BLACK}Byg togskinner ved hjælp af autotogskinner mode
STR_NO_TOWN_IN_SCENARIO :{WHITE}...der er ingen byer i dette scenarie
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Er du sikker på, at ud vil have lavet et tilfældigt landskab?
STR_MANY_RANDOM_TOWNS :{BLACK}Mange tilfældige byer
STR_RANDOM_TOWNS_TIP :{BLACK}Dæk kortet med tilfældigt placeret byer
STR_MANY_RANDOM_INDUSTRIES :{BLACK}Mange tilfældige industrier
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Dæk kortet med tilfældigt placeret industrier
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan ikke lave industrier...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Åben landskabsarkitektursværktøjslinien for at hæve/sænke land, plante træer, osv.
STR_LANDSCAPING_TOOLBAR :{WHITE}Landskabsværktøjer
STR_LEVEL_LAND_TOOLTIP :{BLACK}Udjævn land
STR_TREES_RANDOM_TYPE :{BLACK}Træer af tilfældig type
@@ -1074,6 +1121,9 @@ STR_STATION_DRAG_DROP :{BLACK}Byg en station via tr
STR_FAST_FORWARD :{BLACK}Kør spillet hurtigere
STR_MESSAGE_HISTORY :{WHITE}Tidligere beskeder
STR_MESSAGE_HISTORY_TIP :{BLACK}En liste of seneste nyheder
STR_MESSAGES_DISABLE_ALL :{BLACK}Slå alle fra
STR_MESSAGES_ENABLE_ALL :{BLACK}Slå alle til
STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Byg Kulmine
STR_CONSTRUCT_FOREST_TIP :{BLACK}Plant Skov
@@ -1097,6 +1147,7 @@ STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Byg Sukkermine
STR_INDUSTRYDIR_CAPTION :{WHITE}Industrier
STR_INDUSTRYDIR_ITEM :{ORANGE}{TOWN} {STRING}{BLACK} ({STRING}){YELLOW} ({COMMA16}% transporteret)
STR_INDUSTRYDIR_ITEM_TWO :{ORANGE}{TOWN} {STRING}{BLACK} ({STRING}/{STRING}){YELLOW} ({COMMA16}%/{COMMA16}% transported)
STR_INDUSTRYDIR_ITEM_NOPROD :{ORANGE}{TOWN} {STRING}
STR_INDUSTRY_TOO_CLOSE :{WHITE}...for tæt på en anden industribygning
@@ -1109,22 +1160,201 @@ STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Ombyg toget til at k
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan ikke ombygge toget...
STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Service intervaller er i procent: {ORANGE}{STRING}
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!
############ network gui strings
STR_NETWORK_MULTIPLAYER :{WHITE}Netværksspil
STR_NETWORK_PLAYER_NAME :{BLACK}Spiller navn:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Dette er det navn, som andre spillere vil kende dig ved
STR_NETWORK_CONNECTION :{BLACK}Forbindelse:
STR_NETWORK_CONNECTION_TIP :{BLACK}Vælg mellem et internet baseret eller et lokalnet baseret spil
STR_NETWORK_START_SERVER :{BLACK}Start server
STR_NETWORK_START_SERVER_TIP :{BLACK}Start en ny server
STR_NETWORK_GAME_NAME :{BLACK}Navn
STR_NETWORK_GAME_NAME_TIP :{BLACK}Spillets navn
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Sprog, server version, osv.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Klik på et spil fra listen for at vælge det
STR_NETWORK_FIND_SERVER :{BLACK}Find server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Søg netværket for en server
STR_NETWORK_ADD_SERVER :{BLACK}Tilføj server
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Tilføj en server til listen, som altid vil blive checket for om den kører et spil
STR_NETWORK_ENTER_IP :{BLACK}Skriv adressen på en server
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klienter
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klienter online / max klienter
STR_NETWORK_GAME_INFO :{SILVER}SPIL INFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klienter: {WHITE}{COMMA8} / {COMMA8}
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_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!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVEREN ER OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SERVEREN ER FULD
STR_NETWORK_VERSION_MISMATCH :{SILVER}Din og serverens version passer ikke sammen
STR_NETWORK_JOIN_GAME :{BLACK}Tilslut dig et spil
STR_NETWORK_START_GAME_WINDOW :{WHITE}Start et nyt netværksspil
STR_NETWORK_NEW_GAME_NAME :{BLACK}Spillets navn:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Navnet vil blive vist til andre spillere i menuen, hvor man vælger netværksspil
STR_NETWORK_SET_PASSWORD :{BLACK}Set kodeord
STR_NETWORK_PASSWORD_TIP :{BLACK}Beskyt dit spil med et kodeord hvis du ikke vil have fremmede med
STR_NETWORK_SELECT_MAP :{BLACK}Vælg et kort:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Hvilket kort vil du spille?
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maksimalt antal tilladte klienter:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Vælg det maksimale antal klienter. Det er ikke nødvendigt at fylde dem alle
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 (bekendtgør spillet)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 klienter
STR_NETWORK_3_CLIENTS :3 klienter
STR_NETWORK_4_CLIENTS :4 klienter
STR_NETWORK_5_CLIENTS :5 klienter
STR_NETWORK_6_CLIENTS :6 klienter
STR_NETWORK_7_CLIENTS :7 klienter
STR_NETWORK_8_CLIENTS :8 klienter
STR_NETWORK_9_CLIENTS :9 klienter
STR_NETWORK_10_CLIENTS :10 klienter
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Talt sprog:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Andre spillere vil vide hvilket sprog, der bliver talt på serveren
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Start spillet
STR_NETWORK_START_GAME_TIP :{BLACK}Start et nyt netværksspil med et tilfældigt kort eller et scenarie
STR_NETWORK_LOAD_GAME :{BLACK}Hent et spil
STR_NETWORK_LOAD_GAME_TIP :{BLACK}Fortsyt et tidligere gemt spil med flere spillere (sør for at få den rigtige virksomhed)
STR_NETWORK_LOAD_SCENARIO :{BLACK}Hent et scenarie
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Start et netværksspil fra et scenarie
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Hvilketsomhelst
STR_NETWORK_LANG_ENGLISH :Engelsk
STR_NETWORK_LANG_GERMAN :Tysk
STR_NETWORK_LANG_FRENCH :Fransk
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Netværksspils lobby
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Forbereder tilslutning: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}En liste over alle selskaber i spillet lige nu. Du kan enten tilslutte dig et eller starte et nyt, hvis der er plads til flere selskaber
STR_NETWORK_NEW_COMPANY :{BLACK}Ny virksomhed
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Lav en ny virksomhed
STR_NETWORK_SPECTATE_GAME :{BLACK}Tilskuer spil
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Se et spil som tilskuer
STR_NETWORK_JOIN_COMPANY :{BLACK}Tilslut dig selskab
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Help manage this company
STR_NETWORK_REFRESH :{BLACK}Genopfrisk serveren
STR_NETWORK_REFRESH_TIP :{BLACK}Genopfrisk server info
STR_NETWORK_COMPANY_INFO :{SILVER}VIRKSOMHEDSINFO
STR_NETWORK_COMPANY_NAME :{SILVER}Virksomhedens navn: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Grundlagt: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Virksomhedens værdi: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Nuværende beholdning: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Sidste års indtægt: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Præstation: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Køretøjer: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stationer: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Spillere: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Forbinder...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Forbinder..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Gdokender..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Venter..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Henter kort..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Behandler data..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registere..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Fetching game info..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fetching company info..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} klient(er) foran dig
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kbytes hentet indtil videre
STR_NETWORK_DISCONNECT :{BLACK}Afbryd forbindelse
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Skrive den tekst, som du vil sende
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv det beløb, som du ønsker at give
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Serveren er beskyttet. Skriv kodeordet
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Virksomheden er beskyttet. Skriv kodeordet
STR_NETWORK_CLIENT_LIST :{WHITE}Klient Liste
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Ingen netværksheder fundet eller kompilet uden ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Kunne ikke finde nogen netværksspil
STR_NETWORK_ERR_NOCONNECTION :{WHITE} Serveren besvarede ikke denne forspørgsel
STR_NETWORK_ERR_DESYNC :{WHITE} Netværks synkroniseringsfejl
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Netværksforbindelse mistet
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Kunne ikke hente gemt spil
STR_NETWORK_ERR_SERVER_START :{WHITE} Kunne ikke starte serveren
STR_NETWORK_ERR_CLIENT_START :{WHITE} Kunne ikke forbinde
STR_NETWORK_ERR_TIMEOUT :{WHITE} Forbindelsen #{NUMU16} svare ikke
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Der opstod en protokol-fejl og forbindelse blev lukket
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_KICKED :{WHITE} Du blev smidt ud af spillet
STR_NETWORK_ERR_CHEATER :{WHITE} Snyderi er ikke tilladt på denne server
STR_NETWORK_ERR_LEFT :har forladt spillet
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :generel fejl
STR_NETWORK_ERR_CLIENT_DESYNC :synkroniseringsfejl
STR_NETWORK_ERR_CLIENT_SAVEGAME :kunne ikke hente kortet
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :forbindelsen blev afbrudt
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :protokol fejl
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :Not Authorised
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :modtog en underlig pakke
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :forkert revision
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :navnet er allerede i brug
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :wrong game-password
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :forkert player-id i DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :smidt ud af serveren
STR_NETWORK_ERR_CLIENT_CHEATER :prøvede at snyde
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :har tilsluttet sig spillet
STR_NETWORK_GIVE_MONEY :gav din virksomhed nogle penge ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :du gav {STRING} nogle penge ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Team] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Team] Til {STRING}:
STR_NETWORK_CHAT_CLIENT :[Private] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Private] Til {STRING}:
STR_NETWORK_CHAT_ALL :[All] {STRING}:
STR_NETWORK_NAME_CHANGE :har skiftet navn til
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Serveren har lukket ned for dette spil
STR_NETWORK_SERVER_REBOOT :{WHITE} Serveren genstarter...{}Vent venligst...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Klient
STR_NETWORK_CLIENTLIST_NONE :(ingen)
STR_NETWORK_CLIENTLIST_KICK :Smid ud
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Giv penge
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Tal til alle
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Tal til virksomhed
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat besked
STR_NETWORK_SEND :{BLACK}Send
############ end network gui strings
@@ -1155,7 +1385,7 @@ STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}Udgravning ville skade en tunnel
STR_1003_ALREADY_AT_SEA_LEVEL :{WHITE}Allerede ved havoverfladen
STR_1004_TOO_HIGH :{WHITE}For højt
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Ingen brugbare togskinner
STR_1006_TRAIN_INSIDE_DEPOT :{WHITE}Der er et tog i remisen
STR_1006_TRAIN_INSIDE_DEPOT :{WHITE}Der er et tog i depotet
STR_1007_ALREADY_BUILT :{WHITE}...allerede bygget
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Det er nødvendigt at fjerne togskinnerne først
STR_1009_TOO_MANY_DEPOTS :{WHITE}For mange depoter
@@ -1163,28 +1393,28 @@ STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Togskinne Konstruktion
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Monorail Konstruktion
STR_100C_MAGLEV_CONSTRUCTION :{WHITE}Magnetskinnetog Konstruktion
STR_100D_SELECT_RAIL_BRIDGE :{WHITE}Vælg togbro
STR_100E_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan ikke bygge en remise her...
STR_100E_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan ikke bygge et depot her...
STR_100F_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Kan ikke bygge en togstation her...
STR_1010_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kan ikke bygge signaler her...
STR_1011_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kan ikke bygge togskinner her...
STR_1012_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan ikke fjerne togksinner herfra...
STR_1013_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kan ikke fjerne signaler herfra...
STR_1014_TRAIN_DEPOT_ORIENTATION :{WHITE}Retning for remise
STR_1014_TRAIN_DEPOT_ORIENTATION :{WHITE}Retning for depot
STR_1015_RAILROAD_CONSTRUCTION :Togskinne konstruktion
STR_1016_MONORAIL_CONSTRUCTION :Monorail Konstruktion
STR_1017_MAGLEV_CONSTRUCTION :Magnetskinnetog konstruktion
STR_1018_BUILD_RAILROAD_TRACK :{BLACK}Byg togskinner
STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Byg en remise (til at bygge og servicere tog)
STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Byg et depot (til at bygge og servicere tog)
STR_101A_BUILD_RAILROAD_STATION :{BLACK}Byg togstation
STR_101B_BUILD_RAILROAD_SIGNALS :{BLACK}Byg signaler
STR_101C_BUILD_RAILROAD_BRIDGE :{BLACK}Byg bro
STR_101D_BUILD_RAILROAD_TUNNEL :{BLACK}Byg tunnel
STR_101E_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Skift mellem bygning/fjerning af togskinner og signaler
STR_101F_BRIDGE_SELECTION_CLICK :{BLACK}Valg af bro - klik på den valgte bro for at bygge den
STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO :{BLACK}Vælg orientering af remise
STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO :{BLACK}Vælg orientering af depot
STR_1021_RAILROAD_TRACK :Togskinner
STR_1022_RAILROAD_TRACK_WITH_SIGNALS :Togskinner med signaler
STR_1023_RAILROAD_TRAIN_DEPOT :Remise
STR_1023_RAILROAD_TRAIN_DEPOT :Depot
STR_1024_AREA_IS_OWNED_BY_ANOTHER :{WHITE}...området ejes af et andet firma
STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS :Togskinner med almindelige signaler
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Togskinner med indkørselssignaler
@@ -1200,7 +1430,7 @@ STR_1802_ROAD_CONSTRUCTION :{WHITE}Vej Konstruktion
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Vælg vejbro
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan ikke bygge vej her...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan ikke fjerne vej herfra...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Orientering af lastbilsdepot
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Retning for garage
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kan ikke bygge lastbilsdepot her...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kan ikke bygge rutebilsstation...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan ikke bygge lasteplads...
@@ -1318,6 +1548,7 @@ STR_205B_TEAPOT_HOUSE :Tepottehus
STR_205C_PIGGY_BANK :Sparegris
##id 0x2800
STR_LANDSCAPING :Landskabsværktøjer
STR_2800_PLANT_TREES :Plant træer
STR_2801_PLACE_SIGN :Placer skilt
STR_2802_TREES :{WHITE}Træer
@@ -1621,6 +1852,7 @@ STR_SV_STNAME_FOREST :{STRING} Skov
##id 0x6800
STR_6800_DIFFICULTY_LEVEL :{WHITE}Sværhedsgrad
STR_OPTIONS_SAVE_CHANGES :{BLACK}Gem
############ range for difficulty levels starts
STR_6801_EASY :{BLACK}Nem
@@ -1647,8 +1879,10 @@ STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Antal s
STR_6813_ECONOMY :{LTBLUE}Økonomi: {ORANGE}{STRING}
STR_6814_TRAIN_REVERSING :{LTBLUE}Tog vender: {ORANGE}{STRING}
STR_6815_DISASTERS :{LTBLUE}Katastrofer: {ORANGE}{STRING}
STR_16816_CITY_APPROVAL :{LTBLUE}Byråds holdning overfor ændring i landskabet: {ORANGE}{STRING}
############ range for difficulty settings ends
STR_26816_NONE :Ingen
STR_6816_LOW :Lav
STR_6817_NORMAL :Normal
STR_6818_HIGH :Høj
@@ -1685,10 +1919,14 @@ STR_6835_AT_END_OF_LINE_ONLY :Kun ved slutningen af jernbanespor
STR_6836_OFF :Fra
STR_6837_ON :Til
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Vis higscoreliste
STR_6839_PERMISSIVE :Passiv
STR_683A_TOLERANT :Tolerant
STR_683B_HOSTILE :Fjendtlig
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7002_PLAYER :(Spiller {COMMA16})
STR_7004_NEW_FACE :{BLACK}Nyt Ansigt
STR_7005_COLOR_SCHEME :{BLACK}Farvetema
STR_7006_COLOR_SCHEME :{GOLD}Farvetema:
@@ -1699,7 +1937,7 @@ STR_700A_COMPANY_NAME :Firmanavn
STR_700B_PRESIDENT_S_NAME :Direktørens Navn
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan ikke ændre firmaets navn...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Kan ikke ændre direktørens navn...
STR_700E_FINANCES :{WHITE}{STRING} Finanser{BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} Finanser {BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Udgifter/Indkomst
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Konstruktion
@@ -1726,11 +1964,12 @@ STR_7024 :{COMMA32}
STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}Profit Garf
STR_7026_BANK_BALANCE :{WHITE}Bank Balance
STR_7027_LOAN :{WHITE}Lån
STR_MAX_LOAN :{WHITE}Max Lån: {BLACK}{CURRENCY64}
STR_7028 :{BLACK}{CURRENCY64}
STR_7029_BORROW :{BLACK}Lån {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
STR_702A_REPAY :{BLACK}Tilbagebetal {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
STR_702B_MAXIMUM_PERMITTED_LOAN :{WHITE}...maksimale størrelse af lån er {CURRENCY}
STR_702C_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kan ikke låne felere penge...
STR_702C_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kan ikke låne flere penge...
STR_702D_LOAN_ALREADY_REPAYED :{WHITE}...ingen lån at tilbagebetale
STR_702E_REQUIRED :{WHITE}...{CURRENCY} krævet
STR_702F_CAN_T_REPAY_LOAN :{WHITE}Kan ikke tilbagebetale lån...
@@ -1803,6 +2042,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Flyt firmaets hovedkvarter for 1% a
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan ikke bygge firmaets hovedkvarter...
STR_7072_VIEW_HQ :{BLACK}Vis HK
STR_RELOCATE_HQ :{BLACK}Flyt hovedkvarter
STR_COMPANY_PASSWORD :{BLACK}Kodeord
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Beskydt din virksomhed med et kodeord for at undgå at fremmede slutter sig til dig
STR_SET_COMPANY_PASSWORD :Set virksomhedens kodeord
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Lavkonjuktur over hele verden!{}{}Vismændende frygter det værste, økonomien skrumper!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Økonomisk krise overvundet!{}{}Stigning i forbrug giver industrien selvtilliden tilbage, produktionen øges!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Skift mellem stort/lille vindue
@@ -2084,7 +2326,7 @@ STR_8106_MONORAIL_LOCOMOTIVE :monoraillokomotiv
STR_8107_MAGLEV_LOCOMOTIVE :magnetskinnelokomotiv
##id 0x8800
STR_8800_TRAIN_DEPOT :{WHITE}{TOWN} remise
STR_8800_TRAIN_DEPOT :{WHITE}{TOWN} depot
STR_8801_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Indbyggerene fester . . .{}Første tog ankommer til {STATION}!
STR_8802_DETAILS :{WHITE}{STRING} (Detaljer)
STR_8803_TRAIN_IN_THE_WAY :{WHITE}Tog i vejen
@@ -2098,15 +2340,17 @@ STR_880A_GO_NON_STOP_TO :G
STR_880B_GO_NON_STOP_TO_UNLOAD :Gå uden stop til {STATION} (Aflæsse)
STR_880C_GO_NON_STOP_TO_LOAD :Gå uden stop til {STATION} (Læsse)
STR_880D :
STR_880E_GO_TO_TRAIN_DEPOT :Gå til {TOWN} remise
STR_SERVICE_AT_TRAIN_DEPOT :Service i {TOWN} remise
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Gå uden stop til {TOWN} remise
STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Service non-stop i {TOWN} remise
STR_880E_GO_TO_TRAIN_DEPOT :Gå til {TOWN} depot
STR_SERVICE_AT_TRAIN_DEPOT :Service i {TOWN} depot
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Gå uden stop til {TOWN} depot
STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Service non-stop i {TOWN} depot
STR_HEADING_FOR_TRAIN_DEPOT :{LTBLUE}Retning mod {TOWN} remise
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{LTBLUE}Retning mod {TOWN} remise, {VELOCITY}
STR_HEADING_FOR_TRAIN_DEPOT :{LTBLUE}Kører imod {TOWN} depot
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{LTBLUE}Kører imod {TOWN} depot, {VELOCITY}
STR_INVALID_ORDER :{RED} (Ugyldig Order)
STR_UNKNOWN_DESTINATION :ukendt destination
STR_8812_EMPTY :{LTBLUE}Tom
STR_8813_FROM :{LTBLUE}{CARGO} fra {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Tog {COMMA16} Venter i depot
@@ -2115,7 +2359,7 @@ 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_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 en remise
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Tog kan kun ændres når de er stoppet i et depot
STR_881B_TRAINS :{WHITE}{STRING} - {COMMA16} Tog
STR_881C_NEW_RAIL_VEHICLES :{WHITE}Nye Jernbanekøretøjer
STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Nye Monorailkøretøjer
@@ -2138,25 +2382,26 @@ STR_882C_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Bygget: {LTBLUE}{NUMU16}{BL
STR_882D_VALUE :{LTBLUE}{STRING}{BLACK} Værdi: {LTBLUE}{CURRENCY}
STR_882E :{WHITE}{STRING}
STR_882F_LOADING_UNLOADING :{LTBLUE}Læsser / Aflæsser
STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kan ikke sende toget til remise...
STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Kan ikke sende toget til depot...
STR_8831_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Ikke mere plads til flere ordre
STR_8832_TOO_MANY_ORDERS :{WHITE}For mange ordre
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Kan ikke indsætte ny ordre...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Kan ikke slette denne ordre...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kan ikke ændre denne ordre...
STR_8836_MUST_BUILD_TRAIN_DEPOT :{WHITE}Det er nødvendigt at bygge en remise først
STR_8836_MUST_BUILD_TRAIN_DEPOT :{WHITE}Det er nødvendigt at bygge et depot først
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Kan ikke flytte køretøjet...
STR_8838_N_A :N/A{SKIP}
STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Kan ikke sælge jernbanekøretøjet...
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan ikke finde en route til en lokal remise
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan ikke finde en route til et lokalt depot
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Kan ikke stoppe/starte toget...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Serviceinterval: {LTBLUE}{COMMA16}dage{BLACK} Sidste Service: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Serviceinterval: {LTBLUE}{COMMA16}%{BLACK} Sidste Service: {LTBLUE}{DATE_LONG}
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Tog - klik på et tog for information
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Byg nye tog (kræver en remise)
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Byg nye tog (kræver et depot)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Tog - klik på et tog for information., træk vogn/lokomotiv for at fjerne/tilføje det til toget
STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Byg nyt tog/togvogn
STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE :{BLACK}Træk tog/togvogn her hend for at sælge
STR_8842_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Centrer skærmen over placeringen af remisen
STR_8842_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Centrer skærmen over placeringen af depot
STR_8843_TRAIN_VEHICLE_SELECTION :{BLACK}Tog valgsliste - klik på et køretøj for mere information
STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Byg det markerede lokomotiv/togvogn
STR_8845_RENAME_TRAIN_VEHICLE_TYPE :{BLACK}Omdøb tog-/togvognstypen
@@ -2338,7 +2583,7 @@ STR_GO_TO_SHIP_DEPOT :Sejl til {TOWN} Skip Depot
SERVICE_AT_SHIP_DEPOT :Service i {TOWN} Skip Depot
##id 0xA000
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Lufthavnskonstruktion.
STR_A000_AIRPORTS :{WHITE}Lufthavne
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kan ikke bygge en lufthavn her...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Flyhangar
STR_A003_NEW_AIRCRAFT :{BLACK}Nyt fly
@@ -2417,10 +2662,71 @@ STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Eksplosion af olieraffinade
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fabrik ødelagt under mystiske omstændigheder ved {TOWN}!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}En UFO lander tæt på {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Sammenstyrtning af kulmine efterlader et spor af katastrofe ved {TOWN}!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Oversvømmelse!{}Mindst {COMMA16} antaget savnet eller omkommet efter pludslig oversvømmelse!
STR_BRIBE_FAILED :{WHITE}Dit forsøg på bestikkelse er blevet
STR_BRIBE_FAILED_2 :{WHITE}opdaget af en inspektør.
STR_BUILD_DATE :{BLACK}Produceret: {LTBLUE}{DATE_LONG}
STR_MULTIPLAYER_PAUSED :{WHITE}Spillet er i pause.{}Kommandoen kan ikke køres
STR_PERFORMANCE_DETAIL :{WHITE}Præstations oversigt
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detailer
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Køretøjer:
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stationer:
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Minimum profit:
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Minimum indkomst:
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Max. indtægt:
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Afleveret:
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Last:
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Penge:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lån:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Antal af køretøjer; dette inkludere vejkøretøjer, tog, skibe og fly
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Antallet af stationer. Alle dele af en station (f.eks. tog station, bus station, lufthavn) tæller med, også selvom de er sat sammen til en station
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Profit for det køretøj med lavest indkomst (af alle køretøjer ændre end 2 år)
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Indkomst i den måned med lavest profit i de sidste 12 kvartaler
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Indkomst i den måned med højest profit i de sidste 12 kvartaler
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Antal enheder fragtet i de sidste 4 kvartaler
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Antallet af lasttyper fragtet i sidste kvartal
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Kapital denne virksomhed har i banken
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Har du et stort lån?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Samlet point af max point
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Newgrf indstillinger
STR_NEWGRF_APPLY_CHANGES :{BLACK}Anvend ændringer
STR_NEWGRF_SET_PARAMETERS :{BLACK}Indstil parametre
STR_NEWGRF_TIP :{BLACK}Liste med alle Newgrf sæt du har installeret. Marker et sæt for at ændre indstilliger.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Der er ingen newgrf filer installeret! Du kan læse i manualen hvordan man installerer newgrf sæt.
STR_NEWGRF_FILENAME :{BLACK}Filnavn:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Brugerdefineret møntfod
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Kurs: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Tilskuer:
STR_CURRENCY_PREFIX :{LTBLUE}Præfiks:
STR_CURRENCY_SUFFIX :{LTBLUE}Endetillæg:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Skift til Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Skift til Euro: {ORANGE}aldrig
STR_CURRENCY_PREVIEW :{LTBLUE}Eksempel: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Skift brugerdefineret møntfods parametre
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Tog
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Køretøjer
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Fly
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Skibe
STR_SCHEDULED_TRAINS_TIP :{BLACK}Vis alle tog, som har denne station i deres køreplan
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
+810 -159
View File
File diff suppressed because it is too large Load Diff
+1970 -1801
View File
File diff suppressed because it is too large Load Diff
+442 -303
View File
File diff suppressed because it is too large Load Diff
+262 -93
View File
@@ -310,6 +310,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 :Impérial (miles)
STR_013A_METRIC_KILOMETERS :Métrique (kilomètres)
@@ -342,7 +343,7 @@ STR_0157_PERFORMANCE_HISTORY_GRAPH :Historique de performance
STR_0158_COMPANY_VALUE_GRAPH :Valeur de la compagnie
STR_0159_CARGO_PAYMENT_RATES :Valeur des cargaisons
STR_015A_COMPANY_LEAGUE_TABLE :Classement des compagnies
STR_PERFORMANCE_DETAIL_MENU :Détail de l'évaluation de la performance
STR_PERFORMANCE_DETAIL_MENU :Détail des performances
############ range for menu ends
STR_015B_OPENTTD :{WHITE}OpenTTD
@@ -352,7 +353,8 @@ STR_015E_QUIT_GAME :Abandonner la partie
STR_015F_QUIT :Quitter le jeu
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Êtes vous sur de vouloir abandonner cette partie?
STR_0161_QUIT_GAME :{WHITE}Abandonner
STR_SORT_TIP :{BLACK}Sélectionne l'ordre de tri
STR_SORT_ORDER_TIP :{BLACK}Choisir l'ordre de tri croissant/décroissant
STR_SORT_CRITERIA_TIP :{BLACK}Choisir le critère de tri
SRT_SORT_BY :{BLACK}Trier par
STR_SORT_BY_POPULATION :{BLACK}Population
@@ -368,7 +370,7 @@ STR_SORT_BY_PROFIT_LAST_YEAR :Profit l'an dernier
STR_SORT_BY_PROFIT_THIS_YEAR :Profit cette année
STR_SORT_BY_AGE :Age
STR_SORT_BY_RELIABILITY :Fiabilité
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capacité totale par type de cargo
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capacité totale par cargo
STR_SORT_BY_MAX_SPEED :Vitesse maximum
############ range for months starts
@@ -417,6 +419,7 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Impossible de modifier l'intervalle de service...
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_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
@@ -495,6 +498,8 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Choisir Didacticiel/D
STR_01CE_CARGO_ACCEPTED :{BLACK}Cargaison acceptée: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Cargaison acceptée: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Cargaison acceptée: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Cargaison acceptée: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Cargaison acceptée: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -537,7 +542,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Choisir le programme 'nouveau style
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Choisir le programme personnalisé 'Personnalisé 1'
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Choisir le programme personnalisé 'Personnalisé 2'
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Balayer le programme courrant (Personnalisé 1 ou Personnalisé 2 seulement)
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Sauvegarder les préférences musicales
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Sauver les paramètres musicaux
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Cliquez sur une piste pour l'ajouter au pragramme courrant (Custom1 ou Custom2 seulement)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Active/Désactive le mode aléatoire
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Afficher la fenêtre de sélection de pistes
@@ -722,7 +727,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Noms de conception des Vehicule
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Par Défaut
STR_02BF_CUSTOM :Personnalisé
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Sauvegarder les noms personnalisés
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Sauver les noms personnalisés
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Sélection des noms de conception de véhicule
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Sauvegarder noms personnalisés de conception de véhicule
@@ -733,16 +738,20 @@ STR_02C5_DIFFICULTY_SETTINGS :Niveau de Difficult
STR_02C6_DIFFICULTY_SETTINGS :Niveau de Difficulté
STR_02C7_CONFIG_PATCHES :Configuration Avancée
STR_02C8_CONFIG_PATCHES :Configuration Avancée
STR_NEWGRF_SETTINGS :Paramètres Newgrf
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
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Afficher le nom des stations
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Afficher les panneaux
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Afficher les panneaux
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Afficher les points de contrôle
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Afficher les points de contrôle
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Afficher les pts de contrôle
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Afficher les pts de contrôle
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Animation complète
STR_02D0_FULL_ANIMATION :{SETX 12}Animation complète
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Détail Maximal
@@ -765,13 +774,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Afficher les subventions
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_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
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Coller depuis la vue
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Colle l'emplacement de cette vue vers la vue globale
STR_02DF_TOWN_DIRECTORY :Annuaire des villes
STR_02E0_CURRENCY_UNITS :{BLACK}Unité monétaire
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Sélection d'unité monétaire
@@ -795,16 +804,16 @@ STR_02F8_EVERY_3_MONTHS :Tous les 3 mois
STR_02F9_EVERY_6_MONTHS :Tous les 6 mois
STR_02FA_EVERY_12_MONTHS :Tous les 12 mois
STR_02FB_START_A_NEW_GAME :{BLACK}Commencer une nouvelle partie
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Charger une partie du disque
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Charger une partie sauvée
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Visionner démonstrations/didacticiels
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Créer un monde/scénario de jeu personnalisé
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Selectionner mode joueur simple
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Selectionner mode deux joueurs
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Sélectionnner une partie multi-joueurs de 2 à 8 joueurs
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Afficher les options du jeu
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Afficher les options de niveau de difficulté
STR_0303_START_A_NEW_GAME_USING :{BLACK}Débuter une nouvelle partie à partir d'un scénario
STR_0304_QUIT :{BLACK}Quitter
STR_0305_LEAVE_OPENTTD :{BLACK}Quitter OpenTTD
STR_0305_QUIT_OPENTTD :{BLACK}Quitter 'OpenTTD'
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Visionner démonstration/didacticiel
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...peut seulement être construit en ville
@@ -852,41 +861,46 @@ STR_TOWNNAME_SWEDISH :Su
STR_TOWNNAME_DUTCH :Hollandais
STR_TOWNNAME_FINNISH :Finnish
STR_TOWNNAME_POLISH :Polonais
STR_TOWNNAME_CZECH :Tchèques
STR_TOWNNAME_SLOVAKISH :Slovaques
STR_TOWNNAME_HUNGARIAN :Hongrois
STR_TOWNNAME_AUSTRIAN :Autrichiens
STR_TOWNNAME_ROMANIAN :Roumain
STR_TOWNNAME_CZECH :Tchèques
############ end of townname region
STR_CURR_POUNDS :Livres ({POUNDSIGN})
STR_CURR_DOLLARS :Dollars ($)
STR_CURR_FF :Francs (FF)
STR_CURR_DM :Marks Allemands (DM)
STR_CURR_GBP :Livres ({POUNDSIGN})
STR_CURR_USD :Dollars ($)
STR_CURR_EUR :Euros (¤)
STR_CURR_YEN :Yens ({YENSIGN})
STR_CURR_PT :Pesetas Espagnols (PT)
STR_CURR_FT :Florins Hongrois (FT)
STR_CURR_ZL :Zloty Polonais (ZL)
STR_CURR_ATS :Shilings Australiens (ATS)
STR_CURR_BEF :Francs Belges (BEF)
STR_CURR_DKK :Couronnes Danoise (DKK)
STR_CURR_FIM :Marks Finlandais (FIM)
STR_CURR_GRD :Drachmes Grec (GRD)
STR_CURR_CHF :Franc Suisse (CHF)
STR_CURR_NLG :Florins Hollandais (NLG)
STR_CURR_ITL :Lires Italiennes (ITL)
STR_CURR_SEK :Couronnes Suédoises (SEK)
STR_CURR_RUR :Roubles Russes (RUR)
STR_CURR_CZK :Couronnes Tchèques (CZK)
STR_CURR_DEM :Deutschmark (DEM)
STR_CURR_DKK :Couronnes Danoise (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Marks Finlandais (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Drachmes Grec (GRD)
STR_CURR_HUF :Hungarian Forint (HUF)
STR_CURR_ISK :Couronnes Islandaises (ISK)
STR_CURR_ITL :Lires Italiennes (ITL)
STR_CURR_NLG :Florins Hollandais (NLG)
STR_CURR_NOK :Cour. Norvégiennes (NOK)
STR_CURR_PLN :Polish Zloty (PLN)
STR_CURR_ROL :Leu Roumain (Lei)
STR_CURR_EUR :Euros (EUR)
STR_CURR_RUR :Roubles Russes (RUR)
STR_CURR_SEK :Couronnes Suédoises (SEK)
STR_CURR_CUSTOM :Personnalisé...
STR_OPTIONS_LANG :{BLACK}Langue
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Selectionner la langue d'interface à utiliser
STR_OPTIONS_FULLSCREEN :{BLACK}Plein écran
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Cochez cette case pour jouer à OpenTTD en plein écran
STR_OPTIONS_RES :{BLACK}Résolution
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Selectionner la résolution d'écran à utiliser
@@ -966,11 +980,13 @@ STR_CONFIG_PATCHES_OFF :D
STR_CONFIG_PATCHES_ON :Activé
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Afficher vitesse du véhicule dans la barre d'état: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Construction côtière et sur plans inclinés: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Permettre la suppression de plus de routes, ponts, tunnels, etc possédés par une ville: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Autorise des zones de désserte plus réalistes : {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Permettre la suppression de plus d'éléments possédés par une ville: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Permettre les trains plus longs: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Permettre les accélérations réalistes pour les trains: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Joindre les gares juxtaposées: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Pleine cargaison par un seul type, si 'chargement complet': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Utiliser l'algorithme amélioré de chargement : {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflation: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Livrer cargaison seulement lorsqu'il y a une demande: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Permettre la construction de ponts longs: {ORANGE}{STRING}
@@ -999,13 +1015,13 @@ STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :oui, mais exclut les v
STR_CONFIG_PATCHES_ORDER_REVIEW_ON :de tous les véhicules
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Alerte en cas de profit négatif pour un train: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Les véhicules n'expirent jamais: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Renouveller automatiquement les véhicules quand ils deviennent vieux
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Renouveller automatiquement le véhicule {ORANGE}{STRING}{LTBLUE} mois avant/après l'âge maximum
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Argent nécessaire pour le renouvellement automatique : {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Renouveller automatiquement les véhicules quand ils sont vieux
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_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 maximum des stations: {ORANGE}{STRING} {RED}Attention: Une valeur trop élevée ralentit le jeu
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Etendue max. des stations: {ORANGE}{STRING} {RED}Attention: Valeur élevée = jeu lent
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Entretenir automatiquement les hélicoptères à l'heliport: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Nombre de trains max. par joueur: {ORANGE}{STRING}
@@ -1037,6 +1053,8 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position de la barre d'outils princi
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Gauche
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Centrée
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Droite
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Rayon d'attraction des fenêtres : {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Rayon d'attraction des fenêtres : {ORANGE}disabled
STR_CONFIG_PATCHES_GUI :{BLACK}Interface
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Construction
@@ -1069,24 +1087,28 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Les jets ne se crashent plus (fr
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Changer de climat : {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Changer la date: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}En route pour {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}En route pour {CHECKPOINT}, {VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}En route pour {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}En route pour {WAYPOINT}, {VELOCITY}
STR_GO_TO_CHECKPOINT :Passant par {CHECKPOINT}
STR_GO_TO_WAYPOINT :Passant par {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Aller sans-arrêt via {WAYPOINT}
STR_CHECKPOINTNAME_CITY :Point de contrôle {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Point de contrôle {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Point de contrôle
STR_WAYPOINTNAME_CITY :Point de contrôle {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Point de contrôle {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Point de contrôle
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Modifier nom du point de contrôle
STR_WAYPOINT :{WHITE}Point de passage
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Choisir le type de point de passage
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Impossible de modifier le nom du point de contrôle...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Convertir rail en point de contrôle
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Impossible de construire point de contrôle ici...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Impossible de retirer point de contrôle ici...
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Modifier nom du point de contrôle
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Impossible de modifier le nom du point de contrôle...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Convertir rail en point de contrôle
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Impossible de construire point de contrôle ici...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Impossible de retirer point de contrôle ici...
STR_BUILD_AUTORAIL_TIP :{BLACK}Construire les rails avec le mode AutoRail
@@ -1099,6 +1121,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Beaucoup d'industries au hasard
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Couvrir la carte avec des industries placées au hasard
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Ne peut pas générer les industries...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Ouvre la barre d'outils du paysagiste pour monter/descendre du terrain, planter des arbres, etc.
STR_LANDSCAPING_TOOLBAR :{WHITE}Manipulation du paysage
STR_LEVEL_LAND_TOOLTIP :{BLACK}Niveler le terrain
@@ -1171,37 +1194,44 @@ TEMP_AI_ACTIVATED :{WHITE}Attention: cette nouvelle IA est en version alpha
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}L'interface réseau ne fonctionne pas pour le moment!
STR_NETWORK_MULTIPLAYER :{WHITE}Multijoueur
STR_NETWORK_FIND_SERVER :{BLACK}Trouver un serveur
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Cherche sur le réseau un serveur
STR_NETWORK_DIRECT_CONNECT :{BLACK}Connection directe
STR_NETWORK_ENTER_IP :{BLACK}Entrez l'adresse IP du serveur
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Permet la connection directe à une IP connue
STR_NETWORK_START_SERVER :{BLACK}Démarrer le serveur
STR_NETWORK_START_SERVER_TIP :{BLACK}Démarre son propre serveur
STR_NETWORK_PLAYER_NAME :{BLACK}Nom du joueur:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Ceci est le nom avec lequel les autres joueurs pourront vous identifier
STR_NETWORK_CONNECTION :{BLACK}Connection :
STR_NETWORK_CONNECTION_TIP :{BLACK}Choisissez entre un jeu Internet et un jeu sur réseau local
STR_NETWORK_SELECT_CONNECTION :{BLACK}Choisissez le type de connection:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Permet de choisir entre une partie sur sur internet ou sur un lan
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_START_SERVER :{BLACK}Démarrer le serveur
STR_NETWORK_START_SERVER_TIP :{BLACK}Démarre son propre serveur
STR_NETWORK_GAME_NAME :{BLACK}Nom
STR_NETWORK_GAME_NAME_TIP :{BLACK}Nom de la partie
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Joueurs présents dans la partie / Nombre maximum de joueurs
STR_NETWORK_MAP_SIZE :{BLACK}Taille
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Taille de la carte
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Langage, version du serveur, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Cliquez une partie de la liste pour la sélectionner
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_FIND_SERVER :{BLACK}Trouver un serveur
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Cherche sur le réseau un serveur
STR_NETWORK_ADD_SERVER :{BLACK}Ajouter un serveur
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Ajouter à la liste un serveur où le jeu cherchera toujours des parties en cours.
STR_NETWORK_ENTER_IP :{BLACK}Entrez l'adresse IP du serveur
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clients
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clients en ligne / clients max
STR_NETWORK_GAME_INFO :{SILVER}INFO DE LA PARTIE
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clients: {WHITE}{COMMA8} / {COMMA8}
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_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 !
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVEUR HORS-LIGNE
STR_NETWORK_SERVER_FULL :{SILVER}SERVEUR PLEIN
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERSION NON CORRESPONDANTE
STR_NETWORK_JOIN_GAME :{BLACK}Rejoindre la partie
@@ -1210,20 +1240,30 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Commencer une nouvelle partie
STR_NETWORK_NEW_GAME_NAME :{BLACK}Nom de la partie:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Le nom de la partie sera affiché aux autres joueurs dans le menu de sélection de partie multijoueur
STR_NETWORK_PASSWORD :{BLACK}Mot de passe:
STR_NETWORK_SET_PASSWORD :{BLACK}Choisir le mot de passe
STR_NETWORK_PASSWORD_TIP :{BLACK}Protéger votre partie avec un mot de passe si vous ne souhaitez pas que d'autres joueurs la rejoignent
STR_NETWORK_SELECT_MAP :{BLACK}Choisissez une carte:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Sur quelle carte voulez-vous jouer?
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Nombre de joueurs:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Choisissez le nombre maximum de joueurs. Vous n'êtes pas obligé de remplir tous les emplacements.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 joueurs
STR_NETWORK_3_PLAYERS :3 joueurs
STR_NETWORK_4_PLAYERS :4 joueurs
STR_NETWORK_5_PLAYERS :5 joueurs
STR_NETWORK_6_PLAYERS :6 joueurs
STR_NETWORK_7_PLAYERS :7 joueurs
STR_NETWORK_8_PLAYERS :8 joueurs
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Nombre de clients max. :
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Choisir un nombre maximum de clients. Tous les emplacements n'auront pas besoin d'être remplis.
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 (publier)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 clients
STR_NETWORK_3_CLIENTS :3 clients
STR_NETWORK_4_CLIENTS :4 clients
STR_NETWORK_5_CLIENTS :5 clients
STR_NETWORK_6_CLIENTS :6 clients
STR_NETWORK_7_CLIENTS :7 clients
STR_NETWORK_8_CLIENTS :8 clients
STR_NETWORK_9_CLIENTS :9 clients
STR_NETWORK_10_CLIENTS :10 clients
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Langue parlée :
STR_NETWORK_LANGUAGE_TIP :{BLACK}Les autres joueurs sauront quelle langue est parlée sur ce serveur.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Démarrer la partie
STR_NETWORK_START_GAME_TIP :{BLACK}Démarrer une nouvelle partie réseau à partir d'une carte aléatoire ou d'un scénario
STR_NETWORK_LOAD_GAME :{BLACK}Charger une partie
@@ -1231,17 +1271,62 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Continuer une partie multijoueur sauv
STR_NETWORK_LOAD_SCENARIO :{BLACK}Charger un scénario
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Démarrer une nouvelle partie réseau à partir d'un scénario
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Peu importe
STR_NETWORK_LANG_ENGLISH :Anglais
STR_NETWORK_LANG_GERMAN :Allemand
STR_NETWORK_LANG_FRENCH :Français
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Chat d'avant jeu
STR_NETWORK_SEND :{BLACK}Envoyer
STR_NETWORK_SEND_TIP :{BLACK}Envoie un message aux autres joueurs
STR_NETWORK_COMPANY_NAME :{BLACK}Nom de la compagnie:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Change le nom de votre compagnie. Appuyer sur Entrée pour valider les changements
STR_NETWORK_SPECTATE_GAME :{BLACK}Observer une partie
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Permet d'observer une partie en tant que spectateur
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Se prépare à rejoindre : {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Une liste des compagnies présentes dans le jeu. Vous pouvez soit en rejoindre une, soit en créer une.
STR_NETWORK_NEW_COMPANY :{BLACK}Nouvelle compagnie
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Crée une nouvelle compagnie
STR_NETWORK_READY :{BLACK}Prêt
STR_NETWORK_SPECTATE_GAME :{BLACK}Observer une partie
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Permet d'observer une partie en tant que spectateur
STR_NETWORK_JOIN_COMPANY :{BLACK}Rejoindre la compagnie
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Aider à gérer cette compagnie
STR_NETWORK_REFRESH :{BLACK}Rafraîchir
STR_NETWORK_REFRESH_TIP :{BLACK}Rafraîchir les infos à propos du serveur
STR_NETWORK_COMPANY_INFO :{SILVER}INFO DE LA COMPAGNIE
STR_NETWORK_COMPANY_NAME :{SILVER}Nom de la compagnie : {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Inauguration : {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Valeur de la compagnie : {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Argent courant : {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Revenus de l'année dernière : {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Performance : {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Véhicules : {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stations : {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Joueurs : {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Connection en cours...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Connection en cours..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Autorisation en cours..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Attente..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Téléchargement de la carte..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Traitement des données..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Enregistrement..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Rapatriement des infos sur le jeu..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Rapatriement des infos sur la compagnie..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} client(s) avant nous
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} ko déjà téléchargés
STR_NETWORK_DISCONNECT :{BLACK}Déconnecter
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Entrez votre message à envoyer
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Enter the amount of money you want to give
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Le serveur est protégé. Entrez le mot de passe
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}La compagnie est protégée. Entrez le mot de passe
STR_NETWORK_CLIENT_LIST :{WHITE}Liste des clients
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Aucun périphérique réseau trouvé ou programme compilé sans ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Aucune partie réseau n'a été trouvée
@@ -1249,7 +1334,56 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE} Le serveur n'a pas r
STR_NETWORK_ERR_DESYNC :{WHITE} La synchronisation de la partie réseau a échouée.
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} La connection de la partie réseau a été perdue.
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} La sauvegarde serveur n'a pas pu être chargée.
STR_NETWORK_ERR_SERVER_START :{WHITE} Le serveur n'a pas pu être démarré.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Connection échouée.
STR_NETWORK_ERR_TIMEOUT :{WHITE} La connection #{NUMU16} a dépassé le temps d'attente.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Il y a eu une erreur de protocole et la connection est donc fermée.
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_KICKED :{WHITE} Vous avez été jeté du serveur
STR_NETWORK_ERR_CHEATER :{WHITE} Tricher n'est pas autorisé sur ce serveur
STR_NETWORK_ERR_LEFT :a quitté la partie
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :erreur générale
STR_NETWORK_ERR_CLIENT_DESYNC :erreur de désynchronisation
STR_NETWORK_ERR_CLIENT_SAVEGAME :chargement de la carte impossible
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :connection perdue
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :erreur de protocole
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :non autorisé
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :paquet étrange reçu
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :révision incorrecte
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :nom déjà utilisé
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :mot de passe de partie incorrect
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :mauvais player-id dans DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :jeté par le serveur
STR_NETWORK_ERR_CLIENT_CHEATER :a tenté de tricher
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :a rejoint la partie
STR_NETWORK_GIVE_MONEY :vous a donné un peu d'argent ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :vous avez donné à {STRING} de l'argent ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Equipe] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Equipe] A {STRING}:
STR_NETWORK_CHAT_CLIENT :[Privé] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Privé] A {STRING}:
STR_NETWORK_CHAT_ALL :[Tous] {STRING}:
STR_NETWORK_NAME_CHANGE :a changé son nom pour
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Le serveur a fermé la session
STR_NETWORK_SERVER_REBOOT :{WHITE} Le serveur redémarre...{}Veuillez patienter...
STR_NETWORK_SERVER :Serveur
STR_NETWORK_CLIENT :Client
STR_NETWORK_CLIENTLIST_NONE :(aucun)
STR_NETWORK_CLIENTLIST_KICK :Jeter
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Donner de l'argent
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Parler à tous
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Parler à la compagnie
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Message privé
STR_NETWORK_SEND :{BLACK}Envoyer
############ end network gui strings
@@ -1325,7 +1459,7 @@ STR_1802_ROAD_CONSTRUCTION :{WHITE}Construction routi
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Choisir Pont Routier
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Impossible de construire la route ici...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Impossible de retirer la route ici...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Orientation du dépôt routier
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Orientation du dépôt
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Impossible de construire un dépôt routier ici...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Impossible de construire un arrêt d'autobus...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Impossible de construire une station de camions...
@@ -1538,7 +1672,7 @@ STR_3062_BUS_STATION :Arr
STR_3063_SHIP_DOCK :Port
STR_3064_HIGHLIGHT_COVERAGE_AREA :{BLACK}Afficher la zone couverte
STR_3065_DON_T_HIGHLIGHT_COVERAGE :{BLACK}Ne pas afficher la zone couverte
STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}Affichage de la zone couverte
STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}Afficher la zone couverte
STR_3067_MONORAIL_STATION_SELECT :{WHITE}Choix de la gare monorail
STR_3068_DOCK :{WHITE}Port
STR_3069_BUOY :Bouée
@@ -1820,7 +1954,7 @@ STR_683B_HOSTILE :Hostile
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7002_PLAYER :(Joueur {COMMA16})
STR_7004_NEW_FACE :{BLACK}Nouveau visage
STR_7005_COLOR_SCHEME :{BLACK}Couleur
@@ -1832,7 +1966,7 @@ STR_700A_COMPANY_NAME :Nom de la soci
STR_700B_PRESIDENT_S_NAME :Nom du P.D.G.
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Impossible de changer le nom de compagnie...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Impossible de changer le nom du P.D.G. ...
STR_700E_FINANCES :{WHITE}Finances: {STRING}{BLACK}{STRING}
STR_700E_FINANCES :{WHITE}Finances: {STRING} {BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Dépenses/Revenus
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Construction
@@ -1937,6 +2071,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reconstruit le quartier g
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Impossible de construire le siège...
STR_7072_VIEW_HQ :{BLACK}Voir le siège
STR_RELOCATE_HQ :{BLACK}Déménager le QG
STR_COMPANY_PASSWORD :{BLACK}Mot de passe
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Permet de protéger par mot de passe votre compagnie pour empêcher des utilisateurs non-autorisés de rejoindre. Utilisez '*' pour vider le mot de passe.
STR_SET_COMPANY_PASSWORD :Choisir le mot de passe de la compagnie
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Récession mondiale!{}{}Les experts financiers craignent le pire!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Fin de la récession!{}{}La reprise redonne confiance aux industries!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Bascule entre une grande/petite fenêtre
@@ -2286,8 +2423,8 @@ STR_8838_N_A :N/D{SKIP}
STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Impossible de vendre le véhicule ferroviaire...
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Impossible de trouver la route jusqu'au dépôt
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Impossible de démarrer/stopper le train...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Intervalle de maintenance: {LTBLUE}{COMMA16}jours{BLACK} Dernière maintenance: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalle de maintenance: {LTBLUE}{COMMA16}%{BLACK} Dernière maintenance: {LTBLUE}{DATE_LONG}
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Intervalle de maintenance: {LTBLUE}{COMMA16}jours{BLACK} , dernière le : {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Intervalle de maintenance: {LTBLUE}{COMMA16}%{BLACK} , dernière le : {LTBLUE}{DATE_LONG}
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Trains - Cliquez sur un train pour obtenir des informations
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Contruire de nouveaux trains (nécessite un dépôt ferroviaire)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Trains - Cliquez sur un train pour obtenir des informations, glissez le wagon pour l'ajouter/le supprimer du train
@@ -2475,7 +2612,7 @@ STR_GO_TO_SHIP_DEPOT :Aller au d
SERVICE_AT_SHIP_DEPOT :Maintenance au dépôt de {TOWN}
##id 0xA000
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Construction d'Aéroport
STR_A000_AIRPORTS :{WHITE}Aéroports
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Impossible de construire un aéroport ici...
STR_A002_AIRCRAFT_HANGAR :{WHITE}Hangar à {STATION}
STR_A003_NEW_AIRCRAFT :{BLACK}Nouvel aéronef
@@ -2563,8 +2700,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}Le jeu est en pause.{}La commande ne peut pa
STR_PERFORMANCE_DETAIL :{WHITE}Détail de l'évaluation de la performance
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Détail
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2590,3 +2727,35 @@ STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Quantit
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Avez-vous un emprunt élevé ?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Total des points par rapport aux points possibles.
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Paramètres Newgrf
STR_NEWGRF_APPLY_CHANGES :{BLACK}Appliquer les changements
STR_NEWGRF_SET_PARAMETERS :{BLACK}Changer les paramètres
STR_NEWGRF_TIP :{BLACK}Une liste de tous les sets Newgrf que vous avez installé. Cliquez un set pour changer les paramètres.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Il n'y a actuellement aucun fichier Newgrf installé ! Veuillez vous référer au manuel pour des instructions sur l'installation de nouveaux graphiques.
STR_NEWGRF_FILENAME :{BLACK}Nom de fichier:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Devise personnalisée
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Taux de change : {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Separateur :
STR_CURRENCY_PREFIX :{LTBLUE}Préfixe :
STR_CURRENCY_SUFFIX :{LTBLUE}Suffixe :
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Passer à l'Euro : {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Passer à l'Euro : {ORANGE}jamais
STR_CURRENCY_PREVIEW :{LTBLUE}Prévisualisation : {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Changer les paramètres de devises personnalisées
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Trains
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Véhicules routiers
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Aéronefs
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Navires
STR_SCHEDULED_TRAINS_TIP :{BLACK}Montre tous les trains qui ont cette station dans leur itinéraire
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
+1927 -1705
View File
File diff suppressed because it is too large Load Diff
+260 -91
View File
@@ -310,6 +310,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 :Imperial (Meilen)
STR_013A_METRIC_KILOMETERS :Metrisch (Kilometer)
@@ -352,7 +353,8 @@ STR_015E_QUIT_GAME :Spiel beenden
STR_015F_QUIT :Beenden
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Bist du sicher, dass du das Spiel beenden willst?
STR_0161_QUIT_GAME :{WHITE}Spiel beenden
STR_SORT_TIP :{BLACK}Sortierreihenfolge auswählen
STR_SORT_ORDER_TIP :{BLACK}Sortierreihenfolge auswählen absteigend/aufsteigend
STR_SORT_CRITERIA_TIP :{BLACK}Sortierkriterium auswählen
SRT_SORT_BY :{BLACK}Sortieren nach
STR_SORT_BY_POPULATION :{BLACK}Bevölkerung
@@ -417,6 +419,7 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Das Wartungsintervall kann nicht geändert werden...
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_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
@@ -495,6 +498,8 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Einf
STR_01CE_CARGO_ACCEPTED :{BLACK}Akzeptierte Fracht: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Akzeptierte Fracht: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Akzeptierte Fracht: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Akzeptierte Fracht: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Akzeptierte Fracht: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -537,7 +542,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Programm 'Modern' w
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Programm 'Individuell 1' (benutzerdefiniert) wählen
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Programm 'Individuell 2' (benutzerdefiniert) wählen
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Lösche laufendes Programm (nur für Individuell 2 und Individuell 2)
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Sichere Musikeinstellungen
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Musikeinstellungen speichern
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Klicke auf den Musiktitel, um ihn in das laufende Programm zu übernehmen (nur für Individuell 1 und Individuell 2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Schalte Programmauswahl an/aus
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Zeige Musiktitelauswahl
@@ -722,7 +727,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Fahrzeugnamen
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Standard
STR_02BF_CUSTOM :Eigene
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Eigene Namen abspeichern
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Angepasste Namen speichern
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Auswahl der Fahrzeugnamen
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Eigene Namen abspeichern
@@ -733,16 +738,20 @@ STR_02C5_DIFFICULTY_SETTINGS :Schwierigkeitsgrad
STR_02C6_DIFFICULTY_SETTINGS :Schwierigkeitsgrad
STR_02C7_CONFIG_PATCHES :Einstellungen der Patches
STR_02C8_CONFIG_PATCHES :Einstellungen der Patches
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
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Stationsnamen anzeigen
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Schilder anzeigen
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Schilder anzeigen
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Wegpunkte anzeigen
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Wegpunkte anzeigen
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Wegpunkte anzeigen
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Wegpunkte anzeigen
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Vollständige Animation
STR_02D0_FULL_ANIMATION :{SETX 12}Vollständige Animation
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Vollständige Detailansicht
@@ -765,13 +774,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Subventionen anzeigen
STR_02DD_SUBSIDIES :Subventionen
STR_02DE_MAP_OF_WORLD :Weltkarte
STR_EXTRA_VIEW_PORT :Zusatzansicht
STR_02DF_TOWN_DIRECTORY :Städteverzeichnis
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
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Aus Zusatzansicht
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Kopieren der Position dieser Zusatzansicht ins Hauptfenster
STR_02DF_TOWN_DIRECTORY :Städteverzeichnis
STR_02E0_CURRENCY_UNITS :{BLACK}Währung
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Währung auswählen
@@ -795,16 +804,16 @@ STR_02F8_EVERY_3_MONTHS :Alle 3 Monate
STR_02F9_EVERY_6_MONTHS :Alle 6 Monate
STR_02FA_EVERY_12_MONTHS :Alle 12 Monate
STR_02FB_START_A_NEW_GAME :{BLACK}Ein neues Spiel beginnen
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Einen Spielstand laden
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Ein gespeichertes Spiel laden
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Übung / Einführung
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Eine eigene Spielwelt / Szenario kreieren
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Einspielermodus wählen
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Mehrspielermodus wählen
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Mehrspielerspiel mit 2-8 Spielern wählen
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Spieleinstellungen anzeigen
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Schwierigkeitsgrad anzeigen
STR_0303_START_A_NEW_GAME_USING :{BLACK}Starte ein neues Spiel in einem eigenen Szenario
STR_0304_QUIT :{BLACK}Beenden
STR_0305_LEAVE_OPENTTD :{BLACK}'OpenTTD' verlassen und beenden
STR_0305_QUIT_OPENTTD :{BLACK}'OpenTTD' beenden
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Übung / Einführung anzeigen
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kann nur in Städten gebaut werden
@@ -827,7 +836,7 @@ STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kann nur im W
STR_0319_PAUSED :{YELLOW}* * ANGEHALTEN * *
STR_031B_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot ist gespeichert als '{STRING}'
STR_031C_SCREENSHOT_FAILED :{WHITE}Screenshot misslungen !
STR_031C_SCREENSHOT_FAILED :{WHITE}Screenshot misslungen!
STR_0329_PURCHASE_LAND_FOR_FUTURE :{BLACK}Land für künftige Nutzung kaufen
STR_032A_1_ROAD_VEHICLE_SERVICE :{BLACK}1: Fahrzeugreparatur
@@ -852,41 +861,46 @@ STR_TOWNNAME_SWEDISH :Schwedisch
STR_TOWNNAME_DUTCH :Niederländisch
STR_TOWNNAME_FINNISH :Finnisch
STR_TOWNNAME_POLISH :Polnisch
STR_TOWNNAME_CZECH :Tschechisch
STR_TOWNNAME_SLOVAKISH :Slovakisch
STR_TOWNNAME_HUNGARIAN :Ungarisch
STR_TOWNNAME_AUSTRIAN :Österreichisch
STR_TOWNNAME_ROMANIAN :Rumänisch
STR_TOWNNAME_CZECH :Tschechisch
############ end of townname region
STR_CURR_POUNDS :Pfund ({POUNDSIGN})
STR_CURR_DOLLARS :Dollar ($)
STR_CURR_FF :Frz. Franc (FF)
STR_CURR_DM :Deutsche Mark (DM)
STR_CURR_GBP :Pfund ({POUNDSIGN})
STR_CURR_USD :Dollar ($)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_PT :Peseten (Pt)
STR_CURR_FT :Ungarische Forint (Ft)
STR_CURR_ZL :Polnische Zloty (zl)
STR_CURR_ATS :Österreich. Schilling (ATS)
STR_CURR_BEF :Belgische Franc (BEF)
STR_CURR_DKK :Dänische Kronen (DKK)
STR_CURR_FIM :Finnmark (FIM)
STR_CURR_GRD :Griech. Drachmen (GRD)
STR_CURR_CHF :Schweizer Franken (CHF)
STR_CURR_NLG :Niederländ. Gulden (NLG)
STR_CURR_ITL :Italienische Lira (ITL)
STR_CURR_SEK :Swedische Kronen (SEK)
STR_CURR_RUR :Russische Rubel (rur)
STR_CURR_CZK :Tschechische Koruna (CZK)
STR_CURR_DEM :Deutsche Mark (DEM)
STR_CURR_DKK :Dänische Kronen (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Finnmark (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Griech. Drachmen (GRD)
STR_CURR_HUF :Ungarische Forint (HUF)
STR_CURR_ISK :Isländische Krona (ISK)
STR_CURR_ITL :Italienische Lira (ITL)
STR_CURR_NLG :Niederländ. Gulden (NLG)
STR_CURR_NOK :Norwegische Kronen (NOK)
STR_CURR_PLN :Polnische Zloty (PLN)
STR_CURR_ROL :Rumänische Lei (Lei)
STR_CURR_EUR :Euro (€)
STR_CURR_RUR :Russische Rubel (rur)
STR_CURR_SEK :Swedische Kronen (SEK)
STR_CURR_CUSTOM :Eigene...
STR_OPTIONS_LANG :{BLACK}Sprache
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Sprache für die Oberfläche aussuchen
STR_OPTIONS_FULLSCREEN :{BLACK}Vollbild
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Diese Checkbox aktivieren, um OpenTTD im Vollbildmodus zu spielen
STR_OPTIONS_RES :{BLACK}Bildschirmgröße
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Bildschirmgröße auswählen
@@ -966,11 +980,13 @@ STR_CONFIG_PATCHES_OFF :Aus
STR_CONFIG_PATCHES_ON :An
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Zeige Fahrzeuggeschwindigkeit in der Statusleiste: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Erlaube das Bauen an Hängen und Küsten: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Aktiviere realistische Einzugsgebiete: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Erlaube die Entfernung von Industrien, weiteren Straßen usw.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Erlaube das Bauen von sehr langen Zügen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Realistische Zugbeschleunigung aktivieren: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Bahnhöfe vereinigen, die nebeneinander gebaut werden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Verlasse die Station, wenn eine Fracht vollgeladen ist: {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Verbessertes Beladeverfahren nutzen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflation: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Liefere Fracht nur, wenn die Station diese annimmt: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Erlaube das Bauen von sehr langen Brücken: {ORANGE}{STRING}
@@ -1037,6 +1053,8 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Position der Haupttoolbar: {ORANGE}{
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Links
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Mitte
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Rechts
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Fenster schnappen aneinander, wenn näher als: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Fenster schnappen aneinander, wenn näher als: {ORANGE}ausgeschaltet
STR_CONFIG_PATCHES_GUI :{BLACK}Oberfläche
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Konstruktion
@@ -1069,24 +1087,28 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Flugzeuge st
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Wechsle Klima: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Ändere Datum: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Fahre zu {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Fahre zu {CHECKPOINT}, {VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Fahre zu {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Fahre zu {WAYPOINT}, {VELOCITY}
STR_GO_TO_CHECKPOINT :Fahre über {CHECKPOINT}
STR_GO_TO_WAYPOINT :Fahre über {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Fahre ohne Halt über {WAYPOINT}
STR_CHECKPOINTNAME_CITY :Wegpunkt {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Wegpunkt {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Wegpunkt
STR_WAYPOINTNAME_CITY :Wegpunkt {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Wegpunkt {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Wegpunkt
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Wegpunktename ändern
STR_WAYPOINT :{WHITE}Wegpunkt
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Wegpunkttyp auswählen
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Kann Wegpunktname nicht ändern...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Ändere Schiene in einen Wegpunkt
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Kann Wegpunkt hier nicht bauen...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Kann Wegpunkt hier nicht entfernen...
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Wegpunktename ändern
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Kann Wegpunktname nicht ändern...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Ändere Schiene in einen Wegpunkt
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Kann Wegpunkt hier nicht bauen...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Kann Wegpunkt hier nicht entfernen...
STR_BUILD_AUTORAIL_TIP :{BLACK}Bauen von Schienen unter Verwendung des Autoschienenmodus
@@ -1099,7 +1121,8 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Viele zuf
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Bedecke die Karte mit zufällig platzierten Industrien
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kann keine Industrie erzeugen...
STR_LANDSCAPING_TOOLBAR :{WHITE}Landschaft bearbeiten
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Öffne die Landschaftsbau-Toolbar, um Land zu senken/heben, Bäume zu pflanzen, etc.
STR_LANDSCAPING_TOOLBAR :{WHITE}Landschaftsbau
STR_LEVEL_LAND_TOOLTIP :{BLACK}Land ausgleichen
@@ -1171,59 +1194,76 @@ TEMP_AI_ACTIVATED :{WHITE}Achtung: Die neue KI ist noch im Alpha-Stadium. D
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Der Netzwerkdialog funktioniert noch{}nicht vollständig!
STR_NETWORK_MULTIPLAYER :{WHITE}Mehrspieler
STR_NETWORK_FIND_SERVER :{BLACK}Server suchen
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Netzwerk nach einem Server durchsuchen
STR_NETWORK_DIRECT_CONNECT :{BLACK}Direkt verbinden
STR_NETWORK_ENTER_IP :{BLACK}IP Adresse des Servers eingeben
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Zu einer bekannten IP verbinden
STR_NETWORK_START_SERVER :{BLACK}Server Starten
STR_NETWORK_START_SERVER_TIP :{BLACK}Einen eigenen Server starten
STR_NETWORK_PLAYER_NAME :{BLACK}Spielername:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Mit diesem Namen identifizieren dich andere Spieler
STR_NETWORK_CONNECTION :{BLACK}Verbindung:
STR_NETWORK_CONNECTION_TIP :{BLACK}Wähle zwischen Internet oder LAN-Verbindung aus
STR_NETWORK_SELECT_CONNECTION :{BLACK}Verbindungstyp wählen:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Zwischen Internetspiel und Spiel im lokalen Netz wählen
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_START_SERVER :{BLACK}Server Starten
STR_NETWORK_START_SERVER_TIP :{BLACK}Einen eigenen Server starten
STR_NETWORK_GAME_NAME :{BLACK}Name
STR_NETWORK_GAME_NAME_TIP :{BLACK}Name des Spiels
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Spieler im Spiel/Maximale Anzahl Spieler
STR_NETWORK_MAP_SIZE :{BLACK}Größe
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Größe der Karte
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Sprache, Server version, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Ein Spiel der Liste durch Anklicken wählen
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_FIND_SERVER :{BLACK}Server suchen
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Netzwerk nach einem Server durchsuchen
STR_NETWORK_ADD_SERVER :{BLACK}Server hinzufügen
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Fügt einen Server zu der Liste von Servern hinzu, die immer nach laufenden Spielen kontrolliert werden.
STR_NETWORK_ENTER_IP :{BLACK}IP Adresse des Servers eingeben
STR_NETWORK_JOIN_GAME :{BLACK}Dem Spiel beitreten
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}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_START_DATE :{SILVER}Startdatum: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Aktuelles Datum: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Passwort geschützt!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SERVER VOLL
STR_NETWORK_VERSION_MISMATCH :{SILVER}Versionskonflikt festgestellt
STR_NETWORK_JOIN_GAME :{BLACK}Spiel betreten
STR_NETWORK_START_GAME_WINDOW :{WHITE}Neues Spiel beginnen
STR_NETWORK_NEW_GAME_NAME :{BLACK}Spielname:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Der Name des Spieles wird anderen Spielern im Mehrspielerdialog angezeigt
STR_NETWORK_PASSWORD :{BLACK}Passwort:
STR_NETWORK_SET_PASSWORD :{BLACK}Passwort setzen
STR_NETWORK_PASSWORD_TIP :{BLACK}Vergebe ein Passwort, um zu verhindern, dass unbefugte Leute beitreten können
STR_NETWORK_SELECT_MAP :{BLACK}Karte auswählen:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Welche Karte möchtest du spielen?
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Anzahl der Spieler:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Wähle eine maximale Spielerzahl. Es können auch weniger mitspielen.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 Spieler
STR_NETWORK_3_PLAYERS :3 Spieler
STR_NETWORK_4_PLAYERS :4 Spieler
STR_NETWORK_5_PLAYERS :5 Spieler
STR_NETWORK_6_PLAYERS :6 Spieler
STR_NETWORK_7_PLAYERS :7 Spieler
STR_NETWORK_8_PLAYERS :8 Spieler
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Max. Anzahl an Clients:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Wählt die max. Anzahl an Clienten aus. Nicht alle Slots müssen belegt werden.
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 (ankündigen)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 Clienten
STR_NETWORK_3_CLIENTS :3 Clienten
STR_NETWORK_4_CLIENTS :4 Clienten
STR_NETWORK_5_CLIENTS :5 Clienten
STR_NETWORK_6_CLIENTS :6 Clienten
STR_NETWORK_7_CLIENTS :7 Clienten
STR_NETWORK_8_CLIENTS :8 Clienten
STR_NETWORK_9_CLIENTS :9 Clienten
STR_NETWORK_10_CLIENTS :10 Clienten
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Gesprochene Sprachen:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Damit andere Spieler wissen, welche Sprache auf diesem Server gesprochen wird.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Spiel beginnen
STR_NETWORK_START_GAME_TIP :{BLACK}Startet ein neues Mehrspielerspiel auf einer Zufallskarte oder einem Szenario
STR_NETWORK_LOAD_GAME :{BLACK}Spiel Laden
@@ -1231,17 +1271,62 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}L
STR_NETWORK_LOAD_SCENARIO :{BLACK}Szenario Laden
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Startet ein Mehrspielerspiel in einem Szenario
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Egal
STR_NETWORK_LANG_ENGLISH :Englisch
STR_NETWORK_LANG_GERMAN :Deutsch
STR_NETWORK_LANG_FRENCH :Französisch
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Mehrspielerlobby
STR_NETWORK_SEND :{BLACK}Absenden
STR_NETWORK_SEND_TIP :{BLACK}Schicke eine Nachricht an die anderen Spieler
STR_NETWORK_COMPANY_NAME :{BLACK}Firmenname:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Ändere den Namen des Unternehmens. Mit Eingabetaste bestätigen.
STR_NETWORK_SPECTATE_GAME :{BLACK}Beim Spiel zusehen
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Als Zuschauer dem Spiel zusehen
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Spieleintritt vorbereiten: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Eine Liste aller Firmen, die sich im Spiel befinden.
STR_NETWORK_NEW_COMPANY :{BLACK}Neues Unternehmen
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Ein neues Unternehmen gründen
STR_NETWORK_READY :{BLACK}Fertig
STR_NETWORK_SPECTATE_GAME :{BLACK}Beim Spiel zusehen
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Als Zuschauer dem Spiel zusehen
STR_NETWORK_JOIN_COMPANY :{BLACK}Firma beitreten
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Beim Verwalten der Firma helfen
STR_NETWORK_REFRESH :{BLACK}Aktualisieren
STR_NETWORK_REFRESH_TIP :{BLACK}Aktuallisiert die Serverinformationen
STR_NETWORK_COMPANY_INFO :{SILVER}Firmenprofil
STR_NETWORK_COMPANY_NAME :{SILVER}Firmenname: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Gründung: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Firmenwert: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Kontostand: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Einkommen (letzes Jahr): {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Leistung: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Fahrzeuge: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stationen: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Spieler: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Verbinde...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Verbinde..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Authorisierung..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Warten..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Herunterladen der Karte..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Verarbeite Spieldaten..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrieren...
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Hole Spielinformationen..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Hole Firmeninformationen..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} Client(en) vor uns
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} KB bisher heruntergeladen
STR_NETWORK_DISCONNECT :{BLACK}Trennen
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Gib deine Nachricht ein
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Gib an wieviel Geld du geben möchtest
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server ist geschützt. Gib das Passwort ein
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firma ist geschützt! Passwort eingeben
STR_NETWORK_CLIENT_LIST :{WHITE}Clientenliste
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE}Keine Netzwerkschnittstellen gefunden oder ohne ENABLE_NETWORK kompiliert
STR_NETWORK_ERR_NOSERVER :{WHITE}Keine Netzwerkspiele gefunden
@@ -1249,7 +1334,56 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE}Der Server antwortete nicht auf die Anf
STR_NETWORK_ERR_DESYNC :{WHITE}Synchronisation des Netzwerkspiels fehlgeschlagen.
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE}Verbindung zum Netzwerkspiel verloren.
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE}Spielstand konnte nicht vom Server geladen werden.
STR_NETWORK_ERR_SERVER_START :{WHITE} Server konnte nicht gestartet werden.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Verbindung konnte nicht hergestellt werden.
STR_NETWORK_ERR_TIMEOUT :{WHITE}Verbindung #{NUMU16} abgelaufen.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Protokollfehler: Die Verbindung musste getrennt werden.
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_KICKED :{WHITE} Sie wurden vom Server gekickt.
STR_NETWORK_ERR_CHEATER :{WHITE} Cheating ist auf diesem Server nicht erlaubt
STR_NETWORK_ERR_LEFT :hat das Spiel verlassen.
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :Allgemeiner Fehler
STR_NETWORK_ERR_CLIENT_DESYNC :Synchronisationsfehler
STR_NETWORK_ERR_CLIENT_SAVEGAME :Map konnte nicht geladen werden.
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :Verbindung verloren
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :Protokollfehler
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :nicht authorisiert
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :Unerwartetes Paket empfangen
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :Falsche Version
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :Name wird bereits verwendet
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :Falsches Spiel-Passwort
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :Falsche-SpielerID in DoCommand (Verarbeitungsfehler)
STR_NETWORK_ERR_CLIENT_KICKED :gekickt
STR_NETWORK_ERR_CLIENT_CHEATER :versuchte einen Cheat zu nutzen
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :hat das Spiel betreten
STR_NETWORK_GIVE_MONEY :gab dir etwas Geld ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :Du hast {STRING} etwas Geld gegeben ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Team] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Team] An {STRING}:
STR_NETWORK_CHAT_CLIENT :[Privat] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Privat] An {STRING}:
STR_NETWORK_CHAT_ALL :[Alle] {STRING}:
STR_NETWORK_NAME_CHANGE :hat seinen Namen geändert zu
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Der Server hat das Spiel beendet.
STR_NETWORK_SERVER_REBOOT :{WHITE} Der Server startet neu...{}Bitte warten...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Client
STR_NETWORK_CLIENTLIST_NONE :(keiner)
STR_NETWORK_CLIENTLIST_KICK :Kicken
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Geld geben
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Mit allen sprechen
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Mit eigener Firma sprechen
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Private Nachricht
STR_NETWORK_SEND :{BLACK}Senden
############ end network gui strings
@@ -1325,7 +1459,7 @@ STR_1802_ROAD_CONSTRUCTION :{WHITE}Stra
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Brücke wählen
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kann hier keine Straße bauen...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kann diese Straße nicht entfernen...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Fahrzeugdepotausrichtung
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Fahrzeugdepot-Ausr.
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kann Fahrzeugdepot hier nicht bauen...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kann Busbahnhof nicht bauen...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kann Lkw-Ladeplatz nicht bauen...
@@ -1449,7 +1583,7 @@ STR_2801_PLACE_SIGN :Schild aufstellen
STR_2802_TREES :{WHITE}Bäume
STR_2803_TREE_ALREADY_HERE :{WHITE}...hier sind bereits Bäume
STR_2804_SITE_UNSUITABLE :{WHITE}...ungeeignetes Gelände
STR_2805_CAN_T_PLANT_TREE_HERE :{WHITE}Schild kann hier nicht aufgestellt werden...
STR_2805_CAN_T_PLANT_TREE_HERE :{WHITE}Baum kann hier nicht gepflanzt werden...
STR_2806 :{WHITE}{STRING}
STR_2807 :{TINYFONT}{WHITE}{STRING}
STR_2808_TOO_MANY_SIGNS :{WHITE}...zu viele Schilder
@@ -1500,8 +1634,8 @@ STR_303E_NO_LONGER_ACCEPTS :{WHITE}{STATION} akzeptiert keine {STRING} mehr
STR_303F_NO_LONGER_ACCEPTS_OR :{WHITE}{STATION} akzeptiert keine {STRING} oder {STRING} mehr
STR_3040_NOW_ACCEPTS :{WHITE}{STATION} akzeptiert jetzt {STRING}
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} akzeptiert jetzt {STRING} und {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Ausrichtung des Busbahnhofes
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Ausrichtung des Lkw-Ladeplatzes
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Busbahnhof-Ausr.
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Lkw-Ladeplatzes-Ausr.
STR_3044_TOO_CLOSE_TO_ANOTHER_BUS :{WHITE}Zu dicht an einem anderen Busbahnhof
STR_3045_TOO_CLOSE_TO_ANOTHER_TRUCK :{WHITE}Zu dicht an einer anderen Lkw-Ladestation
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Der Busbahnhof muss erst abgerissen werden
@@ -1633,7 +1767,7 @@ STR_4831_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}...Wald kann nur oberhalb der Sch
STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT}{TOWN} {STRING} gibt bevorstehende Schließung bekannt!
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}Wegen fehlender Rohstoffe kündigt {TOWN} {STRING} die drohende Schließung an!
STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}Wegen Holzmangel gibt {TOWN} {STRING} die bevorstehende Schließung bekannt!
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{TOWN} {STRING} erhöht die Produktion !
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{TOWN} {STRING} erhöht die Produktion!
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Neue Kohlevorkommen bei {TOWN} {STRING} gefunden!{}Förderung verdoppelt!
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}Neue Ölfunde bei {TOWN} {STRING}!{}Förderung wird vermutlich verdoppelt!
STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}Neue Getreideanbaumethoden bei {TOWN} {STRING} werden Erträge verdoppeln!
@@ -1820,7 +1954,7 @@ STR_683B_HOSTILE :Feindlich
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7002_PLAYER :(Spieler {COMMA16})
STR_7004_NEW_FACE :{BLACK}Neues Gesicht
STR_7005_COLOR_SCHEME :{BLACK}Farbauswahl
@@ -1913,7 +2047,7 @@ STR_7059_TRANSPORT_COMPANY_MERGER :{BLACK}{BIGFONT}Transportfirmen fusioniere
STR_705A_HAS_BEEN_SOLD_TO_FOR :{BLACK}{BIGFONT}{STRING} ist verkauft worden an {STRING} für {CURRENCY}!
STR_705B_WE_ARE_LOOKING_FOR_A_TRANSPORT :{WHITE}Wir suchen jemanden, der die Firma übernimmt.{}{}Nehmen Sie das Angebot an und kaufen {STRING} für {CURRENCY}?
STR_705C_BANKRUPT :{BLACK}{BIGFONT}Insolvenz!
STR_705D_HAS_BEEN_CLOSED_DOWN_BY :{BLACK}{BIGFONT}{STRING} ist von den Gläubigern geschlossen worden, alles Vermögen wurde veräussert !
STR_705D_HAS_BEEN_CLOSED_DOWN_BY :{BLACK}{BIGFONT}{STRING} ist von den Gläubigern geschlossen worden, alles Vermögen wurde veräussert!
STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED :{BLACK}{BIGFONT}Neue Transportfirma gegründet!
STR_705F_STARTS_CONSTRUCTION_NEAR :{BLACK}{BIGFONT}{STRING} startet bei {TOWN}!
STR_7060_CAN_T_BUY_COMPANY :{WHITE}Kann die Firma nicht kaufen...
@@ -1937,6 +2071,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Errichte Firmensitz f
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kann keinen Firmensitz bauen ...
STR_7072_VIEW_HQ :{BLACK}Zeige Firmensitz
STR_RELOCATE_HQ :{BLACK}HQ verlegen
STR_COMPANY_PASSWORD :{BLACK}Passwort
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Schütze deine Firma mit einem Passwort, um unautorisierten Spielern den Beitritt zu verwehren.
STR_SET_COMPANY_PASSWORD :Firmen-Passwort setzen
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Weltwirtschaftskrise!{}{}Finanzexperten befürchten schlimmsten Zusammenbruch der Wirtschaft!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Wirtschaftskrise beendet!{}{}Aufschwung des Handels gibt Vertrauen in die Industrie und stärkt die Wirtschaft!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Schalter für großes/kleines Fenster
@@ -2475,7 +2612,7 @@ STR_GO_TO_SHIP_DEPOT :Fahre zu {TOWN} Schiffswerft
SERVICE_AT_SHIP_DEPOT :Wartung bei {TOWN} Schiffswerft
##id 0xA000
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Flughafenbau
STR_A000_AIRPORTS :{WHITE}Flughäfen
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Flughafen kann hier nicht gebaut werden...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Flugzeughangar
STR_A003_NEW_AIRCRAFT :{BLACK}Neues Flugzeug
@@ -2554,7 +2691,7 @@ STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Explosion einer
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fabrik nahe {TOWN} durch mysteriöse Umstände zerstört!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}'UFO' landet bei {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Stolleneinbruch hinterläßt einen Pfad der Zerstörung bei {TOWN}!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Hochwasser!{}Mindesten {COMMA16} Menschen vermisst oder tot nach schwerer Flut!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Hochwasser!{}Mindestens {COMMA16} Menschen vermisst oder tot nach schwerer Flut!
STR_BRIBE_FAILED :{WHITE}Ihr Bestechungsversuch wurde
STR_BRIBE_FAILED_2 :{WHITE}von einem regionalen Untersuchungsbeamten aufgedeckt.
@@ -2563,8 +2700,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}Spiel ist pausiert.{}Befehle k
STR_PERFORMANCE_DETAIL :{WHITE}Leistungsaufschlüsselung
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Details
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2590,3 +2727,35 @@ STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Bargeld
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Schuldenfalle?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Erreichte Punkte von der maximal erreichbaren Anzahl
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Newgrf Einstellungen
STR_NEWGRF_APPLY_CHANGES :{BLACK}Änderungen anwenden
STR_NEWGRF_SET_PARAMETERS :{BLACK}Parameter setzen
STR_NEWGRF_TIP :{BLACK}Eine Liste aller Newgrf-Sets, die installiert sind. Per Klick auswählen.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Keine Newgrf-Dateien installiert. Bitte Installationsanleitung im Handbuch nachschlagen.
STR_NEWGRF_FILENAME :{BLACK}Dateiname:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Eigene Währung
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Wechselkurs: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Trennsymbol:
STR_CURRENCY_PREFIX :{LTBLUE}Präfix:
STR_CURRENCY_SUFFIX :{LTBLUE}Suffix:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Umstellung auf Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Umstellung auf Euro: {ORANGE}nie
STR_CURRENCY_PREVIEW :{LTBLUE}Vorschau: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Parameter für eigene Währung ändern
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Züge
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Straßenfahrzeuge
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Flugzeuge
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Schiffe
STR_SCHEDULED_TRAINS_TIP :{BLACK}Zeige alle Züge, die diesen Bahnhof anfahren
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
+251 -82
View File
@@ -310,6 +310,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 :Mérföld
STR_013A_METRIC_KILOMETERS :Kilométer
@@ -352,7 +353,8 @@ STR_015E_QUIT_GAME :Kil
STR_015F_QUIT :Kilépés
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Biztosan kilépsz ebbõl a játékból ?
STR_0161_QUIT_GAME :{WHITE}Kilépés a játékból
STR_SORT_TIP :{BLACK}Válassz rendezési sorrendet
STR_SORT_ORDER_TIP :{BLACK}Csökkenõ/növekvõ sorbarendezés
STR_SORT_CRITERIA_TIP :{BLACK}Sorbarendezési kritérium
SRT_SORT_BY :{BLACK}Rendezés
STR_SORT_BY_POPULATION :{BLACK}Lakosság
@@ -417,6 +419,7 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Nem változtathatod meg a javítási idõközt...
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_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
@@ -495,6 +498,8 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}V
STR_01CE_CARGO_ACCEPTED :{BLACK}Elfogad: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Elfogad: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Elfogad: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Elfogad: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Elfogad: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -537,7 +542,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Az '
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}A 'Saját 1' (felhasználói) zenei mûsor kiválasztása
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}A 'Saját 2' (felhasználói) zenei mûsor kiválasztása
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Az aktuális mûsor kiürítése (csak Saját 1 és Saját 2)
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Zenei beállítások mentése a lemezre
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Zenei beállítások elmentése
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Egy számra kattintva hozzáadod azt a kiválasztott zenei mûsorhoz (csak Saját 1 és Saját 2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}A mûsor megkeverése be/ki
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}A zenekiválasztó ablak megjelenítése
@@ -722,7 +727,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}J
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Alap
STR_02BF_CUSTOM :Saját
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Saját nevek mentése
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Saját nevek mentése
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}A jármûvek márkanevének kiválasztása
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}A saját jármû-márkanevek elmentése lemezre
@@ -733,16 +738,20 @@ STR_02C5_DIFFICULTY_SETTINGS :Neh
STR_02C6_DIFFICULTY_SETTINGS :Nehézségi beállítások
STR_02C7_CONFIG_PATCHES :Foltok beállítása
STR_02C8_CONFIG_PATCHES :Foltok beállítása
STR_NEWGRF_SETTINGS :Newgrf beállítások
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
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Állomásnevek mutatása
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Feliratok mutatása
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Feliratok mutatása
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Ellenõrzõ pontok mutatása
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Ellenõrzõ pontok mutatása
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Ellenõrzõ pontok mutatása
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Ellenõrzõ pontok mutatása
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Teljes animáció
STR_02D0_FULL_ANIMATION :{SETX 12}Teljes animáció
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Minden részlet
@@ -765,13 +774,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}
STR_02DD_SUBSIDIES :Támogatások
STR_02DE_MAP_OF_WORLD :Világtérkép
STR_EXTRA_VIEW_PORT :Extra látkép
STR_02DF_TOWN_DIRECTORY :Városlista
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
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Látkép visszatöltése
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}A látkép pozicióját beállítja a globális látképre
STR_02DF_TOWN_DIRECTORY :Városlista
STR_02E0_CURRENCY_UNITS :{BLACK}Pénznem
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}A használt pénznem kiválasztása
@@ -795,16 +804,16 @@ STR_02F8_EVERY_3_MONTHS :3 havonta
STR_02F9_EVERY_6_MONTHS :6 havonta
STR_02FA_EVERY_12_MONTHS :12 havonta
STR_02FB_START_A_NEW_GAME :{BLACK}Új játék kezdése
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Egy mentett játék betöltése lemezrõl
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Mentett játék betöltése
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Demonstrációk/tanítások megnézése
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Testreszabott pálya készítése
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Egy játékos játék kiválasztása
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Két játékos játék kiválasztása
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Többjátékos mód kiválasztása 2-8 játékosig
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}A játék beállításainak megmutatása
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}A nehézségi beállítások megmutatása
STR_0303_START_A_NEW_GAME_USING :{BLACK}Új játék kezdése saját pályán
STR_0304_QUIT :{BLACK}Kilépés
STR_0305_LEAVE_OPENTTD :{BLACK}Kilépés az OpenTTD-bõl
STR_0305_QUIT_OPENTTD :{BLACK}Kilépés az OpenTTD-bõl
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Demonstráció/tanítás megnézése
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...csak városban építhetõ
@@ -852,41 +861,46 @@ STR_TOWNNAME_SWEDISH :Sv
STR_TOWNNAME_DUTCH :Holland
STR_TOWNNAME_FINNISH :Finn
STR_TOWNNAME_POLISH :Lengyel
STR_TOWNNAME_CZECH :Cseh
STR_TOWNNAME_SLOVAKISH :Szlovák
STR_TOWNNAME_HUNGARIAN :Magyar
STR_TOWNNAME_AUSTRIAN :Osztrák
STR_TOWNNAME_ROMANIAN :Romániai
STR_TOWNNAME_CZECH :Cseh
############ end of townname region
STR_CURR_POUNDS :Font ({POUNDSIGN})
STR_CURR_DOLLARS :Dollár ($)
STR_CURR_FF :Frank (FF)
STR_CURR_DM :Német Márka (DM)
STR_CURR_GBP :Font ({POUNDSIGN})
STR_CURR_USD :Dollár ($)
STR_CURR_EUR :Euró (¤)
STR_CURR_YEN :Ken ({YENSIGN})
STR_CURR_PT :Pezeta (Pt)
STR_CURR_FT :Magyar Forint (Ft)
STR_CURR_ZL :Lengyel Zloty (zl)
STR_CURR_ATS :Osztrák Shilling (ATS)
STR_CURR_BEF :Belga Frank (BEF)
STR_CURR_DKK :Dán Korona (DKK)
STR_CURR_FIM :Finn Márka (FIM)
STR_CURR_GRD :Görög Drachma (GRD)
STR_CURR_CHF :Svájci Frank (CHF)
STR_CURR_NLG :Holland Guilder (NLG)
STR_CURR_ITL :Olasz Líra (ITL)
STR_CURR_SEK :Svéd Korona (SEK)
STR_CURR_RUR :Orosz Rubel (rur)
STR_CURR_CZK :Cseh Korona (CZK)
STR_CURR_DEM :Német márka (DEM)
STR_CURR_DKK :Dán Korona (DKK)
STR_CURR_ESP :Pezeta (ESP)
STR_CURR_FIM :Finn Márka (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Görög Drachma (GRD)
STR_CURR_HUF :Magyar Forint (HUF)
STR_CURR_ISK :Izlandi Korona (ISK)
STR_CURR_ITL :Olasz Líra (ITL)
STR_CURR_NLG :Holland Guilder (NLG)
STR_CURR_NOK :Norvég Korona (NOK)
STR_CURR_PLN :Legyel Zlotyi (PLN)
STR_CURR_ROL :Román Lej (Lej)
STR_CURR_EUR :Euró (€)
STR_CURR_RUR :Orosz Rubel (rur)
STR_CURR_SEK :Svéd Korona (SEK)
STR_CURR_CUSTOM :Saját...
STR_OPTIONS_LANG :{BLACK}Nyelv
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Válassz nyelvet
STR_OPTIONS_FULLSCREEN :{BLACK}Teljes képernyõ
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Jelöld be ezt, ha teljes képernyõs módban szeretnél OpenTTD-zni
STR_OPTIONS_RES :{BLACK}A képernyõ felbontása
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Válaszd ki, milyen felbontást szeretnél a játékhoz
@@ -966,11 +980,13 @@ STR_CONFIG_PATCHES_OFF :Ki
STR_CONFIG_PATCHES_ON :Be
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Jármûvek sebességének kijelzése: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Lejtõre es partokra építés: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Élethûbben méretezett befogadókörzetek bekapcsolása: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Engedélyezi az ipari létesítmények és utak rombolását, stb: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Óriásvonatok engedélyezése: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Vonatok valósághû gyorsulása: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Egymás mellé építhetõ vonatállomások: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Bármelyik rakomány telipakolása esetén induljon a jármû: {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}A továbbfejlesztett betöltés használata: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Infláció: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Csak akkor szállítson árut az állomásra, ha ott van rá kereslet: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Nagyon hosszú hidak engedélyezése: {ORANGE}{STRING}
@@ -1037,6 +1053,8 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}A f
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Balra
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Középen
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Jobbra
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Ablakigazítás kiterjedése: {ORANGE}{STRING} képpont
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Ablakigazítás kiterjedése: {ORANGE}letiltva
STR_CONFIG_PATCHES_GUI :{BLACK}Megjelenítés
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Építkezés
@@ -1069,24 +1087,28 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Jet-rep
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Klíma változtatás: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Dátum módosítás: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Úton {CHECKPOINT} felé
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Úton {CHECKPOINT} felé, {VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Úton {WAYPOINT} felé
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Úton {WAYPOINT} felé, {VELOCITY}
STR_GO_TO_CHECKPOINT :{CHECKPOINT}on át
STR_GO_TO_WAYPOINT :{WAYPOINT}on át
STR_GO_NON_STOP_TO_WAYPOINT :Úton {WAYPOINT} ellenõrzõ ponton át
STR_CHECKPOINTNAME_CITY :{TOWN}i ellenõrzõ pont
STR_CHECKPOINTNAME_CITY_SERIAL :{TOWN}i {COMMA16}. ellenõrzõ pont
STR_LANDINFO_CHECKPOINT :Ellenõrzõ pont
STR_WAYPOINTNAME_CITY :{TOWN}i ellenõrzõ pont
STR_WAYPOINTNAME_CITY_SERIAL :{TOWN}i {COMMA16}. ellenõrzõ pont
STR_LANDINFO_WAYPOINT :Ellenõrzõ pont
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Módosítd az ellenõrzõ pont nevét
STR_WAYPOINT :{WHITE}Ellenõrzõ pont
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Válassz ellenõrzõ-pont tipust
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Nem lehet megváltoztatni az ellenõrzõ pont nevét...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Sín átalakítása ellenõrzõ ponttá
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Nem lehet vonat ellenõrzõ pontot építeni ide...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Nem lehet eltávolítani az ellenõrzõ pontot...
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Módosítd az ellenõrzõ pont nevét
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Nem lehet megváltoztatni az ellenõrzõ pont nevét...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Sín átalakítása ellenõrzõ ponttá
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Nem lehet vonat ellenõrzõ pontot építeni ide...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Nem lehet eltávolítani az ellenõrzõ pontot...
STR_BUILD_AUTORAIL_TIP :{BLACK}Sín építése egyszerûsített módón
@@ -1099,6 +1121,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Sok v
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Elhelyez a térképen véletlenszerüen sok gazdasági épületet
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nem tudok gazdasági épületet generálni...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Nyisd meg a tájrendezõ ablakot a talaj növeléshez/csökkentéshez, faültetéshez, stb.
STR_LANDSCAPING_TOOLBAR :{WHITE}Tájrendezés
STR_LEVEL_LAND_TOOLTIP :{BLACK}Talajszint
@@ -1171,37 +1194,44 @@ TEMP_AI_ACTIVATED :{WHITE}Figyelem: az
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Hálózati felület nem mûködik teljesen!{}Egyes opciók mûködnek, de masok, mint a lobby, etc. nem. Csak információként.
STR_NETWORK_MULTIPLAYER :{WHITE}Többjátékos
STR_NETWORK_FIND_SERVER :{BLACK}Szerver keresése
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Szerver keresése a hálózaton
STR_NETWORK_DIRECT_CONNECT :{BLACK}Közvetlen kapcsolat
STR_NETWORK_ENTER_IP :{BLACK}Írd be a szerver IP címét
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Ismert IP címhez kapcsolódás
STR_NETWORK_START_SERVER :{BLACK}Szerver indítása
STR_NETWORK_START_SERVER_TIP :{BLACK}Saját szervert indít
STR_NETWORK_PLAYER_NAME :{BLACK}Játékos neve:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}A többi játékos ilyen nével fog ismerni Téged.
STR_NETWORK_CONNECTION :{BLACK}Kapcsolat:
STR_NETWORK_CONNECTION_TIP :{BLACK}Válassz az internetes vagy helyi hálózati játék közül
STR_NETWORK_SELECT_CONNECTION :{BLACK}Válassz kapcsolat típust:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Válassz az internetes játék és a helyi hálózatban történõ játék között
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :Helyi hálózat
STR_NETWORK_INTERNET :Internet
STR_NETWORK_START_SERVER :{BLACK}Szerver indítása
STR_NETWORK_START_SERVER_TIP :{BLACK}Saját szervert indít
STR_NETWORK_GAME_NAME :{BLACK}Név
STR_NETWORK_GAME_NAME_TIP :{BLACK}Játék neve
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Jelenlegi játékosszám / Maximum játékosszám
STR_NETWORK_MAP_SIZE :{BLACK}Méret
STR_NETWORK_MAP_SIZE_TIP :{BLACK}A térkép mérete
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Nyelv, szerver verzió, stb.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Kattints a listában a jatékra hogy kiválaszd
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_FIND_SERVER :{BLACK}Szerver keresése
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Szerver keresése a hálózaton
STR_NETWORK_ADD_SERVER :{BLACK}Szerver hozzáadása
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Hozzáadja a szervert a listához, így késõbb gyorsabban tudsz hozzá csatlakozni
STR_NETWORK_ENTER_IP :{BLACK}Írd be a szerver IP címét
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Kliens
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Kliens online / kliens max
STR_NETWORK_GAME_INFO :{SILVER}JÁTÉK INFÓ
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Kliens: {WHITE}{COMMA8} / {COMMA8}
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_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!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SZERVER OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SZERVER TELE
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERZIÓ ELTÉRÉS
STR_NETWORK_JOIN_GAME :{BLACK}Csatlakozás a játékhoz
@@ -1210,20 +1240,30 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}
STR_NETWORK_NEW_GAME_NAME :{BLACK}Játék neve:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}A játék neve fog megjelenni a többi játékosnak a többjátékos menüben
STR_NETWORK_PASSWORD :{BLACK}Jelszó:
STR_NETWORK_SET_PASSWORD :{BLACK}Jelszó beállítása
STR_NETWORK_PASSWORD_TIP :{BLACK}Védd le a játékodat jelszóval ha nem akarod hogy mások csatlakozzanak
STR_NETWORK_SELECT_MAP :{BLACK}Válassz egy térképet:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Melyik terképen akarsz játszani?
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Játékosok száma:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Válaszd ki a maximális játékos-számot. Nem kötelezõ mindet kihasználni.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 játékos
STR_NETWORK_3_PLAYERS :3 játékos
STR_NETWORK_4_PLAYERS :4 játékos
STR_NETWORK_5_PLAYERS :5 játékos
STR_NETWORK_6_PLAYERS :6 játékos
STR_NETWORK_7_PLAYERS :7 játékos
STR_NETWORK_8_PLAYERS :8 játékos
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maximum hány játékos lehet:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Válaszd ki hány játékos kapcsolódhat maximum. Nem szükséges pont ennyi embernek éppen kapcsolódva lennie.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :Helyi hálózat
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :Hálózat / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (reklámoz)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 kliens
STR_NETWORK_3_CLIENTS :3 kliens
STR_NETWORK_4_CLIENTS :4 kliens
STR_NETWORK_5_CLIENTS :5 kliens
STR_NETWORK_6_CLIENTS :6 kliens
STR_NETWORK_7_CLIENTS :7 kliens
STR_NETWORK_8_CLIENTS :8 kliens
STR_NETWORK_9_CLIENTS :9 kliens
STR_NETWORK_10_CLIENTS :10 kliens
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Beszélt nyelv:
STR_NETWORK_LANGUAGE_TIP :{BLACK}A többi játékos megtudhatja milyen nyelven beszélnek a szerveren.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Játék elindítása
STR_NETWORK_START_GAME_TIP :{BLACK}Új hálózati játék kezdése véletlen térképpel vagy misszióval
STR_NETWORK_LOAD_GAME :{BLACK}Játék betöltése
@@ -1231,17 +1271,62 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Kor
STR_NETWORK_LOAD_SCENARIO :{BLACK}Pálya betöltése
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Új hálózati játék kezdése missziós alapon
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Bármilyen
STR_NETWORK_LANG_ENGLISH :Angol
STR_NETWORK_LANG_GERMAN :Német
STR_NETWORK_LANG_FRENCH :Francia
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Többjátékos játék-lobby
STR_NETWORK_SEND :{BLACK}Küld
STR_NETWORK_SEND_TIP :{BLACK}A többi játékosnak üzenetet küld
STR_NETWORK_COMPANY_NAME :{BLACK}Vállalat neve:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Megváltoztatja a vállalatod nevét. Üss entert a módosítások életbeléptetéséhez
STR_NETWORK_SPECTATE_GAME :{BLACK}Játék megvizsgálása
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Megtekinted a játékot mint vizsgálóbiztos
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Készülõdés a kapcsolódáshoz: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Egy lista az összes cégrõl aki játékban van. Beléphetsz egybe, vagy kezdhetsz egy
STR_NETWORK_NEW_COMPANY :{BLACK}Új vállalat
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Új vállalatot nyit
STR_NETWORK_READY :{BLACK}Kész
STR_NETWORK_SPECTATE_GAME :{BLACK}Játék megvizsgálása
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Megtekinted a játékot mint vizsgálóbiztos
STR_NETWORK_JOIN_COMPANY :{BLACK}Belépés a cégbe
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Segítesz valakinek egy cégénél (többen 1 céget)
STR_NETWORK_REFRESH :{BLACK}Szerver frissítése
STR_NETWORK_REFRESH_TIP :{BLACK}Szerver infó frissítése
STR_NETWORK_COMPANY_INFO :{SILVER}CÉG INFÓ
STR_NETWORK_COMPANY_NAME :{SILVER}A cég neve: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Beiktatás: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}A cég értéke: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Jelelegi összeg: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Elõzõ évi bevétel: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Teljesítmény: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Jármûvek: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Állomások: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Játékosok: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Kapcsolódás...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Kapcsolódás..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Engedélyezés..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Várakozás..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Térkép letöltése..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Adatfeldolgozás..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Regisztrálás..
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_DOWNLOADING :{BLACK}{INT32} / {INT32} kilobájt lett eddig letöltve
STR_NETWORK_DISCONNECT :{BLACK}Lebontás
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Írd be az elküldendõ üzenetet
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Írd be mennyi pénzt akarsz adományozni
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}A szerver jelszóval van védve. Írd be
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}A cég jelszóval van védve. Írd be
STR_NETWORK_CLIENT_LIST :{WHITE}Kliens lista
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Nem található a hálózati csatoló, vagy nincs hálózati támogatás (ENABLE_NETWORK)
STR_NETWORK_ERR_NOSERVER :{WHITE} Nem található semmilyen hálózati játék
@@ -1249,7 +1334,56 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE} A szerver nem reag
STR_NETWORK_ERR_DESYNC :{WHITE} Hálózat - Játék szinkronizáció sikertelen.
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Hálózat - Játék kapcsolat elveszett.
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Nem sikerült a szerver játékmentés betöltése.
STR_NETWORK_ERR_SERVER_START :{WHITE} Nem tudtam elindítani a szervert.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Nem tudtam kapcsolódni.
STR_NETWORK_ERR_TIMEOUT :{WHITE} A(z) {NUMU16}. játékos kapcsolata elveszett.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Protokoll-hibát csináltunk, és megszakadt a kapcsolat.
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_KICKED :{WHITE} Ki lettél rúgva a szerverrõl
STR_NETWORK_ERR_CHEATER :{WHITE} Ez a szerver nem engedi a csalást
STR_NETWORK_ERR_LEFT :elhagyta a játékot
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :általános hiba
STR_NETWORK_ERR_CLIENT_DESYNC :szinkronizálási hiba
STR_NETWORK_ERR_CLIENT_SAVEGAME :térkép betöltési hiba
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :elveszett a kapcsolat
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :protokoll hiba
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :nem engedélyezett
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :ismeretlen csomag érkezett
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :rossz verzió
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :a név már használva van
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :rossz játék-jelszó
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :rossz játékos-id a DoCommand-ban
STR_NETWORK_ERR_CLIENT_KICKED :a szerver kirúgott
STR_NETWORK_ERR_CLIENT_CHEATER :csalni próbált
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :belépett a játékba
STR_NETWORK_GIVE_MONEY :adott egy kis pénzt ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :{STRING} játékosnak adományoztál ({CURRENCY}) összeget
STR_NETWORK_CHAT_COMPANY :[Csapat] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Csapat] {STRING} számára:
STR_NETWORK_CHAT_CLIENT :[Privát] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Privát] {STRING} számára:
STR_NETWORK_CHAT_ALL :[Mindenkinek] {STRING}:
STR_NETWORK_NAME_CHANGE :megváltoztatta a nevét erre:
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} A szerver leállította a játékot
STR_NETWORK_SERVER_REBOOT :{WHITE} A szerver újraindul...{}Türelem...
STR_NETWORK_SERVER :Szerver
STR_NETWORK_CLIENT :Kliens
STR_NETWORK_CLIENTLIST_NONE :(nincs)
STR_NETWORK_CLIENTLIST_KICK :Kirúgás
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Pénz adományozása
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Üzenet mindenkinek
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Üzenet a cégnek
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privát üzenet
STR_NETWORK_SEND :{BLACK}Elküld
############ end network gui strings
@@ -1820,7 +1954,7 @@ STR_683B_HOSTILE :Ellens
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7002_PLAYER :({COMMA16}. játékos)
STR_7004_NEW_FACE :{BLACK}Új arc
STR_7005_COLOR_SCHEME :{BLACK}Szín váltása
@@ -1832,7 +1966,7 @@ STR_700A_COMPANY_NAME :A v
STR_700B_PRESIDENT_S_NAME :Az elnök neve
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Nem változtathatod meg a cég nevét...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Nem változtathatod meg az elnök nevét...
STR_700E_FINANCES :{WHITE}{STRING} pénzügyei{BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} pénzügyei {BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Kiadás/Bevétel
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Építkezés
@@ -1937,6 +2071,9 @@ STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}A c
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nem építheted ide a székházadat...
STR_7072_VIEW_HQ :{BLACK}Székház
STR_RELOCATE_HQ :{BLACK}FH áthelyezése
STR_COMPANY_PASSWORD :{BLACK}Jelszó
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Védd le a vállalatodat jelszóval ha nem akarod hogy mások csatlakozzanak hozzá.
STR_SET_COMPANY_PASSWORD :Vállalati jelszó beállítása
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Gazdasági visszaesés!{}{}A közgazdászok gazdasági válságtól tartanak!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Vége a visszaesésnek!{}{}A kereskedelem fellendül, ami önbizalmat ad az iparnak, és erõsödik a gazdaság!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Kicsi/nagy ablakméret közötti váltás
@@ -2475,7 +2612,7 @@ STR_GO_TO_SHIP_DEPOT :Menj a {TOWN}i kik
SERVICE_AT_SHIP_DEPOT :Service at {TOWN} Ship Depot
##id 0xA000
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Reptér építése
STR_A000_AIRPORTS :{WHITE}Repterek
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nem építhetsz ide repülõteret...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} hangárja
STR_A003_NEW_AIRCRAFT :{BLACK}Új repülõgépek
@@ -2563,8 +2700,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}J
STR_PERFORMANCE_DETAIL :{WHITE}Teljesítményértékelések részletezése
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Részletek
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2590,3 +2727,35 @@ STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}El
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Magas kölcsönöd van?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Megszerzett pontok az elérhetõ pontokból
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Newgrf beállítások
STR_NEWGRF_APPLY_CHANGES :{BLACK}Alkalmazás
STR_NEWGRF_SET_PARAMETERS :{BLACK}Paraméterek beállítása
STR_NEWGRF_TIP :{BLACK}Az általad felinstallált newgrf csomagok listája. Kattints a csomagra a beállítások módosításához.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Jelenleg nincsennek newgrf csomagok felinstallálva. Olvasd el a manuálban, hogyan kell installálni az új grafikákat.
STR_NEWGRF_FILENAME :{BLACK}Fájlnév:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Saját pénznem
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Értékarány: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Elválasztó:
STR_CURRENCY_PREFIX :{LTBLUE}Elõtag:
STR_CURRENCY_SUFFIX :{LTBLUE}Elõtag:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Euróra váltás: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Euróra váltás: {ORANGE}soha
STR_CURRENCY_PREVIEW :{LTBLUE}Elõnézet: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}A saját pénznem paramétereinek megváltoztatása
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Vonatok
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Közúti jármûvek
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Repülõgépek
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Hajók
STR_SCHEDULED_TRAINS_TIP :{BLACK}Kilistázza az összes vonatot, aminek a menetrendjében szerepel ez az állomás
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
+1707
View File
File diff suppressed because it is too large Load Diff
+117 -82
View File
@@ -342,7 +342,7 @@ STR_0157_PERFORMANCE_HISTORY_GRAPH :Grafico prestazioni
STR_0158_COMPANY_VALUE_GRAPH :Grafico valore società
STR_0159_CARGO_PAYMENT_RATES :Grafico % pagamento merce
STR_015A_COMPANY_LEAGUE_TABLE :Classifica società
STR_PERFORMANCE_DETAIL_MENU :Dettagli valutazione delle prestazioni
STR_PERFORMANCE_DETAIL_MENU :Dettagli prestazionali
############ range for menu ends
STR_015B_OPENTTD :{WHITE}OpenTTD
@@ -352,7 +352,6 @@ 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_TIP :{BLACK}Seleziona criterio di ordinamento
SRT_SORT_BY :{BLACK}Ordina per
STR_SORT_BY_POPULATION :{BLACK}Popolazione
@@ -368,7 +367,7 @@ STR_SORT_BY_PROFIT_LAST_YEAR :Profitto dell'anno scorso
STR_SORT_BY_PROFIT_THIS_YEAR :Profitto di quest'anno
STR_SORT_BY_AGE :Età
STR_SORT_BY_RELIABILITY :Affidabilità
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capacità totale per tipo di carico
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Tot. capacità per tipo di carico
STR_SORT_BY_MAX_SPEED :Velocità massima
############ range for months starts
@@ -495,6 +494,8 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Seleziona Tutorial/Demonstrazi
STR_01CE_CARGO_ACCEPTED :{BLACK}Merci accettate: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Merci accettate: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Merci accettate: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Merci accettate: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Merci accettate: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -537,7 +538,6 @@ 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_TO :{BLACK}Salva le impostazioni
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'
@@ -722,7 +722,6 @@ 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_TO_DISK :{BLACK}Salva nomi personalizzati
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Selezione nomi personalizzati
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Salva nomi personalizzati dei veicoli
@@ -741,8 +740,6 @@ 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_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Mostra Checkpoint
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Mostra Checkpoints
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
@@ -765,13 +762,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Mostra sussidi
STR_02DD_SUBSIDIES :Sussidi
STR_02DE_MAP_OF_WORLD :Mappa del mondo
STR_EXTRA_VIEW_PORT :Mini visuale extra
STR_02DF_TOWN_DIRECTORY :Elenco Città
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Mini visuale {COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copia nella mini visuale
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copia la posizione dalla finestra principale alla mini visuale
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Copia dalla mini visuale
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copia la posizione dalla mini visuale alla finestra principale
STR_02DF_TOWN_DIRECTORY :Elenco Città
STR_02E0_CURRENCY_UNITS :{BLACK}Valuta
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Selezione valuta
@@ -795,16 +792,13 @@ 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_FROM :{BLACK}Carica partita salvata
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_TWO_PLAYER_GAME :{BLACK}Seleziona due 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_LEAVE_OPENTTD :{BLACK}Esci da '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à
@@ -852,41 +846,38 @@ STR_TOWNNAME_SWEDISH :Svedese
STR_TOWNNAME_DUTCH :Olandese
STR_TOWNNAME_FINNISH :Finlandese
STR_TOWNNAME_POLISH :Polacco
STR_TOWNNAME_CZECH :Cechi
STR_TOWNNAME_SLOVAKISH :Slovacco
STR_TOWNNAME_HUNGARIAN :Ungherese
STR_TOWNNAME_AUSTRIAN :Austriaci
STR_TOWNNAME_ROMANIAN :Rumeni
STR_TOWNNAME_CZECH :Cechi
############ end of townname region
STR_CURR_POUNDS :Sterline ({POUNDSIGN})
STR_CURR_DOLLARS :Dollari ($)
STR_CURR_FF :Franchi (FF)
STR_CURR_DM :Marco Tedesco (DM)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_PT :Peseta (Pt)
STR_CURR_FT :Fiorino Ungherese (Ft)
STR_CURR_ZL :Zloty Polacca (zl)
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_DKK :Corona Danese (DKK)
STR_CURR_FIM :Marco Finlandese(FIM)
STR_CURR_GRD :Drachma Greca (GRD)
STR_CURR_CHF :Franco Svizzero (CHF)
STR_CURR_NLG :Fiorino olandese (NLG)
STR_CURR_ITL :Lira Italiana (ITL)
STR_CURR_SEK :Corona Svedese (SEK)
STR_CURR_RUR :Rupie Russe (RUR)
STR_CURR_CZK :Corona Ceca (CZK)
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_ROL :Leu rumeno (Lei)
STR_CURR_EUR :Euro (€)
STR_CURR_RUR :Rupie Russe (RUR)
STR_CURR_SEK :Corona Svedese (SEK)
STR_OPTIONS_LANG :{BLACK}Lingua
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Seleziona la lingua da utilizzare
STR_OPTIONS_FULLSCREEN :{BLACK}Schermo intero
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Barra questa casella per giocare a OpenTTD a schermo intero
STR_OPTIONS_RES :{BLACK}Risoluzione video
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Seleziona la risoluzione video da utilizzare
@@ -1005,7 +996,7 @@ STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Rinnova solo se disponibile il fo
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Durata visualizzazione messaggio di errore: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Alberi invisibili (se edifici trasparenti): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Dimensione limite delle nevi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Copertura massima di una stazione: {ORANGE}{STRING} {RED}Attenzione: Valori elevati rallentano il gioco
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Copertura max. stazione: {ORANGE}{STRING} {RED}Attenzione: Valori alti rallentano il gioco
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Manutenzione elicotteri direttamente alleliporto: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Max treni per giocatore: {ORANGE}{STRING}
@@ -1065,28 +1056,24 @@ STR_CHEAT_CHANGE_PLAYER :{LTBLUE}Gioca come giocatore: {ORANGE}{COMMA16}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer magico (rimuove industrie e altri): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}I tunnel possono incrociarsi tra loro: {ORANGE}{STRING}
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Consenti costruzione quando in pausa: {ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}I jet non si schiantano troppo frequentemente nei piccolo aeroporti: {ORANGE} {STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}I jet non si schiantano troppo di frequente nei piccoli aeroporti: {ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Cambia paesaggio: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Cambia data: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Direzione {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Direzione {CHECKPOINT}, {VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Direzione {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Direzione {WAYPOINT}, {VELOCITY}
STR_GO_TO_CHECKPOINT :Vai al {CHECKPOINT}
STR_GO_TO_WAYPOINT :Vai al {WAYPOINT}
STR_CHECKPOINTNAME_CITY :Checkpoint {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Checkpoint {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Checkpoint
STR_WAYPOINTNAME_CITY :Waypoint {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Waypoint {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Waypoint
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Modifica nome checkpoint
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Non puoi cambiare il nome del checkpoint...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Converti binario in checkpoint
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Non puoi costruire checkpoint qui...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Non puoi rimuovere checkpoint...
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_BUILD_AUTORAIL_TIP :{BLACK}Costruisci binario usando la modalità automatica
@@ -1171,37 +1158,25 @@ TEMP_AI_ACTIVATED :{WHITE}Attenzione: la nuova IA
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Interfaccia di rete attualmente non completamente funzionante!{}Gli elementi non funzionanti sono stati disabilitati.
STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
STR_NETWORK_FIND_SERVER :{BLACK}Trova server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Cerca nella rete un server
STR_NETWORK_DIRECT_CONNECT :{BLACK}Connessione diretta
STR_NETWORK_ENTER_IP :{BLACK}Digita indirizzo IP del server
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Connetti ad un IP conosciuto
STR_NETWORK_START_SERVER :{BLACK}Avvia server
STR_NETWORK_START_SERVER_TIP :{BLACK}Avvia il tuo server
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_SELECT_CONNECTION :{BLACK}Seleziona tipo di connessione:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Seleziona tra una partita via Internet o un gioco nella rete locale
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_START_SERVER :{BLACK}Avvia server
STR_NETWORK_START_SERVER_TIP :{BLACK}Avvia il tuo server
STR_NETWORK_GAME_NAME :{BLACK}Nome
STR_NETWORK_GAME_NAME_TIP :{BLACK}Nome del gioco
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Giocatori attualmente in questo gioco / Numero massimo di giocatori
STR_NETWORK_MAP_SIZE :{BLACK}Dimens.
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Dimensione della mappa
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Lingua, versione server, ecc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Clicca su un nome della lista per selezionarlo
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_FIND_SERVER :{BLACK}Trova server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Cerca nella rete un server
STR_NETWORK_ENTER_IP :{BLACK}Digita indirizzo IP del server
STR_NETWORK_MAP_SIZE :{SILVER}Dimens: {WHITE}{COMMA16}x{COMMA16}
STR_NETWORK_PASSWORD :{BLACK}Password:
STR_NETWORK_JOIN_GAME :{BLACK}Entra nel gioco
@@ -1210,20 +1185,11 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Avvia nuovo gioco
STR_NETWORK_NEW_GAME_NAME :{BLACK}Nome gioco:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Il nome della partita verrà visualizzato dagli altri giocatori nel menu di selezione del gioco
STR_NETWORK_PASSWORD :{BLACK}Password:
STR_NETWORK_PASSWORD_TIP :{BLACK}Proteggi il tuo gioco con una password se non vuoi che altre persone vi entrino
STR_NETWORK_SELECT_MAP :{BLACK}Seleziona una mappa:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Con quale mappa vuoi giocare?
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Numero di giocatori:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Seleziona il numero Massimo di giocatori. Non è necessario che tutti gli spazi vengano occupati.
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 giocatori
STR_NETWORK_3_PLAYERS :3 giocatori
STR_NETWORK_4_PLAYERS :4 giocatori
STR_NETWORK_5_PLAYERS :5 giocatori
STR_NETWORK_6_PLAYERS :6 giocatori
STR_NETWORK_7_PLAYERS :7 giocatori
STR_NETWORK_8_PLAYERS :8 giocatori
STR_NETWORK_START_GAME :{BLACK}Avvia gioco
STR_NETWORK_START_GAME_TIP :{BLACK}Inizia una nuova partita in rete partendo da una mappa random o da uno scenario
STR_NETWORK_LOAD_GAME :{BLACK}Carica Gioco
@@ -1231,17 +1197,27 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Riprendi una partita salvata in precedenza
STR_NETWORK_LOAD_SCENARIO :{BLACK}Carica Scenario
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Inizia una nuova partita in rete partendo da uno scenario
############ Leave those lines in this order!!
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Stanza di gioco multiplayer
STR_NETWORK_SEND :{BLACK}Invia
STR_NETWORK_SEND_TIP :{BLACK}Invia un messaggio agli altri giocatori
STR_NETWORK_COMPANY_NAME :{BLACK}Nome compagnia:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Cambia il nome della tua compagnia. Premi Invio per confermare le modifiche
STR_NETWORK_SPECTATE_GAME :{BLACK}Assisti alla partita
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Assisti al gioco come spettatore
STR_NETWORK_NEW_COMPANY :{BLACK}Nuova compagnia
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Apri una nuova compagnia
STR_NETWORK_READY :{BLACK}Pronto
STR_NETWORK_SPECTATE_GAME :{BLACK}Assisti alla partita
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Assisti al gioco come spettatore
STR_NETWORK_COMPANY_NAME :{SILVER}Nome compagnia: {WHITE}{STRING}
STR_NETWORK_PLAYERS :{BLACK}#/#
############ Leave those lines in this order!!
############ End of leave-in-this-order
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Nessun dispositivo di rete trovato o compilato senza ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Impossibile trovare partite in rete
@@ -1251,6 +1227,13 @@ STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Connessione alla partita in rete per
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Impossibile caricare il savegame dal server.
STR_NETWORK_ERR_TIMEOUT :{WHITE} Connessione #{NUMU16} time-out.
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ end network gui strings
@@ -1774,6 +1757,7 @@ STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Quantit
STR_6813_ECONOMY :{LTBLUE}Economia: {ORANGE}{STRING}
STR_6814_TRAIN_REVERSING :{LTBLUE}Inversione treni: {ORANGE}{STRING}
STR_6815_DISASTERS :{LTBLUE}Disastri: {ORANGE}{STRING}
STR_16816_CITY_APPROVAL :{LTBLUE}Atteggiamento delle città verso i cambiamenti nel territorio: {ORANGE}{STRING}
############ range for difficulty settings ends
STR_26816_NONE :Nessuno
@@ -1819,7 +1803,7 @@ STR_683B_HOSTILE :Ostile
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7002_PLAYER :(Giocatore {COMMA16})
STR_7004_NEW_FACE :{BLACK}Nuova Faccia
STR_7005_COLOR_SCHEME :{BLACK}Colore Società
@@ -1831,7 +1815,7 @@ STR_700A_COMPANY_NAME :Nome della societ
STR_700B_PRESIDENT_S_NAME :Nome del presidente
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Non puoi cambiare il nome della società...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Non puoi cambiare in nome del presidente...
STR_700E_FINANCES :{WHITE}{STRING} Finanze{BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} Finanze {BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Spese/Ricavi
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Costruzioni
@@ -1858,6 +1842,7 @@ STR_7024 :{COMMA32}
STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}Grafico Profitti Operazionali
STR_7026_BANK_BALANCE :{WHITE}Bilancio Bancario
STR_7027_LOAN :{WHITE}Prestito
STR_MAX_LOAN :{WHITE}Prestito Massimo: {BLACK}{CURRENCY64}
STR_7028 :{BLACK}{CURRENCY64}
STR_7029_BORROW :<CHECK>{BLACK}Richiedi {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
STR_702A_REPAY :<CHECK>{BLACK}Ripaga {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
@@ -1931,8 +1916,10 @@ STR_706D_PRESIDENT :Presidente
STR_706E_TYCOON :magnate
STR_706F_BUILD_HQ :{BLACK}Costr. Sede
STR_7070_BUILD_COMPANY_HEADQUARTERS :{BLACK}Costruisci/guarda la sede della società
STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sposta la sede della compagnia pagando 1% del valore societario
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Non puoi costruire la sede della compagnia...
STR_7072_VIEW_HQ :{BLACK}Guarda Sede
STR_RELOCATE_HQ :{BLACK}Sposta Sede
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Recessione Mondiale!{}{}Gli esperti finanziari temono la peggior crisi economica!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Recessione Finita!{}{}Rialzo negli scambi dà fiducia alle industrie per un rafforzamento economico!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Seleziona dimensione grande/piccola della finestra
@@ -2236,6 +2223,7 @@ STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Manutenzione non-stop a {TOWN} Deposito
STR_HEADING_FOR_TRAIN_DEPOT :{LTBLUE}Direzione {TOWN} Deposito
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{LTBLUE}Direzione {TOWN} Deposito, {VELOCITY}
STR_INVALID_ORDER :{RED} (Ordine non Valido)
STR_UNKNOWN_DESTINATION :destinazione sconosciuta
STR_8812_EMPTY :{LTBLUE}Vuoto
@@ -2282,6 +2270,7 @@ STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Non puoi vendere veicolo ferrovi
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Non riesce a trovare il deposito locale
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Non puoi far fermare/ripartire il treno...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Intervallo Manutenz.: {LTBLUE}{COMMA16}giorni{BLACK} Ultima Manut.: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Intervallo Manutenz.: {LTBLUE}{COMMA16}%{BLACK} Ultima Manut.: {LTBLUE}{DATE_LONG}
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Treni - fai clic sul treno per le informazioni
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Costruisci nuovi treni (Necessario deposito)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Treni - fai clic sul treno per le informazioni, trascina i veicoli per aggiungerli/rimuoverli dal treno
@@ -2469,7 +2458,6 @@ STR_GO_TO_SHIP_DEPOT :Vai a {TOWN} Deposito Navale
SERVICE_AT_SHIP_DEPOT :Manutenzione a {TOWN} Deposito Navale
##id 0xA000
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Costruz. areoportuali
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Non puoi costruire aeroporto qui...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Hangar
STR_A003_NEW_AIRCRAFT :{BLACK}Nuovo Aereo
@@ -2548,11 +2536,58 @@ STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Raffineria esplosa vicino a
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fabbrica distrutta in circostanze sospette vicino a {TOWN}!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}'UFO' atterra vicino a {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Cedimento in una miniera di carbone lascia tracce di distruzione vicino a {TOWN}!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Alluvione!{}{COMMA16} distrutto o disperso a seguito di una mortale alluvione!
STR_BRIBE_FAILED :{WHITE}Il tentativo di corruzione è stato
STR_BRIBE_FAILED_2 :{WHITE}scoperto dagli ispettori regionali.
STR_BUILD_DATE :{BLACK}Realizzato il: {LTBLUE}{DATE_LONG}
STR_MULTIPLAYER_PAUSED :{WHITE}Gioco in pausa.{}Il comando non può essere eseguito
STR_PERFORMANCE_DETAIL :{WHITE}Dettagli valutazione delle prestazioni
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Dettagli
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Veicoli:
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stazioni:
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Profitto Min.:
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Incasso Min.:
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Incasso Max.:
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Trasportati:
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Cargo:
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Denaro:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Prestito:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Totale:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Numero di veicoli. Include Veicoli Stradali, Treni, Navi e Aerei.
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Numero di blocchi stazione. Ogni parte di una stazione (e.g. stazione ferroviaria, fermata dell'autobus, aereoporti) viene contata, anche se insieme formano un'unica stazione.
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Profitto del veicolo con l'incasso minore (tra tutti i veicoli più vecchi di 2 anni)
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Ammontare di denaro guadagnato nel mese con il minimo profitto degli ultimi 12 quarti
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Ammontare di denaro guadagnato nel mese con il massimo profitto degli ultimi 12 quarti
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Unità di merce trasportata nell'ultimo quarto.
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Tipi di merci trasportate nell'ultimo quarto.
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Ammontare di denaro in tasca
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Hai preso un prestito troppo elevato?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Totale dei punti rispetto ad un massimo di punti possibili
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Non ci sono attualmente file newgrf installati! Fare riferimento al manuale per installarne di nuovi
STR_NEWGRF_FILENAME :{BLACK}Nome file:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Treni
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Veicoli
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Aerei
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Navi
STR_SCHEDULED_TRAINS_TIP :{BLACK}Mostra tutti i treni che hanno questa stazione tra gli ordini
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
+424
View File
@@ -0,0 +1,424 @@
##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
+2087 -1674
View File
File diff suppressed because it is too large Load Diff
+2608 -2291
View File
File diff suppressed because it is too large Load Diff
+2645
View File
File diff suppressed because it is too large Load Diff
+227 -80
View File
@@ -310,6 +310,7 @@ STR_0134_UNIX :Unix
STR_0135_OSX :OS X
STR_OSNAME_BEOS :BeOS
STR_OSNAME_MORPHOS :MorphOS
STR_OSNAME_AMIGAOS :AmigaOS
STR_0139_IMPERIAL_MILES :Anglo-americane (Mile)
STR_013A_METRIC_KILOMETERS :Metrice (Kilometri)
@@ -352,7 +353,8 @@ STR_015E_QUIT_GAME :Iesire
STR_015F_QUIT :Iesire din joc
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Esti sigur că vrei să renunti la acest joc?
STR_0161_QUIT_GAME :{WHITE}Iesire din joc
STR_SORT_TIP :{BLACK}Alege criteriul de sortare
STR_SORT_ORDER_TIP :{BLACK}Alegeti ordinea de sortare ascendenta/descendenta
STR_SORT_CRITERIA_TIP :{BLACK}Alegeti criteriul de sortare
SRT_SORT_BY :{BLACK}Ordoneaza dupa
STR_SORT_BY_POPULATION :{BLACK}Populatia
@@ -417,6 +419,7 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
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_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
@@ -495,6 +498,8 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}Alege vizionarea unui tutorial
STR_01CE_CARGO_ACCEPTED :{BLACK}Încărcături acceptate: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Încărcături acceptate: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Încărcături acceptate: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Încãrcãturi acceptate: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Încãrcãturi acceptate: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -537,7 +542,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}Selecteaz
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selectează programul personal 1
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selectează programul personal 2
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Sterge programul curent (doar pentru cele personale)
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Salveazã setarile musicale pe disc
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Salveaza setarile pentru muzica
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Click pe o melodie pentru a adăuga-o in programul personal curent
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Comutator pentru amestecarea melodiilor (da/nu)
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Afiseaza fereastra pentru selectia melodiilor
@@ -722,7 +727,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Numele vehiculelor si modelelor
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Prestabilit
STR_02BF_CUSTOM :Propriu
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Salveazã numele proprii pe disc
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Salveaza numele proprii
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Selectează numele modelelor
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Salvează pe disc numele personalizate de mărci si modele
@@ -733,16 +738,20 @@ STR_02C5_DIFFICULTY_SETTINGS :Set
STR_02C6_DIFFICULTY_SETTINGS :Setări dificultate
STR_02C7_CONFIG_PATCHES :Configurare patch
STR_02C8_CONFIG_PATCHES :Configurare patch
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
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Afisează numele statiilor
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Afisează semnele de pe hartă
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Afisează semnele de pe hartă
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Afiseazã checkpoint-urile
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Afiseazã checkpoint-urile
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Afisare puncte de tranzit
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Afisare puncte de tranzit
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Animatie completă
STR_02D0_FULL_ANIMATION :{SETX 12}Animatie completă
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Detalii grafice complete
@@ -765,13 +774,13 @@ STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Afiseaz
STR_02DD_SUBSIDIES :Subventii (F6)
STR_02DE_MAP_OF_WORLD :Harta lumii (F4)
STR_EXTRA_VIEW_PORT :Extra ecran
STR_02DF_TOWN_DIRECTORY :Lista oraselor
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Ecran{COMMA16}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copiaza pe ecranul principal
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copiaza locatia ecranului principal in acest ecran
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Importa din ecran
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Importa locatia acestui ecran in ecranul principal
STR_02DF_TOWN_DIRECTORY :Lista oraselor
STR_02E0_CURRENCY_UNITS :{BLACK}Unităti monetare
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Alege unitatea monetară
@@ -795,16 +804,16 @@ STR_02F8_EVERY_3_MONTHS :La fiecare 3 luni
STR_02F9_EVERY_6_MONTHS :La fiecare 6 luni
STR_02FA_EVERY_12_MONTHS :La fiecare 12 luni
STR_02FB_START_A_NEW_GAME :{BLACK}Începere joc nou
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Încarcã un joc
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Incarca un joc salvat
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}Vizionare demo-uri/tutoriale
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Creează un joc/scenariu propriu
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Alege un joc cu un singur jucător
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Alege un joc multiplayer
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Alege un joc multiplayer cu 2-8 jucatori
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Afisează optiunile jocului
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Afiseaza optiunile pentru alegerea dificultătii
STR_0303_START_A_NEW_GAME_USING :{BLACK}Începerea unui joc nou folosind un scenariu deja existent
STR_0304_QUIT :{BLACK}Iesire
STR_0305_LEAVE_OPENTTD :{BLACK}Iesire din OpenTTD
STR_0305_QUIT_OPENTTD :{BLACK}Iesi din 'OpenTTD'
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Vizionare demonstratie/tutorial
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...se poate construi doar în orase
@@ -852,41 +861,38 @@ STR_TOWNNAME_SWEDISH :Suedeze
STR_TOWNNAME_DUTCH :Olandeze
STR_TOWNNAME_FINNISH :Finlandeze
STR_TOWNNAME_POLISH :Poloneze
STR_TOWNNAME_CZECH :Cehe
STR_TOWNNAME_SLOVAKISH :Slovace
STR_TOWNNAME_HUNGARIAN :Unguresti
STR_TOWNNAME_AUSTRIAN :Austriece
STR_TOWNNAME_ROMANIAN :Romanesti
STR_TOWNNAME_CZECH :Cehe
############ end of townname region
STR_CURR_POUNDS :Lirã sterlinã ({POUNDSIGN})
STR_CURR_DOLLARS :Dolar ($)
STR_CURR_FF :Franc francez (FF)
STR_CURR_DM :Marcã germanã (DM)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Yen japonez ({YENSIGN})
STR_CURR_PT :Peseta spaniolã (Pt)
STR_CURR_FT :Forint unguresc (Ft)
STR_CURR_ZL :Zlot polonez (zl)
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_DKK :Coroană daneză (DKK)
STR_CURR_FIM :Marcă finlandeză (FIM)
STR_CURR_GRD :Drahmă grecească (GRD)
STR_CURR_CHF :Franc elvetian (CHF)
STR_CURR_NLG :Gulden olandez (NLG)
STR_CURR_ITL :Lirã italianã (ITL)
STR_CURR_SEK :Coroanã suedezã (SEK)
STR_CURR_RUR :Rublã ruseascã (RUR)
STR_CURR_CZK :Coroanã cehã (CZK)
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_ROL :Leul Greu Romanesc (Lei)
STR_CURR_EUR :Euro (€)
STR_CURR_RUR :Rublã ruseascã (RUR)
STR_CURR_SEK :Coroanã suedezã (SEK)
STR_OPTIONS_LANG :{BLACK}Limba
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Alege limba în care doresti afisată interfata
STR_OPTIONS_FULLSCREEN :{BLACK}Mod
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Bifeaza aceasta casuta pentru a juca in modul
STR_OPTIONS_RES :{BLACK}Rezolutia ecranului
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Alege rezolutia dorită pentru joc
@@ -966,11 +972,13 @@ STR_CONFIG_PATCHES_OFF :inactiv
STR_CONFIG_PATCHES_ON :activ
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Afisează viteza vehiculelor in bara de jos: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Permite construirea pe coastă si in pantă: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Permite arii de cuprindere mai realistice: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Permite demolarea unui nr. mai mare constructii: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Permite constructia de trenuri foarte lungi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Permite acceleratie realistică pentru trenuri: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Uneste gările alăturate: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Părăseste statia când orice tip de marfă este 'full load': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Foloseste algoritmul de LOAD imbunatatit: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflatia: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Livrează marfa doar in statiile unde aceasta este ceruta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Permite constructia de poduri foarte lungi: {ORANGE}{STRING}
@@ -1037,6 +1045,8 @@ STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Pozitia listei cu instrumente: {ORAN
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :stânga
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :centru
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :dreapta
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Distanta de 'snap' pentru ferestre: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Distanta de 'snap' pentru ferestre: {ORANGE}dezactivata
STR_CONFIG_PATCHES_GUI :{BLACK}Interfată
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Constructie
@@ -1069,24 +1079,28 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Avioanele cu reactie nu se vor pr
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Schimbă peisajul: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Schimbă data: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}Merge spre {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}Merge spre {CHECKPOINT}, {VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Merge spre {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Merge spre {WAYPOINT}, {VELOCITY}
STR_GO_TO_CHECKPOINT :Mergi via {CHECKPOINT}
STR_GO_TO_WAYPOINT :Mergi via {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Mergi non-stop via {WAYPOINT}
STR_CHECKPOINTNAME_CITY :Halta {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Halta {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Haltã de miscare
STR_WAYPOINTNAME_CITY :Halta {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Halta {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Haltã de miscare
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Editeazã numele haltei
STR_WAYPOINT :{WHITE}Punct de tranzit
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Alege tipul de punct de tranzit
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Nu pot schimba numele haltei...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Converteste linia în haltã de miscare (checkpoint)
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Nu pot plasa o haltã aici...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Nu pot sterge halta de aici...
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Editeazã numele haltei
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Nu pot schimba numele haltei...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Converteste linia în haltã de miscare (waypoint)
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Nu pot plasa o haltã aici...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Nu pot sterge halta de aici...
STR_BUILD_AUTORAIL_TIP :{BLACK}Construieste cale ferată în modul automat
@@ -1099,6 +1113,7 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}Multe industrii aleatoare
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Umple harta cu industrii generate aleator
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Nu pot genera industrii...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Afiseaza instrumentele pentru modelarea terenului, plantarea copacilor, etc.
STR_LANDSCAPING_TOOLBAR :{WHITE}Modificare peisaj
STR_LEVEL_LAND_TOOLTIP :{BLACK}Nivelează terenul
@@ -1171,37 +1186,44 @@ TEMP_AI_ACTIVATED :{WHITE}Atentie: algoritmul AI este
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Interfata de retea nu este încã functionalã!
STR_NETWORK_MULTIPLAYER :{WHITE}Multiplayer
STR_NETWORK_FIND_SERVER :{BLACK}Cautã server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Cautã un server în retea
STR_NETWORK_DIRECT_CONNECT :{BLACK}Conectare directã
STR_NETWORK_ENTER_IP :{BLACK}Introdu IP-ul serverului
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Conectare la un IP cunoscut
STR_NETWORK_START_SERVER :{BLACK}Porneste serverul
STR_NETWORK_START_SERVER_TIP :{BLACK}Porneste un server propriu
STR_NETWORK_PLAYER_NAME :{BLACK}Numele jucătorului:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Acesta este numele prin care te vor identifica ceilalti
STR_NETWORK_CONNECTION :{BLACK}Conexiune:
STR_NETWORK_CONNECTION_TIP :{BLACK}Alege intre un joc pe internet si unul pe LAN
STR_NETWORK_SELECT_CONNECTION :{BLACK}Alege tipul de conectare:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Alege între un joc pe Internet si unul în reteaua localã
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_START_SERVER :{BLACK}Porneste serverul
STR_NETWORK_START_SERVER_TIP :{BLACK}Porneste un server propriu
STR_NETWORK_GAME_NAME :{BLACK}Nume
STR_NETWORK_GAME_NAME_TIP :{BLACK}Numele jocului
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Jucãtori prezenti în joc / Numãrul maxim de jucãtori
STR_NETWORK_MAP_SIZE :{BLACK}Mãrime
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Mãrimea hãrtii
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Limba, versiunea serverului, etc.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Click pe un joc din listă pentru a-l selecta
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_FIND_SERVER :{BLACK}Cautã server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Cautã un server în retea
STR_NETWORK_ADD_SERVER :{BLACK}Adauga un server
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Adauga un server pe lista care va fi verificata pentru jocuri active
STR_NETWORK_ENTER_IP :{BLACK}Introdu IP-ul serverului
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Clienti
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Clienti online / Nr. max. clienti
STR_NETWORK_GAME_INFO :{SILVER}INFO JOC
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Clienti: {WHITE}{COMMA8} / {COMMA8}
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_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!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER OFFLINE
STR_NETWORK_SERVER_FULL :{SILVER}SERVER PLIN
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERSIUNE DIFERITA
STR_NETWORK_JOIN_GAME :{BLACK}Intră în joc
@@ -1210,20 +1232,28 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}
STR_NETWORK_NEW_GAME_NAME :{BLACK}Nume joc:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Numele jocului va fi afisat celorlalti în meniul de selectare al jocurilor multiplayer
STR_NETWORK_PASSWORD :{BLACK}Parola:
STR_NETWORK_SET_PASSWORD :{BLACK}Pune parola
STR_NETWORK_PASSWORD_TIP :{BLACK}Protejează-ti jocul cu o parolă dacă nu vrei să intre jucători neautorizati
STR_NETWORK_SELECT_MAP :{BLACK}Alege o hartă:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Ce hartă doresti sa joci?
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Numãr de jucãtori:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Alege numãrul maxim de jucãtori. Nu toate locurile trebuie ocupate.
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 jucatori
STR_NETWORK_3_PLAYERS :3 jucatori
STR_NETWORK_4_PLAYERS :4 jucatori
STR_NETWORK_5_PLAYERS :5 jucatori
STR_NETWORK_6_PLAYERS :6 jucatori
STR_NETWORK_7_PLAYERS :7 jucatori
STR_NETWORK_8_PLAYERS :8 jucatori
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_INTERNET :LAN / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (fa reclama)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 clienti
STR_NETWORK_3_CLIENTS :3 clienti
STR_NETWORK_4_CLIENTS :4 clienti
STR_NETWORK_5_CLIENTS :5 clienti
STR_NETWORK_6_CLIENTS :6 clienti
STR_NETWORK_7_CLIENTS :7 clienti
STR_NETWORK_8_CLIENTS :8 clienti
STR_NETWORK_9_CLIENTS :9 clienti
STR_NETWORK_10_CLIENTS :10 clienti
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Limba vorbita:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Ceilalti jucatori vor sti in ce limba se discuta per server.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Începe jocul
STR_NETWORK_START_GAME_TIP :{BLACK}Incepe un joc nou in retea cu o harta aleatoare sau intr-un scenariu
STR_NETWORK_LOAD_GAME :{BLACK}Incarca joc
@@ -1231,17 +1261,62 @@ STR_NETWORK_LOAD_GAME_TIP :{BLACK}Reia un joc multiplayer salvat anterior (a
STR_NETWORK_LOAD_SCENARIO :{BLACK}Incarca scenariu
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Incepe un joc nou intr-un scenariu
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Oricare
STR_NETWORK_LANG_ENGLISH :Engleza
STR_NETWORK_LANG_GERMAN :Germana
STR_NETWORK_LANG_FRENCH :Franceza
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Chatul jocului multiplayer
STR_NETWORK_SEND :{BLACK}Trimite
STR_NETWORK_SEND_TIP :{BLACK}Trimite un mesaj celorlalti jucãtori
STR_NETWORK_COMPANY_NAME :{BLACK}Numele companiei:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Schimbã numele companiei. Apasã Enter pentru a aplica schimbarea.
STR_NETWORK_SPECTATE_GAME :{BLACK}Modul spectator
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Vizioneazã un joc din pozitia unui spectator
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}In pregatire pentru joc: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Lista companiilor din jocul curent. Poti colabora cu o companie sau sa infiintezi una
STR_NETWORK_NEW_COMPANY :{BLACK}Companie nouă
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Fondează o nouă companie
STR_NETWORK_READY :{BLACK}Pregãtit
STR_NETWORK_SPECTATE_GAME :{BLACK}Modul spectator
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Vizioneazã un joc din pozitia unui spectator
STR_NETWORK_JOIN_COMPANY :{BLACK}Alatura-te companiei
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Ajuta la conducerea acestei companii
STR_NETWORK_REFRESH :{BLACK}Actualizeaza serverul
STR_NETWORK_REFRESH_TIP :{BLACK}Actualizeaza informatiile despre server
STR_NETWORK_COMPANY_INFO :{SILVER}INFO COMPANIE
STR_NETWORK_COMPANY_NAME :{SILVER}Numele companiei: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Inaugurarea: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Valoarea companiei: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Balanta curenta: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Venituri anul trecut: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Performanta: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Vehicule: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Statii: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Jucatori: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Conectare...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Conectare..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Authorizare..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Asteptati..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Descarcare harta..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Prelucrare date..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Inregistrare...
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Preluare info joc..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Preluare info companie..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} client(i) inaintea noastra
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kbytes descarcati pana acum
STR_NETWORK_DISCONNECT :{BLACK}Deconectare
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Introdu textul de trimis
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introdu suma de bani pe care vrei sa o cedezi
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server protejat. Introdu parola
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Companie protejata. Introdu parola
STR_NETWORK_CLIENT_LIST :{WHITE}Lista de clienti
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE}Nu a fost detectată o placă de retea valabilă
STR_NETWORK_ERR_NOSERVER :{WHITE}Nu a fost găsit nici un joc în retea
@@ -1249,7 +1324,56 @@ STR_NETWORK_ERR_NOCONNECTION :{WHITE}Serverul nu a r
STR_NETWORK_ERR_DESYNC :{WHITE} Sincronizarea jocului in retea a esuat.
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Conexiunea jocului in reatea a fost intrerupta.
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Nu am reusit sa incarc jocul-server salvat.
STR_NETWORK_ERR_SERVER_START :{WHITE}Nu pot porni serverul.
STR_NETWORK_ERR_CLIENT_START :{WHITE}Nu pot efectua conectarea.
STR_NETWORK_ERR_TIMEOUT :{WHITE} Conexiunea #{NUMU16} a expirat.
STR_NETWORK_ERR_SERVER_ERROR :{WHITE}Eroare de protocol. Conexiunea a fost inchisa.
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_KICKED :{WHITE}Ai fost dat afara de pe server
STR_NETWORK_ERR_CHEATER :{WHITE} Cheat-urile nu sunt permise pe acest server
STR_NETWORK_ERR_LEFT :a parasit jocul
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :eroare generala
STR_NETWORK_ERR_CLIENT_DESYNC :eroare de desincronizare
STR_NETWORK_ERR_CLIENT_SAVEGAME :nu pot incarca harta
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :conexiune pierduta
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :eroare de protocol
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :neautorizat
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :primit pachet ciudat
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :versiune incorecta
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :nume folosit deja
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :parola gresita
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :player-id in DoCommand gresit
STR_NETWORK_ERR_CLIENT_KICKED :dat afara de pe server
STR_NETWORK_ERR_CLIENT_CHEATER :a incercat sa foloseasca un cheat
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :a intrat in joc
STR_NETWORK_GIVE_MONEY :ti-a dat o suma de bani ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :ai donat o suma de bani companiei {STRING} ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Team] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Team] To {STRING}:
STR_NETWORK_CHAT_CLIENT :[Private] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Private] pentru {STRING}:
STR_NETWORK_CHAT_ALL :[All] {STRING}:
STR_NETWORK_NAME_CHANGE :si-a schimbat numele in
STR_NETWORK_SERVER_SHUTDOWN :{WHITE}Serverul a inchis conexiunea
STR_NETWORK_SERVER_REBOOT :{WHITE}Serverul este repornit...{}Va rugam asteptati...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Client
STR_NETWORK_CLIENTLIST_NONE :(none)
STR_NETWORK_CLIENTLIST_KICK :Kick
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Doneaza bani
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Vorbeste catre toti
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Vorbeste catre companie
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Mesaj privat
STR_NETWORK_SEND :{BLACK}Trimite
############ end network gui strings
@@ -1820,7 +1944,7 @@ STR_683B_HOSTILE :ostil
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7002_PLAYER :(Jucătorul {COMMA16})
STR_7004_NEW_FACE :{BLACK}Schimbă foto
STR_7005_COLOR_SCHEME :{BLACK}Culoare
@@ -2475,7 +2599,7 @@ STR_GO_TO_SHIP_DEPOT :Mergi la Santierul Naval {TOWN}
SERVICE_AT_SHIP_DEPOT :Service la Santierul Naval {TOWN}
##id 0xA000
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Construieste aeroport
STR_A000_AIRPORTS :{WHITE}Airoporturi
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Nu pot construi un aeroport aici...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Hangar
STR_A003_NEW_AIRCRAFT :{BLACK}Aeronavă nouă
@@ -2563,8 +2687,8 @@ STR_MULTIPLAYER_PAUSED :{WHITE}Jocul este in pauza.{}Comanda nu s-a putut e
STR_PERFORMANCE_DETAIL :{WHITE}Ratingul de performantă detaliat
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detalii
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}{TINYFONT}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}{TINYFONT}({INT32}/{INT32})
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
@@ -2590,3 +2714,26 @@ STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Balanta curent
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Ponderea creditelor
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Punctajul total din numărul maxim posibil
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Setari Newgrf
STR_NEWGRF_APPLY_CHANGES :{BLACK}Aplica schimbarile
STR_NEWGRF_SET_PARAMETERS :{BLACK}Seteaza parametri
STR_NEWGRF_TIP :{BLACK}Lista tuturor setarilor Newgrf pe care le-ai instalat. Click pentru a schimba setarile.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Nu exista fisiere newgrf instalate! Citeste manualul pentru instructiunile de instalare a fisierelor grafice noi.
STR_NEWGRF_FILENAME :{BLACK}Nume fisier:
STR_NEWGRF_GRF_ID :{BLACK}ID GRF:
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Trenuri
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Autovehicule
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Aeronave
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Nave
STR_SCHEDULED_TRAINS_TIP :{BLACK}Afiseaza toate trenurile care opresc in aceasta statie
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
+2
View File
@@ -0,0 +1,2 @@
##name Russian_latin_char
##ownname Russkiy
+2450 -2097
View File
File diff suppressed because it is too large Load Diff
+2761
View File
File diff suppressed because it is too large Load Diff
+415 -108
View File
@@ -5,7 +5,7 @@
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Utanför kanten
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}För nära kanten
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Inte tillräckligt med pengar - kräver {CURRENCY}
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Inte tillräckligt med pengar - krävs {CURRENCY}
STR_0004 :{WHITE}{CURRENCY64}
STR_0005 :{RED}{CURRENCY64}
STR_EMPTY :
@@ -188,6 +188,10 @@ STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Ursprunglig
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_00C5 :{BLACK}{CROSS}
@@ -202,7 +206,7 @@ STR_00CD_3 :{BLACK}3
STR_00CE_4 :{BLACK}4
STR_00CF_5 :{BLACK}5
STR_00D0_NOTHING :Inget
STR_00D1_DARK_BLUE :Mörkgrön
STR_00D1_DARK_BLUE :Mörkblå
STR_00D2_PALE_GREEN :Mattgrön
STR_00D3_PINK :Rosa
STR_00D4_YELLOW :Gul
@@ -306,6 +310,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 :Engelsk mil (miles)
STR_013A_METRIC_KILOMETERS :Metrisk (kilometer)
@@ -338,6 +343,7 @@ STR_0157_PERFORMANCE_HISTORY_GRAPH :Graf
STR_0158_COMPANY_VALUE_GRAPH :Graf över företagets värde
STR_0159_CARGO_PAYMENT_RATES :Fraktförtjänster
STR_015A_COMPANY_LEAGUE_TABLE :Tabell över ledande företag
STR_PERFORMANCE_DETAIL_MENU :Detaljerade prestandabetyg
############ range for menu ends
STR_015B_OPENTTD :{WHITE}OpenTTD
@@ -347,7 +353,25 @@ STR_015E_QUIT_GAME :Avsluta spelet
STR_015F_QUIT :Avsluta
STR_0160_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Vill du verkligen avsluta spelet?
STR_0161_QUIT_GAME :{WHITE}Avsluta spelet
STR_SORT_ORDER_TIP :{BLACK}Välj sorteringsordning (fallande/stigande)
STR_SORT_CRITERIA_TIP :{BLACK}Välj sortering
SRT_SORT_BY :{BLACK}Sortera efter
STR_SORT_BY_POPULATION :{BLACK}Befolkning
STR_SORT_BY_PRODUCTION :{BLACK}Produktion
STR_SORT_BY_TYPE :{BLACK}Typ
STR_SORT_BY_TRANSPORTED :{BLACK}Transporterat
STR_SORT_BY_NAME :{BLACK}Namn
STR_SORT_BY_DROPDOWN_NAME :Namn
STR_SORT_BY_DATE :{BLACK}Datum
STR_SORT_BY_UNSORTED :Osorterat
STR_SORT_BY_NUMBER :Nummer
STR_SORT_BY_PROFIT_LAST_YEAR :Vinst förra året
STR_SORT_BY_PROFIT_THIS_YEAR :Vinst i år
STR_SORT_BY_AGE :Ålder
STR_SORT_BY_RELIABILITY :Pålitlighet
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Total kapacitet per godstyp
STR_SORT_BY_MAX_SPEED :Maximal hastighet
############ range for months starts
STR_0162_JAN :jan
@@ -395,6 +419,7 @@ STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Kan inte ändra service-intervall...
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_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
@@ -473,6 +498,8 @@ STR_01CD_SELECT_TUTORIAL_DEMONSTRATION :{WHITE}V
STR_01CE_CARGO_ACCEPTED :{BLACK}Accepterat gods: {LTBLUE}{STRING}
STR_01CF_CARGO_ACCEPTED :{BLACK}Accepterat gods: {LTBLUE}{STRING}, {STRING}
STR_01D0_CARGO_ACCEPTED :{BLACK}Accepterat gods: {LTBLUE}{STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_4 :{BLACK}Accepterat gods: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}
STR_CARGO_ACCEPTED_5 :{BLACK}Accepterat gods: {LTBLUE}{STRING}, {STRING}, {STRING}, {STRING}, {STRING}
############ range for cargo acecpted ends
STR_01D1_8 :({COMMA8}/8 {STRING})
@@ -515,7 +542,7 @@ STR_01F5_SELECT_NEW_STYLE_MUSIC :{BLACK}V
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Välj spellistan 'Egen 1' (användardefinerad)
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Välj spellistan 'Egen 2' (användardefinerad)
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Töm aktuellt program (Enbart Egen1 eller Egen2)
STR_01F9_SAVE_MUSIC_SETTINGS_TO :{BLACK}Spara musikinställningarna
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Spara ljudinställningar
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Klicka på ett spår för att lägga till den till spellistan (Enbart Egen1 eller Egen2)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Växla slumpning av/på
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Visa fönstret för val av musikspår
@@ -700,7 +727,7 @@ STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Fordonens modellnamn
STR_02BD :{BLACK}{STRING}
STR_02BE_DEFAULT :Original
STR_02BF_CUSTOM :Egna
STR_02C0_SAVE_CUSTOM_NAMES_TO_DISK :{BLACK}Spara egna namn till disk
STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Spara egna namn
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Fordonens modellnamnssortiment
STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Spara egna modellnamn för fordon till disk
@@ -711,22 +738,26 @@ STR_02C5_DIFFICULTY_SETTINGS :Sv
STR_02C6_DIFFICULTY_SETTINGS :Svårighetsgrad
STR_02C7_CONFIG_PATCHES :Konfigurera patchar
STR_02C8_CONFIG_PATCHES :Konfigurera patchar
STR_NEWGRF_SETTINGS :Newgrf inställningar
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
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Stationsnamn visas
STR_02CD_SIGNS_DISPLAYED :{CHECKMARK}{SETX 12}Skyltar visas
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Skyltar visas
STR_CHECKPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Kontrollstationer visas
STR_CHECKPOINTS_DISPLAYED2 :{SETX 12}Kontrollstationer visas
STR_WAYPOINTS_DISPLAYED :{CHECKMARK}{SETX 12}Kontrollstationer visas
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Kontrollstationer visas
STR_02CF_FULL_ANIMATION :{CHECKMARK}{SETX 12}Full animation
STR_02D0_FULL_ANIMATION :{SETX 12}Full animation
STR_02D1_FULL_DETAIL :{CHECKMARK}{SETX 12}Full detaljnivå
STR_02D2_FULL_DETAIL :{SETX 12}Full detaljnivå
STR_02D3_TRANSPARENT_BUILDINGS :{CHECKMARK}{SETX 12}Transparenta byggnader
STR_02D4_TRANSPARENT_BUILDINGS :{SETX 12}Transparenta byggnader
STR_02D3_TRANSPARENT_BUILDINGS :{CHECKMARK}{SETX 12}Genomskinliga byggnader
STR_02D4_TRANSPARENT_BUILDINGS :{SETX 12}Genomskinliga byggnader
############ range ends here
############ range for menu starts
@@ -742,8 +773,14 @@ STR_02DB_OFF :{BLACK}Av
STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Visa subventioner
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_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
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Klistra in vyn
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Flytta kartans position till den här vyn
STR_02E0_CURRENCY_UNITS :{BLACK}Valutaenheter
STR_02E1 :{BLACK}{SKIP}{STRING}
STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Välj valutaenhet
@@ -767,16 +804,16 @@ STR_02F8_EVERY_3_MONTHS :Var 3:e m
STR_02F9_EVERY_6_MONTHS :Var 6:e månad
STR_02FA_EVERY_12_MONTHS :Var 12:e månad
STR_02FB_START_A_NEW_GAME :{BLACK}Börja ett nytt spel
STR_02FC_LOAD_A_SAVED_GAME_FROM :{BLACK}Öppna ett sparat spel
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Ladda sparat spel
STR_02FD_VIEW_DEMONSTRATIONS_TUTORIALS :{BLACK}View demonstrationer/tutorials
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Skapa egen ny spel värld/scenario
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Välj en spelare
STR_0300_SELECT_TWO_PLAYER_GAME :{BLACK}Välj två spelare
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Välj nätverksspel med 2-8 spelare
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Visa spelinställningar
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Visa inställningar för svårighetsgrad
STR_0303_START_A_NEW_GAME_USING :{BLACK}Starta nytt spel, som använder ett eget scenario
STR_0304_QUIT :{BLACK}Avsluta
STR_0305_LEAVE_OPENTTD :{BLACK}Avsluta 'OpenTTD'
STR_0305_QUIT_OPENTTD :{BLACK}Avsluta 'OpenTTD'
STR_0306_VIEW_DEMONSTRATION_TUTORIAL :{BLACK}Visa demonstration/tutorial
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan bara byggas i städer
@@ -827,35 +864,43 @@ STR_TOWNNAME_POLISH :Polska
STR_TOWNNAME_SLOVAKISH :Slovakiska
STR_TOWNNAME_HUNGARIAN :Hungarianska
STR_TOWNNAME_AUSTRIAN :Australienska
STR_TOWNNAME_ROMANIAN :Rumänska
STR_TOWNNAME_CZECH :Tjeckiska
############ end of townname region
STR_CURR_POUNDS :Pund ({POUNDSIGN})
STR_CURR_DOLLARS :Dollar ($)
STR_CURR_FF :Franska franc (FF)
STR_CURR_DM :Tyska mark (DM)
STR_CURR_GBP :Pund ({POUNDSIGN})
STR_CURR_USD :Dollar ($)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_PT :Pesetas (Pt)
STR_CURR_FT :Ungerska forint (Ft)
STR_CURR_ZL :Polska zloty (zl)
STR_CURR_ATS :Österrikiska shilling (ATS)
STR_CURR_BEF :Belgiska franc (BEF)
STR_CURR_DKK :Danska kronor (DKK)
STR_CURR_FIM :Finska mark (FIM)
STR_CURR_GRD :Grekiska drachmer (GRD)
STR_CURR_CHF :Schweiziska franc (CHF)
STR_CURR_NLG :Holländska guilder (NLG)
STR_CURR_ITL :Italienska lire (ITL)
STR_CURR_SEK :Svenska kronor (SEK)
STR_CURR_RUR :Ryska rubel (rur)
STR_CURR_CZK :Tjeckiska kronor (CZK)
STR_CURR_DEM :Tyska mark (DEM)
STR_CURR_DKK :Danska kronor (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Finska mark (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Grekiska drachmer (GRD)
STR_CURR_HUF :Ungerska Forint (HUF)
STR_CURR_ISK :Isländska kronor (ISK)
STR_CURR_ITL :Italienska lire (ITL)
STR_CURR_NLG :Holländska guilder (NLG)
STR_CURR_NOK :Norska kronor (NOK)
STR_CURR_EUR :Euro (€)
STR_CURR_PLN :Polska Zloty (PLN)
STR_CURR_ROL :Rumänsk Leu
STR_CURR_RUR :Ryska rubel (rur)
STR_CURR_SEK :Svenska kronor (SEK)
STR_CURR_CUSTOM :Egen...
STR_OPTIONS_LANG :{BLACK}Språk
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_LANG_TIP :{BLACK}Välj språk att använda
STR_OPTIONS_FULLSCREEN :{BLACK}Helskärm
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Kryssa i den här rutan för att spela OpenTTD i helskärmsläge
STR_OPTIONS_RES :{BLACK}Skärmupplösning
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_OPTIONS_RES_TIP :{BLACK}Välj skärmupplösning att använda
@@ -900,11 +945,32 @@ STR_END_OF_SHARED_ORDERS :{SETX 10}- - Slut p
STR_TRAIN_IS_LOST :{WHITE}Tåg {COMMA16} har tappat bort sig.
STR_TRAIN_IS_UNPROFITABLE :{WHITE}Tåg {COMMA16}s vinst förra året var {CURRENCY}
STR_EURO_INTRODUCE :{BLACK}{BIGFONT}Europeiska Valutasystemet!{}{}Euron introduceras och ditt land går över till den som dess enda valuta!
# Start of order review system.
# DON'T ADD OR REMOVE LINES HERE
STR_TRAIN_HAS_TOO_FEW_ORDERS :{WHITE}Tåg {COMMA16} har för få destinationer
STR_TRAIN_HAS_VOID_ORDER :{WHITE}Tåg {COMMA16} har en bruten destination
STR_TRAIN_HAS_DUPLICATE_ENTRY :{WHITE}Tåg {COMMA16} har dubblerade destinationer
STR_TRAIN_HAS_INVALID_ENTRY :{WHITE}Tåg {COMMA16} har en felaktig station ibland destinationerna
STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Vägfordon {COMMA16} har för få destinationer
STR_ROADVEHICLE_HAS_VOID_ORDER :{WHITE}Vägfordon {COMMA16} har en bruten destination
STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Vägfordon {COMMA16} har dubblerade destinationer
STR_ROADVEHICLE_HAS_INVALID_ENTRY :{WHITE}Vägfordon {COMMA16} har en felaktig station ibland destinationerna
STR_SHIP_HAS_TOO_FEW_ORDERS :{WHITE}Skepp {COMMA16} har för få destinationer
STR_SHIP_HAS_VOID_ORDER :{WHITE}Skepp {COMMA16} har en bruten destination
STR_SHIP_HAS_DUPLICATE_ENTRY :{WHITE}Skepp {COMMA16} har dubblerade destinationer
STR_SHIP_HAS_INVALID_ENTRY :{WHITE}Skepp {COMMA16} har en felaktig station ibland destinationerna
STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}Flygplan {COMMA16} har för få destinationer
STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}Flygplan {COMMA16} har en bruten destination
STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}Flygplan {COMMA16} har dubblerade destinationer
STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}Flygplan {COMMA16} har en felaktig station ibland destinationerna
# end of order system
STR_TRAIN_AUTORENEW_FAILED :{WHITE}Automatiska förnyandet av tåg {COMMA16} misslyckades (inte tillräckligt med pengar)
STR_ROADVEHICLE_AUTORENEW_FAILED :{WHITE}Automatiska förnyandet av vägfordon {COMMA16} misslyckades (inte tillräckligt med pengar)
STR_SHIP_AUTORENEW_FAILED :{WHITE}Automatiska förnyandet av skepp {COMMA16} misslyckades (inte tillräckligt med pengar)
STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Automatiska förnyandet av flygplan {COMMA16} misslyckades (inte tillräckligt med pengar)
STR_CONFIG_PATCHES :{BLACK}Konfigurera patchar
STR_CONFIG_PATCHES_TIP :{BLACK}Konfigurera patcharna
@@ -914,11 +980,13 @@ STR_CONFIG_PATCHES_OFF :Av
STR_CONFIG_PATCHES_ON :På
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Visa fordonshastighet i statusfältet: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Tillåt byggnation på sluttningar och kuster: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Tillåt mer realistiska uppsamlingsområden för stationer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Tillåt borttagning av mera stadsägda vägar etc.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Tillåt väldigt långa tåg: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Aktivera realistisk acceleration för tåg: {ORANGE}{STRING}
STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Kombinera tågstationer som byggs bredvid varandra: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Lämna stationen när något gods är fullt, om 'full load': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Använd förbättrad algoritm: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflation: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Leverera gods till en station enbart om någon frågar efter det: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Tillåt väldigt långa broar: {ORANGE}{STRING}
@@ -940,11 +1008,20 @@ STR_CONFIG_PATCHES_NEW_TRAIN_PATHFIND :{LTBLUE}Ny algoritm f
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Tillåt alltid små flygplatser: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS :{LTBLUE}Ett tåg är vilse om ingen vidare framgång är nådd under: {ORANGE}{STRING} dagar
STR_CONFIG_PATCHES_LOST_TRAIN_DAYS_DISABLED :{LTBLUE}Ett tåg är vilse om ingen vidare framgång är nådd under: {ORANGE}disabled
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Granska fordonens destinationer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :nej
STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :ja, förutom stannade fordon
STR_CONFIG_PATCHES_ORDER_REVIEW_ON :ja, på alla fordon
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Varna om ett tågs inkomst är negativ: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Fordon blir aldrig gamla: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Förnya fordon automatiskt när dom blir gamla
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_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}Max stationsspridning: {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
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Serva helikoptrar vid landningplattor automatiskt: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Max antal tåg per spelare: {ORANGE}{STRING}
@@ -957,27 +1034,46 @@ STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}F
STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Förbjud flygplan för datorn: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}Förbjud skepp för datorn: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Dator med ny AI (alpha): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Standard-serviceintervall för tåg: {ORANGE}{STRING} days
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Standard-serviceintervall för vägfordon: {ORANGE}{STRING} days
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard-serviceintervall för flygplan: {ORANGE}{STRING} days
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Standard-serviceintervall för skepp: {ORANGE}{STRING} days
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Standard serviceintervall för tåg: {ORANGE}{STRING} dagar
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Standard serviceintervall för tåg: {ORANGE}av
STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Standard serviceintervall för vägfordon: {ORANGE}{STRING} dagar
STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Standard serviceintervall för vägfordon: {ORANGE}av
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Standard serviceintervall för flygplan: {ORANGE}{STRING} dagar
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_COLORED_NEWS_DATE :{LTBLUE}Färgade nyheter visas i: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_DATE :{LTBLUE}Startdatum: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Lugn ekonomi (flera små ändringar)
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
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Centrerad
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Höger
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Fönstersnäppsradie: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Fönstersnäppsradie: {ORANGE}avaktiverad
STR_CONFIG_PATCHES_GUI :{BLACK}Gränssnitt
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Konstruktion
STR_CONFIG_PATCHES_VEHICLES :{BLACK}Fordon
STR_CONFIG_PATCHES_STATIONS :{BLACK}Stationer
STR_CONFIG_PATCHES_ECONOMY :{BLACK}Ekonomi
STR_CONFIG_PATCHES_AI :{BLACK}Motståndare
STR_CONFIG_PATCHES_DISABLED :Avaktiverat
STR_CONFIG_PATCHES_INT32 :{INT32}
STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Ändra inställningsvärde
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Några eller alla av standard serviceintervalls-inställningarna är felaktiga! (5-90% och 30-800 dagar är giltiga inställningar)
STR_TEMPERATE_LANDSCAPE :tempererat landskap
STR_SUB_ARCTIC_LANDSCAPE :sub-arktiskt landskap
STR_SUB_TROPICAL_LANDSCAPE :sub-tropiskt landskap
STR_TOYLAND_LANDSCAPE :leksakslandskap
STR_CHEATS :{WHITE}Fusk
STR_CHEATS_TIP :{BLACK}Checkboxar indikerar om du använt det här fusket förut
@@ -987,25 +1083,32 @@ STR_CHEAT_CHANGE_PLAYER :{LTBLUE}Spelar som: {ORANGE}{COMMA16}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}trimmad bulldozer (ta bort industrier, fyrar etc.): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnlar kan korsa varandra: {ORANGE}{STRING}
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Byggnation i pause-läge: {ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}Jetplan kommer inte att störta (frekvent) på små flygplatser: {ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Byt klimat: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Byt datum: {ORANGE} {DATE_SHORT}
STR_HEADING_FOR_CHECKPOINT :{LTBLUE}På väg mot {CHECKPOINT}
STR_HEADING_FOR_CHECKPOINT_VEL :{LTBLUE}På väg mot {CHECKPOINT}, {VELOCITY}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}På väg mot {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}På väg mot {WAYPOINT}, {VELOCITY}
STR_GO_TO_CHECKPOINT :Gå via {CHECKPOINT}
STR_GO_TO_WAYPOINT :Gå via {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Gå via {WAYPOINT} utan att stanna
STR_CHECKPOINTNAME_CITY :Kontrollstation {TOWN}
STR_CHECKPOINTNAME_CITY_SERIAL :Kontrollstation {TOWN} #{COMMA16}
STR_LANDINFO_CHECKPOINT :Kontrollpunkt
STR_WAYPOINTNAME_CITY :Kontrollstation {TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Kontrollstation {TOWN} #{COMMA16}
STR_LANDINFO_WAYPOINT :Kontrollpunkt
STR_CHECKPOINT_VIEWPORT :{WHITE}{CHECKPOINT}
STR_CHECKPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{CHECKPOINT}
STR_CHECKPOINT_RAW :{CHECKPOINT}
STR_EDIT_CHECKPOINT_NAME :{WHITE}Ändra namn på kontrollstation
STR_WAYPOINT :{WHITE}Vägpunkt
STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Välj vägpunkts typ
STR_CANT_CHANGE_CHECKPOINT_NAME :{WHITE}Kan inte ändra kontrollstationens namn...
STR_CONVERT_RAIL_TO_CHECKPOINT_TIP :{BLACK}Ändra räls till kontrollstation
STR_CANT_BUILD_TRAIN_CHECKPOINT :{WHITE}Kan inte bygga tågkontrollstation här...
STR_CANT_REMOVE_TRAIN_CHECKPOINT :{WHITE}Kan inte ta bort tågkontrollstation här...
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
STR_EDIT_WAYPOINT_NAME :{WHITE}Ändra namn på kontrollstation
STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Kan inte ändra kontrollstationens namn...
STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Ändra räls till kontrollstation
STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Kan inte bygga tågkontrollstation här...
STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan inte ta bort tågkontrollstation här...
STR_BUILD_AUTORAIL_TIP :{BLACK}Bygg järnvägspår genom att använda Autorail-funktionen
@@ -1018,7 +1121,8 @@ STR_MANY_RANDOM_INDUSTRIES :{BLACK}M
STR_RANDOM_INDUSTRIES_TIP :{BLACK}Täck kartan med slumpmässigt placerade industrier
STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan inte generera industrier...
STR_LANDSCAPING_TOOLBAR :{WHITE}Landskapsverktygen
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Öppna landskapsarkitektursverktygen för att bla höja/sänka land, plantera träd, osv
STR_LANDSCAPING_TOOLBAR :{WHITE}Landskapsarkitektur
STR_LEVEL_LAND_TOOLTIP :{BLACK}Utjämna land
@@ -1071,8 +1175,8 @@ STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Bygg kn
STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Bygg sockergruva
STR_INDUSTRYDIR_CAPTION :{WHITE}Industrier
STR_INDUSTRYDIR_ITEM :{ORANGE}{CITY} {STRING}{BLACK} ({STRING}){YELLOW} ({COMMA16}% transporterat)
STR_INDUSTRYDIR_ITEM_TWO :{ORANGE}{CITY} {STRING}{BLACK} ({STRING}/{STRING}){YELLOW} ({COMMA16}%/{COMMA16}% transporterat)
STR_INDUSTRYDIR_ITEM :{ORANGE}{TOWN} {STRING}{BLACK} ({STRING}){YELLOW} ({COMMA16}% transporterat)
STR_INDUSTRYDIR_ITEM_TWO :{ORANGE}{TOWN} {STRING}{BLACK} ({STRING}/{STRING}){YELLOW} ({COMMA16}%/{COMMA16}% transporterat)
STR_INDUSTRYDIR_ITEM_NOPROD :{ORANGE}{TOWN} {STRING}
STR_INDUSTRY_TOO_CLOSE :{WHITE}... för nära annan industri
@@ -1083,41 +1187,51 @@ STR_RAIL_REFIT_VEHICLE :{BLACK}Anpassa t
STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Välj godstyp för tåget att bära
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}
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!
############ network gui strings
TEMP_STRING_NO_NETWORK :{WHITE}Stöd för nätverksspel fungerar inte än!
STR_NETWORK_MULTIPLAYER :{WHITE}Flera spelare
STR_NETWORK_FIND_SERVER :{BLACK}Leta server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Leta på nätverket efter en server
STR_NETWORK_DIRECT_CONNECT :{BLACK}Anslut direkt
STR_NETWORK_ENTER_IP :{BLACK}IP-adressen till servern
STR_NETWORK_DIRECT_CONNECT_TIP :{BLACK}Ansluta till en server med känd IP-adress
STR_NETWORK_PLAYER_NAME :{BLACK}Spelarnamn:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Namnet som andra spelare kommer att identifiera dig av
STR_NETWORK_CONNECTION :{BLACK}Anslutning:
STR_NETWORK_CONNECTION_TIP :{BLACK}Välj mellan att spela över internet eller det lokala nätverket
STR_NETWORK_START_SERVER :{BLACK}Starta server
STR_NETWORK_START_SERVER_TIP :{BLACK}Starta en server för andra att ansluta till
STR_NETWORK_PLAYER_NAME :{BLACK}Namn på spelare:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Namnet som andra spelare kommer att identifiera dig av
STR_NETWORK_SELECT_CONNECTION :{BLACK}Välj typ av nätverksspel:
STR_NETWORK_CONNECTION_TYPE_TIP :{BLACK}Välj mellan att spela på internet eller över det lokala nätverket
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_GAME_NAME :{BLACK}Namn
STR_NETWORK_GAME_NAME_TIP :{BLACK}Namn på nätverksspelet
STR_NETWORK_PLAYERS :{BLACK}#/#
STR_NETWORK_PLAYERS_TIP :{BLACK}Antalet spelare i spelet nu / maximalt antal spelare
STR_NETWORK_MAP_SIZE :{BLACK}Storlek
STR_NETWORK_MAP_SIZE_TIP :{BLACK}Storlek på kartan
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Språk, server version, mm
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Klicka på ett spel från listan för att välja det
STR_NETWORK_PLAYERS_VAL :{BLACK}{COMMA8}/{COMMA8}
STR_NETWORK_FIND_SERVER :{BLACK}Leta server
STR_NETWORK_FIND_SERVER_TIP :{BLACK}Leta på nätverket efter en server
STR_NETWORK_ADD_SERVER :{BLACK}Lägg till server
STR_NETWORK_ADD_SERVER_TIP :{BLACK}Lägg till en server till listan som alltid kommer kontrolleras för aktiva spel.
STR_NETWORK_ENTER_IP :{BLACK}IP-adressen till servern
STR_NETWORK_CLIENTS_ONLINE :{BLACK}{COMMA16}/{COMMA16}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Klienter
STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Klienter online / Klienter max
STR_NETWORK_GAME_INFO :{SILVER}SPELINFO
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Klienter: {WHITE}{COMMA8} / {COMMA8}
STR_NETWORK_LANGUAGE :{SILVER}Språk: {WHITE}{STRING}
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_START_DATE :{SILVER}Startdatum: {WHITE}{DATE_SHORT}
STR_NETWORK_CURRENT_DATE :{SILVER}Nuvarande datum: {WHITE}{DATE_SHORT}
STR_NETWORK_PASSWORD :{SILVER}Lösenordsskyddad!
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVER AVSTÄNGD
STR_NETWORK_SERVER_FULL :{SILVER}SERVER FULL
STR_NETWORK_VERSION_MISMATCH :{SILVER}VERSIONER FUNKAR INTE IHOP
STR_NETWORK_JOIN_GAME :{BLACK}Gå med i spelet
@@ -1126,34 +1240,150 @@ STR_NETWORK_START_GAME_WINDOW :{WHITE}Starta ett nytt spel
STR_NETWORK_NEW_GAME_NAME :{BLACK}Namn:
STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Namnet på nätverksspelet som kommer att synas för dom andra spelarna
STR_NETWORK_PASSWORD :{BLACK}Lösenord:
STR_NETWORK_SET_PASSWORD :{BLACK}Ange lösenord
STR_NETWORK_PASSWORD_TIP :{BLACK}Skydda spelet med ett lösenord så att inte andra än dom som har lösenordet kan gå med i spelet
STR_NETWORK_SELECT_MAP :{BLACK}Välj karta:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Vilken karta vill du spela?
STR_NETWORK_NUMBER_OF_PLAYERS :{BLACK}Nummer av spelare:
STR_NETWORK_NUMBER_OF_PLAYERS_TIP :{BLACK}Maximalt antal spelare som kan vara med å spela
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_PLAYERS :2 spelare
STR_NETWORK_3_PLAYERS :3 spelare
STR_NETWORK_4_PLAYERS :4 spelare
STR_NETWORK_5_PLAYERS :5 spelare
STR_NETWORK_6_PLAYERS :6 spelare
STR_NETWORK_7_PLAYERS :7 spelare
STR_NETWORK_8_PLAYERS :8 spelare
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Max antal tillåtna klienter:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Välj max antal tillåtna klienter. Alla platser måste inte fyllas.
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 (publik)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_2_CLIENTS :2 klienter
STR_NETWORK_3_CLIENTS :3 klienter
STR_NETWORK_4_CLIENTS :4 klienter
STR_NETWORK_5_CLIENTS :5 klienter
STR_NETWORK_6_CLIENTS :6 klienter
STR_NETWORK_7_CLIENTS :7 klienter
STR_NETWORK_8_CLIENTS :8 klienter
STR_NETWORK_9_CLIENTS :9 klienter
STR_NETWORK_10_CLIENTS :10 klienter
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Språk som talas:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Andra spelare kommer vara medvetna vilket språk som talas på servern.
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Starta spelet
STR_NETWORK_START_GAME_TIP :{BLACK}Starta ett nytt spel med en slumpmässig karta eller från ett scenario
STR_NETWORK_LOAD_GAME :{BLACK}Ladda spel
STR_NETWORK_LOAD_GAME_TIP :{BLACK}Återuppta ett tidigare sparat spel för flera spelare (tänk på att välja rätt spelare vid start)
STR_NETWORK_LOAD_SCENARIO :{BLACK}Ladda scenario
STR_NETWORK_LOAD_SCENARIO_TIP :{BLACK}Starta ett nätverksspel från ett scenario
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Valfritt
STR_NETWORK_LANG_ENGLISH :Engelska
STR_NETWORK_LANG_GERMAN :Tyska
STR_NETWORK_LANG_FRENCH :Franska
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Nätverksspel
STR_NETWORK_SEND :{BLACK}Skicka
STR_NETWORK_SEND_TIP :{BLACK}Skicka ett meddelande till dom andra spelarna
STR_NETWORK_COMPANY_NAME :{BLACK}Företagsnamn:
STR_NETWORK_COMPANY_NAME_TIP :{BLACK}Ändra namnet på ditt företag (enter för att spara ändring)
STR_NETWORK_SPECTATE_GAME :{BLACK}Titta på spelet
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Titta på spelet som en åskådare
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Förbereder att ansluta: {ORANGE}{STRING}
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}En lista på alla nuvarande företag som är i spelet. Du kan antingen ansluta till ett eller starta ett
STR_NETWORK_NEW_COMPANY :{BLACK}Nytt företag
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Starta ett nytt företag
STR_NETWORK_READY :{BLACK}Klar
STR_NETWORK_SPECTATE_GAME :{BLACK}Titta på spelet
STR_NETWORK_SPECTATE_GAME_TIP :{BLACK}Titta på spelet som en åskådare
STR_NETWORK_JOIN_COMPANY :{BLACK}Anslut till företag
STR_NETWORK_JOIN_COMPANY_TIP :{BLACK}Hjälp till att styra detta företag
STR_NETWORK_REFRESH :{BLACK}Uppdatera server
STR_NETWORK_REFRESH_TIP :{BLACK}Uppdatera server info
STR_NETWORK_COMPANY_INFO :{SILVER}FÖRETAGSINFO
STR_NETWORK_COMPANY_NAME :{SILVER}Företagsnamn: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Etableringsår: {WHITE}{NUMU16}
STR_NETWORK_VALUE :{SILVER}Företagsvärde: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Nuvarande saldo: {WHITE}{CURRENCY64}
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Förra årets inkomst: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Prestandabetyg: {WHITE}{NUMU16}
STR_NETWORK_VEHICLES :{SILVER}Fordon: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_STATIONS :{SILVER}Stationer: {WHITE}{NUMU16} {TRAIN}, {NUMU16} {LORRY}, {NUMU16} {BUS}, {NUMU16} {PLANE}, {NUMU16} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Spelare: {WHITE}{STRING}
STR_NETWORK_CONNECTING :{WHITE}Ansluter...
############ Leave those lines in this order!!
STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Ansluter..
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Godkänner..
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Väntar..
STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Laddar hem karta..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Behandlar data..
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registrerar..
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Hämtar spelinfo..
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Hämtar företagsinfo..
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{INT32} klient(er) före oss
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{INT32} / {INT32} kbyte nerladdat hittills
STR_NETWORK_DISCONNECT :{BLACK}Frånkopplad
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Ange meddelandet du vill skicka
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Ange beloppet du vill ge
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servern är skyddad. Ange lösenord
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Företaget är skyddat. Ange lösenord
STR_NETWORK_CLIENT_LIST :{WHITE}Klientlista
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE}Inget nätverkskort funnet eller så är spelet kompilerat utan ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE}Kunde inte hitta några nätverksspel
STR_NETWORK_ERR_NOCONNECTION :{WHITE}Servern svarade inte på förfrågan
STR_NETWORK_ERR_DESYNC :{WHITE}Nätverk, Spelsynkronisering misslyckades
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE}Nätverk, koppling förlorad
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE}Kunde inte ladda det sparade spelet från servern
STR_NETWORK_ERR_SERVER_START :{WHITE} Kunde inte starta servern.
STR_NETWORK_ERR_CLIENT_START :{WHITE} Kunde inte ansluta.
STR_NETWORK_ERR_TIMEOUT :{WHITE}Nätverkskoppling #{NUMU16} förlorad (klient slutade svara)
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Vi gjorde ett protokollfel och vår anslutningen är stängd.
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_KICKED :{WHITE} Du är utkastad från servern
STR_NETWORK_ERR_CHEATER :{WHITE} Fusk är inte tillåtet på denna server
STR_NETWORK_ERR_LEFT :har lämnat spelet
############ Leave those lines in this order!!
STR_NETWORK_ERR_CLIENT_GENERAL :allmänt fel
STR_NETWORK_ERR_CLIENT_DESYNC :synkroniseringsfel
STR_NETWORK_ERR_CLIENT_SAVEGAME :kunde inte ladda kartan
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :anslutning förlorad
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :protokollfel
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :inte godkänd
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :mottog konstigt paket
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :fel version
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :namnet används redan
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :fel spellösenord
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :fel spelar-id i DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :utkastad av servern
STR_NETWORK_ERR_CLIENT_CHEATER :försökte fuska
############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :har anslutit till spelet
STR_NETWORK_GIVE_MONEY :gav dig en del pengar ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :Du gav {STRING} en del pengar ({CURRENCY})
STR_NETWORK_CHAT_COMPANY :[Företaget] {STRING}:
STR_NETWORK_CHAT_TO_COMPANY :[Företaget] Till {STRING}:
STR_NETWORK_CHAT_CLIENT :[Privat] {STRING}:
STR_NETWORK_CHAT_TO_CLIENT :[Privat] Till {STRING}:
STR_NETWORK_CHAT_ALL :[Alla] {STRING}:
STR_NETWORK_NAME_CHANGE :har ändrat namn till
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Servern avslutade sessionen
STR_NETWORK_SERVER_REBOOT :{WHITE} Servern startar om...{}Var vänlig vänta...
STR_NETWORK_SERVER :Server
STR_NETWORK_CLIENT :Klient
STR_NETWORK_CLIENTLIST_NONE :(ingen)
STR_NETWORK_CLIENTLIST_KICK :Kasta ut
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Ge pengar
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Prata med alla
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Prata med alla i företaget
STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privat meddelande
STR_NETWORK_SEND :{BLACK}Skicka
############ end network gui strings
@@ -1229,7 +1459,7 @@ STR_1802_ROAD_CONSTRUCTION :{WHITE}Bygg v
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Välj vägbro
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan inte bygga väg här...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan inte ta bort väg här...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Väg riktning för bussgarage
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Riktning för bussgarage
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kan inte bygga bussgarage här...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kan inte bygga busshållplats...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan inte bygga lastbilsbrygga...
@@ -1256,7 +1486,7 @@ STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2003 :{TINYFONT}{WHITE}{STRING}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Byggnad måste rivas först
STR_2005 :{WHITE}{TOWN}
STR_2006_POPULATION :<CHECK>{BLACK}Invånare: {ORANGE}{COMMA32}{BLACK} Huse: {ORANGE}{COMMA32}
STR_2006_POPULATION :{BLACK}Invånare: {ORANGE}{COMMA32}{BLACK} Hus: {ORANGE}{COMMA32}
STR_2007_RENAME_TOWN :Byt namn på stad
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Kan inte byta namn på stad...
STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} kommunen tillåter inte detta
@@ -1298,7 +1528,7 @@ STR_202C_FROM_TO :{ORANGE}{STRING} fr
STR_202D_UNTIL :{YELLOW}, tills {DATE_SHORT})
STR_202E_OFFER_OF_SUBSIDY_EXPIRED :{BLACK}{BIGFONT}Subventionen har gått ut:{}{}{STRING} från {STRING} till {STRING} är inte längre subventionerad
STR_202F_SUBSIDY_WITHDRAWN_SERVICE :{BLACK}{BIGFONT}Subventionen gäller inte mer:{}{}{STRING} från {STATION} till {STATION} är inte längre subventionerad
STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Ny subvention:{}{}Första {STRING}transporten från {STRING} till {STRING} får ett års subvention från kommunen!
STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Ny subvention:{}{}Första transporten av {STRING} från {STRING} till {STRING} får ett års subvention från kommunen!
STR_2031_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subvention tilldelad {STRING}!{}{}{STRING} från {STATION} till {STATION} ger 50% extra nästa år!
STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subvention tilldelad {STRING}!{}{}{STRING} från {STATION} till {STATION} ger dubbelt så mycket nästa år!
STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subvention tilldelad {STRING}!{}{}{STRING} från {STATION} till {STATION} ger tre gånger så mycket nästa år!
@@ -1347,7 +1577,7 @@ STR_205B_TEAPOT_HOUSE :Tekanne-Hus
STR_205C_PIGGY_BANK :Spargris
##id 0x2800
STR_LANDSCAPING :
STR_LANDSCAPING :Landskapsarkitektur
STR_2800_PLANT_TREES :Plantera träd
STR_2801_PLACE_SIGN :Placera skylt
STR_2802_TREES :{WHITE}Träd
@@ -1404,8 +1634,8 @@ STR_303E_NO_LONGER_ACCEPTS :{WHITE}{STATION} tar inte l
STR_303F_NO_LONGER_ACCEPTS_OR :{WHITE}{STATION} tar inte längre emot {STRING} och {STRING}
STR_3040_NOW_ACCEPTS :{WHITE}{STATION} tar nu emot {STRING}
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} tar nu emot {STRING} och {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Riktning för busshållplats
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Riktning för lastbilsbrygga
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Busshållplatsriktning
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Lastbilsbryggsriktning
STR_3044_TOO_CLOSE_TO_ANOTHER_BUS :{WHITE}För nära en annan busshållplats
STR_3045_TOO_CLOSE_TO_ANOTHER_TRUCK :{WHITE}För nära en annan lastbilsbrygga
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Måste riva busshållplats först
@@ -1544,8 +1774,8 @@ STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}Nya jordbruksmetoder vid {
STR_4839_PRODUCTION_DOWN_BY_50 :{BLACK}{BIGFONT}Produktionen vid {TOWN} {STRING} går ned med 50%
STR_483A_INSECT_INFESTATION_CAUSES :{BLACK}{BIGFONT}Problem med insekter orsakar kris vid {TOWN} {STRING}!{}Produktionen ned med 50%
STR_483B_CAN_ONLY_BE_POSITIONED :{WHITE}...kan bara placeras nära kartans kant
STR_INDUSTRY_PROD_GOUP :{BLACK}{BIGFONT}{STRING} produktionen vid {TOWN} {STRING} upp med {COMMA16}%!
STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}{STRING} produktionen vid {TOWN} {STRING} ner med {COMMA16}%!
STR_INDUSTRY_PROD_GOUP :{BLACK}{BIGFONT}Produktionen av {STRING} vid {TOWN} {STRING} upp med {COMMA16}%!
STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}Produktionen av {STRING} vid {TOWN} {STRING} ned med {COMMA16}%!
##id 0x5000
STR_5000_TRAIN_IN_TUNNEL :{WHITE}Tåg i tunnel
@@ -1596,8 +1826,8 @@ STR_5029_STEEL :St
STR_5800_OBJECT_IN_THE_WAY :{WHITE}Objekt i vägen
STR_5801_TRANSMITTER :Radiosändare
STR_5802_LIGHTHOUSE :Fyrtorn
STR_5803_COMPANY_HEADQUARTERS :Företags högkvarter
STR_5804_COMPANY_HEADQUARTERS_IN :{WHITE}...företags högkvarter i vägen
STR_5803_COMPANY_HEADQUARTERS :Företagets huvudkontor
STR_5804_COMPANY_HEADQUARTERS_IN :{WHITE}...företagets huvudkontor i vägen
STR_5805_COMPANY_OWNED_LAND :Mark som ägs av företag
STR_5806_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kan inte köpa denna mark...
STR_5807_YOU_ALREADY_OWN_IT :{WHITE}...du äger den redan!
@@ -1629,7 +1859,7 @@ STR_SV_STNAME_EXCHANGE :{STRING} v
STR_SV_STNAME_AIRPORT :{STRING} flygplats
STR_SV_STNAME_OILFIELD :{STRING} oljefält
STR_SV_STNAME_MINES :{STRING} gruva
STR_SV_STNAME_DOCKS :{STRING} hamnar
STR_SV_STNAME_DOCKS :{STRING} Hamnar
STR_SV_STNAME_BUOY_1 :{STRING} boj 1
STR_SV_STNAME_BUOY_2 :{STRING} boj 2
STR_SV_STNAME_BUOY_3 :{STRING} boj 3
@@ -1651,6 +1881,7 @@ STR_SV_STNAME_FOREST :{STRING} Skog
##id 0x6800
STR_6800_DIFFICULTY_LEVEL :{WHITE}Svårighetsgrad
STR_OPTIONS_SAVE_CHANGES :{BLACK}Spara
############ range for difficulty levels starts
STR_6801_EASY :{BLACK}Lätt
@@ -1677,8 +1908,10 @@ STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}M
STR_6813_ECONOMY :{LTBLUE}Ekonomi: {ORANGE}{STRING}
STR_6814_TRAIN_REVERSING :{LTBLUE}Tåg kan vända: {ORANGE}{STRING}
STR_6815_DISASTERS :{LTBLUE}Katastrofer: {ORANGE}{STRING}
STR_16816_CITY_APPROVAL :{LTBLUE}Stadens attityd mot områdesombyggnad: {ORANGE}{STRING}
############ range for difficulty settings ends
STR_26816_NONE :Ingen
STR_6816_LOW :Låg
STR_6817_NORMAL :Normal
STR_6818_HIGH :Hög
@@ -1715,10 +1948,14 @@ STR_6835_AT_END_OF_LINE_ONLY :Enbart vid slut p
STR_6836_OFF :Av
STR_6837_ON :På
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Visa highscore-lista
STR_6839_PERMISSIVE :Eftergiven
STR_683A_TOLERANT :Tolerant
STR_683B_HOSTILE :Fientlig
##id 0x7000
STR_7000 :
STR_7001 :{WHITE}{STRING}{BLACK}{STRING}
STR_7001 :{WHITE}{STRING} {BLACK}{STRING}
STR_7002_PLAYER :(Spelare {COMMA16})
STR_7004_NEW_FACE :{BLACK}Nytt ansikte
STR_7005_COLOR_SCHEME :{BLACK}Färgval
STR_7006_COLOR_SCHEME :{GOLD}Färgval:
@@ -1729,7 +1966,7 @@ STR_700A_COMPANY_NAME :F
STR_700B_PRESIDENT_S_NAME :Namn på VD
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Kan inte ändra företagsnamn...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Kan inte ändra namnet på VD:n...
STR_700E_FINANCES :{WHITE}{STRING} Budget{BLACK}{STRING}
STR_700E_FINANCES :{WHITE}{STRING} Budget {BLACK}{STRING}
STR_700F_EXPENDITURE_INCOME :{WHITE}Utgifter/inkomster
STR_7010 :{WHITE}{NUMU16}
STR_7011_CONSTRUCTION :{GOLD}Konstruktioner
@@ -1756,6 +1993,7 @@ STR_7024 :{COMMA32}
STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}Graf över vinst
STR_7026_BANK_BALANCE :{WHITE}Banksaldo
STR_7027_LOAN :{WHITE}Lån
STR_MAX_LOAN :{WHITE}Maxlån: {BLACK}{CURRENCY64}
STR_7028 :{BLACK}{CURRENCY64}
STR_7029_BORROW :{BLACK}Låna {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
STR_702A_REPAY :{BLACK}Återbetala {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
@@ -1772,7 +2010,7 @@ STR_7034_CLICK_ON_SELECTED_NEW_COLOR :{BLACK}F
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Öka lånets storlek
STR_7036_REPAY_PART_OF_LOAN :{BLACK}Återbetala en del av lånet
STR_7037_PRESIDENT :{WHITE}{STRING}{}{GOLD}(President)
STR_7038_INAUGURATED :{GOLD}Började: {WHITE}{NUMU16}
STR_7038_INAUGURATED :{GOLD}Etablerades: {WHITE}{NUMU16}
STR_7039_VEHICLES :{GOLD}Fordon:
STR_703A_TRAIN :{WHITE}{COMMA16} tåg
STR_703B_TRAINS :{WHITE}{COMMA16} tåg
@@ -1828,9 +2066,14 @@ STR_706C_CHAIRMAN :Ordf
STR_706D_PRESIDENT :President
STR_706E_TYCOON :Tycoon
STR_706F_BUILD_HQ :{BLACK}Bygg Högkvarter
STR_7070_BUILD_COMPANY_HEADQUARTERS :{BLACK}Bygg högkvarter / visa företagets högkvarter
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan inte bygga högkvarter...
STR_7070_BUILD_COMPANY_HEADQUARTERS :{BLACK}Bygg huvudkontor / visa företagets huvudkontor
STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Bygg om huvudkontor på annan plats (kostar 1% av företagets värde)
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan inte bygga huvudkontor här...
STR_7072_VIEW_HQ :{BLACK}Visa högkvarter
STR_RELOCATE_HQ :{BLACK}Omlokalisera huvudkontor
STR_COMPANY_PASSWORD :{BLACK}Lösenord
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Lösenordsskydda ditt företag för att förhindra att obehöriga spelare ansluter.
STR_SET_COMPANY_PASSWORD :Ange företagets lösenord
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Lågkonjuktur!{}{}Finansexperter befarar det värsta när ekonomin sjunker!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Lågkonjuktur Över!{}{}Uppsving i byteshandeln ger tillförsikt till industrier när ekonomin stärks!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Växla stor/liten fönsterstorlek
@@ -2134,7 +2377,9 @@ STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Servning non-stop {TOWN} T
STR_HEADING_FOR_TRAIN_DEPOT :{LTBLUE}På väg mot {TOWN} depå
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{LTBLUE}På väg mot {TOWN} depå, {VELOCITY}
STR_INVALID_ORDER :{RED} (Ogiltig order)
STR_UNKNOWN_DESTINATION :okänd destination
STR_8812_EMPTY :{LTBLUE}Tom
STR_8813_FROM :{LTBLUE}{CARGO} från {STATION}
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Tåg {COMMA16} väntar i depå
@@ -2179,6 +2424,7 @@ STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Kan inte s
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan inte hitta rutt till närmaste depå
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Kan inte stoppa/starta tåg...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Serviceintervall: {LTBLUE}{COMMA16}dagar{BLACK} Senaste service: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Serviceintervall: {LTBLUE}{COMMA16}%{BLACK} Senaste service: {LTBLUE}{DATE_LONG}
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Tåg - klicka på tåg för information
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Bygg nytt tåg (kräver depå)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Tåg - klicka på tåg för info, drag vagn för att lägga till/ta bort från tåg
@@ -2324,7 +2570,7 @@ STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kan inte finna lokal dep
STR_HEADING_FOR_SHIP_DEPOT :{LTBLUE}På väg mot {TOWN} Skeppsdepå
STR_HEADING_FOR_SHIP_DEPOT_VEL :{LTBLUE}På väg mot {TOWN} Skeppsdepå, {VELOCITY}
STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Skepp {COMMA16} väntar i depå
STR_981D_BUILD_SHIP_DOCK :{BLACK}Bygg skeppsdepå
STR_981D_BUILD_SHIP_DOCK :{BLACK}Bygg hamn
STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}Bygg skeppsdepå (för byggnad och lagning av skepp)
STR_981F_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}Skepp - klicka på skepp för information
STR_9820_BUILD_NEW_SHIP :{BLACK}Bygg nytt skepp
@@ -2341,7 +2587,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}/yr
STR_982E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Max hastighet: {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
@@ -2366,7 +2612,7 @@ STR_GO_TO_SHIP_DEPOT :G
SERVICE_AT_SHIP_DEPOT :Servning vid {TOWN} Båtdepå
##id 0xA000
STR_A000_AIRPORT_CONSTRUCT :{WHITE}Flygplats Bygg.
STR_A000_AIRPORTS :{WHITE}Flygplatser
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Kan inte bygga flygplats här...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Flygplanshangar
STR_A003_NEW_AIRCRAFT :{BLACK}Nytt Flygplan
@@ -2413,7 +2659,7 @@ 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}/yr
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Kostnad: {CURRENCY} Max hastighet: {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...
@@ -2445,10 +2691,71 @@ STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Oljeraffinaderi exploderade
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fabrik förstörd i misstänkta omständigheter nära {TOWN}!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}'UFO' landar nära {TOWN}!
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Kolgruva sjunker - lämnar spår av katastrof nära {TOWN}!
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Översvämning!{}Minst {COMMA16} förmodas saknade eller döda efter dödlig översvämning!
STR_BRIBE_FAILED :{WHITE}Ditt mutningsförsök har blivit
STR_BRIBE_FAILED_2 :{WHITE}uppdagat av en regional utredare.
STR_BUILD_DATE :{BLACK}Byggt: {LTBLUE}{DATE_LONG}
STR_MULTIPLAYER_PAUSED :{WHITE}Spelet är pausat.{}Går ej att göra
STR_PERFORMANCE_DETAIL :{WHITE}Detaljerade prestandabetyg
STR_PERFORMANCE_DETAIL_KEY :{BLACK}Detaljer
STR_PERFORMANCE_DETAIL_AMOUNT_CURRENCY :{BLACK}({CURRCOMPACT}/{CURRCOMPACT})
STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA32}/{COMMA32})
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{INT32}%
SET_PERFORMANCE_DETAIL_INT :{BLACK}{INT32}
############ Those following lines need to be in this order!!
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Vägfordon:
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stationer:
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. vinst:
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inkomst:
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Max. inkomst:
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Levererat:
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Gods:
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Pengar:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Lån:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Totalt:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Totalt antal fordon. Inkluderar vägfordon, tåg, skepp och flygplan.
STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Antalet stationsdelar. Varje del av en station (ex: tågstation, bushållplats, flygplats) är räknad, även om dom är ihopkopplade till en station.
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Vinsten för det fordon med lägst inkomst (av alla fordon äldre än 2 år).
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Mängden tjänade pengar den månad med lägst vinst de senaste 12 kvartalen.
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Mängden tjänade pengar den månad med högsta vinsten de senaste 12 kvartalen.
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Enheter av gods levererat de senaste fyra kvartalen.
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Typer av gods levererat det senaste kvartalet.
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Mängden pengar på hand
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Har du ett stort lån?
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Totalt antal poäng utav möjligt antal poäng
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Newgrf inställningar
STR_NEWGRF_APPLY_CHANGES :{BLACK}Spara ändringar
STR_NEWGRF_SET_PARAMETERS :{BLACK}Parametrar
STR_NEWGRF_TIP :{BLACK}En lista av alla Newgrf som du har installerade. Clicka på en för att ändra inställningar.
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Det finns för närvarande inga newgrf filer installerade! Vänligen kolla manualen hur man installerar ny grafik.
STR_NEWGRF_FILENAME :{BLACK}Filnamn:
STR_NEWGRF_GRF_ID :{BLACK}GRF ID:
STR_CURRENCY_WINDOW :{WHITE}Egen valuta
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Växlingskurs: {ORANGE}{CURRENCY} = {POUNDSIGN} {COMMA16}
STR_CURRENCY_SEPARATOR :{LTBLUE}Avskiljare:
STR_CURRENCY_PREFIX :{LTBLUE}Prefix:
STR_CURRENCY_SUFFIX :{LTBLUE}Suffix:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Går över till Euro: {ORANGE}{INT32}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Går över till Euro: {ORANGE}aldrig
STR_CURRENCY_PREVIEW :{LTBLUE}Förhandsgranska: {ORANGE}{CURRENCY}
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Ändra valutaparametrar
STR_TRAIN :{BLACK}{TRAIN}
STR_LORRY :{BLACK}{LORRY}
STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA16} Tåg
STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA16} Vägfordon
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA16} Flygplan
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA16} Skepp
STR_SCHEDULED_TRAINS_TIP :{BLACK}Visa alla tåg där denna station finns med i rutten
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
+473
View File
@@ -0,0 +1,473 @@
##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
+424
View File
@@ -0,0 +1,424 @@
##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
+2
View File
@@ -0,0 +1,2 @@
##name Russian_latin_char
##ownname Russkiy
+473
View File
@@ -0,0 +1,473 @@
##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
+88
View File
@@ -51,6 +51,17 @@ InputPath=.\lang\american.txt
# End Source File
# Begin Source File
SOURCE=.\lang\catalan.txt
# Begin Custom Build
InputPath=.\lang\catalan.txt
"lang\catalan.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\catalan.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\czech.txt
# Begin Custom Build
InputPath=.\lang\czech.txt
@@ -95,6 +106,17 @@ InputPath=.\lang\english.txt
# End Source File
# Begin Source File
SOURCE=.\lang\finnish.txt
# Begin Custom Build
InputPath=.\lang\finnish.txt
"lang\finnish.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\finnish.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\french.txt
# Begin Custom Build
InputPath=.\lang\french.txt
@@ -139,6 +161,17 @@ InputPath=.\lang\hungarian.txt
# End Source File
# Begin Source File
SOURCE=.\lang\icelandic.txt
# Begin Custom Build
InputPath=.\lang\icelandic.txt
"lang\icelandic.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\icelandic.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\italian.txt
# Begin Custom Build
InputPath=.\lang\italian.txt
@@ -150,6 +183,17 @@ InputPath=.\lang\italian.txt
# 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
@@ -183,6 +227,17 @@ InputPath=.\lang\polish.txt
# End Source File
# Begin Source File
SOURCE=.\lang\portuguese.txt
# Begin Custom Build
InputPath=.\lang\portuguese.txt
"lang\portuguese.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\portuguese.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\romanian.txt
# Begin Custom Build
InputPath=.\lang\romanian.txt
@@ -194,6 +249,17 @@ InputPath=.\lang\romanian.txt
# 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
@@ -205,6 +271,17 @@ InputPath=.\lang\slovak.txt
# End Source File
# Begin Source File
SOURCE=.\lang\spanish.txt
# Begin Custom Build
InputPath=.\lang\spanish.txt
"lang\spanish.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe lang\spanish.txt
# End Custom Build
# End Source File
# Begin Source File
SOURCE=.\lang\swedish.txt
# Begin Custom Build
InputPath=.\lang\swedish.txt
@@ -212,6 +289,17 @@ InputPath=.\lang\swedish.txt
"lang\swedish.lng" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
strgen\debug\strgen.exe 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
+64 -2
View File
@@ -44,10 +44,23 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating american language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\american.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\catalan.txt">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCustomBuildTool"
Description="Generating catalan language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\catalan.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\czech.txt">
<FileConfiguration
@@ -96,6 +109,18 @@
Outputs="lang\english.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\finnish.txt">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCustomBuildTool"
Description="Generating finnish language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\finnish.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\french.txt">
<FileConfiguration
@@ -144,6 +169,18 @@
Outputs="lang\hungarian.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\icelandic.txt">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCustomBuildTool"
Description="Generating icelandic language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\icelandic.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\italian.txt">
<FileConfiguration
@@ -175,7 +212,8 @@
<Tool
Name="VCCustomBuildTool"
Description="Generating Original Vehicle names file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\origveh.lng"/>
</FileConfiguration>
</File>
@@ -191,6 +229,18 @@
Outputs="lang\polish.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\portuguese.txt">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCustomBuildTool"
Description="Generating portuguese language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\portuguese.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\romanian.txt">
<FileConfiguration
@@ -215,6 +265,18 @@
Outputs="lang\slovak.lng"/>
</FileConfiguration>
</File>
<File
RelativePath=".\lang\spanish.txt">
<FileConfiguration
Name="Debug|Win32">
<Tool
Name="VCCustomBuildTool"
Description="Generating spanish language file"
CommandLine="strgen\debug\strgen.exe &quot;$(InputPath)&quot;
"
Outputs="lang\spanish.lng"/>
</FileConfiguration>
</File>
<File
RelativePath="lang\swedish.txt">
<FileConfiguration
+25 -34
View File
@@ -11,20 +11,20 @@
#undef max
#endif
static INLINE int min(int a, int b) { if (a <= b) return a; return b; }
static INLINE int max(int a, int b) { if (a >= b) return a; return b; }
static INLINE int64 max64(int64 a, int64 b) { if (a >= b) return a; return b; }
static inline int min(int a, int b) { if (a <= b) return a; return b; }
static inline int max(int a, int b) { if (a >= b) return a; return b; }
static inline int64 max64(int64 a, int64 b) { if (a >= b) return a; return b; }
static INLINE uint minu(uint a, uint b) { if (a <= b) return a; return b; }
static INLINE uint maxu(uint a, uint b) { if (a >= b) return a; return b; }
static inline uint minu(uint a, uint b) { if (a <= b) return a; return b; }
static inline uint maxu(uint a, uint b) { if (a >= b) return a; return b; }
static INLINE int clamp(int a, int min, int max) { if (a <= min) return min; if (a >= max) return max; return a; }
static INLINE int clamp2(int a, int min, int max) { if (a <= min) a=min; if (a >= max) a=max; return a; }
static INLINE bool int32_add_overflow(int32 a, int32 b) { return (int32)(a^b)>=0 && (int32)(a^(a+b))<0; }
static INLINE bool int32_sub_overflow(int32 a, int32 b) { return (int32)(a^b)<0 && (int32)(a^(a-b))<0; }
static inline int clamp(int a, int min, int max) { if (a <= min) return min; if (a >= max) return max; return a; }
static inline int clamp2(int a, int min, int max) { if (a <= min) a=min; if (a >= max) a=max; return a; }
static inline bool int32_add_overflow(int32 a, int32 b) { return (int32)(a^b)>=0 && (int32)(a^(a+b))<0; }
static inline bool int32_sub_overflow(int32 a, int32 b) { return (int32)(a^b)<0 && (int32)(a^(a-b))<0; }
static INLINE bool str_eq(const byte *a, const byte *b)
static inline bool str_eq(const byte *a, const byte *b)
{
int i=0;
while (a[i] == b[i]) {
@@ -36,7 +36,7 @@ static INLINE bool str_eq(const byte *a, const byte *b)
}
// Will crash if strings are equal
static INLINE bool str_is_below(byte *a, byte *b) {
static inline bool str_is_below(byte *a, byte *b) {
while (*a <= *b) {
if (*a < *b) return true;
a++;
@@ -46,19 +46,19 @@ static INLINE bool str_is_below(byte *a, byte *b) {
}
static INLINE int32 BIGMULSS(int32 a, int32 b, int shift) {
static inline int32 BIGMULSS(int32 a, int32 b, int shift) {
return (int32)(((int64)(a) * (int64)(b)) >> (shift));
}
static INLINE int64 BIGMULSS64(int64 a, int64 b, int shift) {
static inline int64 BIGMULSS64(int64 a, int64 b, int shift) {
return ((a) * (b)) >> (shift);
}
static INLINE uint32 BIGMULUS(uint32 a, uint32 b, int shift) {
static inline uint32 BIGMULUS(uint32 a, uint32 b, int shift) {
return (uint32)(((uint64)(a) * (uint64)(b)) >> (shift));
}
static INLINE int64 BIGMULS(int32 a, int32 b) {
static inline int64 BIGMULS(int32 a, int32 b) {
return (int32)(((int64)(a) * (int64)(b)));
}
@@ -66,8 +66,6 @@ static INLINE int64 BIGMULS(int32 a, int32 b) {
//#define IS_INSIDE_1D(x, base, size) ((x) >= (base) && (x) < (base) + (size))
#define IS_INSIDE_1D(x, base, size) ( (uint)((x) - (base)) < ((uint)(size)) )
#define TILE_X_BITS 8
#define TILE_Y_BITS 8
#define LANDSCAPE_SIZE_FACTOR 1
#define TILE_FROM_XY(x,y) (int)((((y) >> 4) << TILE_X_BITS) + ((x) >> 4))
@@ -82,12 +80,6 @@ enum {
};
#define CORRECT_Z(tileh) (CORRECT_Z_BITS & (1 << tileh))
#define TILES_X (1 << TILE_X_BITS)
#define TILES_Y (1 << TILE_Y_BITS)
#define TILE_X_MAX (TILES_X-1)
#define TILE_Y_MAX (TILES_Y-1)
#define TILE_ASSERT(x) assert( TILE_MASK(x) == (x) );
extern uint SafeTileAdd(uint x, int add, const char *exp, const char *file, int line);
@@ -145,7 +137,7 @@ extern const byte _ffb_64[128];
*/
#define KILL_FIRST_BIT(x) _ffb_64[(x)+64]
static INLINE int FindFirstBit2x64(int value)
static inline int FindFirstBit2x64(int value)
{
int i = 0;
if ( (byte) value == 0) {
@@ -170,7 +162,6 @@ static INLINE int FindFirstBit2x64(int value)
#define CHANCE16(a,b) ((uint16)Random() <= (uint16)((65536 * a) / b))
#define ICHANCE16(a,b) ((uint16)InteractiveRandom() <= (uint16)((65536 * a) / b))
#define CHANCE16R(a,b,r) ((uint16)(r=Random()) <= (uint16)((65536 * a) / b))
#define CHANCE16I(a,b,v) ((uint16)(v) <= (uint16)((65536 * a) / b))
@@ -195,17 +186,17 @@ static INLINE int FindFirstBit2x64(int value)
#define abs myabs
static INLINE int intxchg_(int *a, int b) { int t = *a; *a = b; return t; }
static inline int intxchg_(int *a, int b) { int t = *a; *a = b; return t; }
#define intxchg(a,b) intxchg_(&(a), (b))
#define intswap(a,b) ((b) = intxchg_(&(a), (b)))
static INLINE int myabs(int a) { if (a<0) a = -a; return a; }
static INLINE int64 myabs64(int64 a) { if (a<0) a = -a; return a; }
static inline int myabs(int a) { if (a<0) a = -a; return a; }
static inline int64 myabs64(int64 a) { if (a<0) a = -a; return a; }
static INLINE void swap_byte(byte *a, byte *b) { byte t = *a; *a = *b; *b = t; }
static INLINE void swap_uint16(uint16 *a, uint16 *b) { uint16 t = *a; *a = *b; *b = t; }
static INLINE void swap_int16(int16 *a, int16 *b) { int16 t = *a; *a = *b; *b = t; }
static INLINE void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a = *b; *b = t; }
static inline void swap_byte(byte *a, byte *b) { byte t = *a; *a = *b; *b = t; }
static inline void swap_uint16(uint16 *a, uint16 *b) { uint16 t = *a; *a = *b; *b = t; }
static inline void swap_int16(int16 *a, int16 *b) { int16 t = *a; *a = *b; *b = t; }
static inline void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a = *b; *b = t; }
@@ -214,14 +205,14 @@ static INLINE void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a
# define ADD_WORD(x) (x)&0xFF, ((x) >> 8)&0xFF
# define ADD_DWORD(x) (x)&0xFF, ((x) >> 8)&0xFF, ((x) >> 16)&0xFF, ((x) >> 24)&0xFF
#elif defined(TTD_BIG_ENDIAN)
static INLINE uint16 READ_LE_UINT16(const void *b) {
static inline uint16 READ_LE_UINT16(const void *b) {
return ((const byte*)b)[0] + (((const byte*)b)[1] << 8);
}
# define ADD_WORD(x) ((x) >> 8)&0xFF, (x)&0xFF
# define ADD_DWORD(x) ((x) >> 24)&0xFF, ((x) >> 16)&0xFF, ((x) >> 8)&0xFF, (x)&0xFF
#endif
static INLINE void WRITE_LE_UINT16(void *b, uint16 x) {
static inline void WRITE_LE_UINT16(void *b, uint16 x) {
((byte*)b)[0] = (byte)x;
((byte*)b)[1] = (byte)(x >> 8);
}
+335 -153
View File
File diff suppressed because it is too large Load Diff
+18 -7
View File
@@ -17,6 +17,8 @@ $(MAKE_CONFIG):
$(call CONFIG_LINE,\# MIDI: sets path to midi player)
$(call CONFIG_LINE,\# MIDI_ARG: sets an argument which is used when calling the midi player. Default off)
$(call CONFIG_LINE,\# SUPRESS_LANG_ERRORS: supresses output about missing and mismatched strings)
$(call CONFIG_LINE,\# WITH_NETWORK: makes OpenTTD able to play multiplayer using TCP and UDP)
$(call CONFIG_LINE,\# DEDICATED: compiles a dedicated server. This one can only host using a CLI, but do not need SDL)
$(call CONFIG_LINE,STATIC:=$(STATIC))
$(call CONFIG_LINE,TRANSLATOR:=$(TRANSLATOR))
$(call CONFIG_LINE,DISPLAY_WARNINGS:=$(DISPLAY_WARNINGS))
@@ -25,21 +27,27 @@ $(MAKE_CONFIG):
$(call CONFIG_LINE,MIDI:=$(MIDI))
$(call CONFIG_LINE,MIDI_ARG:=$(MIDI_ARG))
$(call CONFIG_LINE,SUPRESS_LANG_ERRORS:=$(SUPRESS_LANG_ERRORS))
$(call CONFIG_LINE,WITH_NETWORK:=$(WITH_NETWORK))
$(call CONFIG_LINE,DEDICATED:=$(DEDICATED))
$(call CONFIG_LINE,)
$(call CONFIG_LINE,\# DATA_DIR_PREFIX is the path to OpenTTD. It can be absolute or relative)
$(call CONFIG_LINE,\# USE_HOMEDIR sets \~/ in front of DATA_DIR_PREFIX so it uses the homedir)
$(call CONFIG_LINE,\# do not type \~/ yourself because that will not work)
$(call CONFIG_LINE,\# Folders should end with /)
$(call CONFIG_LINE,\# Disable asserts. Leave them on for easier bug finding)
$(call CONFIG_LINE,DISABLE_ASSERTS:=$(DISABLE_ASSERTS))
$(call CONFIG_LINE,)
$(call CONFIG_LINE,\# See Makefile for details on these paths)
$(call CONFIG_LINE,\# Folders should not end with /)
$(call CONFIG_LINE,INSTALL:=$(INSTALL))
$(call CONFIG_LINE,PREFIX:=$(PREFIX))
$(call CONFIG_LINE,BINARY_DIR:=$(BINARY_DIR))
$(call CONFIG_LINE,INSTALL_DIR:=$(INSTALL_DIR))
$(call CONFIG_LINE,DATA_DIR:=$(DATA_DIR))
$(call CONFIG_LINE,USE_HOMEDIR:=$(USE_HOMEDIR))
$(call CONFIG_LINE,GAME_DATA_DIR:=$(GAME_DATA_DIR))
$(call CONFIG_LINE,PERSONAL_DIR:=$(PERSONAL_DIR))
$(call CONFIG_LINE,SECOND_DATA_PATH:=$(SECOND_DATA_PATH))
$(call CONFIG_LINE,CUSTOM_LANG_PATH:=$(CUSTOM_LANG_PATH))
$(call CONFIG_LINE,)
$(call CONFIG_LINE,\# Experimental)
$(call CONFIG_LINE,WITH_NETWORK:=$(WITH_NETWORK))
$(call CONFIG_LINE,WITH_DIRECTMUSIC:=$(WITH_DIRECTMUSIC))
$(call CONFIG_LINE,)
$(call CONFIG_LINE,)
@@ -73,12 +81,15 @@ $(MAKE_CONFIG):
$(call CONFIG_LINE,OSX:=$(OSX))
$(call CONFIG_LINE,FREEBSD:=$(FREEBSD))
$(call CONFIG_LINE,MORPHOS:=$(MORPHOS))
$(call CONFIG_LINE,BEOS:=$(BEOS))
$(call CONFIG_LINE,SUNOS:=$(SUNOS))
$(call CONFIG_LINE,CYGWIN:=$(CYGWIN))
$(call CONFIG_LINE,MINGW:=$(MINGW))
$(call CONFIG_LINE,)
$(call CONFIG_LINE,\# misc)
$(call CONFIG_LINE,SDL-CONFIG:=$(SDL-CONFIG))
$(call CONFIG_LINE,BEOS_NET_SERVER:=$(BEOS_NET_SERVER))
$(call CONFIG_LINE,CONFIG_INCLUDED:=yes)
$(call CONFIG_LINE,PATH_SET:=$(PATH_SET))
$(call CONFIG_LINE,CONFIG_VERSION:=$(MAKEFILE_VERSION))
+33 -1
View File
@@ -4,6 +4,10 @@
ifdef WINDIR
ifndef UNIX
WIN32:=1
CYGWIN:=1
MINGW:=1
STATIC:=1
SKIP_STATIC_CHECK:=1
endif
else
UNIX:=1
@@ -19,6 +23,8 @@ ifeq ($(VENDOR), apple)
OSX:=1
# OSX uses the unix setup too
UNIX:=1
# OSX generally uses static since so few computers actually have all the libs installed in unix style
STATIC:=1
endif
# Automatically recognize if building on MorphOS
@@ -28,6 +34,24 @@ MORPHOS:=1
UNIX:=1
endif
# Automatically recognize if building on BeOS
ifeq ($(shell uname), BeOS)
BEOS:=1
# BeOS uses UNIX setup too
UNIX:=1
# Except that in BeOS 5.0 we need to use net_server, not BONE networking
ifeq ($(shell uname -r), 5.0)
BEOS_NET_SERVER:=1
endif
endif
# Automatically recognize if building on SunOS/Solaris
ifeq ($(shell uname), SunOS)
SUNOS:=1
# SunOS uses UNIX setup too
UNIX:=1
endif
# FreeBSD uses sdl11 instead of sdl
ifdef FREEBSD
SDL-CONFIG:=sdl11-config
@@ -35,6 +59,8 @@ else
SDL-CONFIG:=sdl-config
endif
# Networking, enabled by default
WITH_NETWORK:=1
# Library detections
WITH_SDL:=$(shell $(SDL-CONFIG) --version 2>/dev/null)
@@ -77,4 +103,10 @@ ifndef BIN_DIR
endif
endif
endif
endif
endif
# workaround
# cygwin have problems with libpng, so we will just disable it for now until the problem is solved
ifdef CYGWIN
WITH_PNG:=
endif
+14
View File
@@ -0,0 +1,14 @@
#include "stdafx.h"
#include "ttd.h"
#include "map.h"
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];
+33
View File
@@ -0,0 +1,33 @@
#ifndef MAP_H
#define MAP_H
#define TILE_X_BITS 8
#define TILE_Y_BITS 8
#define TILES_X (1 << TILE_X_BITS)
#define TILES_Y (1 << TILE_Y_BITS)
#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[];
// 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; }
static inline uint MapLogY(void) { extern uint _map_log_y; return _map_log_y; }
/* The size of the map */
static inline uint MapSizeX(void) { return 1 << MapLogX(); }
static inline uint MapSizeY(void) { return 1 << MapLogY(); }
/* The maximum coordinates */
static inline uint MapMaxX(void) { return MapSizeX() - 1; }
static inline uint MapMaxY(void) { return MapSizeY() - 1; }
/* The number of tiles in the map */
static inline uint MapSize(void) { return MapSizeX() * MapSizeY(); }
#endif
+382
View File
@@ -0,0 +1,382 @@
/*
Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
L. Peter Deutsch
ghost@aladdin.com
*/
/* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */
/*
Independent implementation of MD5 (RFC 1321).
This code implements the MD5 Algorithm defined in RFC 1321, whose
text is available at
http://www.ietf.org/rfc/rfc1321.txt
The code is derived from the text of the RFC, including the test suite
(section A.5) but excluding the rest of Appendix A. It does not include
any code or documentation that is identified in the RFC as being
copyrighted.
The original and principal author of md5.c is L. Peter Deutsch
<ghost@aladdin.com>. Other authors are noted in the change history
that follows (in reverse chronological order):
2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order
either statically or dynamically; added missing #include <string.h>
in library.
2002-03-11 lpd Corrected argument list for main(), and added int return
type, in test program and T value program.
2002-02-21 lpd Added missing #include <stdio.h> in test program.
2000-07-03 lpd Patched to eliminate warnings about "constant is
unsigned in ANSI C, signed in traditional"; made test program
self-checking.
1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).
1999-05-03 lpd Original version.
*/
#include "stdafx.h"
#include "md5.h"
#include <string.h>
#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */
#if defined(TTD_BIG_ENDIAN)
# define BYTE_ORDER 1
#else
# define BYTE_ORDER -1
#endif
#define T_MASK ((md5_word_t)~0)
#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
#define T3 0x242070db
#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
#define T6 0x4787c62a
#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
#define T9 0x698098d8
#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
#define T13 0x6b901122
#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
#define T16 0x49b40821
#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
#define T19 0x265e5a51
#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
#define T22 0x02441453
#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
#define T25 0x21e1cde6
#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
#define T28 0x455a14ed
#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
#define T31 0x676f02d9
#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
#define T35 0x6d9d6122
#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
#define T38 0x4bdecfa9
#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
#define T41 0x289b7ec6
#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
#define T44 0x04881d05
#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
#define T47 0x1fa27cf8
#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
#define T50 0x432aff97
#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
#define T53 0x655b59c3
#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
#define T57 0x6fa87e4f
#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
#define T60 0x4e0811a1
#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
#define T63 0x2ad7d2bb
#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
static void
md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/)
{
md5_word_t
a = pms->abcd[0], b = pms->abcd[1],
c = pms->abcd[2], d = pms->abcd[3];
md5_word_t t;
#if BYTE_ORDER > 0
/* Define storage only for big-endian CPUs. */
md5_word_t X[16];
#else
/* Define storage for little-endian or both types of CPUs. */
md5_word_t xbuf[16];
const md5_word_t *X;
#endif
{
#if BYTE_ORDER == 0
/*
* Determine dynamically whether this is a big-endian or
* little-endian machine, since we can use a more efficient
* algorithm on the latter.
*/
static const int w = 1;
if (*((const md5_byte_t *)&w)) /* dynamic little-endian */
#endif
#if BYTE_ORDER <= 0 /* little-endian */
{
/*
* On little-endian machines, we can process properly aligned
* data without copying it.
*/
if (!((data - (const md5_byte_t *)0) & 3)) {
/* data are properly aligned */
X = (const md5_word_t *)data;
} else {
/* not aligned */
memcpy(xbuf, data, 64);
X = xbuf;
}
}
#endif
#if BYTE_ORDER == 0
else /* dynamic big-endian */
#endif
#if BYTE_ORDER >= 0 /* big-endian */
{
/*
* On big-endian machines, we must arrange the bytes in the
* right order.
*/
const md5_byte_t *xp = data;
int i;
# if BYTE_ORDER == 0
X = xbuf; /* (dynamic only) */
# else
# define xbuf X /* (static only) */
# endif
for (i = 0; i < 16; ++i, xp += 4)
xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);
}
#endif
}
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
/* Round 1. */
/* Let [abcd k s i] denote the operation
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
#define SET(a, b, c, d, k, s, Ti)\
t = a + F(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
SET(a, b, c, d, 0, 7, T1);
SET(d, a, b, c, 1, 12, T2);
SET(c, d, a, b, 2, 17, T3);
SET(b, c, d, a, 3, 22, T4);
SET(a, b, c, d, 4, 7, T5);
SET(d, a, b, c, 5, 12, T6);
SET(c, d, a, b, 6, 17, T7);
SET(b, c, d, a, 7, 22, T8);
SET(a, b, c, d, 8, 7, T9);
SET(d, a, b, c, 9, 12, T10);
SET(c, d, a, b, 10, 17, T11);
SET(b, c, d, a, 11, 22, T12);
SET(a, b, c, d, 12, 7, T13);
SET(d, a, b, c, 13, 12, T14);
SET(c, d, a, b, 14, 17, T15);
SET(b, c, d, a, 15, 22, T16);
#undef SET
/* Round 2. */
/* Let [abcd k s i] denote the operation
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
#define SET(a, b, c, d, k, s, Ti)\
t = a + G(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
SET(a, b, c, d, 1, 5, T17);
SET(d, a, b, c, 6, 9, T18);
SET(c, d, a, b, 11, 14, T19);
SET(b, c, d, a, 0, 20, T20);
SET(a, b, c, d, 5, 5, T21);
SET(d, a, b, c, 10, 9, T22);
SET(c, d, a, b, 15, 14, T23);
SET(b, c, d, a, 4, 20, T24);
SET(a, b, c, d, 9, 5, T25);
SET(d, a, b, c, 14, 9, T26);
SET(c, d, a, b, 3, 14, T27);
SET(b, c, d, a, 8, 20, T28);
SET(a, b, c, d, 13, 5, T29);
SET(d, a, b, c, 2, 9, T30);
SET(c, d, a, b, 7, 14, T31);
SET(b, c, d, a, 12, 20, T32);
#undef SET
/* Round 3. */
/* Let [abcd k s t] denote the operation
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define SET(a, b, c, d, k, s, Ti)\
t = a + H(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
SET(a, b, c, d, 5, 4, T33);
SET(d, a, b, c, 8, 11, T34);
SET(c, d, a, b, 11, 16, T35);
SET(b, c, d, a, 14, 23, T36);
SET(a, b, c, d, 1, 4, T37);
SET(d, a, b, c, 4, 11, T38);
SET(c, d, a, b, 7, 16, T39);
SET(b, c, d, a, 10, 23, T40);
SET(a, b, c, d, 13, 4, T41);
SET(d, a, b, c, 0, 11, T42);
SET(c, d, a, b, 3, 16, T43);
SET(b, c, d, a, 6, 23, T44);
SET(a, b, c, d, 9, 4, T45);
SET(d, a, b, c, 12, 11, T46);
SET(c, d, a, b, 15, 16, T47);
SET(b, c, d, a, 2, 23, T48);
#undef SET
/* Round 4. */
/* Let [abcd k s t] denote the operation
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
#define I(x, y, z) ((y) ^ ((x) | ~(z)))
#define SET(a, b, c, d, k, s, Ti)\
t = a + I(b,c,d) + X[k] + Ti;\
a = ROTATE_LEFT(t, s) + b
/* Do the following 16 operations. */
SET(a, b, c, d, 0, 6, T49);
SET(d, a, b, c, 7, 10, T50);
SET(c, d, a, b, 14, 15, T51);
SET(b, c, d, a, 5, 21, T52);
SET(a, b, c, d, 12, 6, T53);
SET(d, a, b, c, 3, 10, T54);
SET(c, d, a, b, 10, 15, T55);
SET(b, c, d, a, 1, 21, T56);
SET(a, b, c, d, 8, 6, T57);
SET(d, a, b, c, 15, 10, T58);
SET(c, d, a, b, 6, 15, T59);
SET(b, c, d, a, 13, 21, T60);
SET(a, b, c, d, 4, 6, T61);
SET(d, a, b, c, 11, 10, T62);
SET(c, d, a, b, 2, 15, T63);
SET(b, c, d, a, 9, 21, T64);
#undef SET
/* Then perform the following additions. (That is increment each
of the four registers by the value it had before this block
was started.) */
pms->abcd[0] += a;
pms->abcd[1] += b;
pms->abcd[2] += c;
pms->abcd[3] += d;
}
void
md5_init(md5_state_t *pms)
{
pms->count[0] = pms->count[1] = 0;
pms->abcd[0] = 0x67452301;
pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
pms->abcd[3] = 0x10325476;
}
void
md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
{
const md5_byte_t *p = data;
int left = nbytes;
int offset = (pms->count[0] >> 3) & 63;
md5_word_t nbits = (md5_word_t)(nbytes << 3);
if (nbytes <= 0)
return;
/* Update the message length. */
pms->count[1] += nbytes >> 29;
pms->count[0] += nbits;
if (pms->count[0] < nbits)
pms->count[1]++;
/* Process an initial partial block. */
if (offset) {
int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
memcpy(pms->buf + offset, p, copy);
if (offset + copy < 64)
return;
p += copy;
left -= copy;
md5_process(pms, pms->buf);
}
/* Process full blocks. */
for (; left >= 64; p += 64, left -= 64)
md5_process(pms, p);
/* Process a final partial block. */
if (left)
memcpy(pms->buf, p, left);
}
void
md5_finish(md5_state_t *pms, md5_byte_t digest[16])
{
static const md5_byte_t pad[64] = {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
md5_byte_t data[8];
int i;
/* Save the length before padding. */
for (i = 0; i < 8; ++i)
data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
/* Pad to 56 bytes mod 64. */
md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
/* Append the length. */
md5_append(pms, data, 8);
for (i = 0; i < 16; ++i)
digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
}
+91
View File
@@ -0,0 +1,91 @@
/*
Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved.
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
L. Peter Deutsch
ghost@aladdin.com
*/
/* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */
/*
Independent implementation of MD5 (RFC 1321).
This code implements the MD5 Algorithm defined in RFC 1321, whose
text is available at
http://www.ietf.org/rfc/rfc1321.txt
The code is derived from the text of the RFC, including the test suite
(section A.5) but excluding the rest of Appendix A. It does not include
any code or documentation that is identified in the RFC as being
copyrighted.
The original and principal author of md5.h is L. Peter Deutsch
<ghost@aladdin.com>. Other authors are noted in the change history
that follows (in reverse chronological order):
2002-04-13 lpd Removed support for non-ANSI compilers; removed
references to Ghostscript; clarified derivation from RFC 1321;
now handles byte order either statically or dynamically.
1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
added conditionalization for C++ compilation from Martin
Purschke <purschke@bnl.gov>.
1999-05-03 lpd Original version.
*/
#ifndef md5_INCLUDED
# define md5_INCLUDED
/*
* This package supports both compile-time and run-time determination of CPU
* byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
* compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
* defined as non-zero, the code will be compiled to run only on big-endian
* CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
* run on either big- or little-endian CPUs, but will run slightly less
* efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
*/
typedef unsigned char md5_byte_t; /* 8-bit byte */
typedef unsigned int md5_word_t; /* 32-bit word */
/* Define the state of the MD5 Algorithm. */
typedef struct md5_state_s {
md5_word_t count[2]; /* message length in bits, lsw first */
md5_word_t abcd[4]; /* digest buffer */
md5_byte_t buf[64]; /* accumulate block */
} md5_state_t;
#ifdef __cplusplus
extern "C"
{
#endif
/* Initialize the algorithm. */
void md5_init(md5_state_t *pms);
/* Append a string to the message. */
void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
/* Finish the message and return the digest. */
void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* md5_INCLUDED */
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

+119 -29
View File
@@ -1,24 +1,45 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "vehicle.h"
#include "gfx.h"
#include "assert.h"
#include "saveload.h"
#include "network.h"
#include "network_data.h"
#include "network_server.h"
extern void StartupEconomy();
extern void InitNewsItemStructs();
byte _name_array[512][32];
static INLINE uint32 ROR(uint32 x, int n)
static inline uint32 ROR(uint32 x, int n)
{
return (x >> n) + (x << ((sizeof(x)*8)-n));
}
/* XXX - Player-seeds don't seem to be used anymore.. which is a good thing
so I just disabled them for now. If there are no problems, we can remove
it completely! -- TrueLight */
#undef PLAYER_SEED_RANDOM
#ifdef RANDOM_DEBUG
#include "network_data.h"
uint32 DoRandom(uint line, char *file)
#else
uint32 Random()
#endif
{
if (_current_player>=MAX_PLAYERS) {
#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);
#endif
#ifdef PLAYER_SEED_RANDOM
if (_current_player>=MAX_PLAYERS || !_networking) {
uint32 s = _random_seeds[0][0];
uint32 t = _random_seeds[0][1];
_random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7);
@@ -27,14 +48,28 @@ uint32 Random()
uint32 s = _player_seeds[_current_player][0];
uint32 t = _player_seeds[_current_player][1];
_player_seeds[_current_player][0] = s + ROR(t ^ 0x1234567F, 7);
DEBUG(net, 1)("[NET-Seeds] Player seed called!");
return _player_seeds[_current_player][1] = ROR(s, 3);
}
#else
uint32 s = _random_seeds[0][0];
uint32 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)
{
return (uint16)DoRandom(line, file) * max >> 16;
}
#else
uint RandomRange(uint max)
{
return (uint16)Random() * max >> 16;
}
#endif
uint32 InteractiveRandom()
{
@@ -55,14 +90,7 @@ void InitPlayerRandoms()
for (i=0; i<MAX_PLAYERS; i++) {
_player_seeds[i][0]=InteractiveRandom();
_player_seeds[i][1]=InteractiveRandom();
}
}
void memswap(void *a, void *b, size_t size) {
void *c = alloca(size);
memcpy(c, a, size);
memcpy(a, b, size);
memcpy(b, c, size);
}
}
void SetDate(uint date)
@@ -71,6 +99,54 @@ void SetDate(uint date)
ConvertDayToYMD(&ymd, _date = date);
_cur_year = ymd.year;
_cur_month = ymd.month;
#ifdef ENABLE_NETWORK
_network_last_advertise_date = 0;
#endif /* ENABLE_NETWORK */
}
// multi os compatible sleep function
#ifdef __AMIGA__
// usleep() implementation
# include <devices/timer.h>
# include <dos/dos.h>
extern struct Device *TimerBase = NULL;
extern struct MsgPort *TimerPort = NULL;
extern struct timerequest *TimerRequest = NULL;
#endif // __AMIGA__
void CSleep(int milliseconds)
{
#if defined(WIN32)
Sleep(milliseconds);
#endif
#if defined(UNIX)
#if !defined(__BEOS__) && !defined(__AMIGA__)
usleep(milliseconds * 1000);
#endif
#ifdef __BEOS__
snooze(milliseconds * 1000);
#endif
#if defined(__AMIGA__)
{
ULONG signals;
ULONG TimerSigBit = 1 << TimerPort->mp_SigBit;
// send IORequest
TimerRequest->tr_node.io_Command = TR_ADDREQUEST;
TimerRequest->tr_time.tv_secs = (milliseconds * 1000) / 1000000;
TimerRequest->tr_time.tv_micro = (milliseconds * 1000) % 1000000;
SendIO((struct IORequest *)TimerRequest);
if (!((signals = Wait(TimerSigBit | SIGBREAKF_CTRL_C)) & TimerSigBit) ) {
AbortIO((struct IORequest *)TimerRequest);
}
WaitIO((struct IORequest *)TimerRequest);
}
#endif // __AMIGA__
#endif
}
void InitializeClearLand();
@@ -86,9 +162,9 @@ void InitializeLandscape();
void InitializeTowns();
void InitializeTrees();
void InitializeStations();
void InitializeNameMgr();
static void InitializeNameMgr();
void InitializePlayers();
void InitializeCheats();
static void InitializeCheats();
void GenerateLandscape();
void GenerateClearTile();
@@ -147,6 +223,7 @@ void InitializeGame()
InitializeCheats();
InitTextEffects();
InitTextMessage();
InitializeAnimatedTiles();
InitializeLandscapeVariables(false);
@@ -158,6 +235,9 @@ void GenerateWorld(int mode)
{
int i;
// Make sure everything is done via OWNER_NONE
_current_player = OWNER_NONE;
_generating_world = true;
InitializeGame();
SetObjectToPlace(1, 0, 0, 0);
@@ -228,18 +308,18 @@ byte *GetName(int id, byte *buff)
}
void InitializeCheats()
static void InitializeCheats()
{
memset(&_cheats, 0, sizeof(Cheats));
}
void InitializeNameMgr()
static void InitializeNameMgr()
{
memset(_name_array, 0, sizeof(_name_array));
}
StringID AllocateName(const byte *name, byte skip)
StringID RealAllocateName(const byte *name, byte skip, bool check_double)
{
int free_item = -1;
const byte *names;
@@ -253,7 +333,7 @@ StringID AllocateName(const byte *name, byte skip)
if (free_item == -1)
free_item = i;
} else {
if (str_eq(names, name)) {
if (check_double && str_eq(names, name)) {
_error_message = STR_0132_CHOSEN_NAME_IN_USE_ALREADY;
return 0;
}
@@ -513,7 +593,7 @@ void RoadVehiclesYearlyLoop();
void AircraftYearlyLoop();
void ShipsYearlyLoop();
void CheckpointsDailyLoop();
void WaypointsDailyLoop();
static const uint16 _autosave_months[] = {
@@ -562,12 +642,12 @@ void IncreaseDate()
/* yeah, increse day counter and call various daily loops */
_date++;
NetworkGameChangeDate(_date);
_vehicle_id_ctr_day = 0;
TextMessageDailyLoop();
DisasterDailyLoop();
CheckpointsDailyLoop();
WaypointsDailyLoop();
if (_game_mode != GM_MENU) {
InvalidateWindowWidget(WC_STATUS_BAR, 0, 0);
@@ -580,8 +660,6 @@ void IncreaseDate()
return;
_cur_month = ymd.month;
// printf("Month %d, %X\n", ymd.month, _random_seeds[0][0]);
/* yes, call various monthly loops */
if (_game_mode != GM_MENU) {
if (HASBIT(_autosave_months[_opt.autosave], _cur_month)) {
@@ -594,6 +672,10 @@ void IncreaseDate()
TownsMonthlyLoop();
IndustryMonthlyLoop();
StationMonthlyLoop();
#ifdef ENABLE_NETWORK
if (_network_server)
NetworkServerMonthlyLoop();
#endif /* ENABLE_NETWORK */
}
/* check if we entered a new year? */
@@ -608,11 +690,19 @@ void IncreaseDate()
RoadVehiclesYearlyLoop();
AircraftYearlyLoop();
ShipsYearlyLoop();
#ifdef ENABLE_NETWORK
if (_network_server)
NetworkServerYearlyLoop();
#endif /* ENABLE_NETWORK */
/* check if we reached 2090, that's the maximum year. */
if (_cur_year == 171) {
Vehicle *v;
_cur_year = 170;
_date = 62093;
FOR_ALL_VEHICLES(v) {
v->date_of_last_service -= 365; // 1 year is 365 days long
}
}
if (_patches.auto_euro)
@@ -743,31 +833,31 @@ static void SaveLoad_VIEW()
}
static void SaveLoad_MAPT() {
SlArray(_map_type_and_height, lengthof(_map_type_and_height), SLE_UINT8);
SlArray(_map_type_and_height, MapSize(), SLE_UINT8);
}
static void SaveLoad_MAP2() {
SlArray(_map2, lengthof(_map2), SLE_UINT8);
SlArray(_map2, MapSize(), SLE_UINT8);
}
static void SaveLoad_M3LO() {
SlArray(_map3_lo, lengthof(_map3_lo), SLE_UINT8);
SlArray(_map3_lo, MapSize(), SLE_UINT8);
}
static void SaveLoad_M3HI() {
SlArray(_map3_hi, lengthof(_map3_hi), SLE_UINT8);
SlArray(_map3_hi, MapSize(), SLE_UINT8);
}
static void SaveLoad_MAPO() {
SlArray(_map_owner, lengthof(_map_owner), SLE_UINT8);
SlArray(_map_owner, MapSize(), SLE_UINT8);
}
static void SaveLoad_MAP5() {
SlArray(_map5, lengthof(_map5), SLE_UINT8);
SlArray(_map5, MapSize(), SLE_UINT8);
}
static void SaveLoad_MAPE() {
SlArray(_map_extra_bits, lengthof(_map_extra_bits), SLE_UINT8);
SlArray(_map_extra_bits, MapSize() / 4, SLE_UINT8);
}
+27 -6
View File
@@ -1,12 +1,14 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "command.h"
#include "player.h"
#include "gfx.h"
#include "window.h"
#include "saveload.h"
#include "economy.h"
#include "network.h"
/* p1 = player
p2 = face
@@ -59,7 +61,7 @@ int32 CmdIncreaseLoan(int x, int y, uint32 flags, uint32 p1, uint32 p2)
p = DEREF_PLAYER(p1);
if (p->current_loan >= _economy.max_loan) {
SET_DPARAM32(0, _economy.max_loan);
SetDParam(0, _economy.max_loan);
return_cmd_error(STR_702B_MAXIMUM_PERMITTED_LOAN);
}
@@ -105,7 +107,7 @@ int32 CmdDecreaseLoan(int x, int y, uint32 flags, uint32 p1, uint32 p2)
}
if (p->player_money < size) {
SET_DPARAM32(0, size);
SetDParam(0, size);
return_cmd_error(STR_702E_REQUIRED);
}
@@ -123,7 +125,7 @@ int32 CmdChangeCompanyName(int x, int y, uint32 flags, uint32 p1, uint32 p2)
StringID str,old_str;
Player *p;
str = AllocateName((byte*)_decode_parameters, 4);
str = AllocateNameUnique((byte*)_decode_parameters, 4);
if (str == 0)
return CMD_ERROR;
@@ -145,7 +147,7 @@ int32 CmdChangePresidentName(int x, int y, uint32 flags, uint32 p1, uint32 p2)
StringID str,old_str;
Player *p;
str = AllocateName((byte*)_decode_parameters, 4);
str = AllocateNameUnique((byte*)_decode_parameters, 4);
if (str == 0)
return CMD_ERROR;
@@ -173,7 +175,7 @@ int32 CmdChangePresidentName(int x, int y, uint32 flags, uint32 p1, uint32 p2)
static void UpdateSignVirtCoords(SignStruct *ss)
{
Point pt = RemapCoords(ss->x, ss->y, ss->z);
SET_DPARAM16(0, ss->str);
SetDParam(0, ss->str);
UpdateViewportSignPos(&ss->sign, pt.x, pt.y - 6, STR_2806);
}
@@ -227,7 +229,7 @@ int32 CmdRenameSign(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SignStruct *ss;
if (_decode_parameters[0] != 0 && !p2) {
str = AllocateName((byte*)_decode_parameters, 0);
str = AllocateNameUnique((byte*)_decode_parameters, 0);
if (str == 0)
return CMD_ERROR;
@@ -279,6 +281,22 @@ int32 CmdMoneyCheat(int x, int y, uint32 flags, uint32 p1, uint32 p2)
return (int32)p1;
}
int32 CmdGiveMoney(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
SET_EXPENSES_TYPE(EXPENSES_OTHER);
if (flags & DC_EXEC) {
// Add money to player
byte old_cp = _current_player;
_current_player = p2;
SubtractMoneyFromPlayer(-(int32)p1);
_current_player = old_cp;
}
// Subtract money from local-player
return (int32)p1;
}
int32 CmdChangeDifficultyLevel(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
if (flags & DC_EXEC) {
@@ -288,6 +306,9 @@ int32 CmdChangeDifficultyLevel(int x, int y, uint32 flags, uint32 p1, uint32 p2)
} else {
_opt_mod_ptr->diff_level = p2;
}
// If we are a network-client, update the difficult setting (if it is open)
if (_networking && !_network_server && FindWindowById(WC_GAME_OPTIONS, 0) != NULL)
memcpy(&_opt_mod_temp, _opt_mod_ptr, sizeof(GameOptions));
InvalidateWindow(WC_GAME_OPTIONS, 0);
}
return 0;
+124 -96
View File
@@ -1,6 +1,7 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "map.h"
#include "window.h"
#include "gui.h"
#include "viewport.h"
@@ -9,11 +10,16 @@
#include "command.h"
#include "player.h"
#include "town.h"
#include "sound.h"
#include "network.h"
#include "hal.h" // Fios items
#include "hal.h" // for file list
bool _query_string_active;
static void SetFiosType(const byte fiostype);
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;
typedef struct LandInfoData {
Town *town;
@@ -23,88 +29,67 @@ typedef struct LandInfoData {
TileDesc td;
} LandInfoData;
static void LandInfoWndProc(Window *w, WindowEvent *e)
{
LandInfoData *lid;
StringID str;
uint32 *b;
if (e->event == WE_PAINT) {
int idx = 0;
int i;
DrawWindowWidgets(w);
lid = WP(w,void_d).data;
SET_DPARAM32(0, lid->td.dparam[0]);
SetDParam(0, lid->td.dparam[0]);
DrawStringCentered(140, 16, lid->td.str, 13);
SET_DPARAM16(0, STR_01A6_N_A);
SetDParam(0, STR_01A6_N_A);
if (lid->td.owner != OWNER_NONE && lid->td.owner != OWNER_WATER)
GetNameOfOwner(lid->td.owner, lid->tile);
DrawStringCentered(140, 27, STR_01A7_OWNER, 0);
str = STR_01A4_COST_TO_CLEAR_N_A;
if (lid->costclear != CMD_ERROR) {
SET_DPARAM32(0, lid->costclear);
SetDParam(0, lid->costclear);
str = STR_01A5_COST_TO_CLEAR;
}
DrawStringCentered(140, 38, str, 0);
sprintf(_userstring, "%.4X", lid->tile);
SET_DPARAM16(0, GET_TILE_X(lid->tile));
SET_DPARAM16(1, GET_TILE_Y(lid->tile));
SET_DPARAM16(2, STR_SPEC_USERSTRING);
snprintf(_userstring, USERSTRING_LEN, "%.4X", lid->tile);
SetDParam(0, GET_TILE_X(lid->tile));
SetDParam(1, GET_TILE_Y(lid->tile));
SetDParam(2, STR_SPEC_USERSTRING);
DrawStringCentered(140, 49, STR_LANDINFO_COORDS, 0);
SET_DPARAM16(0, STR_01A9_NONE);
SetDParam(0, STR_01A9_NONE);
if (lid->town != NULL) {
SET_DPARAM16(0, lid->town->townnametype);
SET_DPARAM32(1, lid->town->townnameparts);
SetDParam(0, lid->town->townnametype);
SetDParam(1, lid->town->townnameparts);
}
DrawStringCentered(140,60, STR_01A8_LOCAL_AUTHORITY, 0);
b = &GET_DPARAM(0);
str = STR_01CE_CARGO_ACCEPTED - 1;
if (lid->ac.amount_1 != 0) {
if (lid->ac.amount_1 < 8) {
SET_DPARAMX16(b, 0, STR_01D1_8);
SET_DPARAMX8(b, 1, lid->ac.amount_1);
b += 2;
/* XXX if a tile accepts more cargo types than there are template strings
* this breaks */
for (i = 0; i < NUM_CARGO; ++i) {
if (lid->ac[i] > 0) {
if (lid->ac[i] < 8) {
SetDParam(idx++, STR_01D1_8);
SetDParam(idx++, lid->ac[i]);
}
SetDParam(idx++, _cargoc.names_s[i]);
str++;
}
SET_DPARAMX16(b, 0, _cargoc.names_s[lid->ac.type_1]);
b++;
str++;
}
if (lid->ac.amount_2 != 0) {
if (lid->ac.amount_2 < 8) {
SET_DPARAMX16(b, 0, STR_01D1_8);
SET_DPARAMX8(b, 1, lid->ac.amount_2);
b += 2;
}
SET_DPARAMX16(b, 0, _cargoc.names_s[lid->ac.type_2]);
b++;
str++;
}
if (lid->ac.amount_3 != 0) {
if (lid->ac.amount_3 < 8) {
SET_DPARAMX16(b, 0, STR_01D1_8);
SET_DPARAMX8(b, 1, lid->ac.amount_3);
b += 2;
}
SET_DPARAMX16(b, 0, _cargoc.names_s[lid->ac.type_3]);
b++;
str++;
}
if (str != (STR_01CE_CARGO_ACCEPTED - 1))
DrawStringMultiCenter(140, 76, str, 276);
if (lid->td.build_date != 0) {
SET_DPARAM16(0,lid->td.build_date);
SetDParam(0,lid->td.build_date);
DrawStringCentered(140,71, STR_BUILD_DATE, 0);
}
}
@@ -154,7 +139,7 @@ static void Place_LandInfo(uint tile)
// Becuase build_date is not set yet in every TileDesc, we make sure it is empty
lid.td.build_date = 0;
GetAcceptedCargo(tile, &lid.ac);
GetAcceptedCargo(tile, lid.ac);
GetTileDesc(tile, &lid.td);
#if defined(_DEBUG)
@@ -286,7 +271,7 @@ static void BuildTreesWndProc(Window *w, WindowEvent *e)
case 16: /* place trees randomly over the landscape*/
w->click_state |= 1 << 16;
w->flags4 |= 5 << WF_TIMEOUT_SHL;
SndPlayFx(0x13);
SndPlayFx(SND_15_BEEP);
PlaceTreesRandomly();
MarkWholeScreenDirty();
break;
@@ -342,7 +327,7 @@ static const Widget _build_trees_widgets[] = {
static const WindowDesc _build_trees_desc = {
497, 22, 143, 171,
WC_BUILD_TOOLBAR,0,
WC_BUILD_TREES, WC_SCEN_LAND_GEN,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_build_trees_widgets,
BuildTreesWndProc
@@ -371,7 +356,7 @@ static const Widget _build_trees_scen_widgets[] = {
static const WindowDesc _build_trees_scen_desc = {
-1, -1, 143, 184,
WC_SCEN_BUILD_TREES,0,
WC_BUILD_TREES,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
_build_trees_scen_widgets,
BuildTreesWndProc
@@ -380,7 +365,6 @@ static const WindowDesc _build_trees_scen_desc = {
void ShowBuildTreesToolbar()
{
DeleteWindowById(WC_BUILD_TOOLBAR, 0);
AllocateWindowDesc(&_build_trees_desc);
}
@@ -389,7 +373,7 @@ void ShowBuildTreesScenToolbar()
AllocateWindowDescFront(&_build_trees_scen_desc, 0);
}
static uint32 _errmsg_decode_params[10];
static uint32 _errmsg_decode_params[20];
static StringID _errmsg_message_1, _errmsg_message_2;
static uint _errmsg_duration;
@@ -428,7 +412,7 @@ static void ErrmsgWndProc(Window *w, WindowEvent *e)
_errmsg_message_1,
238);
} else {
Player *p = DEREF_PLAYER(GET_DPARAMX8(_errmsg_decode_params,2));
Player *p = DEREF_PLAYER(GetDParamX(_errmsg_decode_params,2));
DrawPlayerFace(p->face, p->player_color, 2, 16);
DrawStringMultiCenter(
@@ -491,7 +475,7 @@ void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y)
if (!_errmsg_duration)
return;
if (_errmsg_message_1 != STR_013B_OWNED_BY || GET_DPARAMX8(_errmsg_decode_params,2) >= 8) {
if (_errmsg_message_1 != STR_013B_OWNED_BY || GetDParamX(_errmsg_decode_params,2) >= 8) {
if ( (x|y) != 0) {
pt = RemapCoords2(x, y);
@@ -537,7 +521,7 @@ void ShowEstimatedCostOrIncome(int32 cost, int x, int y)
cost = -cost;
msg = STR_0807_ESTIMATED_INCOME;
}
SET_DPARAM32(0, cost);
SetDParam(0, cost);
ShowErrorMessage(-1, msg, x, y);
}
@@ -551,7 +535,7 @@ void ShowCostOrIncomeAnimation(int x, int y, int z, int32 cost)
cost = -cost;
msg = STR_0803_INCOME;
}
SET_DPARAM32(0, cost);
SetDParam(0, cost);
AddTextEffect(msg, pt.x, pt.y, 0x250);
}
@@ -659,12 +643,12 @@ static void DrawStationCoverageText(const uint *accepts, int str_x, int str_y, u
DrawStringMultiLine(str_x, str_y, STR_SPEC_USERSTRING, 144);
}
void DrawStationCoverageAreaText(int sx, int sy, uint mask) {
void DrawStationCoverageAreaText(int sx, int sy, uint mask, int rad) {
int x = _thd.pos.x;
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);
GetAcceptanceAroundTiles(accepts, TILE_FROM_XY(x,y), _thd.new_size.x >> 4, _thd.new_size.y >> 4, rad);
DrawStationCoverageText(accepts, sx, sy, mask);
}
}
@@ -691,7 +675,12 @@ void UnclickSomeWindowButtons(Window *w, uint32 mask)
void UnclickWindowButtons(Window *w)
{
bool sticky = false;
if (w->desc_flags & WDF_STICKY_BUTTON && HASBIT(w->click_state, 2)) sticky = true;
UnclickSomeWindowButtons(w, (uint32)-1);
if (sticky) SETBIT(w->click_state, 2);
}
@@ -783,11 +772,12 @@ void DrawEditBox(Window *w, int wid)
static void QueryStringWndProc(Window *w, WindowEvent *e)
{
static bool closed = false;
switch(e->event) {
case WE_PAINT: {
// int x;
SET_DPARAM16(0, WP(w,querystr_d).caption);
SetDParam(0, WP(w,querystr_d).caption);
DrawWindowWidgets(w);
DrawEditBox(w, 5);
@@ -798,12 +788,20 @@ static void QueryStringWndProc(Window *w, WindowEvent *e)
case 3: DeleteWindow(w); break;
case 4:
press_ok:;
if (str_eq(WP(w,querystr_d).buf, WP(w,querystr_d).buf + MAX_QUERYSTR_LEN)) {
if (str_eq(WP(w,querystr_d).buf, WP(w,querystr_d).buf + MAX_QUERYSTR_LEN) && !_do_edit_on_text_even_when_no_change_to_edit_box) {
DeleteWindow(w);
} else {
Window *parent = FindWindowById(WP(w,querystr_d).wnd_class, WP(w,querystr_d).wnd_num);
byte *buf = WP(w,querystr_d).buf;
WindowClass wnd_class = WP(w,querystr_d).wnd_class;
WindowNumber wnd_num = WP(w,querystr_d).wnd_num;
Window *parent;
// Mask the edit-box as closed, so we don't send out a CANCEL
closed = true;
DeleteWindow(w);
parent = FindWindowById(wnd_class, wnd_num);
if (parent != NULL) {
WindowEvent e;
e.event = WE_ON_EDIT_TEXT;
@@ -833,7 +831,20 @@ press_ok:;
}
} break;
case WE_CREATE:
closed = false;
break;
case WE_DESTROY:
// If the window is not closed yet, it means it still needs to send a CANCEL
if (!closed) {
Window *parent = FindWindowById(WP(w,querystr_d).wnd_class, WP(w,querystr_d).wnd_num);
if (parent != NULL) {
WindowEvent e;
e.event = WE_ON_EDIT_TEXT_CANCEL;
parent->wndproc(parent, &e);
}
}
_query_string_active = false;
break;
}
@@ -873,6 +884,13 @@ void ShowQueryString(StringID str, StringID caption, int maxlen, int maxwidth, b
} else {
GetString(_orig_edit_str_buf, str);
}
if (maxlen & 0x1000) {
_do_edit_on_text_even_when_no_change_to_edit_box = true;
maxlen &= ~0x1000;
} else
_do_edit_on_text_even_when_no_change_to_edit_box = false;
_orig_edit_str_buf[maxlen] = 0;
memcpy(_edit_str_buf, _orig_edit_str_buf, MAX_QUERYSTR_LEN);
@@ -894,8 +912,8 @@ 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_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_TIP},
{ 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},
@@ -906,8 +924,8 @@ static const Widget _load_dialog_1_widgets[] = {
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_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_TIP},
{ 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},
@@ -918,8 +936,8 @@ static const Widget _load_dialog_2_widgets[] = {
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_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_TIP},
{ 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},
@@ -934,8 +952,8 @@ static const Widget _save_dialog_widgets[] = {
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_TIP},
{ WWT_PUSHTXTBTN, 14, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_TIP},
{ 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},
@@ -948,11 +966,7 @@ static const Widget _save_dialog_scen_widgets[] = {
};
static FiosItem *_fios_list;
static int _fios_num;
static int _saveload_mode;
static void BuildFileList()
void BuildFileList()
{
FiosFreeSavegameList();
if(_saveload_mode==SLD_NEW_GAME || _saveload_mode==SLD_LOAD_SCENARIO || _saveload_mode==SLD_SAVE_SCENARIO)
@@ -972,9 +986,6 @@ static void DrawFiosTexts()
DoDrawString(path, 2, 27, 16);
}
/* FIOS_TYPE_FILE, FIOS_TYPE_OLDFILE etc. different colours */
static const byte _fios_colors[] = {13, 9, 9, 6, 5, 6, 5};
#if defined(_WIN32)
extern int CDECL compare_FiosItems (const void *a, const void *b);
#else
@@ -1007,6 +1018,22 @@ static void MakeSortedSaveGameList()
qsort(_fios_list + sort_start, s_amount, sizeof(FiosItem), compare_FiosItems);
}
static void GenerateFileName(void)
{
const Player *p;
/* Check if we are not a specatator who wants to generate a name..
Let's use the name of player #0 for now. */
if (_local_player < MAX_PLAYERS)
p = DEREF_PLAYER(_local_player);
else
p = DEREF_PLAYER(0);
SetDParam(0, p->name_1);
SetDParam(1, p->name_2);
SetDParam(2, _date);
GetString(_edit_str_buf, STR_4004);
}
static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
{
const int list_start = 51;
@@ -1110,13 +1137,17 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
FiosDelete(WP(w,querystr_d).buf);
SetWindowDirty(w);
BuildFileList();
if (_saveload_mode == SLD_SAVE_GAME)
GenerateFileName(); /* Reset file name to current date */
} else if (HASBIT(w->click_state, 11)) { /* Save button clicked */
_switch_mode = SM_SAVE;
FiosMakeSavegameName(_file_to_saveload.name, WP(w,querystr_d).buf);
}
break;
case WE_DESTROY:
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
// pause is only used in single-player, non-editor mode
if(!_networking && (_game_mode != GM_EDITOR))
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
_query_string_active = false;
FiosFreeSavegameList();
break;
@@ -1181,16 +1212,13 @@ void ShowSaveLoadDialog(int mode)
WP(w,querystr_d).buf = _edit_str_buf;
if (mode == SLD_SAVE_GAME) {
Player *p = &_players[_local_player];
SET_DPARAM16(0, p->name_1);
SET_DPARAM32(1, p->name_2);
SET_DPARAM16(2, _date);
GetString(_edit_str_buf, STR_4004);
GenerateFileName();
} else if (mode == SLD_SAVE_SCENARIO) {
strcpy(_edit_str_buf, "UNNAMED");
}
if (_game_mode != GM_MENU)
// pause is only used in single-player, non-editor mode
if(_game_mode != GM_MENU && !_networking && _game_mode != GM_EDITOR)
DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
BuildFileList();
@@ -1206,8 +1234,8 @@ void RedrawAutosave()
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_TIP},
{ WWT_PUSHTXTBTN, 7, 128, 256, 14, 25, STR_SORT_BY_DATE, STR_SORT_TIP},
{ 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},
@@ -1287,7 +1315,7 @@ static void SelectScenarioWndProc(Window *w, WindowEvent *e) {
}
}
static void SetFiosType(const byte fiostype)
void SetFiosType(const byte fiostype)
{
switch (fiostype) {
case FIOS_TYPE_FILE: case FIOS_TYPE_SCENARIO:
@@ -1323,14 +1351,14 @@ void AskForNewGameToStart()
w->vscroll.cap = 27;
}
int32 ClickMoneyCheat(int32 p1, int32 p2)
static int32 ClickMoneyCheat(int32 p1, int32 p2)
{
DoCommandP(0, -10000000, 0, NULL, CMD_MONEY_CHEAT);
return true;
}
// p1 player to set to, p2 is -1 or +1 (down/up)
int32 ClickChangePlayerCheat(int32 p1, int32 p2)
static int32 ClickChangePlayerCheat(int32 p1, int32 p2)
{
while(p1 >= 0 && p1 < MAX_PLAYERS) {
if (_players[p1].is_active) {
@@ -1476,14 +1504,14 @@ static void CheatsWndProc(Window *w, WindowEvent *e)
if (ce->type == CE_BOOL) {
DrawFrameRect(x+20, y+1, x+30+9, y+9, (*(bool*)ce->variable)?6:4, (*(bool*)ce->variable)?0x20:0);
SET_DPARAM16(0, *(bool*)ce->variable ? STR_CONFIG_PATCHES_ON : STR_CONFIG_PATCHES_OFF);
SetDParam(0, *(bool*)ce->variable ? STR_CONFIG_PATCHES_ON : STR_CONFIG_PATCHES_OFF);
} else if (ce->type == CE_CLICK) {
DrawFrameRect(x+20, y+1, x+30+9, y+9, 0, (WP(w,def_d).data_1==i*2+1)?0x20:0x00);
if(i==0)
SET_DPARAM64(0, (int64) 10000000);
SetDParam64(0, (int64) 10000000);
else
SET_DPARAM16(0, false);
SetDParam(0, false);
} else {
DrawFrameRect(x+20, y+1, x+20+9, y+9, 3, clk == i*2+1 ? 0x20 : 0);
@@ -1497,11 +1525,11 @@ static void CheatsWndProc(Window *w, WindowEvent *e)
if(ce->str==STR_CHEAT_SWITCH_CLIMATE)
val += STR_TEMPERATE_LANDSCAPE;
SET_DPARAM16(0, val);
SetDParam(0, val);
// display date for change date cheat
if(ce->str==STR_CHEAT_CHANGE_DATE)
SET_DPARAM16(0, _date);
SetDParam(0, _date);
// draw colored flag for change player cheat
if(ce->str==STR_CHEAT_CHANGE_PLAYER)
+40 -12
View File
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "ttd.h"
#include "table/strings.h"
#include "window.h"
#include "gui.h"
#include "gfx.h"
@@ -34,6 +35,32 @@ static byte * const _playlists[] = {
msf.custom_2,
};
// Map the order of the song names to the numbers of the midi filenames
static const int midi_idx[] = {
0, // Tycoon DELUXE Theme
2, // Easy Driver
3, // Little Red Diesel
17, // Cruise Control
7, // Don't Walk!
9, // Fell Apart On Me
4, // City Groove
19, // Funk Central
6, // Stoke It
12, // Road Hog
5, // Aliens Ate My Railway
1, // Snarl Up
18, // Stroll On
10, // Can't Get There From Here
8, // Sawyer's Tune
13, // Hold That Train!
21, // Movin' On
15, // Goss Groove
16, // Small Town
14, // Broomer's Oil Rag
20, // Jammit
11 // Hard Drivin'
};
static void SkipToPrevSong()
{
@@ -82,7 +109,8 @@ static void MusicVolumeChanged(byte new_vol)
static void DoPlaySong()
{
char filename[256];
sprintf(filename, "%sgm_tt%.2d.gm", _path.gm_dir, _music_wnd_cursong - 1);
snprintf(filename, sizeof(filename), "%sgm_tt%.2d.gm",
_path.gm_dir, midi_idx[_music_wnd_cursong - 1]);
_music_driver->play_song(filename);
}
@@ -176,13 +204,13 @@ static void MusicTrackSelectionWndProc(Window *w, WindowEvent *e)
DrawStringCentered(92, 15, STR_01EE_TRACK_INDEX, 0);
SET_DPARAM16(0, STR_01D5_ALL + msf.playlist);
SetDParam(0, STR_01D5_ALL + msf.playlist);
DrawStringCentered(340, 15, STR_01EF_PROGRAM, 0);
for(i=1; (uint)i <= NUM_SONGS_AVAILABLE; i++) {
SET_DPARAM16(0, i);
SET_DPARAM16(2, i);
SET_DPARAM16(1, SPECSTR_SONGNAME);
SetDParam(0, i);
SetDParam(2, i);
SetDParam(1, SPECSTR_SONGNAME);
DrawString(4, 23+(i-1)*6, (i < 10) ? STR_01EC_0 : STR_01ED, 0);
}
@@ -195,9 +223,9 @@ static void MusicTrackSelectionWndProc(Window *w, WindowEvent *e)
y = 23;
for(p = _playlists[msf.playlist],i=0; (i=*p) != 0; p++) {
SET_DPARAM16(0, i);
SET_DPARAM16(2, i);
SET_DPARAM16(1, SPECSTR_SONGNAME);
SetDParam(0, i);
SetDParam(2, i);
SetDParam(1, SPECSTR_SONGNAME);
DrawString(252, y, (i < 10) ? STR_01EC_0 : STR_01ED, 0);
y += 6;
}
@@ -259,7 +287,7 @@ static const Widget _music_track_selection_widgets[] = {
{ 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_TO},
{ WWT_PUSHIMGBTN, 14, 186, 245, 124, 131, 0x0, STR_01F9_SAVE_MUSIC_SETTINGS},
{ WIDGETS_END},
};
@@ -305,7 +333,7 @@ static void MusicWindowWndProc(Window *w, WindowEvent *e)
str = STR_01E3;
if (_song_is_active != 0 && _music_wnd_cursong != 0) {
str = STR_01E4_0;
SET_DPARAM8(0, _music_wnd_cursong);
SetDParam(0, _music_wnd_cursong);
if (_music_wnd_cursong >= 10)
str = STR_01E5;
}
@@ -314,8 +342,8 @@ static void MusicWindowWndProc(Window *w, WindowEvent *e)
str = STR_01E6;
if (_song_is_active != 0 && _music_wnd_cursong != 0) {
str = STR_01E7;
SET_DPARAM16(0, SPECSTR_SONGNAME);
SET_DPARAM16(1, _music_wnd_cursong);
SetDParam(0, SPECSTR_SONGNAME);
SetDParam(1, _music_wnd_cursong);
}
DrawStringCentered(155, 46, str, 0);
+513 -513
View File
File diff suppressed because it is too large Load Diff
+1116 -1712
View File
File diff suppressed because it is too large Load Diff

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