mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2026-07-18 00:29:42 +00:00
Compare commits
553 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f788b1aa28 | |||
| 7e0f47ff15 | |||
| 4972ba9a78 | |||
| 4ec9356ba2 | |||
| de597eb7d2 | |||
| 7d18544b04 | |||
| 3b60676e64 | |||
| d7bc1d776c | |||
| 1e8cfa10bf | |||
| b249954538 | |||
| dda14faac5 | |||
| 6788a614d1 | |||
| 97ec7de9e6 | |||
| ffed7d6834 | |||
| c330e4203e | |||
| 0533d9ff6e | |||
| f5b68e2d9d | |||
| 58c153b9ac | |||
| 60052ffb45 | |||
| 1558948b9b | |||
| c9645885d0 | |||
| 3672ae1118 | |||
| c48ba54a09 | |||
| 3f87f29a81 | |||
| a9bb5be49d | |||
| d91326fb4a | |||
| a14a78de34 | |||
| 533e7a97ef | |||
| b4c80052fe | |||
| 79bbc37daa | |||
| 3a98db672b | |||
| 28c1dc3e39 | |||
| c4836bbd70 | |||
| 0e3399177e | |||
| 39727d6a81 | |||
| fb345e983e | |||
| 64e153fc34 | |||
| e297eada07 | |||
| 51cbbd0438 | |||
| 51257991c0 | |||
| d66adc937d | |||
| 90b2b2144b | |||
| ed0a42f940 | |||
| b7f71b026d | |||
| 5c7decc27d | |||
| 68e1cdbdea | |||
| 4f4fa940d8 | |||
| 46af99b8c0 | |||
| f55303b0a8 | |||
| 222d6ca952 | |||
| 160a0a5ee1 | |||
| 9a0c994fa8 | |||
| 91d1805fb1 | |||
| af4f4069ee | |||
| d9199657c1 | |||
| 8bf52f8c0f | |||
| 1e1eac5f17 | |||
| 19e3842615 | |||
| 8ab0190c29 | |||
| 07d0fd6719 | |||
| 9044110096 | |||
| d8709b18c6 | |||
| 8ee37e7b47 | |||
| 24853eb42c | |||
| c136432978 | |||
| 245bc59c68 | |||
| 97865f03f6 | |||
| 7cfaa8a418 | |||
| 3bbea05a93 | |||
| 3d0cd51f27 | |||
| 9b237345d1 | |||
| 5f25a0788a | |||
| 7460764d91 | |||
| 36ce6a7e4f | |||
| 7e61a04785 | |||
| 28d34b0f56 | |||
| 5caca8d64e | |||
| 123acd5a73 | |||
| 110b410af4 | |||
| 862370f232 | |||
| 7182b2508d | |||
| 0807891501 | |||
| 60204bd309 | |||
| db16262698 | |||
| 96c1e88d56 | |||
| 9bd54b592d | |||
| 8c6c4e5262 | |||
| 18dd7ebae2 | |||
| 4d94803d32 | |||
| 0e19f74c16 | |||
| bb5dca016d | |||
| cf89cb12cd | |||
| f18b913493 | |||
| 61d744c38a | |||
| 453c85e61d | |||
| 853c11d301 | |||
| b9779176d5 | |||
| c7b5cc3787 | |||
| 158a4d897b | |||
| 1fd06cf773 | |||
| 74a0d26d0e | |||
| 17a613546c | |||
| 3f2d2d8f37 | |||
| 88b94c3c67 | |||
| 80a9fa962d | |||
| a4e5ed68fd | |||
| 376c5adb7c | |||
| 64f98e058d | |||
| 9d05289147 | |||
| ef89eb019a | |||
| e75954a7ab | |||
| 52685ad50c | |||
| da24f97483 | |||
| f04d49ca17 | |||
| f6e23d726f | |||
| 5e28fb8f97 | |||
| 89fd12692f | |||
| 74a149127d | |||
| dccd3adb9b | |||
| 523ba1ff50 | |||
| 693d074d76 | |||
| c5770907ac | |||
| e5a2abb872 | |||
| 83981e40b5 | |||
| ec94450aef | |||
| 76363231be | |||
| 765ecfed84 | |||
| 736718ef53 | |||
| 15265ac40a | |||
| 37192a99a6 | |||
| 5f51b42c99 | |||
| 88862fcdb6 | |||
| 2d5a938621 | |||
| ce4bff7fa5 | |||
| 39b3e71239 | |||
| fa1f026367 | |||
| 9595ee80e3 | |||
| 015fb81810 | |||
| d867a845fd | |||
| d7d3ff4849 | |||
| a4a3d829be | |||
| b615e854e1 | |||
| f1b6b1711b | |||
| 29b844a408 | |||
| c8ca2a8604 | |||
| f3ca6a9180 | |||
| c58549d512 | |||
| 6cb53e7d34 | |||
| af9dc1f817 | |||
| b6c74c1c20 | |||
| 52aeaebde0 | |||
| 20f36f8c88 | |||
| 967762e5ef | |||
| 55f3347514 | |||
| 23612e41f2 | |||
| a94da5937c | |||
| 7196860373 | |||
| 833ce98409 | |||
| 1fcf823d66 | |||
| 043b8bc5ad | |||
| 1b386f46b4 | |||
| a9972399c5 | |||
| 77e882c3bd | |||
| 2b13b2d239 | |||
| 27e008d3f7 | |||
| 9aeb0e1d30 | |||
| def5fc3ff7 | |||
| db6a545203 | |||
| cf205d059f | |||
| c185adf780 | |||
| 5b2cd5fae0 | |||
| 551d0622c5 | |||
| 92b8ec9ff8 | |||
| d1d33372ff | |||
| d6e4999f1f | |||
| 2e7f669153 | |||
| 9ced62e239 | |||
| 382b924b41 | |||
| b153236503 | |||
| 549dafc241 | |||
| e7886b6a34 | |||
| 25dfbc3134 | |||
| bff8c0af61 | |||
| 1c4c5ae370 | |||
| c0247e66e8 | |||
| 4d7c2e9d90 | |||
| f80094deb7 | |||
| c0603e4768 | |||
| 523b37a3e9 | |||
| 2690ba03b2 | |||
| 9e3ca26ae6 | |||
| 52134822b8 | |||
| 3c3ba97d11 | |||
| 99f0cda875 | |||
| 7188778c81 | |||
| 625b0ffec0 | |||
| 532aa593a6 | |||
| 3887747e4a | |||
| c8452c5195 | |||
| 6d8a0c52f5 | |||
| 8057dd2214 | |||
| 96bf7074e3 | |||
| 8f7373427e | |||
| 0e79314353 | |||
| 5221f35182 | |||
| a65302dafe | |||
| 397bd915a3 | |||
| e027fa76b1 | |||
| 920a93071b | |||
| 5b72167c8c | |||
| 7559b9fed1 | |||
| f995fd08a1 | |||
| 0ba5123cef | |||
| 5a3ef18c94 | |||
| 8dc2405ad6 | |||
| 72559a785e | |||
| 88cdb99ff7 | |||
| 5b0915e677 | |||
| 55bac62c5a | |||
| 38f5ef6bd4 | |||
| bd1d21911d | |||
| ea8311301e | |||
| c669c94ba3 | |||
| 625332a686 | |||
| 6bc9b64421 | |||
| 74619675d5 | |||
| 416e2b67b1 | |||
| 02bf3ed5c0 | |||
| 93a4dbda4b | |||
| 4a818ecbb6 | |||
| 416953f6dc | |||
| 9ec6e0a501 | |||
| 22951f5523 | |||
| ec40598d4c | |||
| 2bb5145a20 | |||
| ecf7e8e9a7 | |||
| 1f31bee5e4 | |||
| 5b0743d66b | |||
| 6fd3fc10e3 | |||
| 547a2d1f9f | |||
| 7938c1b884 | |||
| 253ec52c01 | |||
| 701e58e157 | |||
| bad25dec0e | |||
| 051134ac9f | |||
| a3a2f0617c | |||
| 293d5bffa8 | |||
| c8d83ce557 | |||
| 860a39af2a | |||
| 78b651c2c9 | |||
| 7c2448ecea | |||
| 1de8e294d8 | |||
| cef5ac8c8b | |||
| 6e49b85703 | |||
| 14a025a6bf | |||
| e7ee76dc56 | |||
| 47713d05e3 | |||
| 40121d60cd | |||
| 43e495045c | |||
| 581302e147 | |||
| 00168d4660 | |||
| 39382a16f3 | |||
| b8f6d41418 | |||
| 0434287ef8 | |||
| e56c3cddd8 | |||
| d036559e0e | |||
| aa183e35d8 | |||
| 56dd31f33b | |||
| 5149373467 | |||
| c00258237e | |||
| b7f0b278fb | |||
| fdb447ac55 | |||
| 2c88f958ed | |||
| a317cbdc09 | |||
| 5a458590b8 | |||
| e9b49ebf8e | |||
| c925f452e7 | |||
| 2fc6077a68 | |||
| ec7586dac3 | |||
| 00d6b3609f | |||
| a580b4c21e | |||
| ccd731a2ce | |||
| d701668f50 | |||
| 5733ad3e32 | |||
| 29cec910fc | |||
| 9be1dadb04 | |||
| d542f5624a | |||
| 6b9a744b2d | |||
| 12d6d679b0 | |||
| 97c533eb9c | |||
| 0554031514 | |||
| 908adfc191 | |||
| 08e16d966a | |||
| daa599c135 | |||
| 1c86acd8ba | |||
| 7b8bf96c2b | |||
| d801ca16a3 | |||
| a295166754 | |||
| acbd1801c7 | |||
| 908d2471ec | |||
| b07357373f | |||
| e35a0b1c44 | |||
| 669368cf21 | |||
| 372340b731 | |||
| 3ef3f05288 | |||
| fca55e3741 | |||
| 0ea87b6473 | |||
| aceb89fb7d | |||
| e8537f5512 | |||
| 06158be674 | |||
| 0b3cceb21d | |||
| c5b0ecac4f | |||
| a3cb5499bf | |||
| ca0f5ffe60 | |||
| 2214a9df5c | |||
| 34c89d6896 | |||
| f012e15c95 | |||
| b2e973056a | |||
| 4beb4ae2bc | |||
| bf587e9aac | |||
| 3ee0dee12a | |||
| d4b723a7c9 | |||
| d51887fbed | |||
| 8a3d7cce1c | |||
| a744e8e375 | |||
| 40a04816a4 | |||
| 6d81770985 | |||
| 4e41cf9e2b | |||
| 485102814f | |||
| 17cfda1a98 | |||
| 7fea17457d | |||
| 2a3969695b | |||
| 57adc97733 | |||
| 75d002690a | |||
| 4bba1273aa | |||
| bf6dace925 | |||
| 32f69dab0e | |||
| 578bde9aae | |||
| e1c1036648 | |||
| 5650257c0c | |||
| 7a8fb5d2fd | |||
| d9096f9ea4 | |||
| 989fd10d06 | |||
| ad068622fb | |||
| 0f7e48ead2 | |||
| 249438be88 | |||
| d51daeab1a | |||
| 3f91aff573 | |||
| 83ffb9c7fa | |||
| 258ffc1382 | |||
| 8d91459f37 | |||
| 9dd7c284f0 | |||
| 31184f974e | |||
| 4612dcdb48 | |||
| 0f24c74b14 | |||
| d753aeea58 | |||
| 3a7abc2a35 | |||
| c4e9896851 | |||
| 155f20329b | |||
| 87adce3ca0 | |||
| 13f0b6c0cf | |||
| 0086bb9d06 | |||
| 2760ed80fd | |||
| 4fb8338fa6 | |||
| dd90693a4c | |||
| 46dddda22f | |||
| e2f3634db3 | |||
| 86d19cb577 | |||
| cd6cb84889 | |||
| 60184e1495 | |||
| cc428ef6cf | |||
| 69159b6e52 | |||
| b65bda506c | |||
| 61103119fb | |||
| f1a3b32dc4 | |||
| 450c669eb2 | |||
| fb4b5fa841 | |||
| 6da3e44fc7 | |||
| a0b4161a32 | |||
| 2f35fea097 | |||
| 57c472e093 | |||
| 01e88bb61d | |||
| 95a3e4fe1f | |||
| 747d0fcca9 | |||
| 5a07c9bd71 | |||
| 4852474343 | |||
| afca207cf0 | |||
| 5914888ad6 | |||
| d99b89ab29 | |||
| 363a92bd43 | |||
| fb64b4e499 | |||
| 051e094921 | |||
| ec434b208e | |||
| c2193ce1a8 | |||
| 0bcc9b7573 | |||
| 249a170ace | |||
| 200d3fdbe8 | |||
| 183c33931d | |||
| a348f74c65 | |||
| ea48b0d05c | |||
| e656a91736 | |||
| a415b8ecce | |||
| 5fcd71cf28 | |||
| 2b5b1f4e06 | |||
| 80f787e60a | |||
| 5847317526 | |||
| ccc496ba2c | |||
| 5663926aaf | |||
| 770eb4c8c3 | |||
| 552689b7fe | |||
| 397cc50f61 | |||
| 8946e92468 | |||
| 989289fadd | |||
| 4f6fa3b468 | |||
| a9a7957eaa | |||
| 2f56162f35 | |||
| eb50427670 | |||
| a9a852a4d6 | |||
| 37cbae0370 | |||
| 84d1041edf | |||
| 7a2a973b48 | |||
| 7930faace9 | |||
| e9ef930155 | |||
| 1f12dee3a0 | |||
| 0a2f28c2f2 | |||
| e260aa3870 | |||
| e31f37d578 | |||
| 20e9a8061d | |||
| dae7b4ae21 | |||
| 7690093b4c | |||
| b5e1240a8a | |||
| b8327e0457 | |||
| 6db750373a | |||
| 04748217d1 | |||
| 3df0ff7854 | |||
| 53116247c3 | |||
| 22f627c8e1 | |||
| 76341a9173 | |||
| 2ab4669251 | |||
| 27b48faad2 | |||
| 015cb74dd9 | |||
| 7accdb9003 | |||
| 2aae43a848 | |||
| c53cf38ffd | |||
| 16f8a7b2d2 | |||
| a2869639b2 | |||
| fd80b53f39 | |||
| e7441c39e3 | |||
| acaff32984 | |||
| aac4fbc220 | |||
| 5d6c0a8220 | |||
| 65058d0d57 | |||
| 7a97e54559 | |||
| 95fdf39bca | |||
| 315006a28e | |||
| 872f49ae8a | |||
| 603618a75b | |||
| b78bbf80bf | |||
| 72880f2dad | |||
| 2cf5b77d0b | |||
| 37e199cd2b | |||
| 21b1607fb5 | |||
| f1d552c5b6 | |||
| 6909bba290 | |||
| 476dfd9f12 | |||
| 9c1aa0b75f | |||
| 92d1dd153f | |||
| 0a422b06a5 | |||
| d641175e3c | |||
| 8348068f5f | |||
| f2a858c6a5 | |||
| f7485d586e | |||
| fe1ccdf834 | |||
| 2eb00c0bd3 | |||
| f6690500bf | |||
| 49d0f082f8 | |||
| 9947627df9 | |||
| 034b0b5aef | |||
| 1fd2edf29a | |||
| 88e3ef36a4 | |||
| 385da141e6 | |||
| 98b60a605f | |||
| 9c3b9fd40d | |||
| 884fd51b68 | |||
| af3348fe94 | |||
| 43ca0548da | |||
| a99ac0d057 | |||
| edf841fb6f | |||
| 0dbe38fba7 | |||
| 35c13ef965 | |||
| 12c91671bf | |||
| 3dc8dcf312 | |||
| 75a54521e8 | |||
| 773737930a | |||
| 4449917a7c | |||
| 67f385ded8 | |||
| cee5cd6cc7 | |||
| 36f18e7f40 | |||
| 198f841c7e | |||
| f3758d133a | |||
| d72abf6c3e | |||
| 408a27a64e | |||
| db516f667e | |||
| f7fee73752 | |||
| cd01b3890a | |||
| 475ef74ab7 | |||
| 93d9afca4b | |||
| 493df26058 | |||
| 0ba58f25a4 | |||
| 807da4e722 | |||
| be726e5ec4 | |||
| e0d671ab5f | |||
| 72bd3bd170 | |||
| eb445b5189 | |||
| a38e2d046a | |||
| 6cad1071c8 | |||
| e2c1370d60 | |||
| 089a2a7847 | |||
| b7fd924806 | |||
| c62f670bca | |||
| d1a88cbbca | |||
| f5a50c0007 | |||
| 894bb262ad | |||
| ebc18e3957 | |||
| da80dabe6b | |||
| 431363908e | |||
| 7e882e8fa3 | |||
| 9d1bf52ce3 | |||
| 345003d49f | |||
| f7eccfc6fe | |||
| e049bd9b2b | |||
| f7cfd47261 | |||
| 7693c58e28 | |||
| 78b02129c1 | |||
| 0e08a8f61c | |||
| 5b145f4d7c | |||
| dae15e81d8 | |||
| e63f6efaef | |||
| 11545f1c4d | |||
| 1cfc877088 | |||
| 21b905e963 | |||
| 19533f8992 | |||
| 09fcc36c9c | |||
| 25b5a727e8 | |||
| cbcf002a91 | |||
| a69e422cdd | |||
| 0346fec1ca | |||
| f15c85d508 | |||
| 39f1c6dda3 | |||
| 9dcf10eb6c | |||
| eaeca76e5a | |||
| a43bc5f82e | |||
| 937aafd6d2 |
-163
@@ -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) ;
|
||||
|
||||
@@ -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 $@
|
||||
|
||||
@@ -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,5 +1,6 @@
|
||||
#include "stdafx.h"
|
||||
#include "ttd.h"
|
||||
#include "map.h"
|
||||
#include "command.h"
|
||||
#include "ai.h"
|
||||
#include "engine.h"
|
||||
|
||||
@@ -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,5 +1,6 @@
|
||||
#include "stdafx.h"
|
||||
#include "ttd.h"
|
||||
#include "map.h"
|
||||
#include "command.h"
|
||||
#include "ai.h"
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "stdafx.h"
|
||||
#include "ttd.h"
|
||||
#include "map.h"
|
||||
#include "ai.h"
|
||||
#include "vehicle.h"
|
||||
|
||||
|
||||
+140
-194
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
@@ -0,0 +1,7 @@
|
||||
#ifndef CALLBACK_TABLE_H
|
||||
#define CALLBACK_TABLE_H
|
||||
|
||||
extern CommandCallback *_callback_table[];
|
||||
extern const int _callback_table_count;
|
||||
|
||||
#endif
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+268
@@ -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
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+99
-57
@@ -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.
|
||||
|
||||
@@ -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
@@ -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 */
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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__ */
|
||||
|
||||
@@ -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
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+351
-182
@@ -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 vý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
@@ -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
File diff suppressed because it is too large
Load Diff
+1970
-1801
File diff suppressed because it is too large
Load Diff
+442
-303
File diff suppressed because it is too large
Load Diff
+262
-93
@@ -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
File diff suppressed because it is too large
Load Diff
+260
-91
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+117
-82
@@ -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 all’eliporto: {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
|
||||
|
||||
@@ -0,0 +1,424 @@
|
||||
##name Latvian
|
||||
##ownname Latvie¨u valoda
|
||||
|
||||
##id 0x0000
|
||||
STR_NULL :
|
||||
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Ārpus kartes robežas
|
||||
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Pārā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ābūt plakanai
|
||||
STR_0008_WAITING :{BLACK}Gaidam: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{STRING}
|
||||
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (ceļā no
|
||||
STR_000B :{YELLOW}{STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Pieņem: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Pieņ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ālus
|
||||
STR_0017_IRON_ORE :Dzelzs rūdu
|
||||
STR_0018_STEEL :Tēraudu
|
||||
STR_0019_VALUABLES :Vērtspapīri
|
||||
STR_001A_COPPER_ORE :Vara rūda
|
||||
STR_001B_MAIZE :Kukurūza
|
||||
STR_001C_FRUIT :Augļi
|
||||
STR_001D_DIAMONDS :Dimanti
|
||||
STR_001E_FOOD :Pārtika
|
||||
STR_001F_PAPER :Papīrs
|
||||
STR_0020_GOLD :Zelts
|
||||
STR_0021_WATER :Ūdens
|
||||
STR_0022_WHEAT :Kvieši
|
||||
STR_0023_RUBBER :Gumija
|
||||
STR_0024_SUGAR :Cukurs
|
||||
STR_0025_TOYS :Rotaļlietas
|
||||
STR_0026_CANDY :Saldumi
|
||||
STR_0027_COLA :Kola
|
||||
STR_0028_COTTON_CANDY :Cukurvate
|
||||
STR_0029_BUBBLES :Burbuļi
|
||||
STR_002A_TOFFEE :Cukurplāksnes
|
||||
STR_002B_BATTERIES :Baterijas
|
||||
STR_002C_PLASTIC :Plastmasa
|
||||
STR_002D_FIZZY_DRINKS :Burbuļūdeņ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āli
|
||||
STR_0037_IRON_ORE :Dzelzs rūda
|
||||
STR_0038_STEEL :Tērauds
|
||||
STR_0039_VALUABLES :Vērtspapīri
|
||||
STR_003A_COPPER_ORE :Vara rūda
|
||||
STR_003B_MAIZE :Kukurūza
|
||||
STR_003C_FRUIT :Augļi
|
||||
STR_003D_DIAMOND :Dimanti
|
||||
STR_003E_FOOD :Pārtika
|
||||
STR_003F_PAPER :papīrs
|
||||
STR_0040_GOLD :Zelts
|
||||
STR_0041_WATER :Ūdens
|
||||
STR_0042_WHEAT :Kvieši
|
||||
STR_0043_RUBBER :Gumija
|
||||
STR_0044_SUGAR :Cukurs
|
||||
STR_0045_TOY :Rotaļlieta
|
||||
STR_0046_CANDY :Saldumi
|
||||
STR_0047_COLA :Kola
|
||||
STR_0048_COTTON_CANDY :Cukurvate
|
||||
STR_0049_BUBBLE :Burbulis
|
||||
STR_004A_TOFFEE :Cukurplāksnīte
|
||||
STR_004B_BATTERY :Baterijas
|
||||
STR_004C_PLASTIC :Plastmasas
|
||||
STR_004D_FIZZY_DRINK :Burbuļūdeņu
|
||||
STR_004E :
|
||||
STR_004F_PASSENGER :{COMMA16} pasažieris
|
||||
STR_0050_TON_OF_COAL :{COMMA16} tonna ogļ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ču kaste
|
||||
STR_0055_TON_OF_GRAIN :{COMMA16} tonna graudu
|
||||
STR_0056_TON_OF_WOOD :{COMMA16} tonna kokmatereālu
|
||||
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonna dzelzs rūdas
|
||||
STR_0058_TON_OF_STEEL :{COMMA16} tonna tērauda
|
||||
STR_0059_BAG_OF_VALUABLES :{COMMA16} maiss ar vērtspapīriem
|
||||
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tonna vara rūdas
|
||||
STR_005B_TON_OF_MAIZE :{COMMA16} tonna kukurūzas
|
||||
STR_005C_TON_OF_FRUIT :{COMMA16} tonna augļu
|
||||
STR_005D_BAG_OF_DIAMONDS :{COMMA16} maiss ar dimantiem
|
||||
STR_005E_TON_OF_FOOD :{COMMA16} tonna pārtikas preču
|
||||
STR_005F_TON_OF_PAPER :{COMMA16} tonna papīra
|
||||
STR_0060_BAG_OF_GOLD :{COMMA16} zelta maiss
|
||||
STR_0061_OF_WATER :{VOLUME} ū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ļ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āksnīšu
|
||||
STR_006B_BATTERY :{COMMA16} baterija
|
||||
STR_006C_OF_PLASTIC :{VOLUME} plastmasas
|
||||
STR_006D_FIZZY_DRINK :{COMMA16} burbuļūdenis
|
||||
STR_006E :
|
||||
STR_006F_PASSENGERS :{COMMA16} pasažieri
|
||||
STR_0070_TONS_OF_COAL :{COMMA16} tonnas ogļ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ēm
|
||||
STR_0075_TONS_OF_GRAIN :{COMMA16} tonnas graudu
|
||||
STR_0076_TONS_OF_WOOD :{COMMA16} tonnas kokmatereālu
|
||||
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonnas dzelzs rūdas
|
||||
STR_0078_TONS_OF_STEEL :{COMMA16} tonnas tērauda
|
||||
STR_0079_BAGS_OF_VALUABLES :{COMMA16} maisi ar vērtslietām
|
||||
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tonnas vara rūdas
|
||||
STR_007B_TONS_OF_MAIZE :{COMMA16} tonnas kukurūzas
|
||||
STR_007C_TONS_OF_FRUIT :{COMMA16} tonnas augļu
|
||||
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} maisi ar dimantiem
|
||||
STR_007E_TONS_OF_FOOD :{COMMA16} tonnas pārtikas preču
|
||||
STR_007F_TONS_OF_PAPER :{COMMA16} tonnas papīra
|
||||
STR_0080_BAGS_OF_GOLD :{COMMA16} zelta maisi
|
||||
STR_0081_OF_WATER :{VOLUME} ū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ļ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ļi
|
||||
STR_008A_TONS_OF_TOFFEE :{COMMA16} tonnas cukurplāksnīšu
|
||||
STR_008B_BATTERIES :{COMMA16} baterijas
|
||||
STR_008C_OF_PLASTIC :{VOLUME} plastmasas
|
||||
STR_008D_FIZZY_DRINKS :{COMMA16} burbuļūdeņ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
File diff suppressed because it is too large
Load Diff
+2608
-2291
File diff suppressed because it is too large
Load Diff
+2645
File diff suppressed because it is too large
Load Diff
+227
-80
@@ -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
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
##name Russian_latin_char
|
||||
##ownname Russkiy
|
||||
+2450
-2097
File diff suppressed because it is too large
Load Diff
+2761
File diff suppressed because it is too large
Load Diff
+415
-108
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,424 @@
|
||||
##name Latvian
|
||||
##ownname Latvie¨u valoda
|
||||
|
||||
##id 0x0000
|
||||
STR_NULL :
|
||||
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Ārpus kartes robežas
|
||||
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Pārā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ābūt plakanai
|
||||
STR_0008_WAITING :{BLACK}Gaidam: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{STRING}
|
||||
STR_000A_EN_ROUTE_FROM :{WHITE}{STRING}{YELLOW} (ceļā no
|
||||
STR_000B :{YELLOW}{STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Pieņem: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Pieņ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ālus
|
||||
STR_0017_IRON_ORE :Dzelzs rūdu
|
||||
STR_0018_STEEL :Tēraudu
|
||||
STR_0019_VALUABLES :Vērtspapīri
|
||||
STR_001A_COPPER_ORE :Vara rūda
|
||||
STR_001B_MAIZE :Kukurūza
|
||||
STR_001C_FRUIT :Augļi
|
||||
STR_001D_DIAMONDS :Dimanti
|
||||
STR_001E_FOOD :Pārtika
|
||||
STR_001F_PAPER :Papīrs
|
||||
STR_0020_GOLD :Zelts
|
||||
STR_0021_WATER :Ūdens
|
||||
STR_0022_WHEAT :Kvieši
|
||||
STR_0023_RUBBER :Gumija
|
||||
STR_0024_SUGAR :Cukurs
|
||||
STR_0025_TOYS :Rotaļlietas
|
||||
STR_0026_CANDY :Saldumi
|
||||
STR_0027_COLA :Kola
|
||||
STR_0028_COTTON_CANDY :Cukurvate
|
||||
STR_0029_BUBBLES :Burbuļi
|
||||
STR_002A_TOFFEE :Cukurplāksnes
|
||||
STR_002B_BATTERIES :Baterijas
|
||||
STR_002C_PLASTIC :Plastmasa
|
||||
STR_002D_FIZZY_DRINKS :Burbuļūdeņ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āli
|
||||
STR_0037_IRON_ORE :Dzelzs rūda
|
||||
STR_0038_STEEL :Tērauds
|
||||
STR_0039_VALUABLES :Vērtspapīri
|
||||
STR_003A_COPPER_ORE :Vara rūda
|
||||
STR_003B_MAIZE :Kukurūza
|
||||
STR_003C_FRUIT :Augļi
|
||||
STR_003D_DIAMOND :Dimanti
|
||||
STR_003E_FOOD :Pārtika
|
||||
STR_003F_PAPER :papīrs
|
||||
STR_0040_GOLD :Zelts
|
||||
STR_0041_WATER :Ūdens
|
||||
STR_0042_WHEAT :Kvieši
|
||||
STR_0043_RUBBER :Gumija
|
||||
STR_0044_SUGAR :Cukurs
|
||||
STR_0045_TOY :Rotaļlieta
|
||||
STR_0046_CANDY :Saldumi
|
||||
STR_0047_COLA :Kola
|
||||
STR_0048_COTTON_CANDY :Cukurvate
|
||||
STR_0049_BUBBLE :Burbulis
|
||||
STR_004A_TOFFEE :Cukurplāksnīte
|
||||
STR_004B_BATTERY :Baterijas
|
||||
STR_004C_PLASTIC :Plastmasas
|
||||
STR_004D_FIZZY_DRINK :Burbuļūdeņu
|
||||
STR_004E :
|
||||
STR_004F_PASSENGER :{COMMA16} pasažieris
|
||||
STR_0050_TON_OF_COAL :{COMMA16} tonna ogļ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ču kaste
|
||||
STR_0055_TON_OF_GRAIN :{COMMA16} tonna graudu
|
||||
STR_0056_TON_OF_WOOD :{COMMA16} tonna kokmatereālu
|
||||
STR_0057_TON_OF_IRON_ORE :{COMMA16} tonna dzelzs rūdas
|
||||
STR_0058_TON_OF_STEEL :{COMMA16} tonna tērauda
|
||||
STR_0059_BAG_OF_VALUABLES :{COMMA16} maiss ar vērtspapīriem
|
||||
STR_005A_TON_OF_COPPER_ORE :{COMMA16} tonna vara rūdas
|
||||
STR_005B_TON_OF_MAIZE :{COMMA16} tonna kukurūzas
|
||||
STR_005C_TON_OF_FRUIT :{COMMA16} tonna augļu
|
||||
STR_005D_BAG_OF_DIAMONDS :{COMMA16} maiss ar dimantiem
|
||||
STR_005E_TON_OF_FOOD :{COMMA16} tonna pārtikas preču
|
||||
STR_005F_TON_OF_PAPER :{COMMA16} tonna papīra
|
||||
STR_0060_BAG_OF_GOLD :{COMMA16} zelta maiss
|
||||
STR_0061_OF_WATER :{VOLUME} ū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ļ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āksnīšu
|
||||
STR_006B_BATTERY :{COMMA16} baterija
|
||||
STR_006C_OF_PLASTIC :{VOLUME} plastmasas
|
||||
STR_006D_FIZZY_DRINK :{COMMA16} burbuļūdenis
|
||||
STR_006E :
|
||||
STR_006F_PASSENGERS :{COMMA16} pasažieri
|
||||
STR_0070_TONS_OF_COAL :{COMMA16} tonnas ogļ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ēm
|
||||
STR_0075_TONS_OF_GRAIN :{COMMA16} tonnas graudu
|
||||
STR_0076_TONS_OF_WOOD :{COMMA16} tonnas kokmatereālu
|
||||
STR_0077_TONS_OF_IRON_ORE :{COMMA16} tonnas dzelzs rūdas
|
||||
STR_0078_TONS_OF_STEEL :{COMMA16} tonnas tērauda
|
||||
STR_0079_BAGS_OF_VALUABLES :{COMMA16} maisi ar vērtslietām
|
||||
STR_007A_TONS_OF_COPPER_ORE :{COMMA16} tonnas vara rūdas
|
||||
STR_007B_TONS_OF_MAIZE :{COMMA16} tonnas kukurūzas
|
||||
STR_007C_TONS_OF_FRUIT :{COMMA16} tonnas augļu
|
||||
STR_007D_BAGS_OF_DIAMONDS :{COMMA16} maisi ar dimantiem
|
||||
STR_007E_TONS_OF_FOOD :{COMMA16} tonnas pārtikas preču
|
||||
STR_007F_TONS_OF_PAPER :{COMMA16} tonnas papīra
|
||||
STR_0080_BAGS_OF_GOLD :{COMMA16} zelta maisi
|
||||
STR_0081_OF_WATER :{VOLUME} ū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ļ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ļi
|
||||
STR_008A_TONS_OF_TOFFEE :{COMMA16} tonnas cukurplāksnīšu
|
||||
STR_008B_BATTERIES :{COMMA16} baterijas
|
||||
STR_008C_OF_PLASTIC :{VOLUME} plastmasas
|
||||
STR_008D_FIZZY_DRINKS :{COMMA16} burbuļūdeņ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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
##name Russian_latin_char
|
||||
##ownname Russkiy
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
@@ -44,10 +44,23 @@
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating american language file"
|
||||
CommandLine="strgen\debug\strgen.exe "$(InputPath)""
|
||||
CommandLine="strgen\debug\strgen.exe "$(InputPath)"
|
||||
"
|
||||
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 "$(InputPath)"
|
||||
"
|
||||
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 "$(InputPath)"
|
||||
"
|
||||
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 "$(InputPath)"
|
||||
"
|
||||
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 "$(InputPath)""
|
||||
CommandLine="strgen\debug\strgen.exe "$(InputPath)"
|
||||
"
|
||||
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 "$(InputPath)"
|
||||
"
|
||||
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 "$(InputPath)"
|
||||
"
|
||||
Outputs="lang\spanish.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="lang\swedish.txt">
|
||||
<FileConfiguration
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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];
|
||||
@@ -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
|
||||
@@ -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));
|
||||
}
|
||||
@@ -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 */
|
||||
Executable
BIN
Binary file not shown.
|
After Width: | Height: | Size: 5.4 KiB |
@@ -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
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user