Compare commits

...

190 Commits

Author SHA1 Message Date
frosch 995b1b04b9 (svn r26627) -Release: 1.4.1 2014-06-02 18:23:04 +00:00
frosch bcfc0ec957 (svn r26626) [1.4] -Update documentation 2014-06-02 18:19:54 +00:00
frosch 5702b3951c (svn r26625) [1.4] -Backport from trunk:
- Fix: First send packages about new company, then clients joining it to admin port [FS#6025] (r26616)
2014-06-02 18:18:35 +00:00
frosch 491b3e3efc (svn r26599) [1.4] -Update documentation 2014-05-18 18:30:18 +00:00
rubidium 2759e32451 (svn r26597) [1.4] -Backport from trunk: language updates 2014-05-18 15:21:31 +00:00
frosch d3c41a9d0e (svn r26596) [1.4] -Backport from trunk:
- Fix: Save/load issues on big endian machines (r26593, r26590, r26589)
- Fix: Consider multiheaded trains in station refits [FS#5995] (r26586)
- Fix: Game script could be changed in game by double clicking [FS#5974] (r26583)
2014-05-18 11:26:09 +00:00
frosch 3cd96a459b (svn r26595) [1.4] -Backport from trunk:
- Fix: Transfer stations also should have a cargo rating [FS#5989] (r26581, r26580)
- Fix: [Network] AIs would not reset certain network state information upon creation of their company [FS#6003] (r26578, r26576)
- Fix: [Network] Client of non-dedicated server was not correctly put into the first company for all state variables [FS#6001] (r26577)
2014-05-18 11:21:59 +00:00
frosch 1d18ef48a4 (svn r26561) [1.4] -Update documentation 2014-05-04 18:24:43 +00:00
rubidium a6e95ace5c (svn r26559) [1.4] -Backport from trunk: language updates 2014-05-04 16:17:25 +00:00
frosch c57b316570 (svn r26544) [1.4] -Backport from trunk:
- Fix: [Windows] Crash when the operating system performs the "paint" callback during window creation [FS#5994] (r26539, r26538)
- Fix: OpenBSD compilation [FS#5992] (r26523)
- Fix: prevent from ever reading huge (or negative) amounts of data in strgen (r26521)
- Fix: Severity rating of dedicated server messages during world generation (r26518)
2014-04-29 18:41:19 +00:00
frosch b720a16a1c (svn r26543) [1.4] -Backport from trunk:
- Fix: Buffer overruns in handling of symbolic links inside tars (r26514)
- Fix: Incorrect usage of strecpy (r26505, r26485)
- Fix: Reading console input on dedicated server relied on unspecified behaviour (r26496)
2014-04-29 18:35:01 +00:00
frosch 7a0b2bff18 (svn r26542) [1.4] -Backport from trunk:
- Change: Remove demand calculation based on tiles (r26484)
- Fix: Allow single-vehicle consists to station-refit in a meaningful way (r26483)
2014-04-29 18:21:49 +00:00
frosch 34bff06d8a (svn r26541) [1.4] -Backport from trunk:
- Fix: Prevent comparing to NULL when strndup could not allocate memory (r26476)
- Fix: Potentially undefined shifts in NewGRF code (r26475)
- Fix: Make sure there is no uninitialised sprite data (r26473)
- Fix: Draw text shadow for ellipses (r26467)
- Fix: Add special handling for PALETTE_CRASH to work for non-8bpp-mapped sprites (r26463)
2014-04-29 18:18:52 +00:00
rubidium be4eae9456 (svn r26532) [1.4] -Backport: language updates 2014-04-27 20:01:21 +00:00
frosch f8b956bc2c (svn r26461) [1.4] -Backport from trunk:
- Fix: Avoid division by 0 when scaling flow values [FS#5970] (r26448)
- Feature: Draw links to match _settings_game.vehicle.road_side [FS#5961] (r26445)
- Change: Use pkg-config for libpng as well (r26435, r26433, r26432)
- Feature: Load button for heightmap list [FS#5953] (r26428)
2014-04-13 10:52:19 +00:00
frosch 42c7cb38fa (svn r26460) [1.4] -Backport from trunk:
- Fix: Do not crash when supplying an invalid filename without extension to cmd parameter -q (r26423)
- Fix: Some road constructions used the rail sound effect [FS#5946] (r26422)
- Fix: Goal GUI failed to shade [FS#5948] (r26420)
- Fix: Shares button state was not appropriately updated when switching setting or company [FS#5947] (r26416)
- Change: Use better distance metric for link graph [FS#5941] (r26411)
2014-04-13 10:47:39 +00:00
frosch 9d2f06c42c (svn r26439) [1.4] -Update documentation 2014-04-01 18:29:34 +00:00
frosch 0c2be35fa1 (svn r26414) [1.4] -Update: documentation 2014-03-18 19:51:54 +00:00
planetmaker 80a3b5e78f (svn r26412) [1.4] -Change: We have a new titlegame (Fleashosio) 2014-03-18 18:13:33 +00:00
frosch 8ca5334562 (svn r26405) [1.4] -Branch: Less excuses to not do stuff in trunk. 2014-03-17 19:53:30 +00:00
translators d470955e40 (svn r26404) -Update from WebTranslator v3.0:
persian - 91 changes by rkarimabadi
2014-03-17 18:45:11 +00:00
translators c18ccfe0de (svn r26403) -Update from WebTranslator v3.0:
belarusian - 91 changes by Wowanxm
swedish - 1 changes by spacejens
2014-03-16 18:45:15 +00:00
translators 2e7230dc2b (svn r26402) -Update from WebTranslator v3.0:
croatian - 1 changes by VoyagerOne
welsh - 8 changes by kazzie
2014-03-15 18:45:16 +00:00
translators a7f5ff3f73 (svn r26401) -Update from WebTranslator v3.0:
catalan - 4 changes by juanjo
2014-03-14 18:45:08 +00:00
translators 7ff5066904 (svn r26400) -Update from WebTranslator v3.0:
simplified_chinese - 5 changes by siu238X
traditional_chinese - 6 changes by siu238X
polish - 30 changes by McZapkie
2014-03-13 18:45:28 +00:00
translators 2febdda8df (svn r26399) -Update from WebTranslator v3.0:
finnish - 1 changes by jpx_
ukrainian - 8 changes by Madvin
2014-03-12 18:45:14 +00:00
zuu e73cd7e81d (svn r26398) -Codechange/fix (26396): A tab that should be a space 2014-03-11 22:08:58 +00:00
translators e031a86d69 (svn r26397) -Update from WebTranslator v3.0:
korean - 1 changes by telk5093
2014-03-11 18:45:09 +00:00
zuu ae23f519f7 (svn r26396) -Add: [script] AI/GS APIs to get cargo waiting from/via other station 2014-03-10 22:18:53 +00:00
translators 51501be48f (svn r26395) -Update from WebTranslator v3.0:
english_US - 9 changes by Supercheese
hebrew - 3 changes by oofnik
italian - 1 changes by lorenzodv
2014-03-09 18:45:19 +00:00
alberth d0356725f6 (svn r26394) -Fix[FS#5939]: Don't explain "symmetric" cargodist mode when the setting does not allow it. 2014-03-08 19:38:50 +00:00
fonsinchen 5d3fcce725 (svn r26393) -Fix: Update distances between link graph nodes when station sign is moved 2014-03-06 21:19:41 +00:00
alberth aee9444c1b (svn r26392) -Fix[FS#5933] No need to call OnFocus twice (MJP) 2014-03-05 21:21:55 +00:00
translators 7a126a20ea (svn r26391) -Update from WebTranslator v3.0:
czech - 1 changes by djst
indonesian - 1 changes by abdu354
2014-03-05 18:45:14 +00:00
translators 72f6c1b4bf (svn r26390) -Update from WebTranslator v3.0:
polish - 39 changes by Kilian
2014-03-04 18:45:10 +00:00
fonsinchen b816e07742 (svn r26389) -Fix [FS#5885]: Select a specific font size when freetype fails to select one automatically. 2014-03-03 21:34:36 +00:00
frosch 6b61c4608f (svn r26388) -Codechange: Move resolving of Action 3 into ResolverObject constructor. 2014-03-03 20:02:31 +00:00
frosch b935cb8415 (svn r26387) -Cleanup (r26173): No need to manually clear registers before resolving. 2014-03-03 19:32:53 +00:00
translators 363d5e8205 (svn r26386) -Update from WebTranslator v3.0:
indonesian - 2 changes by abdu354
norwegian_nynorsk - 50 changes by 2rB
gaelic - 12 changes by GunChleoc
2014-03-03 18:45:21 +00:00
translators 2b0863d2b0 (svn r26385) -Update from WebTranslator v3.0:
swedish - 6 changes by Joel_A
2014-03-01 18:45:10 +00:00
fonsinchen d0aa98ef7d (svn r26384) -Fix [FS#5924]: Return correct values from ICU iterators in case of leading or trailing whitespace 2014-03-01 14:14:41 +00:00
translators 8e8cf213bd (svn r26383) -Update from WebTranslator v3.0:
greek - 38 changes by Evropi
2014-02-28 18:45:11 +00:00
frosch 20970da24a (svn r26382) -Fix [FS#5932] (r25372): All goal commands invalidated the goal list of company 0. 2014-02-27 21:53:14 +00:00
translators 34cd77dcf5 (svn r26381) -Update from WebTranslator v3.0:
bulgarian - 1 changes by Wold
estonian - 8 changes by KSiimson
hebrew - 20 changes by oofnik
norwegian_nynorsk - 15 changes by 2rB
brazilian_portuguese - 1 changes by leandromoh
slovak - 4 changes by Milsa
spanish - 1 changes by Welder05
2014-02-27 18:46:10 +00:00
translators fc818d1373 (svn r26380) -Update from WebTranslator v3.0:
brazilian_portuguese - 2 changes by leandromoh
2014-02-26 18:45:15 +00:00
translators 33206425c0 (svn r26379) -Update from WebTranslator v3.0:
polish - 92 changes by McZapkie
2014-02-25 18:45:08 +00:00
frosch 2b3d87d7e6 (svn r26378) -Doc [FS#5930]: Typos. (LordAro) 2014-02-25 18:25:04 +00:00
rubidium 90892cb66f (svn r26376) -Prepare: 1.4.0-beta5 2014-02-25 09:12:24 +00:00
frosch a9acaf7a5e (svn r26375) -Fix [FS#5929]: Station sizes > 8 were always allowed. (adf88) 2014-02-24 19:57:18 +00:00
frosch 62b22bfd2b (svn r26374) -Fix [FS#5928]: Mixed up callback mask flags in station inspect window. (adf88) 2014-02-24 19:22:22 +00:00
translators 408b5a70af (svn r26373) -Update from WebTranslator v3.0:
hebrew - 30 changes by oofnik
2014-02-24 18:45:10 +00:00
frosch 440168cfb2 (svn r26372) -Doc [FS#5927]: Typos. 2014-02-24 18:14:53 +00:00
frosch a32d18cbb9 (svn r26371) -Fix [FS#5831]: Calling DoCommandP during the gameloop cleared pending persistent storage changes. 2014-02-23 22:03:08 +00:00
frosch c6ce57e8a7 (svn r26370) -Doc: Desync debugging and command replaying. 2014-02-23 19:32:32 +00:00
frosch e9f7103ad7 (svn r26369) -Fix-ish: Do not run scripts during command replay. 2014-02-23 19:32:00 +00:00
translators 5fa2a6faec (svn r26368) -Update from WebTranslator v3.0:
indonesian - 2 changes by abdu354
2014-02-23 18:45:12 +00:00
michi_cc e15446bc58 (svn r26367) -Fix: [Win32] Use a separate event to indicate that the drawing thread has finished initialising, preventing potential deadlocks. 2014-02-23 16:08:50 +00:00
fonsinchen d8eda06a5a (svn r26366) -Fix: Protect the windows video driver from concurrent access (frosch123) 2014-02-23 14:16:36 +00:00
fonsinchen b4a015a4bd (svn r26365) -Fix [FS#5867]: Don't draw the cursor when its sprite isn't ready and set _screen.dst_ptr immediately when the buffer changes (frosch123) 2014-02-23 14:15:55 +00:00
rubidium 2b10ee1891 (svn r26364) -Fix [FS#5892]: writing out of the bounds of the rail type map 2014-02-22 21:12:28 +00:00
rubidium 98539bd2c3 (svn r26363) -Codechange [FS#5894]: make it clearer that drive through road stops need an Axis in CmdBuildRoadStop and the non drive through stops need a DiagDir 2014-02-22 19:52:13 +00:00
rubidium 90fef59f80 (svn r26362) -Fix [FS#5906]: reset the default window size icon size just like all the other cached icon sizes (based on patch by MJP) 2014-02-22 19:34:57 +00:00
translators 7bdd67e701 (svn r26361) -Update from WebTranslator v3.0:
catalan - 2 changes by arnau
marathi - 7 changes by rbarde
2014-02-22 18:45:11 +00:00
frosch aaa6d0f9ae (svn r26360) -Revert (r25550) / Fix [FS#5922]: ClientSizeChanged is only called via WndProcGdi which already has the mutex. The issue which r25550 tried to fix still exists as FS#5867. 2014-02-22 14:26:07 +00:00
translators 9b9a21f044 (svn r26359) -Update from WebTranslator v3.0:
indonesian - 1 changes by abdu354
spanish - 1 changes by Welder05
tamil - 13 changes by aswn
2014-02-21 18:45:17 +00:00
translators cbacd70aa9 (svn r26358) -Update from WebTranslator v3.0:
brazilian_portuguese - 5 changes by leandromoh
2014-02-20 18:45:08 +00:00
frosch 9479963b3b (svn r26357) -Fix [FS#5845]: Some order options do not combine with others. (3298) 2014-02-19 20:56:44 +00:00
frosch f7ba7f34f2 (svn r26356) -Update: Baseset translations. 2014-02-19 20:42:33 +00:00
translators 1fcb3bd1f1 (svn r26355) -Update from WebTranslator v3.0:
czech - 4 changes by djst
portuguese - 1 changes by babribeiro
2014-02-19 18:45:15 +00:00
translators ce1719e722 (svn r26354) -Update from WebTranslator v3.0:
frisian - 22 changes by Geoloep
2014-02-18 18:45:08 +00:00
frosch ac2cd315ef (svn r26353) -Fix (r26349) [FS#5917]: Win32 and OS/2 ThreadMutex::WaitForSignal always asserted. 2014-02-18 17:58:46 +00:00
translators 3e78c4dc7b (svn r26352) -Update from WebTranslator v3.0:
afrikaans - 7 changes by R2dical
marathi - 20 changes by rbarde
turkish - 8 changes by wakeup
2014-02-17 18:45:17 +00:00
frosch 27eede06c9 (svn r26351) -Fix: Protect all VideoDriver_SDL methods with the _draw_mutex. 2014-02-16 21:57:22 +00:00
frosch fe03ab06e5 (svn r26350) -Fix (r26349): Silly bugs are silly. 2014-02-16 21:47:00 +00:00
frosch 7ac18c0f22 (svn r26349) -Add: Optional recursive locking of mutexes. 2014-02-16 21:37:05 +00:00
translators b2ca2e2979 (svn r26348) -Update from WebTranslator v3.0:
lithuanian - 3 changes by Stabilitronas
polish - 4 changes by wojteks86
russian - 3 changes by Lone_Wolf
swedish - 5 changes by spacejens
2014-02-16 18:45:28 +00:00
fonsinchen cc77d40336 (svn r26347) -Fix [FS#5898]: Make sure link graph jobs can delete themselves after SLA_NULL. 2014-02-16 18:42:59 +00:00
frosch 55502341ac (svn r26346) -Fix [FS#5870]: Call Layouter::ReduceLineCache from GenerateTownName in all cases. 2014-02-16 17:45:24 +00:00
frosch 20785c79fc (svn r26345) -Cleanup (r26310): Spawning towns does not touch persistent NewGRF storage. ClearPersistentStorageChanges is a dangerous/magic function which should not be called without reason. 2014-02-16 17:42:28 +00:00
planetmaker 40f61eaf15 (svn r26344) -Change [FS#5907]: Do not flood shores of type MP_TREE needlessly (MJP) 2014-02-16 17:03:58 +00:00
fonsinchen 46590e112e (svn r26343) -Fix: Rewrite SmallStack so that it doesn't use a pool and is reentrant. 2014-02-16 16:25:18 +00:00
fonsinchen dc0f89b7e9 (svn r26342) -Add: A mutex locker class. 2014-02-16 16:24:41 +00:00
fonsinchen 2945e76269 (svn r26341) -Fix [FS#5902]: Reroute cargo when automatic distribution is switched off. 2014-02-16 11:17:17 +00:00
translators 997b2634c5 (svn r26340) -Update from WebTranslator v3.0:
luxembourgish - 4 changes by Phreeze
polish - 1 changes by wojteks86
serbian - 11 changes by Suleiman
2014-02-15 18:45:33 +00:00
michi_cc 7d56fd5382 (svn r26339) -Revert (r26305): Accidental changes to the VS9.0 solution file disabling the x64 build. 2014-02-15 15:01:32 +00:00
fonsinchen 4055397915 (svn r26338) -Fix [FS#5908]: Don't redraw the link graph overlay if it's empty (MJP) 2014-02-15 12:19:46 +00:00
translators 4a00552a09 (svn r26337) -Update from WebTranslator v3.0:
czech - 3 changes by Eskymak
dutch - 7 changes by habell
frisian - 61 changes by Geoloep
luxembourgish - 72 changes by Phreeze
polish - 1 changes by wojteks86
portuguese - 7 changes by babribeiro
gaelic - 6 changes by GunChleoc
spanish - 3 changes by Welder05
2014-02-14 18:45:43 +00:00
translators 4c11bddb3a (svn r26336) -Update from WebTranslator v3.0:
frisian - 28 changes by Geoloep
marathi - 27 changes by rbarde
slovak - 3 changes by Milsa
2014-02-13 18:45:26 +00:00
translators bd54155cb6 (svn r26335) -Update from WebTranslator v3.0:
croatian - 7 changes by VoyagerOne
frisian - 54 changes by Geoloep
korean - 1 changes by telk5093
spanish - 1 changes by Welder05
2014-02-12 18:45:21 +00:00
frosch cb7544ea39 (svn r26334) -Fix: 32bit compilation. 2014-02-11 21:17:43 +00:00
frosch 858e80f3dd (svn r26333) -Fix: Compilation without static_assert. 2014-02-11 20:34:48 +00:00
translators 470bd0ce24 (svn r26332) -Update from WebTranslator v3.0:
simplified_chinese - 3 changes by siu238X
traditional_chinese - 3 changes by siu238X
frisian - 50 changes by Geoloep
korean - 11 changes by telk5093
lithuanian - 2 changes by Stabilitronas
russian - 4 changes by KorneySan, Lone_Wolf
vietnamese - 8 changes by myquartz
2014-02-11 18:45:37 +00:00
fonsinchen e37656f2e5 (svn r26331) -Fix: some inconsistencies regarding link graph (job) IDs. 2014-02-10 20:13:07 +00:00
fonsinchen 82ece7db12 (svn r26330) -Fix: the theoretical case of rerouting cargo from one VehicleCargoList to another. 2014-02-10 18:55:03 +00:00
translators 4f24e33548 (svn r26329) -Update from WebTranslator v3.0:
catalan - 2 changes by juanjo
danish - 3 changes by Knogle
english_AU - 7 changes by mrtux
frisian - 247 changes by Geoloep
indonesian - 2 changes by UseYourIllusion
italian - 6 changes by lorenzodv
lithuanian - 2 changes by Stabilitronas
marathi - 74 changes by rbarde
norwegian_bokmal - 7 changes by cuthbert
spanish - 1 changes by Terkhen
2014-02-10 18:45:57 +00:00
frosch 03169121c2 (svn r26328) -Fix: Warnings and compilation failures. 2014-02-10 17:13:54 +00:00
fonsinchen 88787412b6 (svn r26327) -Fix [FS#5901]: Take care of next_station when reassigning from MTA_DELIVER to MTA_TRANSFER. 2014-02-09 21:10:25 +00:00
rubidium a4941e759c (svn r26326) -Fix [FS#5871]: when autosaving the message about a save already happening could be shown, even though the code's intention was to not show it (MJP) 2014-02-09 20:37:36 +00:00
frosch 20737a3462 (svn r26325) -Fix/Cleanup (r26320): Remove non-existent string from translations. 2014-02-09 19:17:21 +00:00
translators 83a202ea46 (svn r26324) -Update from WebTranslator v3.0:
catalan - 17 changes by juanjo
english_US - 1 changes by Supercheese
finnish - 7 changes by jpx_
german - 7 changes by planetmaker
russian - 4 changes by Lone_Wolf
spanish - 7 changes by Terkhen, juanjo
2014-02-09 18:45:42 +00:00
fonsinchen e4c7c8876b (svn r26323) -Fix: update some constants related to map size. 2014-02-09 15:00:30 +00:00
alberth 77e62f0b98 (svn r26322) -Feature: Warn the user about empty setting search results too. 2014-02-09 13:06:35 +00:00
alberth 202f21f262 (svn r26321) -Feature: Warn the user about missing setting search results due to filtering. 2014-02-09 13:05:46 +00:00
alberth 75504d24bf (svn r26320) -Add: Label for both the filter category and filter type in the advanced settings window. 2014-02-09 13:04:50 +00:00
fonsinchen 4cbab4f744 (svn r26319) -Change: Allow map sizes up to 4096x4096. 2014-02-09 12:56:36 +00:00
translators 2925a9005b (svn r26318) -Update from WebTranslator v3.0:
afrikaans - 1 changes by R2dical
catalan - 34 changes by juanjo
hebrew - 61 changes by oofnik
italian - 1 changes by lorenzodv
korean - 1 changes by telk5093
polish - 1 changes by wojteks86
gaelic - 2 changes by GunChleoc
swedish - 2 changes by spacejens
2014-02-08 18:46:35 +00:00
frosch 41b7a04a68 (svn r26317) -Fix [FS#5897]: Check whether NewGRF change vehicle capacity when they are not supposed to, and truncate cargo appropiately if they are allowed to. 2014-02-07 23:48:56 +00:00
frosch 50c6b2486b (svn r26316) -Feature [FS#5696]: Extend object variable 0x60 to also return the view. 2014-02-07 22:55:33 +00:00
translators 2e598be48f (svn r26315) -Update from WebTranslator v3.0:
danish - 7 changes by phnoggie
frisian - 3 changes by Geoloep
hebrew - 16 changes by oofnik
latvian - 19 changes by Tranzistors
2014-02-07 18:45:22 +00:00
frosch 167f232623 (svn r26314) -Fix [FS#5899]: The giant-screenshot confirmation window only triggered for rediculously big screenshots, for ludicrously big ones. 2014-02-06 22:24:02 +00:00
rubidium 9f6b8aea49 (svn r26313) -Codechange: use a set for finding unique town names instead of iterating all just created town names (MJP) 2014-02-06 21:06:59 +00:00
rubidium c7629735a3 (svn r26312) -Codechange: iterate the nearby tiles instead of the industry list for a conflicting industry when the number of industries is really large (MJP) 2014-02-06 21:05:00 +00:00
rubidium d05ff6e77b (svn r26311) -Codechange: use a different method for finding whether there is a nearby town when the map has thousands of towns (MJP) 2014-02-06 21:01:50 +00:00
rubidium fcb122124b (svn r26310) -Codechange: clean up some caches during town generation to keep memory usage significantly lower (MJP) 2014-02-06 20:55:49 +00:00
rubidium f99d380583 (svn r26309) -Codechange: instead of memsetting a byte array with zero, use a set for marking the flow area of a river 2014-02-06 20:51:01 +00:00
rubidium 30a95966ec (svn r26308) -Fix-ish: do not try to build more towns/industries than the pool can hold (MJP) 2014-02-06 20:42:09 +00:00
zuu 9603014102 (svn r26307) -Add: [nogo] Allow GS to hide story page date 2014-02-06 19:50:34 +00:00
zuu 1dbd59e6ab (svn r26306) -Add: [nogo] More story APIs: RemovePageElement, GetCompany, GetDate, SetDate 2014-02-06 19:48:19 +00:00
zuu 57a88c9de2 (svn r26305) -Add: [nogo] ScriptStoryPageElementList() - a list of all story page elements for a given page 2014-02-06 19:41:56 +00:00
zuu 14d99c6961 (svn r26304) -Fix (26303): Forgot to add new files 2014-02-06 19:36:19 +00:00
zuu 5165be2698 (svn r26303) -Add: [nogo] ScriptStoryPageList() - a list of all story pages 2014-02-06 19:25:39 +00:00
zuu ebcc8462b7 (svn r26302) -Doc: [nogo] ScriptStory::Remove does remove both the page and its elements 2014-02-06 19:24:01 +00:00
rubidium fa7eb6dc8c (svn r26300) -Prepare: 1.4.0-beta4 2014-02-06 19:03:15 +00:00
zuu 425197a19c (svn r26299) -Fix: [nogo] CmdRemoveStoryPage does not use the string parameter 2014-02-06 19:03:04 +00:00
zuu 0c6f22b5c1 (svn r26298) -Fix: [nogo] Invalid DoCommand return callback for method returning bool 2014-02-06 18:50:25 +00:00
translators cf96168f6f (svn r26297) -Update from WebTranslator v3.0:
frisian - 1 changes by Rubidium
hebrew - 97 changes by oofnik
korean - 10 changes by telk5093
2014-02-06 18:45:18 +00:00
translators 8b003bd133 (svn r26296) -Update from WebTranslator v3.0:
frisian - 53 changes by Geoloep
indonesian - 3 changes by UseYourIllusion
korean - 27 changes by telk5093
marathi - 31 changes by rbarde
2014-02-05 18:45:18 +00:00
translators 58dfc54296 (svn r26295) -Update from WebTranslator v3.0:
danish - 1 changes by phnoggie
frisian - 147 changes by Geoloep
korean - 130 changes by Phryxia, telk5093
luxembourgish - 1 changes by Phreeze
2014-02-04 18:45:31 +00:00
frosch 9e5fc88499 (svn r26294) -Change: [NewGRF] Make vehicle variable 61 return 'not available' instead of zero when using it in invalid callback contexts. 2014-02-03 21:10:04 +00:00
translators 9ff5aa4b7b (svn r26293) -Update from WebTranslator v3.0:
english_AU - 1 changes by mrtux
frisian - 94 changes by Geoloep
korean - 66 changes by Phryxia
latvian - 19 changes by okama2
marathi - 42 changes by rbarde
2014-02-03 18:45:55 +00:00
translators c633ee15d2 (svn r26292) -Update from WebTranslator v3.0:
czech - 6 changes by Eskymak
estonian - 1 changes by planetmaker
frisian - 152 changes by Geoloep
2014-02-02 18:45:33 +00:00
fonsinchen 9dc69d7f4d (svn r26291) -Fix [FS#5866, FS#5888]: Correctly identify opposite ends of bridges and tunnels when converting rails (adf88) 2014-02-02 14:54:13 +00:00
fonsinchen dda4ffab5e (svn r26290) -Codechange: Use nicer orthogonal tile iterator constructor and simplify calculation of explosion points when clearing. 2014-02-02 14:53:52 +00:00
fonsinchen 547e521381 (svn r26289) -Codechange: Make tile areas and iterators more consistent to each other. 2014-02-02 14:53:26 +00:00
translators 1fc589bd2d (svn r26288) -Update from WebTranslator v3.0:
polish - 1 changes by wojteks86
2014-02-01 18:45:14 +00:00
translators 4fd67347bd (svn r26287) -Update from WebTranslator v3.0:
lithuanian - 1 changes by Stabilitronas
2014-01-30 18:45:10 +00:00
fonsinchen 91407b924e (svn r26286) -Fix: Thoroughly erase dead flows. 2014-01-29 19:55:29 +00:00
translators e4a4f2c1dd (svn r26285) -Update from WebTranslator v3.0:
latvian - 3 changes by Tranzistors
2014-01-29 18:45:09 +00:00
frosch 9041473814 (svn r26284) -Fix: Comparison of NULL and char 0. (lbalbalba) 2014-01-28 20:03:12 +00:00
fonsinchen b12bf124c7 (svn r26283) -Fix [FS#5878]: Prevent infinite recursion also in RefreshLinks. 2014-01-28 19:49:43 +00:00
translators 84b8d376b6 (svn r26282) -Update from WebTranslator v3.0:
belarusian - 1 changes by KorneySan
catalan - 1 changes by juanjo
finnish - 2 changes by jpx_
russian - 1 changes by KorneySan
2014-01-28 18:45:25 +00:00
translators 61380f51bb (svn r26281) -Update from WebTranslator v3.0:
croatian - 1 changes by VoyagerOne
danish - 1 changes by Knogle
dutch - 1 changes by habell
german - 2 changes by planetmaker
italian - 1 changes by lorenzodv
korean - 1 changes by telk5093
norwegian_bokmal - 1 changes by cuthbert
slovak - 1 changes by Milsa
spanish - 1 changes by Terkhen
2014-01-27 18:45:52 +00:00
translators 87d373e673 (svn r26280) -Update from WebTranslator v3.0:
english_US - 1 changes by Rubidium
french - 1 changes by glx
korean - 8 changes by telk5093
slovenian - 5 changes by ntadej
welsh - 1 changes by kazzie
2014-01-26 18:45:54 +00:00
frosch 5d4c4b9172 (svn r26279) -Fix [FS#5853]: [NoAI] Some RemoveRail methods required to set a valid railtype, though it was not used anyway. Remove the need to set one. 2014-01-26 14:54:34 +00:00
frosch cce3d4fec8 (svn r26278) -Doc [FS#5817]: Transparency issues with original houses and industries. 2014-01-26 14:46:41 +00:00
frosch f0e7f9982a (svn r26277) -Add [FS#5849]: Display speed limit also for road bridges in the TileInfo window. 2014-01-26 13:50:10 +00:00
fonsinchen 95354136be (svn r26276) -Fix [FS#5874]: Don't spawn link graph jobs for link graphs with only one node 2014-01-24 21:39:07 +00:00
frosch 932dad7c8b (svn r26275) -Fix: If NewGRF provided the same station name for different industry types, stations would end up with same name. So also consider the provided name, not only the industry type. 2014-01-23 20:23:14 +00:00
translators 278b380d10 (svn r26274) -Update from WebTranslator v3.0:
danish - 6 changes by Elyon
norwegian_nynorsk - 2 changes by skjaeve
2014-01-22 18:45:12 +00:00
rubidium aee9abeab2 (svn r26272) -Prepare: 1.4.0-beta3 2014-01-21 19:59:13 +00:00
translators c884665cb9 (svn r26271) -Update from WebTranslator v3.0:
norwegian_nynorsk - 8 changes by 2rB
2014-01-21 18:45:07 +00:00
frosch f36d084db5 (svn r26270) -Fix-ish: If ScriptTown::FoundTown fails to generate a new random town name, don't bother sending a command, but fail immediately. 2014-01-20 22:34:22 +00:00
translators efe6adba6a (svn r26269) -Update from WebTranslator v3.0:
danish - 10 changes by manframe
norwegian_nynorsk - 24 changes by 2rB
2014-01-20 18:45:11 +00:00
translators 5a41423e03 (svn r26268) -Update from WebTranslator v3.0:
danish - 50 changes by Elyon
persian - 1 changes by rey
2014-01-19 18:45:16 +00:00
fonsinchen 7e91f96b92 (svn r26267) -Fix [FS#5865]: Really fix the infinite recursion problem and always consider all branches of conditional orders as possible next stopping stations. 2014-01-19 09:27:44 +00:00
fonsinchen b158c7d0fa (svn r26266) -Fix [FS#5860]: Update smallmap overlay if player joins different company and make sure company masks are valid 2014-01-19 09:26:56 +00:00
fonsinchen be62387e44 (svn r26265) -Fix: Don't rebuild the link graph overlay cache twice in a row 2014-01-19 09:26:17 +00:00
translators f373f8a9c2 (svn r26264) -Update from WebTranslator v3.0:
danish - 75 changes by Elyon
2014-01-18 18:45:12 +00:00
fonsinchen a5152be795 (svn r26263) -Fix [FS#5865]: Don't run into infinite recursion when getting next stopping station 2014-01-16 20:50:43 +00:00
frosch e3947c8019 (svn r26262) -Fix (r25075, r25076): Custom currency was reset on game start. 2014-01-15 21:52:22 +00:00
translators 1213e6ba71 (svn r26261) -Update from WebTranslator v3.0:
swedish - 5 changes by spacejens
2014-01-13 18:45:13 +00:00
rubidium ef9108bd58 (svn r26260) -Codechange: add template parameters for (non) translucent and (non) animated sprites, so the least expensive variant can be chosen (MJP) 2014-01-13 18:20:23 +00:00
rubidium eb2c2ef877 (svn r26259) -Codechange: add and maintain some general flags about sprites to prevent unneeded execution of expensive code (MJP) 2014-01-13 18:17:17 +00:00
rubidium fdf55a1a48 (svn r26258) -Codechange: deduplicate Draw methods (MJP) 2014-01-13 18:12:33 +00:00
rubidium f5f4f8a4b3 (svn r26257) -Codechange: replace most of the SSE macros by functions 2014-01-13 18:09:21 +00:00
rubidium 3a44e22b1a (svn r26256) -Codechange: do not load some data when it is not (often) used later on (MJP) 2014-01-13 18:06:53 +00:00
rubidium 70901e04c5 (svn r26255) -Codechange: improve performance of brightness adjustment (MJP) 2014-01-13 18:05:47 +00:00
rubidium 2f7c4f6d12 (svn r26254) -Codechange: MOVD is better in some cases than PINSRD (MJP) 2014-01-13 18:04:28 +00:00
rubidium 5b3b533697 (svn r26253) -Codechange: remove margin limitation to preserve block type (MJP) 2014-01-13 18:03:35 +00:00
rubidium 7f6e837b3a (svn r26252) -Codechange: deduplicate code for margin case (MJP) 2014-01-13 18:02:20 +00:00
rubidium 9a90bed79b (svn r26251) -Codechange: prepare Draw code for code deduplication (MJP) 2014-01-13 18:00:18 +00:00
rubidium 6e34672c6c (svn r26250) -Codechange: deduplicate darkening (e.g. shadow) code (MJP) 2014-01-13 17:58:58 +00:00
rubidium 76661f2c56 (svn r26249) -Codechange: simplify/cleanup ALPHA_BLEND macro (MJP) 2014-01-13 17:57:30 +00:00
rubidium 31c6e33878 (svn r26248) -Fix (r26223): missed compiler warning (MJP) 2014-01-13 17:55:34 +00:00
rubidium a942619911 (svn r26247) -Fix [FS#5854, FS#5855]: Possible out of bounds reads with the sse blitters (MJP) 2014-01-13 17:54:24 +00:00
translators 54a898be33 (svn r26246) -Update from WebTranslator v3.0:
danish - 4 changes by Hatsen
2014-01-12 18:45:11 +00:00
frosch ee5c115950 (svn r26245) -Codechange: No need for a map, if a vector suffices. 2014-01-12 18:01:50 +00:00
frosch e9c22ef16f (svn r26244) -Feature: [NewGRF] Add StringCodes 9A 1B, 9A 1C and 9A 1D to display amounts of cargo. 2014-01-12 18:01:33 +00:00
frosch 00e7ceeca4 (svn r26243) -Cleanup: Move TTDPStringIDToOTTDStringIDMapping to newgrf.cpp, it's only used there. 2014-01-12 18:01:16 +00:00
frosch 4f419b8f84 (svn r26242) -Codechange: Use GRFFile that filled the TextRefStack to translate StringIDs from the TextRefStack, instead of passing stuff via global vars. 2014-01-12 18:00:55 +00:00
frosch ba1779b978 (svn r26241) -Codechange: Remember the GRFFile which filled the TextRefStack in the TextRefStack. 2014-01-12 18:00:39 +00:00
frosch 73c6565cf2 (svn r26240) -Codechange: Pass the GRFFile to GetErrorMessageFromLocationCallbackResult instead of the GRFID. 2014-01-12 18:00:19 +00:00
frosch 477c15383d (svn r26239) -Fix: Check that there is space left in the string parameter array, before pushing NewGRF parameters to it. 2014-01-12 18:00:02 +00:00
frosch 5ab39cc651 (svn r26238) -Codechange: Use StringParameters::GetDataLeft to check for left space in the param array. 2014-01-12 17:59:43 +00:00
frosch bc86bf9b12 (svn r26237) -Cleanup: Remove unused SCC_STRING_ID. 2014-01-12 17:59:27 +00:00
fonsinchen 9ad173c9cc (svn r26236) -Fix: Don't overreserve after autorefit, but do reserve mail for aircraft 2014-01-12 17:44:55 +00:00
planetmaker 8259d279d5 (svn r26235) -Fix: Decimal and digit separators were swapped for Korean language 2014-01-11 14:13:23 +00:00
translators de5f0e9cbb (svn r26234) -Update from WebTranslator v3.0:
bulgarian - 69 changes by kokobongo
2014-01-10 18:45:09 +00:00
translators 208db963ad (svn r26233) -Update from WebTranslator v3.0:
swedish - 2 changes by spacejens
2014-01-09 18:45:09 +00:00
translators 6025a52ee9 (svn r26232) -Update from WebTranslator v3.0:
korean - 6 changes by telk5093
portuguese - 1 changes by frosch
2014-01-08 18:45:14 +00:00
306 changed files with 8631 additions and 5467 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ fallback = true
description = A music pack without actual music.
description.af_ZA = 'n Musiek stel sonder enige musiek.
description.ar_EG = مجموعة موسيقى بدون موسيقى
description.be_BY = "Пусты" набор музычнага афармлення, не змяшчаючы ніякай музыкі.
description.be_BY = "Пусты" набор музычнага афармлення, які не зьмяшчае ніякай музыкі.
description.bg_BG = Празен музикален пакет.
description.ca_ES = Un joc de música sense cap música.
description.cs_CZ = Prázná hudební sada.
+2 -1
View File
@@ -10,7 +10,7 @@ fallback = true
description = A sound pack without any sounds.
description.af_ZA = 'n Klank stel sonder enige klanke.
description.ar_EG = مجموعة صوت بدوت اصوات مضافة
description.be_BY = "Пусты" набор гукавога афармленьня, не змяшчаючы ніякіх гукаў.
description.be_BY = "Пусты" набор гукавога афармленьня, які не зьмяшчае ніякіх гукаў.
description.bg_BG = Празен звуков пакет.
description.ca_ES = Un joc de sons sense cap so.
description.cs_CZ = Prázdná sada zvuků.
@@ -22,6 +22,7 @@ description.en_AU = A sound pack without any sounds.
description.en_US = A sound pack without any sounds.
description.es_ES = Un conjunto de sonidos vacío.
description.et_EE = Helikogu ilma helideta.
description.eu_ES = Soinurik gabeko soinu pakete bat
description.fi_FI = Äänipaketti, jossa ei ole ääniä.
description.fr_FR = Un pack de sons sans sons.
description.gd_GB = Pacaid fhuaimean anns nach eil fuaim sam bith.
Binary file not shown.
+1 -1
View File
@@ -11,7 +11,7 @@ palette = DOS
description = Original Transport Tycoon Deluxe DOS edition graphics.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe grafieke.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة الدوس
description.be_BY = Арыгінальная графіка з Transport Tycoon Deluxe для DOS.
description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для DOS.
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS.
description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS.
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro DOS).
+1 -1
View File
@@ -10,7 +10,7 @@ version = 0
description = Original Transport Tycoon Deluxe DOS edition sounds.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe klanke.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة الدوس
description.be_BY = Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS.
description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS.
description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за DOS.
description.ca_ES = Sons originals de Transport Tycoon Deluxe per a DOS.
description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro DOS).
+1 -1
View File
@@ -11,7 +11,7 @@ palette = DOS
description = Original Transport Tycoon Deluxe DOS (German) edition graphics.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS (German) uitgawe grafieke.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الالمانية نسخة الدوس
description.be_BY = Арыгінальная графіка з нямецкай версіі Transport Tycoon Deluxe для DOS.
description.be_BY = Арыґінальная ґрафіка зь нямецкай версіі Transport Tycoon Deluxe для DOS.
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS (немски) .
description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS (Alemany).
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (německá verze pro DOS).
+2 -2
View File
@@ -11,7 +11,7 @@ palette = Windows
description = Original Transport Tycoon Deluxe Windows edition graphics.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe grafieke.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة وندوز
description.be_BY = Арыгінальная графіка з Transport Tycoon Deluxe для Windows.
description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для Windows.
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за Windows.
description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a Windows.
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro Windows).
@@ -33,7 +33,7 @@ description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi Windows.
description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe Windows útgáfunni.
description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione Windows.
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (Windows)
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 그래픽입니다.
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 그래픽입니다.
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Grafik.
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo grafika.
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for Windows.
+2 -2
View File
@@ -10,7 +10,7 @@ version = 1
description = Original Transport Tycoon Deluxe Windows edition music.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe musiek.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الموسيقية نسخة وندوز
description.be_BY = Арыгінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows.
description.be_BY = Арыґінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows.
description.bg_BG = Оригинална музика на Transport Tycoon Deluxe за Windows.
description.ca_ES = Música Original de Transport Tycoon Deluxe per a Windows.
description.cs_CZ = Původní hudba Transport Tycoon Deluxe (verze pro Windows).
@@ -32,7 +32,7 @@ description.id_ID = Musik pengiring orisinil Transport Tycoon Deluxe versi Windo
description.is_IS = Upprunalega tónlistin úr Transport Tycoon Deluxe Windows útgáfunni.
description.it_IT = Musica originale di Transport Tycoon Deluxe, edizione Windows.
description.ja_JP = Transport Tycoon Deluxe オリジナル版 音楽 (Windows)
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 음악입니다.
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 음악입니다.
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Music.
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo muzika.
description.lv_LV = Oriģinālā Transport Tycoon Deluxe Windows izdevuma mūzika.
+2 -2
View File
@@ -10,7 +10,7 @@ version = 0
description = Original Transport Tycoon Deluxe Windows edition sounds.
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe klanke.
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة وندوز
description.be_BY = Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows.
description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows.
description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за Windows.
description.ca_ES = Sons originals de Transport Tycoon Deluxe per a Windows.
description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro Windows).
@@ -32,7 +32,7 @@ description.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi Windows.
description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe Windows útgáfunni.
description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione Windows.
description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (Windows)
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 효과음입니다.
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 효과음입니다.
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Sound.
description.lt_LT = Originalūs Transport Tycoon Deluxe Windows leidimo garsai.
description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for Windows.
+326 -209
View File
File diff suppressed because it is too large Load Diff
+46 -119
View File
@@ -57,8 +57,8 @@ set_default() {
enable_translator="0"
enable_unicode="1"
enable_console="1";
enable_assert="1"
enable_strip="0"
enable_assert="0"
enable_strip="1"
enable_universal="0"
enable_osx_g5="0"
enable_cocoa_quartz="1"
@@ -1700,17 +1700,18 @@ make_cflags_and_ldflags() {
if [ -n "$png_config" ]; then
CFLAGS="$CFLAGS -DWITH_PNG"
CFLAGS="$CFLAGS `$png_config --cppflags --I_opts | tr '\n\r' ' '`"
CFLAGS="$CFLAGS `$png_config --cflags | tr '\n\r' ' '`"
# The extra flags are unneeded for latest libpng-config, but some versions are so broken...
if [ "$enable_static" != "0" ]; then
if [ "$os" = "OSX" ]; then
LIBS="$LIBS `$png_config --prefix`/lib/libpng.a"
# fontconfig_config goes via pkg-config on all systems, which doesn't know --prefix
# Also, despite the reason we link to the .a file ourself (because we can't use -static), we do need to ask pkg-config about possible other deps
LIBS="$LIBS `$png_config --variable=prefix`/lib/libpng.a `$png_config --libs --static | sed s@-lpng[0-9]*@@`"
else
LIBS="$LIBS `$png_config --static --ldflags | tr '\n\r' ' '`"
LIBS="$LIBS `$png_config --libs --static | tr '\n\r' ' '`"
fi
else
LIBS="$LIBS `$png_config --ldflags | tr '\n\r' ' '`"
LIBS="$LIBS `$png_config --libs | tr '\n\r' ' '`"
fi
fi
@@ -2715,80 +2716,64 @@ detect_libtimidity() {
detect_library "$with_libtimidity" "libtimidity" "libtimidity.a" "" "timidity.h"
}
detect_lzma() {
# 0 means no, 1 is auto-detect, 2 is force
if [ "$with_lzma" = "0" ]; then
log 1 "checking liblzma... disabled"
detect_pkg_config() {
# $1 - config-param ($with_lzma value)
# $2 - package name ('liblzma')
# $3 - config name ('lzma_config', sets $lzma_config)
# $4 - minimum module version ('2.3')
lzma_config=""
# 0 means no, 1 is auto-detect, 2 is force
if [ "$1" = "0" ]; then
log 1 "checking $2... disabled"
eval "$3=\"\""
return 0
fi
if [ "$with_lzma" = "1" ] || [ "$with_lzma" = "" ] || [ "$with_lzma" = "2" ]; then
lzma_config="pkg-config liblzma"
log 2 "detecting $2"
if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
pkg_config_call="pkg-config $2"
else
lzma_config="$with_lzma"
pkg_config_call="$1"
fi
version=`$lzma_config --modversion 2>/dev/null`
version=`$pkg_config_call --modversion 2>/dev/null`
ret=$?
log 2 "executing $lzma_config --modversion"
check_version "$4" "$version"
version_ok=$?
log 2 "executing $pkg_config_call --modversion"
log 2 " returned $version"
log 2 " exit code $ret"
if [ -z "$version" ] || [ "$ret" != "0" ]; then
log 1 "checking liblzma... not found"
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
log 1 "checking $2... needs at least version $4, $2 NOT enabled"
else
log 1 "checking $2... not found"
fi
# It was forced, so it should be found.
if [ "$with_lzma" != "1" ]; then
log 1 "configure: error: pkg-config liblzma couldn't be found"
log 1 "configure: error: you supplied '$with_lzma', but it seems invalid"
if [ "$1" != "1" ]; then
log 1 "configure: error: pkg-config $2 couldn't be found"
log 1 "configure: error: you supplied '$1', but it seems invalid"
exit 1
fi
lzma_config=""
eval "$3=\"\""
return 0
fi
log 1 "checking liblzma... found"
eval "$3=\"$pkg_config_call\""
log 1 "checking $2... found"
}
detect_lzma() {
detect_pkg_config "$with_lzma" "liblzma" "lzma_config" "5.0"
}
detect_xdg_basedir() {
# 0 means no, 1 is auto-detect, 2 is force
if [ "$with_xdg_basedir" = "0" ]; then
log 1 "checking libxdg_basedir... disabled"
xdg_basedir_config=""
return 0
fi
if [ "$with_xdg_basedir" = "1" ] || [ "$with_xdg_basedir" = "" ] || [ "$with_xdg_basedir" = "2" ]; then
xdg_basedir_config="pkg-config libxdg-basedir"
else
xdg_basedir_config="$with_xdg_basedir"
fi
version=`$xdg_basedir_config --modversion 2>/dev/null`
ret=$?
log 2 "executing $xdg_basedir_config --modversion"
log 2 " returned $version"
log 2 " exit code $ret"
if [ -z "$version" ] || [ "$ret" != "0" ]; then
log 1 "checking libxdg_basedir... not found"
# It was forced, so it should be found.
if [ "$with_xdg_basedir" != "1" ]; then
log 1 "configure: error: pkg-config libxdg_basedir couldn't be found"
log 1 "configure: error: you supplied '$with_xdg_basedir', but it seems invalid"
exit 1
fi
xdg_basedir_config=""
return 0
fi
log 1 "checking libxdg_basedir... found"
detect_pkg_config "$with_xdg_basedir" "libxdg-basedir" "xdg_basedir_config" "1.2"
}
detect_png() {
@@ -2815,33 +2800,7 @@ detect_png() {
return 0
fi
if [ "$with_png" = "1" ] || [ "$with_png" = "" ] || [ "$with_png" = "2" ]; then
png_config="libpng-config"
else
png_config="$with_png"
fi
version=`$png_config --version 2>/dev/null`
ret=$?
log 2 "executing $png_config --version"
log 2 " returned $version"
log 2 " exit code $ret"
if [ -z "$version" ] || [ "$ret" != "0" ]; then
log 1 "checking libpng... not found"
# It was forced, so it should be found.
if [ "$with_png" != "1" ]; then
log 1 "configure: error: libpng-config couldn't be found"
log 1 "configure: error: you supplied '$with_png', but it seems invalid"
exit 1
fi
png_config=""
return 0
fi
log 1 "checking libpng... found"
detect_pkg_config "$with_png" "libpng" "png_config" "1.2"
}
detect_freetype() {
@@ -2936,39 +2895,7 @@ detect_fontconfig() {
return 0
fi
if [ "$with_fontconfig" = "1" ] || [ "$with_fontconfig" = "" ] || [ "$with_fontconfig" = "2" ]; then
fontconfig_config="pkg-config fontconfig"
else
fontconfig_config="$with_fontconfig"
fi
version=`$fontconfig_config --modversion 2>/dev/null`
ret=$?
check_version '2.3' "$version"
version_ok=$?
log 2 "executing $fontconfig_config --modversion"
log 2 " returned $version"
log 2 " exit code $ret"
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
log 1 "checking libfontconfig... needs at least version 2.3.0, fontconfig NOT enabled"
else
log 1 "checking libfontconfig... not found"
fi
# It was forced, so it should be found.
if [ "$with_fontconfig" != "1" ]; then
log 1 "configure: error: fontconfig-config couldn't be found"
log 1 "configure: error: you supplied '$with_fontconfig', but it seems invalid"
exit 1
fi
fontconfig_config=""
return 0
fi
log 1 "checking libfontconfig... found"
detect_pkg_config "$with_fontconfig" "fontconfig" "fontconfig_config" "2.3"
}
detect_icu() {
+262
View File
@@ -0,0 +1,262 @@
Some explanations about Desyncs
Last updated: 2014-02-23
------------------------------------------------------------------------
Table of contents
-----------------
1.0) Desync theory
* 1.1) OpenTTD multiplayer architecture
* 1.2) What is a Desync and how is it detected
* 1.3) Typical causes of Desyncs
2.0) What to do in case of a Desync
* 2.1) Cache debugging
* 2.2) Desync recording
3.0) Evaluating the Desync records
* 3.1) Replaying
* 3.2) Evaluation the replay
* 3.3) Comparing savegames
1.1) OpenTTD multiplayer architecture
---- --------------------------------
OpenTTD has a huge gamestate, which changes all of the time.
The savegame contains the complete gamestate at a specific point
in time. But this state changes completely each tick: Vehicles move
and trees grow.
However, most of these changes in the gamestate are deterministic:
Without a player interfering a vehicle follows its orders always
in the same way, and trees always grow the same.
In OpenTTD multiplayer synchronisation works by creating a savegame
when clients join, and then transfering that savegame to the client,
so it has the complete gamestate at a fixed point in time.
Afterwards clients only receive 'commands', that is: Stuff which is
not predictable, like
- player actions
- AI actions
- GameScript actions
- Admin Port command
- rcon commands
- ...
These commands contain the information on how to execute the command,
and when to execute it. Time is measured in 'network frames'.
Mind that network frames to not match ingame time. Network frames
also run while the game is paused, to give a defined behaviour to
stuff that is executing while the game is paused.
The deterministic part of the gamestate is run by the clients on
their own. All they get from the server is the instruction to
run the gamestate up to a certain network time, which basically
says that there are no commands scheduled in that time.
When a client (which includes the server itself) wants to execute
a command (i.e. a non-predictable action), it does this by
- calling DoCommandP resp. DoCommandPInternal
- These functions first do a local test-run of the command to
check simple preconditions. (Just to give the client an
immediate response without bothering the server and waiting for
the response.) The test-run may not actually change the
gamestate, all changes must be discarded.
- If the local test-run succeeds the command is sent to the server.
- The server inserts the command into the command queue, which
assigns a network frame to the commands, i.e. when it shall be
executed on all clients.
- Enhanced with this specific timestamp, the command is send to all
clients, which execute the command simultaneously in the same
network frame in the same order.
1.2) What is a Desync and how is it detected
---- ---------------------------------------
In the ideal case all clients have the same gamestate as the server
and run in sync. That is, vehicle movement is the same on all
clients, and commands are executed the same everywhere and
have the same results.
When a Desync happens, it means that the gamestates on the clients
(including the server) are no longer the same. Just imagine
that a vehicle picks the left line instead of the right line at
a junction on one client.
The important thing here is, that noone notices when a Desync
occurs. The desync client will continue to simulate the gamestate
and execute commands from the server. Once the gamestate differs
it will increasingly spiral out of control: If a vehicle picks a
different route, it will arrive at a different time at a station,
which will load different cargo, which causes other vehicles to
load other stuff, which causes industries to notice different
servicing, which causes industries to change production, ...
the client could run all day in a different universe.
To limit how long a Desync can remain unnoticed, the server
transfers some checksums every now and then for the gamestate.
Currently this checksum is the state of the random number
generator of the game logic. A lot of things in OpenTTD depend
on the RNG, and if the gamestate differs, it is likely that the
RNG is called at different times, and the state differs when
checked.
The clients compare this 'checksum' with the checksum of their
own gamestate at the specific network frame. If they differ,
the client disconnects with a Desync error.
The important thing here is: The detection of the Desync is
only an ultimate failure detection. It does not give any
indication on when the Desync happened. The Desync may after
all have occured long ago, and just did not affect the checksum
up to now. The checksum may have matched 10 times or more
since the Desync happend, and only now the Desync has spiraled
enough to finally affect the checksum. (There was once a desync
which was only noticed by the checksum after 20 game years.)
1.3) Typical causes of Desyncs
---- -------------------------
Desyncs can be caused by the following scenarios:
- The savegame does not describe the complete gamestate.
- Some information which affects the progression of the
gamestate is not saved in the savegame.
- Some information which affects the progression of the
gamestate is not loaded from the savegame.
This includes the case that something is not completely
reset before loading the savegame, so data from the
previous game is carried over to the new one.
- The gamestate does not behave deterministic.
- Cache mismatch: The game logic depends on some cached
values, which are not invalidated properly. This is
the usual case for NewGRF-specific Desyncs.
- Undefined behaviour: The game logic performs multiple
things in an undefined order or with an undefined
result. E.g. when sorting something with a key while
some keys are equal. Or some computation that depends
on the CPU architecture (32/64 bit, little/big endian).
- The gamestate is modified when it shall not be modified.
- The test-run of a command alters the gamestate.
- The gamestate is altered by a player or script without
using commands.
2.1) Cache debugging
---- ---------------
Desyncs which are caused by inproper cache validation can
often be found by enabling cache validation:
- Start OpenTTD with '-d desync=2'.
- This will enable validation of caches every tick.
That is, cached values are recomputed every tick and compared
to the cached value.
- Differences are logged to 'commands-out.log' in the autosave
folder.
Mind that this type of debugging can also be done in singleplayer.
2.2) Desync recording
---- ----------------
If you have a server, which happens to encounter Desyncs often,
you can enable recording of the gamestate alterations. This
will later allow the replay the gamestate and locate the Desync
cause.
There are two levels of Desync recording, which are enabled
via '-d desync=2' resp. '-d desync=3'. Both will record all
commands to a file 'commands-out.log' in the autosave folder.
If you have the savegame from the start of the server, and
this command log you can replay the whole game. (see Section 3.1)
If you do not start the server from a savegame, there will
also be a savegame created just after a map has been generated.
The savegame will be named 'dmp_cmds_*.sav' and be put into
the autosave folder.
In addition to that '-d desync=3' also creates regular savegames
at defined spots in network time. (more defined than regular
autosaves). These will be created in the autosave folder
and will also be named 'dmp_cmds_*.sav'.
These saves allow comparing the gamestate with the original
gamestate during replaying, and thus greatly help debugging.
However, they also take a lot of disk space.
3.1) Replaying
---- ---------
To replay a Desync recording, you need these files:
- The savegame from when the server was started, resp.
the automatically created savegame from when the map
was generated.
- The 'commands-out.log' file.
- Optionally the 'dmp_cmds_*.sav'.
Put these files into a safe spot. (Not your autosave folder!)
Next, prepare your OpenTTD for replaying:
- Get the same version of OpenTTD as the original server was running.
- Uncomment/enable the define 'DEBUG_DUMP_COMMANDS' in
'src/network/network_func.h'.
- Put the 'commands-out.log' into the root save folder, and rename
it to 'commands.log'.
- Run 'openttd -D -d desync=3 -g startsavegame.sav'.
This replays the server log and creates new 'commands-out.log'
and 'dmp_cmds_*.sav' in your autosave folder.
3.2) Evaluation the replay
---- ---------------------
The replaying will also compare the checksums which are part of
the 'commands-out.log' with the replayed gamestate.
If they differ, it will trigger a 'NOT_REACHED'.
If the replay succeeds without mismatch, that is the replay reproduces
the original server state:
- Repeat the replay starting from incrementally later 'dmp_cmds_*.sav'
while truncating the 'commands.log' at the beginning appropriately.
The 'dmp_cmds_*.sav' can be your own ones from the first reply, or
the ones from the original server (if you have them).
(This simulates the view of joining clients during the game.)
- If one of those replays fails, you have located the Desync between
the last dmp_cmds that reproduces the replay and the first one
that fails.
If you have the original 'dmp_cmds_*.sav', you can also compare those
savegames with your own ones from the replay. You can also comment/disable
the 'NOT_REACHED' mentioned above, to get another 'dmp_cmds_*.sav' from
the replay after the mismatch has already been detected.
See Section 3.2 on how to compare savegames.
If the saves differ you have located the Desync between the last dmp_cmds
that match and the first one that does not. The difference of the saves
may point you in the direction of what causes it.
If the replay succeeds without mismatch, and you do not have any
'dmp_cmd_*.sav' from the original server, it is a lost case.
Enable creation of the 'dmp_cmd_*.sav' on the server, and wait for the
next Desync.
Finally, you can also compare the 'commands-out.log' from the original
server with the one from the replay. They will differ in stuff like
dates, and the original log will contain the chat, but otherwise they
should match.
3.2) Comparing savegames
---- -------------------
The binary form of the savegames from the original server and from
your replay will always differ:
- The savegame contains paths to used NewGRF files.
- The gamelog will log your loading of the savegame.
- The savegame data of AIs and the Gamescript will differ.
Scripts are not run during the replay, only their recorded commands
are replayed. Their internal state will thus not change in the
replay and will differ.
To compare savegame more semantically, there exist some ugly hackish
tools at:
http://devs.openttd.org/~frosch/texts/zpipe.c
http://devs.openttd.org/~frosch/texts/printhunk.c
The first one decompresses OpenTTD savegames. The second one creates
a textual representation of an uncompressed savegame, by parsing hunks
and arrays and such. With both tools you need to be a bit careful
since they work on stdin and stdout, which may not deal well with
binary data.
If you have the textual representation of the savegames, you can
compare them with regular diff tools.
+17 -8
View File
@@ -1,6 +1,6 @@
OpenTTD's known bugs
Last updated: 2014-01-07
Release version: 1.4.0-beta2
Last updated: 2014-06-02
Release version: 1.4.1
------------------------------------------------------------------------
@@ -33,12 +33,13 @@ No suitable AI can be found
If you have no AIs and an AI is started the so-called 'dummy' AI will
be loaded. This AI does nothing but writing a message on the AI debug
window and showing a red warning. There are basically two solutions
for this problem: you must change the settings so no AI is started,
this is done in the difficulty settings window. The other solution is
acquiring (downloading) some AI. The easiest way to do this is via
the "Check Online Content" button in the main (intro) menu or via
"AI Settings" -> "Select AI" -> "Check Online Content" which is also
accessed via the main menu.
for this problem: Either you set the number of AI players to 0 so that
no AI is started. You find that setting at the top of the window in the
"AI / Game Scripts Settings" window.
The other solution is acquiring (downloading) some AI. The easiest way
to do this is via the "Check Online Content" button in the main (intro)
menu or directly in the "AI / Game Scripts Settings" dialogue via the
"Check Online Content" button.
After a while of playing, colours get corrupted
In Windows 7 the background slideshow corrupts the colour mapping of
@@ -444,3 +445,11 @@ Trains might not stop at platforms that are currently being changed [FS#5553]:
just anywhere in the station because then it would never leave the station
if you have the same station in the order list multiple times in a row or
if there is only one station in the order list (see FS#5684).
Some houses and industries are not affected by transparency [FS#5817]:
Some of the default houses and industries (f.e. the iron ore mine) are
not affected by the transparency options. This is because the graphics do
not (completely) separate the ground from the building.
This is a bug of the original graphics, and unfortunately cannot be
fixed with OpenGFX for the sake of maintaining compatibility with the
original graphics.
+50 -2
View File
@@ -1,10 +1,58 @@
openttd (1.4.0~beta2) unstable; urgency=low
openttd (1.4.1-0) unstable; urgency=low
* New upstream release 1.4.1
-- OpenTTD <info@openttd.org> Mon, 02 Jun 2014 21:00:00 +0200
openttd (1.4.1~RC2-0) unstable; urgency=low
* New upstream release 1.4.1-RC2
-- OpenTTD <info@openttd.org> Sun, 18 May 2014 21:00:00 +0200
openttd (1.4.1~RC1-0) unstable; urgency=low
* New upstream release 1.4.1-RC1
-- OpenTTD <info@openttd.org> Sun, 04 May 2014 21:00:00 +0200
openttd (1.4.0-0) unstable; urgency=low
* New upstream release 1.4.0
-- OpenTTD <info@openttd.org> Tue, 01 Apr 2014 21:00:00 +0200
openttd (1.4.0~RC1-0) unstable; urgency=low
* New upstream release 1.4.0-RC1
-- OpenTTD <info@openttd.org> Tue, 17 Mar 2014 21:00:00 +0100
openttd (1.4.0~beta5-0) unstable; urgency=low
* New upstream release 1.4.0-beta5
-- OpenTTD <info@openttd.org> Tue, 25 Feb 2014 10:15:00 +0100
openttd (1.4.0~beta4-0) unstable; urgency=low
* New upstream release 1.4.0-beta4
-- OpenTTD <info@openttd.org> Thu, 06 Feb 2014 21:00:00 +0100
openttd (1.4.0~beta3-0) unstable; urgency=low
* New upstream release 1.4.0-beta3
-- OpenTTD <info@openttd.org> Tue, 21 Jan 2014 21:00:00 +0100
openttd (1.4.0~beta2-0) unstable; urgency=low
* New upstream release 1.4.0-beta2
-- OpenTTD <info@openttd.org> Tue, 07 Jan 2014 21:00:00 +0100
openttd (1.4.0~beta1) unstable; urgency=low
openttd (1.4.0~beta1-0) unstable; urgency=low
* New upstream release 1.4.0-beta1
+3 -3
View File
@@ -1,9 +1,9 @@
# Version numbers to update
!define APPV_MAJOR 1
!define APPV_MINOR 4
!define APPV_MAINT 0
!define APPV_BUILD 1
!define APPV_EXTRA "-beta2"
!define APPV_MAINT 1
!define APPV_BUILD 2
!define APPV_EXTRA ""
!define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version
+8 -2
View File
@@ -102,7 +102,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -204,7 +204,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -1036,6 +1036,8 @@
<ClInclude Include="..\src\script\api\script_station.hpp" />
<ClInclude Include="..\src\script\api\script_stationlist.hpp" />
<ClInclude Include="..\src\script\api\script_story_page.hpp" />
<ClInclude Include="..\src\script\api\script_storypagelist.hpp" />
<ClInclude Include="..\src\script\api\script_storypageelementlist.hpp" />
<ClInclude Include="..\src\script\api\script_subsidy.hpp" />
<ClInclude Include="..\src\script\api\script_subsidylist.hpp" />
<ClInclude Include="..\src\script\api\script_testmode.hpp" />
@@ -1098,6 +1100,8 @@
<ClCompile Include="..\src\script\api\script_station.cpp" />
<ClCompile Include="..\src\script\api\script_stationlist.cpp" />
<ClCompile Include="..\src\script\api\script_story_page.cpp" />
<ClCompile Include="..\src\script\api\script_storypagelist.cpp" />
<ClCompile Include="..\src\script\api\script_storypageelementlist.cpp" />
<ClCompile Include="..\src\script\api\script_subsidy.cpp" />
<ClCompile Include="..\src\script\api\script_subsidylist.cpp" />
<ClCompile Include="..\src\script\api\script_testmode.cpp" />
@@ -1123,6 +1127,8 @@
<ClInclude Include="..\src\blitter\32bpp_optimized.hpp" />
<ClCompile Include="..\src\blitter\32bpp_simple.cpp" />
<ClInclude Include="..\src\blitter\32bpp_simple.hpp" />
<ClInclude Include="..\src\blitter\32bpp_sse_func.hpp" />
<ClInclude Include="..\src\blitter\32bpp_sse_type.h" />
<ClCompile Include="..\src\blitter\32bpp_sse2.cpp" />
<ClInclude Include="..\src\blitter\32bpp_sse2.hpp" />
<ClCompile Include="..\src\blitter\32bpp_sse4.cpp" />
+18
View File
@@ -2337,6 +2337,12 @@
<ClInclude Include="..\src\script\api\script_story_page.hpp">
<Filter>Script API</Filter>
</ClInclude>
<ClInclude Include="..\src\script\api\script_storypagelist.hpp">
<Filter>Script API</Filter>
</ClInclude>
<ClInclude Include="..\src\script\api\script_storypageelementlist.hpp">
<Filter>Script API</Filter>
</ClInclude>
<ClInclude Include="..\src\script\api\script_subsidy.hpp">
<Filter>Script API</Filter>
</ClInclude>
@@ -2523,6 +2529,12 @@
<ClCompile Include="..\src\script\api\script_story_page.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
<ClCompile Include="..\src\script\api\script_storypagelist.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
<ClCompile Include="..\src\script\api\script_storypageelementlist.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
<ClCompile Include="..\src\script\api\script_subsidy.cpp">
<Filter>Script API Implementation</Filter>
</ClCompile>
@@ -2598,6 +2610,12 @@
<ClInclude Include="..\src\blitter\32bpp_simple.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClInclude Include="..\src\blitter\32bpp_sse_func.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClInclude Include="..\src\blitter\32bpp_sse_type.h">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\32bpp_sse2.cpp">
<Filter>Blitters</Filter>
</ClCompile>
+2 -2
View File
@@ -102,7 +102,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -204,7 +204,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+26 -2
View File
@@ -52,7 +52,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -257,7 +257,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -3478,6 +3478,14 @@
RelativePath=".\..\src\script\api\script_story_page.hpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypagelist.hpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypageelementlist.hpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_subsidy.hpp"
>
@@ -3730,6 +3738,14 @@
RelativePath=".\..\src\script\api\script_story_page.cpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypagelist.cpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypageelementlist.cpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_subsidy.cpp"
>
@@ -3834,6 +3850,14 @@
RelativePath=".\..\src\blitter\32bpp_simple.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse_func.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse_type.h"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse2.cpp"
>
+2 -2
View File
@@ -52,7 +52,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -257,7 +257,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+26 -2
View File
@@ -53,7 +53,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -255,7 +255,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -3475,6 +3475,14 @@
RelativePath=".\..\src\script\api\script_story_page.hpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypagelist.hpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypageelementlist.hpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_subsidy.hpp"
>
@@ -3727,6 +3735,14 @@
RelativePath=".\..\src\script\api\script_story_page.cpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypagelist.cpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_storypageelementlist.cpp"
>
</File>
<File
RelativePath=".\..\src\script\api\script_subsidy.cpp"
>
@@ -3831,6 +3847,14 @@
RelativePath=".\..\src\blitter\32bpp_simple.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse_func.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse_type.h"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse2.cpp"
>
+2 -2
View File
@@ -53,7 +53,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -255,7 +255,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+3 -2
View File
@@ -1,5 +1,5 @@
Last updated: 2014-01-07
Release version: 1.4.0-beta2
Last updated: 2014-06-02
Release version: 1.4.1
------------------------------------------------------------------------
@@ -722,6 +722,7 @@ Thanks to:
George - Canal graphics
Andrew Parkhouse (andythenorth) - River graphics
David Dallaston (Pikka) - Tram tracks
Fleashosio - Titlegame
All Translators - For their support to make OpenTTD a truly international game
Bug Reporters - Thanks for all bug reports
Chris Sawyer - For an amazing game!
+6
View File
@@ -816,6 +816,8 @@ script/api/script_signlist.hpp
script/api/script_station.hpp
script/api/script_stationlist.hpp
script/api/script_story_page.hpp
script/api/script_storypagelist.hpp
script/api/script_storypageelementlist.hpp
script/api/script_subsidy.hpp
script/api/script_subsidylist.hpp
script/api/script_testmode.hpp
@@ -880,6 +882,8 @@ script/api/script_signlist.cpp
script/api/script_station.cpp
script/api/script_stationlist.cpp
script/api/script_story_page.cpp
script/api/script_storypagelist.cpp
script/api/script_storypageelementlist.cpp
script/api/script_subsidy.cpp
script/api/script_subsidylist.cpp
script/api/script_testmode.cpp
@@ -912,6 +916,8 @@ blitter/32bpp_optimized.hpp
blitter/32bpp_simple.cpp
blitter/32bpp_simple.hpp
#if SSE
blitter/32bpp_sse_func.hpp
blitter/32bpp_sse_type.h
blitter/32bpp_sse2.cpp
blitter/32bpp_sse2.hpp
blitter/32bpp_sse4.cpp
+1 -1
View File
@@ -853,7 +853,7 @@ struct AIConfigWindow : public Window {
case WID_AIC_GAMELIST: {
this->selected_slot = OWNER_DEITY;
this->InvalidateData();
if (click_count > 1 && this->selected_slot != INVALID_COMPANY) ShowAIListWindow((CompanyID)this->selected_slot);
if (click_count > 1 && this->selected_slot != INVALID_COMPANY && _game_mode != GM_NORMAL) ShowAIListWindow((CompanyID)this->selected_slot);
break;
}
+1 -1
View File
@@ -44,7 +44,7 @@ void CcBuildAirport(const CommandCost &result, TileIndex tile, uint32 p1, uint32
{
if (result.Failed()) return;
if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT, tile);
if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile);
if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace();
}
+1 -1
View File
@@ -160,7 +160,7 @@ static void TransferCargo(Vehicle *old_veh, Vehicle *new_head, bool part_of_chai
}
/* Update train weight etc., the old vehicle will be sold anyway */
if (part_of_chain && new_head->type == VEH_TRAIN) Train::From(new_head)->ConsistChanged(true);
if (part_of_chain && new_head->type == VEH_TRAIN) Train::From(new_head)->ConsistChanged(CCF_LOADUNLOAD);
}
/**
+42 -1
View File
@@ -133,6 +133,46 @@ inline void Blitter_32bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel
}
break;
case BM_CRASH_REMAP:
if (src_px->a == 255) {
do {
uint m = *src_n;
if (m == 0) {
uint8 g = MakeDark(src_px->r, src_px->g, src_px->b);
*dst = ComposeColourRGBA(g, g, g, src_px->a, *dst);
*anim = 0;
} else {
uint r = remap[GB(m, 0, 8)];
*anim = r | (m & 0xFF00);
if (r != 0) *dst = this->AdjustBrightness(this->LookupColourInPalette(r), GB(m, 8, 8));
}
anim++;
dst++;
src_px++;
src_n++;
} while (--n != 0);
} else {
do {
uint m = *src_n;
if (m == 0) {
if (src_px->a != 0) {
uint8 g = MakeDark(src_px->r, src_px->g, src_px->b);
*dst = ComposeColourRGBA(g, g, g, src_px->a, *dst);
*anim = 0;
}
} else {
uint r = remap[GB(m, 0, 8)];
*anim = 0;
if (r != 0) *dst = ComposeColourPANoCheck(this->AdjustBrightness(this->LookupColourInPalette(r), GB(m, 8, 8)), src_px->a, *dst);
}
anim++;
dst++;
src_px++;
src_n++;
} while (--n != 0);
}
break;
case BM_TRANSPARENT:
/* TODO -- We make an assumption here that the remap in fact is transparency, not some colour.
* This is never a problem with the code we produce, but newgrfs can make it fail... or at least:
@@ -208,6 +248,7 @@ void Blitter_32bppAnim::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomL
case BM_NORMAL: Draw<BM_NORMAL> (bp, zoom); return;
case BM_COLOUR_REMAP: Draw<BM_COLOUR_REMAP>(bp, zoom); return;
case BM_TRANSPARENT: Draw<BM_TRANSPARENT> (bp, zoom); return;
case BM_CRASH_REMAP: Draw<BM_CRASH_REMAP> (bp, zoom); return;
}
}
@@ -439,7 +480,7 @@ void Blitter_32bppAnim::PaletteAnimate(const Palette &palette)
}
/* Make sure the backend redraws the whole screen */
_video_driver->MakeDirty(0, 0, _screen.width, _screen.height);
VideoDriver::GetInstance()->MakeDirty(0, 0, _screen.width, _screen.height);
}
Blitter::PaletteAnimation Blitter_32bppAnim::UsePaletteAnimation()
+274 -280
View File
@@ -15,6 +15,7 @@
#include "../video/video_driver.hpp"
#include "../table/sprites.h"
#include "32bpp_anim_sse4.hpp"
#include "32bpp_sse_func.hpp"
/** Instantiation of the SSE4 32bpp blitter factory. */
static FBlitter_32bppSSE4_Anim iFBlitter_32bppSSE4_Anim;
@@ -27,15 +28,15 @@ static FBlitter_32bppSSE4_Anim iFBlitter_32bppSSE4_Anim;
* @param zoom zoom level at which we are drawing
*/
IGNORE_UNINITIALIZED_WARNING_START
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last>
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last, bool translucent, bool animated>
inline void Blitter_32bppSSE4_Anim::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
const byte * const remap = bp->remap;
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left;
uint16 *anim_line = this->anim_buf + ((uint32 *)bp->dst - (uint32 *)_screen.dst_ptr) + bp->top * this->anim_buf_width + bp->left;
int effective_width = bp->width;
/* Find where to start reading in the source sprite. */
const byte * const remap = bp->remap;
const Blitter_32bppSSE_Base::SpriteData * const sd = (const Blitter_32bppSSE_Base::SpriteData *) bp->sprite;
const SpriteInfo * const si = &sd->infos[zoom];
const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width;
@@ -45,309 +46,296 @@ inline void Blitter_32bppSSE4_Anim::Draw(const Blitter::BlitterParams *bp, ZoomL
src_rgba_line += bp->skip_left;
src_mv_line += bp->skip_left;
}
const MapValue *src_mv = src_mv_line;
/* Load these variables into register before loop. */
const __m128i a_cm = ALPHA_CONTROL_MASK;
const __m128i pack_low_cm = PACK_LOW_CONTROL_MASK;
const __m128i briAB_cm = BRIGHTNESS_LOW_CONTROL_MASK;
const __m128i div_cleaner = BRIGHTNESS_DIV_CLEANER;
const __m128i ob_check = OVERBRIGHT_PRESENCE_MASK;
const __m128i ob_mask = OVERBRIGHT_VALUE_MASK;
const __m128i ob_cm = OVERBRIGHT_CONTROL_MASK;
const __m128i tr_nom_base = TRANSPARENT_NOM_BASE;
for (int y = bp->height; y != 0; y--) {
Colour *dst = dst_line;
const Colour *src = src_rgba_line + META_LENGTH;
const MapValue *src_mv = src_mv_line;
if (mode != BM_TRANSPARENT) src_mv = src_mv_line;
uint16 *anim = anim_line;
if (read_mode == RM_WITH_MARGIN) {
assert(bt_last == BT_NONE); // or you must ensure block type is preserved
anim += src_rgba_line[0].data;
src += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
if (mode != BM_TRANSPARENT) src_mv += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int new_width = effective_width - delta_diff;
effective_width = delta_diff > 0 ? new_width : effective_width;
if (effective_width <= 0) goto next_line;
}
switch (mode) {
default: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
src_mv += src_rgba_line[0].data;
anim += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int new_width = effective_width - (delta_diff & ~1);
effective_width = delta_diff > 0 ? new_width : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
default:
if (!translucent) {
for (uint x = (uint) effective_width; x > 0; x--) {
if (src->a) {
if (animated) {
*anim = *(const uint16*) src_mv;
*dst = (src_mv->m >= PALETTE_ANIM_START) ? AdjustBrightneSSE(this->LookupColourInPalette(src_mv->m), src_mv->v) : src->data;
} else {
*anim = 0;
*dst = *src;
}
}
if (animated) src_mv++;
anim++;
src++;
dst++;
}
break;
}
for (uint x = (uint) effective_width/2; x != 0; x--) {
uint32 mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
__m128i srcABCD = _mm_loadl_epi64((const __m128i*) src);
__m128i dstABCD = _mm_loadl_epi64((__m128i*) dst);
if (animated) {
/* Remap colours. */
const byte m0 = mvX2;
if (m0 >= PALETTE_ANIM_START) {
const Colour c0 = (this->LookupColourInPalette(m0).data & 0x00FFFFFF) | (src[0].data & 0xFF000000);
InsertFirstUint32(AdjustBrightneSSE(c0, (byte) (mvX2 >> 8)).data, srcABCD);
}
const byte m1 = mvX2 >> 16;
if (m1 >= PALETTE_ANIM_START) {
const Colour c1 = (this->LookupColourInPalette(m1).data & 0x00FFFFFF) | (src[1].data & 0xFF000000);
InsertSecondUint32(AdjustBrightneSSE(c1, (byte) (mvX2 >> 24)).data, srcABCD);
}
/* Update anim buffer. */
const byte a0 = src[0].a;
const byte a1 = src[1].a;
uint32 anim01 = 0;
if (a0 == 255) {
if (a1 == 255) {
*(uint32*) anim = mvX2;
goto bmno_full_opacity;
}
anim01 = (uint16) mvX2;
} else if (a0 == 0) {
if (a1 == 0) {
goto bmno_full_transparency;
} else {
if (a1 == 255) anim[1] = (uint16) (mvX2 >> 16);
goto bmno_alpha_blend;
}
}
if (a1 > 0) {
if (a1 == 255) anim01 |= mvX2 & 0xFFFF0000;
*(uint32*) anim = anim01;
} else {
anim[0] = (uint16) anim01;
}
} else {
if (src[0].a) anim[0] = 0;
if (src[1].a) anim[1] = 0;
}
case RM_WITH_SKIP: {
uint32 mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) effective_width/2; x != 0; x--) {
/* Remap colours. */
const byte m0 = mvX2;
if (m0 >= PALETTE_ANIM_START) {
const Colour c0 = (this->LookupColourInPalette(m0).data & 0x00FFFFFF) | (src[0].data & 0xFF000000);
INSR32(AdjustBrightness(c0, (byte) (mvX2 >> 8)).data, srcABCD, 0);
}
const byte m1 = mvX2 >> 16;
if (m1 >= PALETTE_ANIM_START) {
const Colour c1 = (this->LookupColourInPalette(m1).data & 0x00FFFFFF) | (src[1].data & 0xFF000000);
INSR32(AdjustBrightness(c1, (byte) (mvX2 >> 24)).data, srcABCD, 1);
}
/* Update anim buffer. */
const byte a0 = src[0].a;
const byte a1 = src[1].a;
uint32 anim01 = 0;
if (a0 == 255) {
if (a1 == 255) {
*(uint32*) anim = mvX2;
goto bmno_full_opacity;
}
anim01 = (uint16) mvX2;
} else if (a0 == 0) {
if (a1 == 0) {
goto bmno_full_transparency;
} else {
if (a1 == 255) anim[1] = (uint16) (mvX2 >> 16);
goto bmno_alpha_blend;
}
}
if (a1 > 0) {
if (a1 == 255) anim01 |= mvX2 & 0xFFFF0000;
*(uint32*) anim = anim01;
} else {
anim[0] = (uint16) anim01;
}
/* Blend colours. */
/* Blend colours. */
bmno_alpha_blend:
ALPHA_BLEND_2(pack_low_cm);
srcABCD = AlphaBlendTwoPixels(srcABCD, dstABCD, a_cm, pack_low_cm);
bmno_full_opacity:
srcABCD = _mm_blend_epi16(srcABCD, dstABCD, 0xF0);
src_mv += 2;
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
src += 2;
anim += 2;
dstABCD = _mm_loadu_si128((__m128i*) (dst+2));
_mm_storeu_si128((__m128i *) dst, srcABCD);
srcABCD = _mm_loadu_si128((const __m128i*) src);
dst += 2;
continue;
_mm_storel_epi64((__m128i *) dst, srcABCD);
bmno_full_transparency:
src_mv += 2;
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
dst += 2;
src += 2;
anim += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
src_mv += 2;
src += 2;
anim += 2;
dst += 2;
}
if (bt_last == BT_ODD) {
if (src->a == 0) {
} else if (src->a == 255) {
*anim = (uint16) mvX2;
*dst = ((byte) mvX2 >= PALETTE_ANIM_START) ? AdjustBrightness(LookupColourInPalette((byte) mvX2), (byte) (mvX2 >> 8)) : *src;
} else {
*anim = 0;
if ((byte) mvX2 >= PALETTE_ANIM_START) {
ALIGN(16) Colour colour = AdjustBrightness(LookupColourInPalette((byte) mvX2), (byte) (mvX2 >> 8));
colour.a = src->a;
srcABCD = _mm_load_si128((__m128i*) &colour);
}
ALPHA_BLEND_2(pack_low_cm);
(*dst).data = EXTR32(srcABCD, 0);
}
if ((bt_last == BT_NONE && effective_width & 1) || bt_last == BT_ODD) {
if (src->a == 0) {
} else if (src->a == 255) {
*anim = *(const uint16*) src_mv;
*dst = (src_mv->m >= PALETTE_ANIM_START) ? AdjustBrightneSSE(LookupColourInPalette(src_mv->m), src_mv->v) : *src;
} else {
*anim = 0;
__m128i srcABCD;
__m128i dstABCD = _mm_cvtsi32_si128(dst->data);
if (src_mv->m >= PALETTE_ANIM_START) {
Colour colour = AdjustBrightneSSE(LookupColourInPalette(src_mv->m), src_mv->v);
colour.a = src->a;
srcABCD = _mm_cvtsi32_si128(colour.data);
} else {
srcABCD = _mm_cvtsi32_si128(src->data);
}
break;
dst->data = _mm_cvtsi128_si32(AlphaBlendTwoPixels(srcABCD, dstABCD, a_cm, pack_low_cm));
}
default: NOT_REACHED();
}
break;
}
case BM_COLOUR_REMAP: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
src_mv += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
anim += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int nd = effective_width - delta_diff;
effective_width = delta_diff > 0 ? nd : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
case BM_COLOUR_REMAP:
for (uint x = (uint) effective_width / 2; x != 0; x--) {
uint32 mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
__m128i srcABCD = _mm_loadl_epi64((const __m128i*) src);
__m128i dstABCD = _mm_loadl_epi64((__m128i*) dst);
/* Remap colours. */
const uint m0 = (byte) mvX2;
const uint r0 = remap[m0];
const uint m1 = (byte) (mvX2 >> 16);
const uint r1 = remap[m1];
if (mvX2 & 0x00FF00FF) {
#define CMOV_REMAP(m_colour, m_colour_init, m_src, m_m) \
/* Written so the compiler uses CMOV. */ \
Colour m_colour = m_colour_init; \
{ \
const Colour srcm = (Colour) (m_src); \
const uint m = (byte) (m_m); \
const uint r = remap[m]; \
const Colour cmap = (this->LookupColourInPalette(r).data & 0x00FFFFFF) | (srcm.data & 0xFF000000); \
m_colour = r == 0 ? m_colour : cmap; \
m_colour = m != 0 ? m_colour : srcm; \
}
#ifdef _SQ64
uint64 srcs = _mm_cvtsi128_si64(srcABCD);
uint64 dsts;
if (animated) dsts = _mm_cvtsi128_si64(dstABCD);
uint64 remapped_src = 0;
CMOV_REMAP(c0, animated ? dsts : 0, srcs, mvX2);
remapped_src = c0.data;
CMOV_REMAP(c1, animated ? dsts >> 32 : 0, srcs >> 32, mvX2 >> 16);
remapped_src |= (uint64) c1.data << 32;
srcABCD = _mm_cvtsi64_si128(remapped_src);
#else
Colour remapped_src[2];
CMOV_REMAP(c0, animated ? _mm_cvtsi128_si32(dstABCD) : 0, _mm_cvtsi128_si32(srcABCD), mvX2);
remapped_src[0] = c0.data;
CMOV_REMAP(c1, animated ? dst[1] : 0, src[1], mvX2 >> 16);
remapped_src[1] = c1.data;
srcABCD = _mm_loadl_epi64((__m128i*) &remapped_src);
#endif
if ((mvX2 & 0xFF00FF00) != 0x80008000) srcABCD = AdjustBrightnessOfTwoPixels(srcABCD, mvX2);
}
case RM_WITH_SKIP: {
uint32 mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) effective_width / 2; x != 0; x--) {
/* Remap colours. */
const uint m0 = (byte) mvX2;
const uint r0 = remap[m0];
const uint m1 = (byte) (mvX2 >> 16);
const uint r1 = remap[m1];
if (mvX2 & 0x00FF00FF) {
/* Written so the compiler uses CMOV. */
const Colour src0 = src[0];
const Colour c0map = (this->LookupColourInPalette(r0).data & 0x00FFFFFF) | (src0.data & 0xFF000000);
Colour c0 = dst[0];
c0 = r0 == 0 ? c0 : c0map;
c0 = m0 != 0 ? c0 : src0;
INSR32(c0.data, srcABCD, 0);
const Colour src1 = src[1];
const Colour c1map = (this->LookupColourInPalette(r1).data & 0x00FFFFFF) | (src1.data & 0xFF000000);
Colour c1 = dst[1];
c1 = r1 == 0 ? c1 : c1map;
c1 = m1 != 0 ? c1 : src1;
INSR32(c1.data, srcABCD, 1);
if ((mvX2 & 0xFF00FF00) != 0x80008000) {
ADJUST_BRIGHTNESS_2(srcABCD, mvX2);
}
/* Update anim buffer. */
if (animated) {
const byte a0 = src[0].a;
const byte a1 = src[1].a;
uint32 anim01 = mvX2 & 0xFF00FF00;
if (a0 == 255) {
anim01 |= r0;
if (a1 == 255) {
*(uint32*) anim = anim01 | (r1 << 16);
goto bmcr_full_opacity;
}
/* Update anim buffer. */
const byte a0 = src[0].a;
const byte a1 = src[1].a;
uint32 anim01 = mvX2 & 0xFF00FF00;
if (a0 == 255) {
anim01 |= r0;
} else if (a0 == 0) {
if (a1 == 0) {
goto bmcr_full_transparency;
} else {
if (a1 == 255) {
*(uint32*) anim = anim01 | (r1 << 16);
goto bmcr_full_opacity;
}
} else if (a0 == 0) {
if (a1 == 0) {
goto bmcr_full_transparency;
} else {
if (a1 == 255) {
anim[1] = r1 | (anim01 >> 16);
}
goto bmcr_alpha_blend;
}
}
if (a1 > 0) {
if (a1 == 255) anim01 |= r1 << 16;
*(uint32*) anim = anim01;
} else {
anim[0] = (uint16) anim01;
}
/* Blend colours. */
bmcr_alpha_blend:
ALPHA_BLEND_2(pack_low_cm);
bmcr_full_opacity:
srcABCD = _mm_blend_epi16(srcABCD, dstABCD, 0xF0);
src += 2;
src_mv += 2;
anim += 2;
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
dstABCD = _mm_loadu_si128((__m128i*) (dst+2));
_mm_storeu_si128((__m128i *) dst, srcABCD);
srcABCD = _mm_loadu_si128((const __m128i*) src);
dst += 2;
continue;
bmcr_full_transparency:
src_mv += 2;
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
dst += 2;
src += 2;
anim += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (effective_width & 1) {
/* In case the m-channel is zero, do not remap this pixel in any way. */
if (src->a == 0) {
} else if ((byte) mvX2 != 0) {
const uint r = remap[(byte) mvX2];
*anim = (src->a == 255) ? (r | ((uint16) mvX2 & 0xFF00)) : 0;
if (r != 0) {
Colour remapped_colour = AdjustBrightness(LookupColourInPalette(r), (byte) (mvX2 >> 8));
if (src->a == 255) {
*dst = remapped_colour;
} else {
remapped_colour.a = src->a;
INSR32(remapped_colour.data, srcABCD, 0);
goto bmcr_alpha_blend_single;
}
}
} else {
*anim = 0;
if (src->a == 255) {
*dst = *src;
} else {
bmcr_alpha_blend_single:
ALPHA_BLEND_2(pack_low_cm);
(*dst).data = EXTR32(srcABCD, 0);
anim[1] = r1 | (anim01 >> 16);
}
goto bmcr_alpha_blend;
}
}
break;
if (a1 > 0) {
if (a1 == 255) anim01 |= r1 << 16;
*(uint32*) anim = anim01;
} else {
anim[0] = (uint16) anim01;
}
} else {
if (src[0].a) anim[0] = 0;
if (src[1].a) anim[1] = 0;
}
default: NOT_REACHED();
/* Blend colours. */
bmcr_alpha_blend:
srcABCD = AlphaBlendTwoPixels(srcABCD, dstABCD, a_cm, pack_low_cm);
bmcr_full_opacity:
_mm_storel_epi64((__m128i *) dst, srcABCD);
bmcr_full_transparency:
src_mv += 2;
dst += 2;
src += 2;
anim += 2;
}
if ((bt_last == BT_NONE && effective_width & 1) || bt_last == BT_ODD) {
/* In case the m-channel is zero, do not remap this pixel in any way. */
__m128i srcABCD;
if (src->a == 0) break;
if (src_mv->m) {
const uint r = remap[src_mv->m];
*anim = (animated && src->a == 255) ? r | ((uint16) src_mv->v << 8 ) : 0;
if (r != 0) {
Colour remapped_colour = AdjustBrightneSSE(this->LookupColourInPalette(r), src_mv->v);
if (src->a == 255) {
*dst = remapped_colour;
} else {
remapped_colour.a = src->a;
srcABCD = _mm_cvtsi32_si128(remapped_colour.data);
goto bmcr_alpha_blend_single;
}
}
} else {
*anim = 0;
srcABCD = _mm_cvtsi32_si128(src->data);
if (src->a < 255) {
bmcr_alpha_blend_single:
__m128i dstABCD = _mm_cvtsi32_si128(dst->data);
srcABCD = AlphaBlendTwoPixels(srcABCD, dstABCD, a_cm, pack_low_cm);
}
dst->data = _mm_cvtsi128_si32(srcABCD);
}
}
break;
}
case BM_TRANSPARENT: {
case BM_TRANSPARENT:
/* Make the current colour a bit more black, so it looks like this image is transparent. */
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) bp->width / 2; x > 0; x--) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i dstCD = _mm_unpackhi_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2); // Reduce to 64 levels of shades so the max value fits in 16 bits.
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstCD);
Colour *old_dst = dst;
__m128i srcABCD = _mm_loadl_epi64((const __m128i*) src);
__m128i dstABCD = _mm_loadl_epi64((__m128i*) dst);
_mm_storel_epi64((__m128i *) dst, DarkenTwoPixels(srcABCD, dstABCD, a_cm, tr_nom_base));
src += 2;
dst += 2;
anim += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, dstAB);
srcABCD = _mm_loadu_si128((const __m128i*) src);
if (src[-2].a) anim[-2] = 0;
if (src[-1].a) anim[-1] = 0;
}
if (bp->width & 1) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2);
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstAB);
(*dst).data = EXTR32(dstAB, 0);
if ((bt_last == BT_NONE && bp->width & 1) || bt_last == BT_ODD) {
__m128i srcABCD = _mm_cvtsi32_si128(src->data);
__m128i dstABCD = _mm_cvtsi32_si128(dst->data);
dst->data = _mm_cvtsi128_si32(DarkenTwoPixels(srcABCD, dstABCD, a_cm, tr_nom_base));
if (src[0].a) anim[0] = 0;
}
break;
}
case BM_CRASH_REMAP:
for (uint x = (uint) bp->width; x > 0; x--) {
if (src_mv->m == 0) {
if (src->a != 0) {
uint8 g = MakeDark(src->r, src->g, src->b);
*dst = ComposeColourRGBA(g, g, g, src->a, *dst);
*anim = 0;
}
} else {
uint r = remap[src_mv->m];
if (r != 0) *dst = ComposeColourPANoCheck(this->AdjustBrightness(this->LookupColourInPalette(r), src_mv->v), src->a, *dst);
}
src_mv++;
dst++;
src++;
anim++;
}
break;
}
src_mv_line += si->sprite_width;
next_line:
if (mode != BM_TRANSPARENT) src_mv_line += si->sprite_width;
src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size);
dst_line += bp->pitch;
anim_line += this->anim_buf_width;
@@ -364,42 +352,48 @@ IGNORE_UNINITIALIZED_WARNING_STOP
*/
void Blitter_32bppSSE4_Anim::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
{
const Blitter_32bppSSE_Base::SpriteFlags sprite_flags = ((const Blitter_32bppSSE_Base::SpriteData *) bp->sprite)->flags;
switch (mode) {
case BM_NORMAL: {
const BlockType bt_last = (BlockType) (bp->width & 1);
default: {
bm_normal:
if (bp->skip_left != 0 || bp->width <= MARGIN_NORMAL_THRESHOLD) {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_SKIP, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_SKIP, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
const BlockType bt_last = (BlockType) (bp->width & 1);
if (bt_last == BT_EVEN) {
if (sprite_flags & SF_NO_ANIM) Draw<BM_NORMAL, RM_WITH_SKIP, BT_EVEN, true, false>(bp, zoom);
else Draw<BM_NORMAL, RM_WITH_SKIP, BT_EVEN, true, true>(bp, zoom);
} else {
if (sprite_flags & SF_NO_ANIM) Draw<BM_NORMAL, RM_WITH_SKIP, BT_ODD, true, false>(bp, zoom);
else Draw<BM_NORMAL, RM_WITH_SKIP, BT_ODD, true, true>(bp, zoom);
}
} else {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
#ifdef _SQ64
if (sprite_flags & SF_TRANSLUCENT) {
if (sprite_flags & SF_NO_ANIM) Draw<BM_NORMAL, RM_WITH_MARGIN, BT_NONE, true, false>(bp, zoom);
else Draw<BM_NORMAL, RM_WITH_MARGIN, BT_NONE, true, true>(bp, zoom);
} else {
if (sprite_flags & SF_NO_ANIM) Draw<BM_NORMAL, RM_WITH_MARGIN, BT_NONE, false, false>(bp, zoom);
else Draw<BM_NORMAL, RM_WITH_MARGIN, BT_NONE, false, true>(bp, zoom);
}
#else
if (sprite_flags & SF_NO_ANIM) Draw<BM_NORMAL, RM_WITH_MARGIN, BT_NONE, true, false>(bp, zoom);
else Draw<BM_NORMAL, RM_WITH_MARGIN, BT_NONE, true, true>(bp, zoom);
#endif
}
break;
}
case BM_COLOUR_REMAP:
if (sprite_flags & SF_NO_REMAP) goto bm_normal;
if (bp->skip_left != 0 || bp->width <= MARGIN_REMAP_THRESHOLD) {
Draw<BM_COLOUR_REMAP, RM_WITH_SKIP, BT_NONE>(bp, zoom); return;
if (sprite_flags & SF_NO_ANIM) Draw<BM_COLOUR_REMAP, RM_WITH_SKIP, BT_NONE, true, false>(bp, zoom);
else Draw<BM_COLOUR_REMAP, RM_WITH_SKIP, BT_NONE, true, true>(bp, zoom);
} else {
Draw<BM_COLOUR_REMAP, RM_WITH_MARGIN, BT_NONE>(bp, zoom); return;
if (sprite_flags & SF_NO_ANIM) Draw<BM_COLOUR_REMAP, RM_WITH_MARGIN, BT_NONE, true, false>(bp, zoom);
else Draw<BM_COLOUR_REMAP, RM_WITH_MARGIN, BT_NONE, true, true>(bp, zoom);
}
case BM_TRANSPARENT: Draw<BM_TRANSPARENT, RM_NONE, BT_NONE>(bp, zoom); return;
default: NOT_REACHED();
break;
case BM_TRANSPARENT: Draw<BM_TRANSPARENT, RM_NONE, BT_NONE, true, true>(bp, zoom); return;
case BM_CRASH_REMAP: Draw<BM_CRASH_REMAP, RM_NONE, BT_NONE, true, true>(bp, zoom); return;
}
}
/** Same code as seen in 32bpp_sse2.cpp but some macros are not the same. */
inline Colour Blitter_32bppSSE4_Anim::AdjustBrightness(Colour colour, uint8 brightness)
{
/* Shortcut for normal brightness. */
if (brightness == DEFAULT_BRIGHTNESS) return colour;
return Blitter_32bppSSE4::ReallyAdjustBrightness(colour, brightness);
}
#endif /* WITH_SSE */
+9 -3
View File
@@ -14,6 +14,14 @@
#ifdef WITH_SSE
#ifndef SSE_VERSION
#define SSE_VERSION 4
#endif
#ifndef FULL_ANIMATION
#define FULL_ANIMATION 1
#endif
#include "32bpp_anim.hpp"
#include "32bpp_sse4.hpp"
@@ -25,14 +33,12 @@ class Blitter_32bppSSE4_Anim FINAL : public Blitter_32bppAnim, public Blitter_32
private:
public:
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last>
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last, bool translucent, bool animated>
/* virtual */ void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
/* virtual */ Colour AdjustBrightness(Colour colour, uint8 brightness);
/* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) {
return Blitter_32bppSSE_Base::Encode(sprite, allocator);
}
/* virtual */ const char *GetName() { return "32bpp-sse4-anim"; }
};
+13
View File
@@ -112,6 +112,19 @@ public:
return Colour(r * nom / denom, g * nom / denom, b * nom / denom);
}
/**
* Make a colour dark grey, for specialized 32bpp remapping.
* @param r red component
* @param g green component
* @param b blue component
* @return the brightness value of the new colour, now dark grey.
*/
static inline uint8 MakeDark(uint8 r, uint8 g, uint8 b)
{
/* Magic-numbers are ~66% of those used in MakeGrey() */
return ((r * 13063) + (g * 25647) + (b * 4981)) / 65536;
}
/**
* Make a colour grey - based.
* @param colour the colour to make grey.
+35
View File
@@ -141,6 +141,40 @@ inline void Blitter_32bppOptimized::Draw(const Blitter::BlitterParams *bp, ZoomL
}
break;
case BM_CRASH_REMAP:
if (src_px->a == 255) {
do {
uint m = *src_n;
if (m == 0) {
uint8 g = MakeDark(src_px->r, src_px->g, src_px->b);
*dst = ComposeColourRGBA(g, g, g, src_px->a, *dst);
} else {
uint r = remap[GB(m, 0, 8)];
if (r != 0) *dst = this->AdjustBrightness(this->LookupColourInPalette(r), GB(m, 8, 8));
}
dst++;
src_px++;
src_n++;
} while (--n != 0);
} else {
do {
uint m = *src_n;
if (m == 0) {
if (src_px->a != 0) {
uint8 g = MakeDark(src_px->r, src_px->g, src_px->b);
*dst = ComposeColourRGBA(g, g, g, src_px->a, *dst);
}
} else {
uint r = remap[GB(m, 0, 8)];
if (r != 0) *dst = ComposeColourPANoCheck(this->AdjustBrightness(this->LookupColourInPalette(r), GB(m, 8, 8)), src_px->a, *dst);
}
dst++;
src_px++;
src_n++;
} while (--n != 0);
}
break;
case BM_TRANSPARENT:
/* TODO -- We make an assumption here that the remap in fact is transparency, not some colour.
* This is never a problem with the code we produce, but newgrfs can make it fail... or at least:
@@ -204,6 +238,7 @@ void Blitter_32bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode,
case BM_NORMAL: Draw<BM_NORMAL> (bp, zoom); return;
case BM_COLOUR_REMAP: Draw<BM_COLOUR_REMAP>(bp, zoom); return;
case BM_TRANSPARENT: Draw<BM_TRANSPARENT> (bp, zoom); return;
case BM_CRASH_REMAP: Draw<BM_CRASH_REMAP> (bp, zoom); return;
}
}
+11
View File
@@ -45,6 +45,17 @@ void Blitter_32bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoo
}
break;
case BM_CRASH_REMAP:
if (src->m == 0) {
if (src->a != 0) {
uint8 g = MakeDark(src->r, src->g, src->b);
*dst = ComposeColourRGBA(g, g, g, src->a, *dst);
}
} else {
if (bp->remap[src->m] != 0) *dst = ComposeColourPA(this->AdjustBrightness(this->LookupColourInPalette(bp->remap[src->m]), src->v), src->a, *dst);
}
break;
case BM_TRANSPARENT:
/* TODO -- We make an assumption here that the remap in fact is transparency, not some colour.
* This is never a problem with the code we produce, but newgrfs can make it fail... or at least:
+22 -260
View File
@@ -15,223 +15,14 @@
#include "../zoom_func.h"
#include "../settings_type.h"
#include "32bpp_sse2.hpp"
#include "32bpp_sse_func.hpp"
/** Instantiation of the SSE2 32bpp blitter factory. */
static FBlitter_32bppSSE2 iFBlitter_32bppSSE2;
/**
* Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
*
* @tparam mode blitter mode
* @param bp further blitting parameters
* @param zoom zoom level at which we are drawing
*/
IGNORE_UNINITIALIZED_WARNING_START
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last>
inline void Blitter_32bppSSE2::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left;
int effective_width = bp->width;
/* Find where to start reading in the source sprite */
const SpriteData * const sd = (const SpriteData *) bp->sprite;
const SpriteInfo * const si = &sd->infos[zoom];
const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width;
const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size);
if (read_mode != RM_WITH_MARGIN) {
src_rgba_line += bp->skip_left;
src_mv_line += bp->skip_left;
}
/* Load these variables into register before loop. */
const __m128i clear_hi = CLEAR_HIGH_BYTE_MASK;
const __m128i tr_nom_base = TRANSPARENT_NOM_BASE;
for (int y = bp->height; y != 0; y--) {
Colour *dst = dst_line;
const Colour *src = src_rgba_line + META_LENGTH;
const MapValue *src_mv = src_mv_line;
switch (mode) {
default: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int new_width = effective_width - (delta_diff & ~1);
effective_width = delta_diff > 0 ? new_width : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
for (uint x = (uint) effective_width / 2; x > 0; x--) {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
ALPHA_BLEND_2();
*(uint64*) dst = EXTR64(srcABCD, 0);
src += 2;
dst += 2;
}
if (bt_last == BT_ODD) {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
ALPHA_BLEND_2();
(*dst).data = EXTR32(srcABCD, 0);
}
break;
}
default: NOT_REACHED();
}
break;
}
case BM_COLOUR_REMAP: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
src_mv += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int nd = effective_width - delta_diff;
effective_width = delta_diff > 0 ? nd : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
const byte *remap = bp->remap;
for (uint x = (uint) effective_width; x != 0; x--) {
/* In case the m-channel is zero, do not remap this pixel in any way */
if (src_mv->m == 0) {
if (src->a < 255) {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
ALPHA_BLEND_2();
(*dst).data = EXTR32(srcABCD, 0);
} else {
*dst = src->data;
}
} else {
const uint r = remap[src_mv->m];
if (r != 0) {
Colour remapped_colour = AdjustBrightness(this->LookupColourInPalette(r), src_mv->v);
if (src->a < 255) {
__m128i srcABCD;
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
remapped_colour.a = src->a;
INSR32(remapped_colour.data, srcABCD, 0);
ALPHA_BLEND_2();
(*dst).data = EXTR32(srcABCD, 0);
} else
*dst = remapped_colour;
}
}
src_mv++;
dst++;
src++;
}
break;
}
default: NOT_REACHED();
}
src_mv_line += si->sprite_width;
break;
}
case BM_TRANSPARENT: {
/* Make the current colour a bit more black, so it looks like this image is transparent.
* rgb = rgb * ((256/4) * 4 - (alpha/4)) / ((256/4) * 4)
*/
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) bp->width / 2; x > 0; x--) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i dstCD = _mm_unpackhi_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shufflelo_epi16(srcAB, 0x3F);
alphaAB = _mm_shufflehi_epi16(alphaAB, 0x3F);
alphaAB = _mm_srli_epi16(alphaAB, 2); // Reduce to 64 levels of shades so the max value fits in 16 bits.
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstCD);
Colour *old_dst = dst;
src += 2;
dst += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, dstAB);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (bp->width & 1) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shufflelo_epi16(srcAB, 0x3F);
alphaAB = _mm_shufflehi_epi16(alphaAB, 0x3F);
alphaAB = _mm_srli_epi16(alphaAB, 2);
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstAB);
(*dst).data = EXTR32(dstAB, 0);
}
break;
}
}
src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size);
dst_line += bp->pitch;
}
}
IGNORE_UNINITIALIZED_WARNING_STOP
/**
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
*
* @param bp further blitting parameters
* @param mode blitter mode
* @param zoom zoom level at which we are drawing
*/
void Blitter_32bppSSE2::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
{
switch (mode) {
case BM_NORMAL: {
const BlockType bt_last = (BlockType) (bp->width & 1);
if (bp->skip_left != 0 || bp->width <= MARGIN_NORMAL_THRESHOLD) {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_SKIP, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_SKIP, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
} else {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
}
break;
}
case BM_COLOUR_REMAP:
if (bp->skip_left != 0 || bp->width <= MARGIN_REMAP_THRESHOLD) {
Draw<BM_COLOUR_REMAP, RM_WITH_SKIP, BT_NONE>(bp, zoom); return;
} else {
Draw<BM_COLOUR_REMAP, RM_WITH_MARGIN, BT_NONE>(bp, zoom); return;
}
case BM_TRANSPARENT: Draw<BM_TRANSPARENT, RM_NONE, BT_NONE>(bp, zoom); return;
default: NOT_REACHED();
}
}
Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
{
/* First uint32 of a line = ~1 & the number of transparent pixels from the left.
/* First uint32 of a line = the number of transparent pixels from the left.
* Second uint32 of a line = the number of transparent pixels from the right.
* Then all RGBA then all MV.
*/
@@ -245,6 +36,7 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, Alloca
/* Calculate sizes and allocate. */
SpriteData sd;
memset(&sd, 0, sizeof(sd));
uint all_sprites_size = 0;
for (ZoomLevel z = zoom_min; z <= zoom_max; z++) {
const SpriteLoader::Sprite *src_sprite = &sprite[z];
@@ -266,7 +58,10 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, Alloca
dst_sprite->y_offs = sprite->y_offs;
memcpy(dst_sprite->data, &sd, sizeof(SpriteData));
/* Copy colours. */
/* Copy colours and determine flags. */
bool has_remap = false;
bool has_anim = false;
bool has_translucency = false;
for (ZoomLevel z = zoom_min; z <= zoom_max; z++) {
const SpriteLoader::Sprite *src_sprite = &sprite[z];
const SpriteLoader::CommonPixel *src = (const SpriteLoader::CommonPixel *) src_sprite->data;
@@ -277,14 +72,19 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, Alloca
for (uint x = src_sprite->width; x != 0; x--) {
if (src->a != 0) {
dst_rgba->a = src->a;
if (src->a != 0 && src->a != 255) has_translucency = true;
dst_mv->m = src->m;
if (src->m != 0) {
/* Do some accounting for flags. */
has_remap = true;
if (src->m >= PALETTE_ANIM_START) has_anim = true;
/* Get brightest value (or default brightness if it's a black pixel). */
const uint8 rgb_max = max(src->r, max(src->g, src->b));
dst_mv->v = (rgb_max == 0) ? Blitter_32bppBase::DEFAULT_BRIGHTNESS : rgb_max;
/* Pre-convert the mapping channel to a RGB value. */
const Colour colour = AdjustBrightness(Blitter_32bppBase::LookupColourInPalette(src->m), dst_mv->v);
const Colour colour = AdjustBrightneSSE(Blitter_32bppBase::LookupColourInPalette(src->m), dst_mv->v);
dst_rgba->r = colour.r;
dst_rgba->g = colour.g;
dst_rgba->b = colour.b;
@@ -311,7 +111,7 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, Alloca
else break;
dst_rgba++;
}
(*dst_rgba_line).data = nb_pix_transp & ~1; // "& ~1" to preserve the last block type
(*dst_rgba_line).data = nb_pix_transp;
Colour *nb_right = dst_rgba_line + 1;
dst_rgba_line = (Colour*) ((byte*) dst_rgba_line + sd.infos[z].sprite_line_size);
@@ -324,56 +124,18 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, Alloca
else break;
dst_rgba--;
}
(*nb_right).data = nb_pix_transp; // no "& ~1" here, must be done when we know bp->width
(*nb_right).data = nb_pix_transp;
}
}
/* Store sprite flags. */
sd.flags = SF_NONE;
if (has_translucency) sd.flags |= SF_TRANSLUCENT;
if (!has_remap) sd.flags |= SF_NO_REMAP;
if (!has_anim) sd.flags |= SF_NO_ANIM;
memcpy(dst_sprite->data, &sd, sizeof(SpriteData));
return dst_sprite;
}
/** ReallyAdjustBrightness() is not called that often.
* Inlining this function implies a far jump, which has a huge latency.
*/
inline Colour Blitter_32bppSSE2::AdjustBrightness(Colour colour, uint8 brightness)
{
/* Shortcut for normal brightness. */
if (brightness == DEFAULT_BRIGHTNESS) return colour;
return Blitter_32bppSSE2::ReallyAdjustBrightness(colour, brightness);
}
IGNORE_UNINITIALIZED_WARNING_START
/* static */ Colour Blitter_32bppSSE2::ReallyAdjustBrightness(Colour colour, uint8 brightness)
{
ALIGN(16) uint64 c16 = colour.b | (uint64) colour.g << 16 | (uint64) colour.r << 32;
c16 *= brightness;
uint64 c16_ob = c16; // Helps out of order execution.
c16 /= DEFAULT_BRIGHTNESS;
c16 &= 0x01FF01FF01FF;
/* Sum overbright (maximum for each rgb is 508, 9 bits, -255 is changed in -256 so we just have to take the 8 lower bits into account). */
c16_ob = (((c16_ob >> (8 + 7)) & 0x0100010001) * 0xFF) & c16;
uint64 ob = (uint16) c16_ob + (uint16) (c16_ob >> 16) + (uint16) (c16_ob >> 32);
const uint32 alpha32 = colour.data & 0xFF000000;
__m128i ret;
INSR64(c16, ret, 0);
if (ob != 0) {
/* Reduce overbright strength. */
ob /= 2;
__m128i ob128;
INSR64(ob | ob << 16 | ob << 32, ob128, 0);
__m128i white = OVERBRIGHT_VALUE_MASK;
__m128i c128 = ret;
ret = _mm_subs_epu16(white, c128); /* PSUBUSW, (255 - rgb) */
ret = _mm_mullo_epi16(ret, ob128); /* PMULLW, ob*(255 - rgb) */
ret = _mm_srli_epi16(ret, 8); /* PSRLW, ob*(255 - rgb)/256 */
ret = _mm_add_epi16(ret, c128); /* PADDW, ob*(255 - rgb)/256 + rgb */
}
ret = _mm_packus_epi16(ret, ret); /* PACKUSWB, saturate and pack. */
return alpha32 | EXTR32(ret, 0);
}
IGNORE_UNINITIALIZED_WARNING_STOP
#endif /* WITH_SSE */
+22 -59
View File
@@ -14,64 +14,15 @@
#ifdef WITH_SSE
#include "32bpp_simple.hpp"
#include "emmintrin.h"
#define META_LENGTH 2 ///< Number of uint32 inserted before each line of pixels in a sprite.
#define MARGIN_NORMAL_THRESHOLD (zoom == ZOOM_LVL_OUT_32X ? 8 : 4) ///< Minimum width to use margins with BM_NORMAL.
#define MARGIN_REMAP_THRESHOLD 4 ///< Minimum width to use margins with BM_COLOUR_REMAP.
#ifdef _MSC_VER
#define ALIGN(n) __declspec(align(n))
#else
#define ALIGN(n) __attribute__ ((aligned (n)))
#ifndef SSE_VERSION
#define SSE_VERSION 2
#endif
typedef union ALIGN(16) um128i {
__m128i m128i;
uint8 m128i_u8[16];
uint16 m128i_u16[8];
uint32 m128i_u32[4];
uint64 m128i_u64[2];
} um128i;
#ifndef FULL_ANIMATION
#define FULL_ANIMATION 0
#endif
#define CLEAR_HIGH_BYTE_MASK _mm_setr_epi8(-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0)
#define ALPHA_CONTROL_MASK _mm_setr_epi8( 6, 7, 6, 7, 6, 7, -1, -1, 14, 15, 14, 15, 14, 15, -1, -1)
#define PACK_LOW_CONTROL_MASK _mm_setr_epi8( 0, 2, 4, -1, 8, 10, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1)
#define PACK_HIGH_CONTROL_MASK _mm_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 4, -1, 8, 10, 12, -1)
#define BRIGHTNESS_LOW_CONTROL_MASK _mm_setr_epi8( 1, 2, 1, 2, 1, 2, 0, 2, 3, 2, 3, 2, 3, 2, 0, 2)
#define BRIGHTNESS_DIV_CLEANER _mm_setr_epi8(-1, 1, -1, 1, -1, 1, -1, 0, -1, 1, -1, 1, -1, 1, -1, 0)
#define OVERBRIGHT_PRESENCE_MASK _mm_setr_epi8( 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0)
#define OVERBRIGHT_VALUE_MASK _mm_setr_epi8(-1, 0, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0)
#define OVERBRIGHT_CONTROL_MASK _mm_setr_epi8( 0, 1, 0, 1, 0, 1, 7, 7, 2, 3, 2, 3, 2, 3, 7, 7)
#define TRANSPARENT_NOM_BASE _mm_setr_epi16(256, 256, 256, 256, 256, 256, 256, 256)
#define EXTR32(from, rank) (*(um128i*) &from).m128i_u32[rank]
#define EXTR64(from, rank) (*(um128i*) &from).m128i_u64[rank]
#define INSR32(val, into, rank) { \
(*(um128i*) &into).m128i = _mm_insert_epi16((*(um128i*) &into).m128i, val, (rank)*2); \
(*(um128i*) &into).m128i = _mm_insert_epi16((*(um128i*) &into).m128i, (val) >> 16, (rank)*2 + 1); \
}
#define INSR64(val, into, rank) (*(um128i*) &into).m128i_u64[rank] = (val)
/* Alpha blend 2 pixels. */
#define ALPHA_BLEND_2() { \
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128()); /* PUNPCKLBW, expand each uint8 into uint16 */ \
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128()); \
\
__m128i alphaAB = _mm_cmpgt_epi16(srcAB, _mm_setzero_si128()); /* PCMPGTW, if (alpha > 0) a++; */ \
alphaAB = _mm_srli_epi16(alphaAB, 15); \
alphaAB = _mm_add_epi16(alphaAB, srcAB); \
alphaAB = _mm_shufflelo_epi16(alphaAB, 0x3F); /* PSHUFLW, put alpha1 in front of each rgb1 */ \
alphaAB = _mm_shufflehi_epi16(alphaAB, 0x3F); /* PSHUFHW, put alpha2 in front of each rgb2 */ \
\
srcAB = _mm_sub_epi16(srcAB, dstAB); /* PSUBW, (r - Cr) */ \
srcAB = _mm_mullo_epi16(srcAB, alphaAB); /* PMULLW, a*(r - Cr) */ \
srcAB = _mm_srli_epi16(srcAB, 8); /* PSRLW, a*(r - Cr)/256 */ \
srcAB = _mm_add_epi16(srcAB, dstAB); /* PADDW, a*(r - Cr)/256 + Cr */ \
srcAB = _mm_and_si128(srcAB, clear_hi); /* PAND, wipe high bytes to keep low bytes when packing */ \
srcABCD = _mm_packus_epi16(srcAB, srcAB); /* PACKUSWB, pack 2 colours (with saturation) */ \
}
#include "32bpp_sse_type.h"
/** Base methods for 32bpp SSE blitters. */
class Blitter_32bppSSE_Base {
@@ -98,6 +49,18 @@ public:
BT_NONE, ///< No specialisation for either case.
};
/** Helper for using specialised functions designed to prevent whenever it's possible things like:
* - IO (reading video buffer),
* - calculations (alpha blending),
* - heavy branching (remap lookups and animation buffer handling).
*/
enum SpriteFlags {
SF_NONE = 0,
SF_TRANSLUCENT = 1 << 1, ///< The sprite has at least 1 translucent pixel.
SF_NO_REMAP = 1 << 2, ///< The sprite has no remappable colour pixel.
SF_NO_ANIM = 1 << 3, ///< The sprite has no palette animated pixel.
};
/** Data stored about a (single) sprite. */
struct SpriteInfo {
uint32 sprite_offset; ///< The offset to the sprite data.
@@ -106,21 +69,21 @@ public:
uint16 sprite_width; ///< The width of the sprite.
};
struct SpriteData {
SpriteFlags flags;
SpriteInfo infos[ZOOM_LVL_COUNT];
byte data[]; ///< Data, all zoomlevels.
};
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
virtual Colour AdjustBrightness(Colour colour, uint8 brightness) = 0;
};
DECLARE_ENUM_AS_BIT_SET(Blitter_32bppSSE_Base::SpriteFlags);
/** The SSE2 32 bpp blitter (without palette animation). */
class Blitter_32bppSSE2 : public Blitter_32bppSimple, public Blitter_32bppSSE_Base {
public:
virtual Colour AdjustBrightness(Colour colour, uint8 brightness);
static Colour ReallyAdjustBrightness(Colour colour, uint8 brightness);
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last>
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last, bool translucent>
void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
/* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) {
+1 -302
View File
@@ -15,310 +15,9 @@
#include "../zoom_func.h"
#include "../settings_type.h"
#include "32bpp_sse4.hpp"
#include "32bpp_sse_func.hpp"
/** Instantiation of the SSE4 32bpp blitter factory. */
static FBlitter_32bppSSE4 iFBlitter_32bppSSE4;
/**
* Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
*
* @tparam mode blitter mode
* @param bp further blitting parameters
* @param zoom zoom level at which we are drawing
*/
IGNORE_UNINITIALIZED_WARNING_START
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last>
inline void Blitter_32bppSSE4::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
const byte * const remap = bp->remap;
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left;
int effective_width = bp->width;
/* Find where to start reading in the source sprite. */
const SpriteData * const sd = (const SpriteData *) bp->sprite;
const SpriteInfo * const si = &sd->infos[zoom];
const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width;
const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size);
if (read_mode != RM_WITH_MARGIN) {
src_rgba_line += bp->skip_left;
src_mv_line += bp->skip_left;
}
/* Load these variables into register before loop. */
const __m128i a_cm = ALPHA_CONTROL_MASK;
const __m128i pack_low_cm = PACK_LOW_CONTROL_MASK;
const __m128i briAB_cm = BRIGHTNESS_LOW_CONTROL_MASK;
const __m128i div_cleaner = BRIGHTNESS_DIV_CLEANER;
const __m128i ob_check = OVERBRIGHT_PRESENCE_MASK;
const __m128i ob_mask = OVERBRIGHT_VALUE_MASK;
const __m128i ob_cm = OVERBRIGHT_CONTROL_MASK;
const __m128i tr_nom_base = TRANSPARENT_NOM_BASE;
for (int y = bp->height; y != 0; y--) {
const Colour *src = src_rgba_line + META_LENGTH;
Colour *dst = dst_line;
const MapValue *src_mv = src_mv_line;
switch (mode) {
default: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int new_width = effective_width - (delta_diff & ~1);
effective_width = delta_diff > 0 ? new_width : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) effective_width / 2; x > 0; x--) {
ALPHA_BLEND_2(pack_low_cm);
srcABCD = _mm_blend_epi16(srcABCD, dstABCD, 0xF0);
Colour *old_dst = dst;
src += 2;
dst += 2;
/* It is VERY important to read next data before it gets invalidated in cpu cache.
* And PEXTR latency is a real problem here.
*/
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, srcABCD);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (bt_last == BT_ODD) {
ALPHA_BLEND_2(pack_low_cm);
*dst = (Colour) EXTR32(srcABCD, 0);
}
break;
}
default: NOT_REACHED();
}
break;
}
case BM_COLOUR_REMAP: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
src_mv += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int nd = effective_width - delta_diff;
effective_width = delta_diff > 0 ? nd : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
uint32 mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
for (uint x = (uint) effective_width / 2; x > 0; x--) {
/* Remap colours. */
if (mvX2 & 0x00FF00FF) {
/* Written so the compiler uses CMOV. */
const Colour src0 = src[0];
const uint m0 = (byte) mvX2;
const uint r0 = remap[m0];
const Colour c0map = (this->LookupColourInPalette(r0).data & 0x00FFFFFF) | (src0.data & 0xFF000000);
Colour c0 = 0; // Use alpha of 0 to keep dst as is.
c0 = r0 == 0 ? c0 : c0map;
c0 = m0 != 0 ? c0 : src0;
INSR32(c0.data, srcABCD, 0);
const Colour src1 = src[1];
const uint m1 = (byte) (mvX2 >> 16);
const uint r1 = remap[m1];
const Colour c1map = (this->LookupColourInPalette(r1).data & 0x00FFFFFF) | (src1.data & 0xFF000000);
Colour c1 = 0;
c1 = r1 == 0 ? c1 : c1map;
c1 = m1 != 0 ? c1 : src1;
INSR32(c1.data, srcABCD, 1);
if ((mvX2 & 0xFF00FF00) != 0x80008000) {
ADJUST_BRIGHTNESS_2(srcABCD, mvX2);
}
}
/* Blend colours. */
ALPHA_BLEND_2(pack_low_cm);
srcABCD = _mm_blend_epi16(srcABCD, dstABCD, 0xF0);
Colour *old_dst = dst;
dst += 2;
src += 2;
src_mv += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, srcABCD);
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (effective_width & 1) {
/* In case the m-channel is zero, do not remap this pixel in any way. */
if ((byte) mvX2 == 0) {
if (src->a < 255) {
ALPHA_BLEND_2(pack_low_cm);
(*dst).data = EXTR32(srcABCD, 0);
} else
*dst = *src;
} else {
const uint r = remap[(byte) mvX2];
if (r != 0) {
Colour remapped_colour = AdjustBrightness(this->LookupColourInPalette(r), (byte) (mvX2 >> 8));
if (src->a == 255) {
*dst = remapped_colour;
} else {
remapped_colour.a = src->a;
INSR32(remapped_colour.data, srcABCD, 0);
ALPHA_BLEND_2(pack_low_cm);
(*dst).data = EXTR32(srcABCD, 0);
}
}
}
}
break;
}
default: NOT_REACHED();
}
src_mv_line += si->sprite_width;
break;
}
case BM_TRANSPARENT: {
/* Make the current colour a bit more black, so it looks like this image is transparent.
* rgb = rgb * ((256/4) * 4 - (alpha/4)) / ((256/4) * 4)
*/
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) bp->width / 2; x > 0; x--) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i dstCD = _mm_unpackhi_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2); // Reduce to 64 levels of shades so the max value fits in 16 bits.
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstCD);
Colour *old_dst = dst;
src += 2;
dst += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, dstAB);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (bp->width & 1) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2);
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstAB);
(*dst).data = EXTR32(dstAB, 0);
}
break;
}
}
src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size);
dst_line += bp->pitch;
}
}
IGNORE_UNINITIALIZED_WARNING_STOP
/**
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
*
* @param bp further blitting parameters
* @param mode blitter mode
* @param zoom zoom level at which we are drawing
*/
void Blitter_32bppSSE4::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
{
const BlockType bt_last = (BlockType) (bp->width & 1);
switch (mode) {
case BM_NORMAL: {
if (bp->skip_left != 0 || bp->width <= MARGIN_NORMAL_THRESHOLD) {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_SKIP, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_SKIP, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
} else {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
}
break;
}
case BM_COLOUR_REMAP:
if (bp->skip_left != 0 || bp->width <= MARGIN_REMAP_THRESHOLD) {
Draw<BM_COLOUR_REMAP, RM_WITH_SKIP, BT_NONE>(bp, zoom); return;
} else {
Draw<BM_COLOUR_REMAP, RM_WITH_MARGIN, BT_NONE>(bp, zoom); return;
}
case BM_TRANSPARENT: Draw<BM_TRANSPARENT, RM_NONE, BT_NONE>(bp, zoom); return;
default: NOT_REACHED();
}
}
/** Same code as seen in 32bpp_sse2.cpp but some macros are not the same. */
inline Colour Blitter_32bppSSE4::AdjustBrightness(Colour colour, uint8 brightness)
{
/* Shortcut for normal brightness. */
if (brightness == DEFAULT_BRIGHTNESS) return colour;
return Blitter_32bppSSE4::ReallyAdjustBrightness(colour, brightness);
}
IGNORE_UNINITIALIZED_WARNING_START
/* static */ Colour Blitter_32bppSSE4::ReallyAdjustBrightness(Colour colour, uint8 brightness)
{
ALIGN(16) uint64 c16 = colour.b | (uint64) colour.g << 16 | (uint64) colour.r << 32;
c16 *= brightness;
uint64 c16_ob = c16; // Helps out of order execution.
c16 /= DEFAULT_BRIGHTNESS;
c16 &= 0x01FF01FF01FF;
/* Sum overbright (maximum for each rgb is 508, 9 bits, -255 is changed in -256 so we just have to take the 8 lower bits into account). */
c16_ob = (((c16_ob >> (8 + 7)) & 0x0100010001) * 0xFF) & c16;
uint64 ob = (uint16) c16_ob + (uint16) (c16_ob >> 16) + (uint16) (c16_ob >> 32);
const uint32 alpha32 = colour.data & 0xFF000000;
__m128i ret;
INSR64(c16, ret, 0);
if (ob != 0) {
/* Reduce overbright strength. */
ob /= 2;
__m128i ob128;
INSR64(ob | ob << 16 | ob << 32, ob128, 0);
__m128i white = OVERBRIGHT_VALUE_MASK;
__m128i c128 = ret;
ret = _mm_subs_epu16(white, c128); /* PSUBUSW, (255 - rgb) */
ret = _mm_mullo_epi16(ret, ob128); /* PMULLW, ob*(255 - rgb) */
ret = _mm_srli_epi16(ret, 8); /* PSRLW, ob*(255 - rgb)/256 */
ret = _mm_add_epi16(ret, c128); /* PADDW, ob*(255 - rgb)/256 + rgb */
}
ret = _mm_packus_epi16(ret, ret); /* PACKUSWB, saturate and pack. */
return alpha32 | EXTR32(ret, 0);
}
IGNORE_UNINITIALIZED_WARNING_STOP
#endif /* WITH_SSE */
+9 -26
View File
@@ -14,38 +14,21 @@
#ifdef WITH_SSE
#include "32bpp_ssse3.hpp"
#include "smmintrin.h"
#undef EXTR32
#define EXTR32(from, rank) _mm_extract_epi32((*(um128i*) &from).m128i, rank)
#undef INSR32
#define INSR32(val, into, rank) (*(um128i*) &into).m128i = _mm_insert_epi32((*(um128i*) &into).m128i, val, rank)
IGNORE_UNINITIALIZED_WARNING_START
#ifdef _SQ64
#undef INSR64
#define INSR64(val, into, rank) (*(um128i*) &into).m128i = _mm_insert_epi64((*(um128i*) &into).m128i, val, rank)
#else
typedef union { uint64 u64; struct _u32 { uint32 low, high; } u32; } u6432;
#undef INSR64
#define INSR64(val, into, rank) { \
u6432 v; \
v.u64 = val; \
(*(um128i*) &into).m128i = _mm_insert_epi32((*(um128i*) &into).m128i, v.u32.low, (rank)*2); \
(*(um128i*) &into).m128i = _mm_insert_epi32((*(um128i*) &into).m128i, v.u32.high, (rank)*2 + 1); \
}
#ifndef SSE_VERSION
#define SSE_VERSION 4
#endif
IGNORE_UNINITIALIZED_WARNING_STOP
#ifndef FULL_ANIMATION
#define FULL_ANIMATION 0
#endif
#include "32bpp_ssse3.hpp"
/** The SSE4 32 bpp blitter (without palette animation). */
class Blitter_32bppSSE4 : public Blitter_32bppSSSE3 {
public:
Colour AdjustBrightness(Colour colour, uint8 brightness);
static Colour ReallyAdjustBrightness(Colour colour, uint8 brightness);
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last>
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last, bool translucent>
void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
/* virtual */ const char *GetName() { return "32bpp-sse4"; }
};
+455
View File
@@ -0,0 +1,455 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file 32bpp_sse_func.hpp Functions related to SSE 32 bpp blitter. */
#ifndef BLITTER_32BPP_SSE_FUNC_HPP
#define BLITTER_32BPP_SSE_FUNC_HPP
#ifdef WITH_SSE
static inline void InsertFirstUint32(const uint32 value, __m128i &into)
{
#if (SSE_VERSION >= 4)
into = _mm_insert_epi32(into, value, 0);
#else
into = _mm_insert_epi16(into, value, 0);
into = _mm_insert_epi16(into, value >> 16, 1);
#endif
}
static inline void InsertSecondUint32(const uint32 value, __m128i &into)
{
#if (SSE_VERSION >= 4)
into = _mm_insert_epi32(into, value, 1);
#else
into = _mm_insert_epi16(into, value, 2);
into = _mm_insert_epi16(into, value >> 16, 3);
#endif
}
static inline void LoadUint64(const uint64 value, __m128i &into)
{
#ifdef _SQ64
into = _mm_cvtsi64_si128(value);
#else
#if (SSE_VERSION >= 4)
into = _mm_cvtsi32_si128(value);
InsertSecondUint32(value >> 32, into);
#else
(*(um128i*) &into).m128i_u64[0] = value;
#endif
#endif
}
static inline __m128i PackUnsaturated(__m128i from, const __m128i &mask)
{
#if (SSE_VERSION == 2)
from = _mm_and_si128(from, mask); // PAND, wipe high bytes to keep low bytes when packing
return _mm_packus_epi16(from, from); // PACKUSWB, pack 2 colours (with saturation)
#else
return _mm_shuffle_epi8(from, mask);
#endif
}
static inline __m128i DistributeAlpha(const __m128i from, const __m128i &mask)
{
#if (SSE_VERSION == 2)
__m128i alphaAB = _mm_shufflelo_epi16(from, 0x3F); // PSHUFLW, put alpha1 in front of each rgb1
return _mm_shufflehi_epi16(alphaAB, 0x3F); // PSHUFHW, put alpha2 in front of each rgb2
#else
return _mm_shuffle_epi8(from, mask);
#endif
}
static inline __m128i AlphaBlendTwoPixels(__m128i src, __m128i dst, const __m128i &distribution_mask, const __m128i &pack_mask)
{
__m128i srcAB = _mm_unpacklo_epi8(src, _mm_setzero_si128()); // PUNPCKLBW, expand each uint8 into uint16
__m128i dstAB = _mm_unpacklo_epi8(dst, _mm_setzero_si128());
__m128i alphaAB = _mm_cmpgt_epi16(srcAB, _mm_setzero_si128()); // PCMPGTW, if (alpha > 0) a++;
alphaAB = _mm_srli_epi16(alphaAB, 15);
alphaAB = _mm_add_epi16(alphaAB, srcAB);
alphaAB = DistributeAlpha(alphaAB, distribution_mask);
srcAB = _mm_sub_epi16(srcAB, dstAB); // PSUBW, (r - Cr)
srcAB = _mm_mullo_epi16(srcAB, alphaAB); // PMULLW, a*(r - Cr)
srcAB = _mm_srli_epi16(srcAB, 8); // PSRLW, a*(r - Cr)/256
srcAB = _mm_add_epi16(srcAB, dstAB); // PADDW, a*(r - Cr)/256 + Cr
return PackUnsaturated(srcAB, pack_mask);
}
/* Darken 2 pixels.
* rgb = rgb * ((256/4) * 4 - (alpha/4)) / ((256/4) * 4)
*/
static inline __m128i DarkenTwoPixels(__m128i src, __m128i dst, const __m128i &distribution_mask, const __m128i &tr_nom_base)
{
__m128i srcAB = _mm_unpacklo_epi8(src, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dst, _mm_setzero_si128());
__m128i alphaAB = DistributeAlpha(srcAB, distribution_mask);
alphaAB = _mm_srli_epi16(alphaAB, 2); // Reduce to 64 levels of shades so the max value fits in 16 bits.
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
return _mm_packus_epi16(dstAB, dstAB);
}
IGNORE_UNINITIALIZED_WARNING_START
static Colour ReallyAdjustBrightness(Colour colour, uint8 brightness)
{
uint64 c16 = colour.b | (uint64) colour.g << 16 | (uint64) colour.r << 32;
c16 *= brightness;
uint64 c16_ob = c16; // Helps out of order execution.
c16 /= Blitter_32bppBase::DEFAULT_BRIGHTNESS;
c16 &= 0x01FF01FF01FFULL;
/* Sum overbright (maximum for each rgb is 508, 9 bits, -255 is changed in -256 so we just have to take the 8 lower bits into account). */
c16_ob = (((c16_ob >> (8 + 7)) & 0x0100010001ULL) * 0xFF) & c16;
const uint ob = ((uint16) c16_ob + (uint16) (c16_ob >> 16) + (uint16) (c16_ob >> 32)) / 2;
const uint32 alpha32 = colour.data & 0xFF000000;
__m128i ret;
LoadUint64(c16, ret);
if (ob != 0) {
__m128i ob128 = _mm_cvtsi32_si128(ob);
ob128 = _mm_shufflelo_epi16(ob128, 0xC0);
__m128i white = OVERBRIGHT_VALUE_MASK;
__m128i c128 = ret;
ret = _mm_subs_epu16(white, c128); // PSUBUSW, (255 - rgb)
ret = _mm_mullo_epi16(ret, ob128); // PMULLW, ob*(255 - rgb)
ret = _mm_srli_epi16(ret, 8); // PSRLW, ob*(255 - rgb)/256
ret = _mm_add_epi16(ret, c128); // PADDW, ob*(255 - rgb)/256 + rgb
}
ret = _mm_packus_epi16(ret, ret); // PACKUSWB, saturate and pack.
return alpha32 | _mm_cvtsi128_si32(ret);
}
IGNORE_UNINITIALIZED_WARNING_STOP
/** ReallyAdjustBrightness() is not called that often.
* Inlining this function implies a far jump, which has a huge latency.
*/
static inline Colour AdjustBrightneSSE(Colour colour, uint8 brightness)
{
/* Shortcut for normal brightness. */
if (brightness == Blitter_32bppBase::DEFAULT_BRIGHTNESS) return colour;
return ReallyAdjustBrightness(colour, brightness);
}
static inline __m128i AdjustBrightnessOfTwoPixels(__m128i from, uint32 brightness)
{
#if (SSE_VERSION < 3)
NOT_REACHED();
#else
/* The following dataflow differs from the one of AdjustBrightness() only for alpha.
* In order to keep alpha in colAB, insert a 1 in a unused brightness byte (a*1->a).
* OK, not a 1 but DEFAULT_BRIGHTNESS to compensate the div.
*/
brightness &= 0xFF00FF00;
brightness += Blitter_32bppBase::DEFAULT_BRIGHTNESS;
__m128i colAB = _mm_unpacklo_epi8(from, _mm_setzero_si128());
__m128i briAB = _mm_cvtsi32_si128(brightness);
briAB = _mm_shuffle_epi8(briAB, BRIGHTNESS_LOW_CONTROL_MASK); // DEFAULT_BRIGHTNESS in 0, 0x00 in 2.
colAB = _mm_mullo_epi16(colAB, briAB);
__m128i colAB_ob = _mm_srli_epi16(colAB, 8+7);
colAB = _mm_srli_epi16(colAB, 7);
/* Sum overbright.
* Maximum for each rgb is 508 => 9 bits. The highest bit tells if there is overbright.
* -255 is changed in -256 so we just have to take the 8 lower bits into account.
*/
colAB = _mm_and_si128(colAB, BRIGHTNESS_DIV_CLEANER);
colAB_ob = _mm_and_si128(colAB_ob, OVERBRIGHT_PRESENCE_MASK);
colAB_ob = _mm_mullo_epi16(colAB_ob, OVERBRIGHT_VALUE_MASK);
colAB_ob = _mm_and_si128(colAB_ob, colAB);
__m128i obAB = _mm_hadd_epi16(_mm_hadd_epi16(colAB_ob, _mm_setzero_si128()), _mm_setzero_si128());
obAB = _mm_srli_epi16(obAB, 1); // Reduce overbright strength.
obAB = _mm_shuffle_epi8(obAB, OVERBRIGHT_CONTROL_MASK);
__m128i retAB = OVERBRIGHT_VALUE_MASK; // ob_mask is equal to white.
retAB = _mm_subs_epu16(retAB, colAB); // (255 - rgb)
retAB = _mm_mullo_epi16(retAB, obAB); // ob*(255 - rgb)
retAB = _mm_srli_epi16(retAB, 8); // ob*(255 - rgb)/256
retAB = _mm_add_epi16(retAB, colAB); // ob*(255 - rgb)/256 + rgb
return _mm_packus_epi16(retAB, retAB);
#endif
}
#if FULL_ANIMATION == 0
/**
* Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
*
* @tparam mode blitter mode
* @param bp further blitting parameters
* @param zoom zoom level at which we are drawing
*/
IGNORE_UNINITIALIZED_WARNING_START
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last, bool translucent>
#if (SSE_VERSION == 2)
inline void Blitter_32bppSSE2::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
#elif (SSE_VERSION == 3)
inline void Blitter_32bppSSSE3::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
#elif (SSE_VERSION == 4)
inline void Blitter_32bppSSE4::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
#endif
{
const byte * const remap = bp->remap;
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left;
int effective_width = bp->width;
/* Find where to start reading in the source sprite. */
const SpriteData * const sd = (const SpriteData *) bp->sprite;
const SpriteInfo * const si = &sd->infos[zoom];
const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width;
const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size);
if (read_mode != RM_WITH_MARGIN) {
src_rgba_line += bp->skip_left;
src_mv_line += bp->skip_left;
}
const MapValue *src_mv = src_mv_line;
/* Load these variables into register before loop. */
#if (SSE_VERSION == 2)
const __m128i clear_hi = CLEAR_HIGH_BYTE_MASK;
#define ALPHA_BLEND_PARAM_1 clear_hi
#define ALPHA_BLEND_PARAM_2 clear_hi
#define DARKEN_PARAM_1 tr_nom_base
#define DARKEN_PARAM_2 tr_nom_base
#else
const __m128i a_cm = ALPHA_CONTROL_MASK;
const __m128i pack_low_cm = PACK_LOW_CONTROL_MASK;
#define ALPHA_BLEND_PARAM_1 a_cm
#define ALPHA_BLEND_PARAM_2 pack_low_cm
#define DARKEN_PARAM_1 a_cm
#define DARKEN_PARAM_2 tr_nom_base
#endif
const __m128i tr_nom_base = TRANSPARENT_NOM_BASE;
for (int y = bp->height; y != 0; y--) {
Colour *dst = dst_line;
const Colour *src = src_rgba_line + META_LENGTH;
if (mode == BM_COLOUR_REMAP || mode == BM_CRASH_REMAP) src_mv = src_mv_line;
if (read_mode == RM_WITH_MARGIN) {
assert(bt_last == BT_NONE); // or you must ensure block type is preserved
src += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
if (mode == BM_COLOUR_REMAP || mode == BM_CRASH_REMAP) src_mv += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int new_width = effective_width - delta_diff;
effective_width = delta_diff > 0 ? new_width : effective_width;
if (effective_width <= 0) goto next_line;
}
switch (mode) {
default:
if (!translucent) {
for (uint x = (uint) effective_width; x > 0; x--) {
if (src->a) *dst = *src;
src++;
dst++;
}
break;
}
for (uint x = (uint) effective_width / 2; x > 0; x--) {
__m128i srcABCD = _mm_loadl_epi64((const __m128i*) src);
__m128i dstABCD = _mm_loadl_epi64((__m128i*) dst);
_mm_storel_epi64((__m128i*) dst, AlphaBlendTwoPixels(srcABCD, dstABCD, ALPHA_BLEND_PARAM_1, ALPHA_BLEND_PARAM_2));
src += 2;
dst += 2;
}
if ((bt_last == BT_NONE && effective_width & 1) || bt_last == BT_ODD) {
__m128i srcABCD = _mm_cvtsi32_si128(src->data);
__m128i dstABCD = _mm_cvtsi32_si128(dst->data);
dst->data = _mm_cvtsi128_si32(AlphaBlendTwoPixels(srcABCD, dstABCD, ALPHA_BLEND_PARAM_1, ALPHA_BLEND_PARAM_2));
}
break;
case BM_COLOUR_REMAP:
#if (SSE_VERSION >= 3)
for (uint x = (uint) effective_width / 2; x > 0; x--) {
__m128i srcABCD = _mm_loadl_epi64((const __m128i*) src);
__m128i dstABCD = _mm_loadl_epi64((__m128i*) dst);
uint32 mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
/* Remap colours. */
if (mvX2 & 0x00FF00FF) {
#define CMOV_REMAP(m_colour, m_colour_init, m_src, m_m) \
/* Written so the compiler uses CMOV. */ \
Colour m_colour = m_colour_init; \
{ \
const Colour srcm = (Colour) (m_src); \
const uint m = (byte) (m_m); \
const uint r = remap[m]; \
const Colour cmap = (this->LookupColourInPalette(r).data & 0x00FFFFFF) | (srcm.data & 0xFF000000); \
m_colour = r == 0 ? m_colour : cmap; \
m_colour = m != 0 ? m_colour : srcm; \
}
#ifdef _SQ64
uint64 srcs = _mm_cvtsi128_si64(srcABCD);
uint64 remapped_src = 0;
CMOV_REMAP(c0, 0, srcs, mvX2);
remapped_src = c0.data;
CMOV_REMAP(c1, 0, srcs >> 32, mvX2 >> 16);
remapped_src |= (uint64) c1.data << 32;
srcABCD = _mm_cvtsi64_si128(remapped_src);
#else
Colour remapped_src[2];
CMOV_REMAP(c0, 0, _mm_cvtsi128_si32(srcABCD), mvX2);
remapped_src[0] = c0.data;
CMOV_REMAP(c1, 0, src[1], mvX2 >> 16);
remapped_src[1] = c1.data;
srcABCD = _mm_loadl_epi64((__m128i*) &remapped_src);
#endif
if ((mvX2 & 0xFF00FF00) != 0x80008000) srcABCD = AdjustBrightnessOfTwoPixels(srcABCD, mvX2);
}
/* Blend colours. */
_mm_storel_epi64((__m128i *) dst, AlphaBlendTwoPixels(srcABCD, dstABCD, ALPHA_BLEND_PARAM_1, ALPHA_BLEND_PARAM_2));
dst += 2;
src += 2;
src_mv += 2;
}
if ((bt_last == BT_NONE && effective_width & 1) || bt_last == BT_ODD) {
#else
for (uint x = (uint) effective_width; x > 0; x--) {
#endif
/* In case the m-channel is zero, do not remap this pixel in any way. */
__m128i srcABCD;
if (src_mv->m) {
const uint r = remap[src_mv->m];
if (r != 0) {
Colour remapped_colour = AdjustBrightneSSE(this->LookupColourInPalette(r), src_mv->v);
if (src->a == 255) {
*dst = remapped_colour;
} else {
remapped_colour.a = src->a;
srcABCD = _mm_cvtsi32_si128(remapped_colour.data);
goto bmcr_alpha_blend_single;
}
}
} else {
srcABCD = _mm_cvtsi32_si128(src->data);
if (src->a < 255) {
bmcr_alpha_blend_single:
__m128i dstABCD = _mm_cvtsi32_si128(dst->data);
srcABCD = AlphaBlendTwoPixels(srcABCD, dstABCD, ALPHA_BLEND_PARAM_1, ALPHA_BLEND_PARAM_2);
}
dst->data = _mm_cvtsi128_si32(srcABCD);
}
#if (SSE_VERSION == 2)
src_mv++;
dst++;
src++;
#endif
}
break;
case BM_TRANSPARENT:
/* Make the current colour a bit more black, so it looks like this image is transparent. */
for (uint x = (uint) bp->width / 2; x > 0; x--) {
__m128i srcABCD = _mm_loadl_epi64((const __m128i*) src);
__m128i dstABCD = _mm_loadl_epi64((__m128i*) dst);
_mm_storel_epi64((__m128i *) dst, DarkenTwoPixels(srcABCD, dstABCD, DARKEN_PARAM_1, DARKEN_PARAM_2));
src += 2;
dst += 2;
}
if ((bt_last == BT_NONE && bp->width & 1) || bt_last == BT_ODD) {
__m128i srcABCD = _mm_cvtsi32_si128(src->data);
__m128i dstABCD = _mm_cvtsi32_si128(dst->data);
dst->data = _mm_cvtsi128_si32(DarkenTwoPixels(srcABCD, dstABCD, DARKEN_PARAM_1, DARKEN_PARAM_2));
}
break;
case BM_CRASH_REMAP:
for (uint x = (uint) bp->width; x > 0; x--) {
if (src_mv->m == 0) {
if (src->a != 0) {
uint8 g = MakeDark(src->r, src->g, src->b);
*dst = ComposeColourRGBA(g, g, g, src->a, *dst);
}
} else {
uint r = remap[src_mv->m];
if (r != 0) *dst = ComposeColourPANoCheck(this->AdjustBrightness(this->LookupColourInPalette(r), src_mv->v), src->a, *dst);
}
src_mv++;
dst++;
src++;
}
break;
}
next_line:
if (mode == BM_COLOUR_REMAP || mode == BM_CRASH_REMAP) src_mv_line += si->sprite_width;
src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size);
dst_line += bp->pitch;
}
}
IGNORE_UNINITIALIZED_WARNING_STOP
/**
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
*
* @param bp further blitting parameters
* @param mode blitter mode
* @param zoom zoom level at which we are drawing
*/
#if (SSE_VERSION == 2)
void Blitter_32bppSSE2::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
#elif (SSE_VERSION == 3)
void Blitter_32bppSSSE3::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
#elif (SSE_VERSION == 4)
void Blitter_32bppSSE4::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
#endif
{
switch (mode) {
default: {
if (bp->skip_left != 0 || bp->width <= MARGIN_NORMAL_THRESHOLD) {
bm_normal:
const BlockType bt_last = (BlockType) (bp->width & 1);
switch (bt_last) {
default: Draw<BM_NORMAL, RM_WITH_SKIP, BT_EVEN, true>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_SKIP, BT_ODD, true>(bp, zoom); return;
}
} else {
if (((const Blitter_32bppSSE_Base::SpriteData *) bp->sprite)->flags & SF_TRANSLUCENT) {
Draw<BM_NORMAL, RM_WITH_MARGIN, BT_NONE, true>(bp, zoom);
} else {
Draw<BM_NORMAL, RM_WITH_MARGIN, BT_NONE, false>(bp, zoom);
}
return;
}
break;
}
case BM_COLOUR_REMAP:
if (((const Blitter_32bppSSE_Base::SpriteData *) bp->sprite)->flags & SF_NO_REMAP) goto bm_normal;
if (bp->skip_left != 0 || bp->width <= MARGIN_REMAP_THRESHOLD) {
Draw<BM_COLOUR_REMAP, RM_WITH_SKIP, BT_NONE, true>(bp, zoom); return;
} else {
Draw<BM_COLOUR_REMAP, RM_WITH_MARGIN, BT_NONE, true>(bp, zoom); return;
}
case BM_TRANSPARENT: Draw<BM_TRANSPARENT, RM_NONE, BT_NONE, true>(bp, zoom); return;
case BM_CRASH_REMAP: Draw<BM_CRASH_REMAP, RM_NONE, BT_NONE, true>(bp, zoom); return;
}
}
#endif /* FULL_ANIMATION */
#endif /* WITH_SSE */
#endif /* BLITTER_32BPP_SSE_FUNC_HPP */
+56
View File
@@ -0,0 +1,56 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file 32bpp_sse_type.hpp Types related to SSE 32 bpp blitter. */
#ifndef BLITTER_32BPP_SSE_TYPE_HPP
#define BLITTER_32BPP_SSE_TYPE_HPP
#ifdef WITH_SSE
#include "32bpp_simple.hpp"
#if (SSE_VERSION == 2)
#include <emmintrin.h>
#elif (SSE_VERSION == 3)
#include <tmmintrin.h>
#elif (SSE_VERSION == 4)
#include <smmintrin.h>
#endif
#define META_LENGTH 2 ///< Number of uint32 inserted before each line of pixels in a sprite.
#define MARGIN_NORMAL_THRESHOLD (zoom == ZOOM_LVL_OUT_32X ? 8 : 4) ///< Minimum width to use margins with BM_NORMAL.
#define MARGIN_REMAP_THRESHOLD 4 ///< Minimum width to use margins with BM_COLOUR_REMAP.
#ifdef _MSC_VER
#define ALIGN(n) __declspec(align(n))
#else
#define ALIGN(n) __attribute__ ((aligned (n)))
#endif
typedef union ALIGN(16) um128i {
__m128i m128i;
uint8 m128i_u8[16];
uint16 m128i_u16[8];
uint32 m128i_u32[4];
uint64 m128i_u64[2];
} um128i;
#define CLEAR_HIGH_BYTE_MASK _mm_setr_epi8(-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0)
#define ALPHA_CONTROL_MASK _mm_setr_epi8( 6, 7, 6, 7, 6, 7, -1, -1, 14, 15, 14, 15, 14, 15, -1, -1)
#define PACK_LOW_CONTROL_MASK _mm_setr_epi8( 0, 2, 4, -1, 8, 10, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1)
#define PACK_HIGH_CONTROL_MASK _mm_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 4, -1, 8, 10, 12, -1)
#define BRIGHTNESS_LOW_CONTROL_MASK _mm_setr_epi8( 1, 2, 1, 2, 1, 2, 0, 2, 3, 2, 3, 2, 3, 2, 0, 2)
#define BRIGHTNESS_DIV_CLEANER _mm_setr_epi8(-1, 1, -1, 1, -1, 1, -1, 0, -1, 1, -1, 1, -1, 1, -1, 0)
#define OVERBRIGHT_PRESENCE_MASK _mm_setr_epi8( 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0)
#define OVERBRIGHT_VALUE_MASK _mm_setr_epi8(-1, 0, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0)
#define OVERBRIGHT_CONTROL_MASK _mm_setr_epi8( 0, 1, 0, 1, 0, 1, 7, 7, 2, 3, 2, 3, 2, 3, 7, 7)
#define TRANSPARENT_NOM_BASE _mm_setr_epi16(256, 256, 256, 256, 256, 256, 256, 256)
#endif /* WITH_SSE */
#endif /* BLITTER_32BPP_SSE_TYPE_HPP */
+1 -265
View File
@@ -15,273 +15,9 @@
#include "../zoom_func.h"
#include "../settings_type.h"
#include "32bpp_ssse3.hpp"
#include "32bpp_sse_func.hpp"
/** Instantiation of the SSSE3 32bpp blitter factory. */
static FBlitter_32bppSSSE3 iFBlitter_32bppSSSE3;
#if defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
#endif
/**
* Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
*
* @tparam mode blitter mode
* @param bp further blitting parameters
* @param zoom zoom level at which we are drawing
*/
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last>
inline void Blitter_32bppSSSE3::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
const byte * const remap = bp->remap;
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left;
int effective_width = bp->width;
/* Find where to start reading in the source sprite */
const SpriteData * const sd = (const SpriteData *) bp->sprite;
const SpriteInfo * const si = &sd->infos[zoom];
const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width;
const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size);
if (read_mode != RM_WITH_MARGIN) {
src_rgba_line += bp->skip_left;
src_mv_line += bp->skip_left;
}
/* Load these variables into register before loop. */
const __m128i a_cm = ALPHA_CONTROL_MASK;
const __m128i pack_hi_cm = PACK_HIGH_CONTROL_MASK;
const __m128i briAB_cm = BRIGHTNESS_LOW_CONTROL_MASK;
const __m128i div_cleaner = BRIGHTNESS_DIV_CLEANER;
const __m128i ob_check = OVERBRIGHT_PRESENCE_MASK;
const __m128i ob_mask = OVERBRIGHT_VALUE_MASK;
const __m128i ob_cm = OVERBRIGHT_CONTROL_MASK;
const __m128i tr_nom_base = TRANSPARENT_NOM_BASE;
for (int y = bp->height; y != 0; y--) {
Colour *dst = dst_line;
const Colour *src = src_rgba_line + META_LENGTH;
const MapValue *src_mv = src_mv_line;
switch (mode) {
default: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int new_width = effective_width - (delta_diff & ~1);
effective_width = delta_diff > 0 ? new_width : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) effective_width / 2; x > 0; x--) {
ALPHA_BLEND_2(pack_hi_cm);
/* With high repack, srcABCD have its 2 blended pixels like: [S0 S1 S2 S3] -> [-- -- BS0 BS1]
* dstABCD shuffled: [D0 D1 D2 D3] -> [D2 D3 D0 D0]
* PALIGNR takes what's in (): [-- -- (BS0 BS1] [D2 D3) D0 D0]
*/
dstABCD = _mm_shuffle_epi32(dstABCD, 0x0E);
srcABCD = _mm_alignr_epi8(dstABCD, srcABCD, 8);
Colour *old_dst = dst;
src += 2;
dst += 2;
/* It is VERY important to read next data before it gets invalidated in cpu cache. */
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, srcABCD);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (bt_last == BT_ODD) {
ALPHA_BLEND_2(pack_hi_cm);
(*dst).data = EXTR32(srcABCD, 2);
}
break;
}
default: NOT_REACHED();
}
break;
}
case BM_COLOUR_REMAP: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
src_mv += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int nd = effective_width - delta_diff;
effective_width = delta_diff > 0 ? nd : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
uint32 mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
for (uint x = (uint) effective_width / 2; x > 0; x--) {
/* Remap colours. */
if (mvX2 & 0x00FF00FF) {
/* Written so the compiler uses CMOV. */
const Colour src0 = src[0];
const uint m0 = (byte) mvX2;
const uint r0 = remap[m0];
const Colour c0map = (this->LookupColourInPalette(r0).data & 0x00FFFFFF) | (src0.data & 0xFF000000);
Colour c0 = 0; // Use alpha of 0 to keep dst as is.
c0 = r0 == 0 ? c0 : c0map;
c0 = m0 != 0 ? c0 : src0;
INSR32(c0.data, srcABCD, 0);
const Colour src1 = src[1];
const uint m1 = (byte) (mvX2 >> 16);
const uint r1 = remap[m1];
const Colour c1map = (this->LookupColourInPalette(r1).data & 0x00FFFFFF) | (src1.data & 0xFF000000);
Colour c1 = 0;
c1 = r1 == 0 ? c1 : c1map;
c1 = m1 != 0 ? c1 : src1;
INSR32(c1.data, srcABCD, 1);
if ((mvX2 & 0xFF00FF00) != 0x80008000) {
ADJUST_BRIGHTNESS_2(srcABCD, mvX2);
}
}
/* Blend colours. */
ALPHA_BLEND_2(pack_hi_cm);
dstABCD = _mm_shuffle_epi32(dstABCD, 0x0E);
srcABCD = _mm_alignr_epi8(dstABCD, srcABCD, 8);
Colour *old_dst = dst;
dst += 2;
src += 2;
src_mv += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, srcABCD);
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (effective_width & 1) {
/* In case the m-channel is zero, do not remap this pixel in any way */
if (src_mv->m == 0) {
if (src->a < 255) {
ALPHA_BLEND_2(pack_hi_cm);
(*dst).data = EXTR32(srcABCD, 2);
} else {
*dst = src->data;
}
} else {
const uint r = remap[src_mv->m];
if (r != 0) {
Colour remapped_colour = AdjustBrightness(this->LookupColourInPalette(r), src_mv->v);
if (src->a < 255) {
remapped_colour.a = src->a;
INSR32(remapped_colour.data, srcABCD, 0);
ALPHA_BLEND_2(pack_hi_cm);
(*dst).data = EXTR32(srcABCD, 2);
} else
*dst = remapped_colour;
}
}
}
break;
}
default: NOT_REACHED();
}
src_mv_line += si->sprite_width;
break;
}
case BM_TRANSPARENT: {
/* Make the current colour a bit more black, so it looks like this image is transparent.
* rgb = rgb * ((256/4) * 4 - (alpha/4)) / ((256/4) * 4)
*/
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) bp->width / 2; x > 0; x--) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i dstCD = _mm_unpackhi_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2); // Reduce to 64 levels of shades so the max value fits in 16 bits.
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstCD);
Colour *old_dst = dst;
src += 2;
dst += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, dstAB);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (bp->width & 1) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2);
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstAB);
(*dst).data = EXTR32(dstAB, 0);
}
break;
}
}
src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size);
dst_line += bp->pitch;
}
}
#if defined(__GNUC__)
#pragma GCC diagnostic pop
#endif
/**
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
*
* @param bp further blitting parameters
* @param mode blitter mode
* @param zoom zoom level at which we are drawing
*/
void Blitter_32bppSSSE3::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
{
switch (mode) {
case BM_NORMAL: {
const BlockType bt_last = (BlockType) (bp->width & 1);
if (bp->skip_left != 0 || bp->width <= MARGIN_NORMAL_THRESHOLD) {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_SKIP, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_SKIP, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
} else {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
}
break;
}
case BM_COLOUR_REMAP:
if (bp->skip_left != 0 || bp->width <= MARGIN_REMAP_THRESHOLD) {
Draw<BM_COLOUR_REMAP, RM_WITH_SKIP, BT_NONE>(bp, zoom); return;
} else {
Draw<BM_COLOUR_REMAP, RM_WITH_MARGIN, BT_NONE>(bp, zoom); return;
}
case BM_TRANSPARENT: Draw<BM_TRANSPARENT, RM_NONE, BT_NONE>(bp, zoom); return;
default: NOT_REACHED();
}
}
#endif /* WITH_SSE */
+9 -59
View File
@@ -14,71 +14,21 @@
#ifdef WITH_SSE
#ifndef SSE_VERSION
#define SSE_VERSION 3
#endif
#ifndef FULL_ANIMATION
#define FULL_ANIMATION 0
#endif
#include "32bpp_sse2.hpp"
#include "tmmintrin.h"
/* Alpha blend 2 pixels. */
#undef ALPHA_BLEND_2
#define ALPHA_BLEND_2(m_pack_mask) { \
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128()); /* PUNPCKLBW, expand each uint8 into uint16 */ \
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128()); \
\
__m128i alphaAB = _mm_cmpgt_epi16(srcAB, _mm_setzero_si128()); /* PCMPGTW, if (alpha > 0) a++; */ \
alphaAB = _mm_srli_epi16(alphaAB, 15); \
alphaAB = _mm_add_epi16(alphaAB, srcAB); \
alphaAB = _mm_shuffle_epi8(alphaAB, a_cm); /* PSHUFB, put alpha in front of each rgb */ \
\
srcAB = _mm_sub_epi16(srcAB, dstAB); /* PSUBW, (r - Cr) */ \
srcAB = _mm_mullo_epi16(srcAB, alphaAB); /* PMULLW, a*(r - Cr) */ \
srcAB = _mm_srli_epi16(srcAB, 8); /* PSRLW, a*(r - Cr)/256 */ \
srcAB = _mm_add_epi16(srcAB, dstAB); /* PADDW, a*(r - Cr)/256 + Cr */ \
srcABCD = _mm_shuffle_epi8(srcAB, m_pack_mask); /* PSHUFB, pack 2 Colour (without saturation) */ \
}
/* Adjust brightness of 2 pixels. */
#define ADJUST_BRIGHTNESS_2(colourX2, brightnessX2) \
/* The following dataflow differs from the one of AdjustBrightness() only for alpha.
* In order to keep alpha in colAB, insert a 1 in a unused brightness byte (a*1->a).
* OK, not a 1 but DEFAULT_BRIGHTNESS to compensate the div.
*/ \
brightnessX2 &= 0xFF00FF00; \
brightnessX2 += DEFAULT_BRIGHTNESS; \
\
__m128i zero = _mm_setzero_si128(); \
__m128i colAB = _mm_unpacklo_epi8(colourX2, zero); \
\
__m128i briAB; \
INSR64(brightnessX2, briAB, 0); \
briAB = _mm_shuffle_epi8(briAB, briAB_cm); /* DEFAULT_BRIGHTNESS in 0, 0x00 in 2. */ \
colAB = _mm_mullo_epi16(colAB, briAB); \
__m128i colAB_ob = _mm_srli_epi16(colAB, 8+7); \
colAB = _mm_srli_epi16(colAB, 7); \
\
/* Sum overbright.
* Maximum for each rgb is 508 => 9 bits. The highest bit tells if there is overbright.
* -255 is changed in -256 so we just have to take the 8 lower bits into account.
*/ \
colAB = _mm_and_si128(colAB, div_cleaner); \
colAB_ob = _mm_and_si128(colAB_ob, ob_check); \
colAB_ob = _mm_mullo_epi16(colAB_ob, ob_mask); \
colAB_ob = _mm_and_si128(colAB_ob, colAB); \
__m128i obAB = _mm_hadd_epi16(_mm_hadd_epi16(colAB_ob, zero), zero); \
\
obAB = _mm_srli_epi16(obAB, 1); /* Reduce overbright strength. */ \
obAB = _mm_shuffle_epi8(obAB, ob_cm); \
__m128i retAB = ob_mask; /* ob_mask is equal to white. */ \
retAB = _mm_subs_epu16(retAB, colAB); /* (255 - rgb) */ \
retAB = _mm_mullo_epi16(retAB, obAB); /* ob*(255 - rgb) */ \
retAB = _mm_srli_epi16(retAB, 8); /* ob*(255 - rgb)/256 */ \
retAB = _mm_add_epi16(retAB, colAB); /* ob*(255 - rgb)/256 + rgb */ \
\
colourX2 = _mm_packus_epi16(retAB, retAB);
/** The SSSE3 32 bpp blitter (without palette animation). */
class Blitter_32bppSSSE3 : public Blitter_32bppSSE2 {
public:
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last>
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last, bool translucent>
void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
/* virtual */ const char *GetName() { return "32bpp-ssse3"; }
};
+2 -1
View File
@@ -83,7 +83,8 @@ void Blitter_8bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Z
width -= pixels;
switch (mode) {
case BM_COLOUR_REMAP: {
case BM_COLOUR_REMAP:
case BM_CRASH_REMAP: {
const uint8 *remap = bp->remap;
do {
uint m = remap[*src];
+1
View File
@@ -37,6 +37,7 @@ void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoom
switch (mode) {
case BM_COLOUR_REMAP:
case BM_CRASH_REMAP:
colour = bp->remap[*src];
break;
+1
View File
@@ -20,6 +20,7 @@ enum BlitterMode {
BM_NORMAL, ///< Perform the simple blitting.
BM_COLOUR_REMAP, ///< Perform a colour remapping.
BM_TRANSPARENT, ///< Perform transparency colour remapping.
BM_CRASH_REMAP, ///< Perform a crash remapping.
};
/**
+1 -1
View File
@@ -244,7 +244,7 @@ bool HandleBootstrap()
new BootstrapAskForDownloadWindow();
/* Process the user events. */
_video_driver->MainLoop();
VideoDriver::GetInstance()->MainLoop();
/* _exit_game is used to get out of the video driver's main loop.
* In case GM_BOOTSTRAP is still set we did not exit it via the
+4 -3
View File
@@ -772,13 +772,14 @@ static uint ShowAdditionalText(int left, int right, int y, EngineID engine)
{
uint16 callback = GetVehicleCallback(CBID_VEHICLE_ADDITIONAL_TEXT, 0, 0, engine, NULL);
if (callback == CALLBACK_FAILED || callback == 0x400) return y;
const GRFFile *grffile = Engine::Get(engine)->GetGRF();
if (callback > 0x400) {
ErrorUnknownCallbackResult(Engine::Get(engine)->GetGRFID(), CBID_VEHICLE_ADDITIONAL_TEXT, callback);
ErrorUnknownCallbackResult(grffile->grfid, CBID_VEHICLE_ADDITIONAL_TEXT, callback);
return y;
}
StartTextRefStackUsage(6);
uint result = DrawStringMultiLine(left, right, y, INT32_MAX, GetGRFStringID(Engine::Get(engine)->GetGRFID(), 0xD000 + callback), TC_BLACK);
StartTextRefStackUsage(grffile, 6);
uint result = DrawStringMultiLine(left, right, y, INT32_MAX, GetGRFStringID(grffile->grfid, 0xD000 + callback), TC_BLACK);
StopTextRefStackUsage();
return result;
}
+1 -2
View File
@@ -224,8 +224,7 @@ bool VehicleCargoReroute::operator()(CargoPacket *cp)
}
if (this->source != this->destination) {
this->source->RemoveFromMeta(cp_new, VehicleCargoList::MTA_TRANSFER, cp_new->Count());
this->source->AddToMeta(cp_new, VehicleCargoList::MTA_TRANSFER);
this->destination->action_counts[VehicleCargoList::MTA_TRANSFER] += cp_new->Count();
this->destination->AddToMeta(cp_new, VehicleCargoList::MTA_TRANSFER);
}
/* Legal, as front pushing doesn't invalidate iterators in std::list. */
+48 -10
View File
@@ -544,17 +544,54 @@ void VehicleCargoList::InvalidateCache()
/**
* Moves some cargo from one designation to another. You can only move
* between adjacent designations. E.g. you can keep cargo that was
* previously reserved (MTA_LOAD) or you can mark cargo to be transferred
* that was previously marked as to be delivered, but you can't reserve
* cargo that's marked as to be delivered.
* between adjacent designations. E.g. you can keep cargo that was previously
* reserved (MTA_LOAD), but you can't reserve cargo that's marked as to be
* delivered. Furthermore, as this method doesn't change the actual packets,
* you cannot move cargo from or to MTA_TRANSFER. You need a specialized
* template method for that.
* @tparam from Previous designation of cargo.
* @tparam to New designation of cargo.
* @param max_move Maximum amount of cargo to reassign.
* @return Amount of cargo actually reassigned.
*/
uint VehicleCargoList::Reassign(uint max_move, MoveToAction from, MoveToAction to)
template<VehicleCargoList::MoveToAction Tfrom, VehicleCargoList::MoveToAction Tto>
uint VehicleCargoList::Reassign(uint max_move, TileOrStationID)
{
max_move = min(this->action_counts[from], max_move);
assert(Delta((int)from, (int)to) == 1);
this->action_counts[from] -= max_move;
this->action_counts[to] += max_move;
assert_tcompile(Tfrom != MTA_TRANSFER && Tto != MTA_TRANSFER);
assert_tcompile(Tfrom - Tto == 1 || Tto - Tfrom == 1);
max_move = min(this->action_counts[Tfrom], max_move);
this->action_counts[Tfrom] -= max_move;
this->action_counts[Tto] += max_move;
return max_move;
}
/**
* Reassign cargo from MTA_DELIVER to MTA_TRANSFER and take care of the next
* station the cargo wants to visit.
* @param max_move Maximum amount of cargo to reassign.
* @param next_station Station to record as next hop in the reassigned packets.
* @return Amount of cargo actually reassigned.
*/
template<>
uint VehicleCargoList::Reassign<VehicleCargoList::MTA_DELIVER, VehicleCargoList::MTA_TRANSFER>(uint max_move, TileOrStationID next_station)
{
max_move = min(this->action_counts[MTA_DELIVER], max_move);
uint sum = 0;
for (Iterator it(this->packets.begin()); sum < this->action_counts[MTA_TRANSFER] + max_move;) {
CargoPacket *cp = *it++;
sum += cp->Count();
if (sum <= this->action_counts[MTA_TRANSFER]) continue;
if (sum > this->action_counts[MTA_TRANSFER] + max_move) {
CargoPacket *cp_split = cp->Split(sum - this->action_counts[MTA_TRANSFER] + max_move);
sum -= cp_split->Count();
this->packets.insert(it, cp_split);
}
cp->next_station = next_station;
}
this->action_counts[MTA_DELIVER] -= max_move;
this->action_counts[MTA_TRANSFER] += max_move;
return max_move;
}
@@ -806,7 +843,7 @@ uint StationCargoList::Load(uint max_move, VehicleCargoList *dest, TileIndex loa
uint move = min(dest->ActionCount(VehicleCargoList::MTA_LOAD), max_move);
if (move > 0) {
this->reserved_count -= move;
dest->Reassign(move, VehicleCargoList::MTA_LOAD, VehicleCargoList::MTA_KEEP);
dest->Reassign<VehicleCargoList::MTA_LOAD, VehicleCargoList::MTA_KEEP>(move);
return move;
} else {
return this->ShiftCargo(CargoLoad(this, dest, max_move, load_place), next_station, true);
@@ -831,3 +868,4 @@ uint StationCargoList::Reroute(uint max_move, StationCargoList *dest, StationID
*/
template class CargoList<VehicleCargoList, CargoPacketList>;
template class CargoList<StationCargoList, StationCargoPacketMap>;
template uint VehicleCargoList::Reassign<VehicleCargoList::MTA_DELIVER, VehicleCargoList::MTA_KEEP>(uint, TileOrStationID);
+2 -1
View File
@@ -429,7 +429,8 @@ public:
* amount of cargo to be moved. Second parameter is destination (if
* applicable), return value is amount of cargo actually moved. */
uint Reassign(uint max_move, MoveToAction from, MoveToAction to);
template<MoveToAction Tfrom, MoveToAction Tto>
uint Reassign(uint max_move, TileOrStationID update = INVALID_TILE);
uint Return(uint max_move, StationCargoList *dest, StationID next_station);
uint Unload(uint max_move, StationCargoList *dest, CargoPayment *payment);
uint Shift(uint max_move, VehicleCargoList *dest);
+22 -14
View File
@@ -160,8 +160,10 @@ CommandProc CmdCreateStoryPage;
CommandProc CmdCreateStoryPageElement;
CommandProc CmdUpdateStoryPageElement;
CommandProc CmdSetStoryPageTitle;
CommandProc CmdSetStoryPageDate;
CommandProc CmdShowStoryPage;
CommandProc CmdRemoveStoryPage;
CommandProc CmdRemoveStoryPageElement;
CommandProc CmdLevelLand;
@@ -312,8 +314,10 @@ static const Command _command_proc_table[] = {
DEF_CMD(CmdCreateStoryPageElement, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_CREATE_STORY_PAGE_ELEMENT
DEF_CMD(CmdUpdateStoryPageElement, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_UPDATE_STORY_PAGE_ELEMENT
DEF_CMD(CmdSetStoryPageTitle, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_SET_STORY_PAGE_TITLE
DEF_CMD(CmdSetStoryPageDate, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_SET_STORY_PAGE_DATE
DEF_CMD(CmdShowStoryPage, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_SHOW_STORY_PAGE
DEF_CMD(CmdRemoveStoryPage, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_REMOVE_STORY_PAGE
DEF_CMD(CmdRemoveStoryPage, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_REMOVE_STORY_PAGE
DEF_CMD(CmdRemoveStoryPageElement, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_REMOVE_STORY_ELEMENT_PAGE
DEF_CMD(CmdLevelLand, CMD_ALL_TILES | CMD_NO_TEST | CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_LEVEL_LAND; test run might clear tiles multiple times, in execution that only happens once
@@ -571,7 +575,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallbac
/* Only show the error when it's for us. */
StringID error_part1 = GB(cmd, 16, 16);
if (estimate_only || (IsLocalCompany() && error_part1 != 0 && my_cmd)) {
ShowErrorMessage(error_part1, res.GetErrorMessage(), WL_INFO, x, y, res.GetTextRefStackSize(), res.GetTextRefStack());
ShowErrorMessage(error_part1, res.GetErrorMessage(), WL_INFO, x, y, res.GetTextRefStackGRF(), res.GetTextRefStackSize(), res.GetTextRefStack());
}
} else if (estimate_only) {
ShowEstimatedCostOrIncome(res.GetCost(), x, y);
@@ -597,7 +601,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallbac
* @param cmd the command cost to return.
* @param clear whether to keep the storage changes or not.
*/
#define return_dcpi(cmd, clear) { _docommand_recursive = 0; ClearPersistentStorageChanges(clear); return cmd; }
#define return_dcpi(cmd) { _docommand_recursive = 0; return cmd; }
/*!
* Helper function for the toplevel network safe docommand function for the current company.
@@ -641,7 +645,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd,
#endif
/* Do not even think about executing out-of-bounds tile-commands */
if (tile != 0 && (tile >= MapSize() || (!IsValidTile(tile) && (cmd_flags & CMD_ALL_TILES) == 0))) return_dcpi(CMD_ERROR, false);
if (tile != 0 && (tile >= MapSize() || (!IsValidTile(tile) && (cmd_flags & CMD_ALL_TILES) == 0))) return_dcpi(CMD_ERROR);
/* Always execute server and spectator commands as spectator */
bool exec_as_spectator = (cmd_flags & (CMD_SPECTATOR | CMD_SERVER)) != 0;
@@ -650,7 +654,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd,
* The server will ditch any server commands a client sends to it, so effectively
* this guards the server from executing functions for an invalid company. */
if (_game_mode == GM_NORMAL && !exec_as_spectator && !Company::IsValidID(_current_company) && !(_current_company == OWNER_DEITY && (cmd_flags & CMD_DEITY) != 0)) {
return_dcpi(CMD_ERROR, false);
return_dcpi(CMD_ERROR);
}
Backup<CompanyByte> cur_company(_current_company, FILE_LINE);
@@ -661,8 +665,9 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd,
/* Test the command. */
_cleared_object_areas.Clear();
SetTownRatingTestMode(true);
ClearPersistentStorageChanges(false);
BasePersistentStorageArray::SwitchMode(PSM_ENTER_TESTMODE);
CommandCost res = proc(tile, flags, p1, p2, text);
BasePersistentStorageArray::SwitchMode(PSM_LEAVE_TESTMODE);
SetTownRatingTestMode(false);
/* Make sure we're not messing things up here. */
@@ -681,7 +686,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd,
DEBUG(desync, 1, "cmdf: %08x; %02x; %02x; %06x; %08x; %08x; %08x; \"%s\" (%s)", _date, _date_fract, (int)_current_company, tile, p1, p2, cmd & ~CMD_NETWORK_COMMAND, text, GetCommandName(cmd));
}
cur_company.Restore();
return_dcpi(res, false);
return_dcpi(res);
}
#ifdef ENABLE_NETWORK
@@ -697,7 +702,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd,
* This way it's not handled by DoCommand and only the
* actual execution of the command causes messages. Also
* reset the storages as we've not executed the command. */
return_dcpi(CommandCost(), false);
return_dcpi(CommandCost());
}
#endif /* ENABLE_NETWORK */
DEBUG(desync, 1, "cmd: %08x; %02x; %02x; %06x; %08x; %08x; %08x; \"%s\" (%s)", _date, _date_fract, (int)_current_company, tile, p1, p2, cmd & ~CMD_NETWORK_COMMAND, text, GetCommandName(cmd));
@@ -705,8 +710,9 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd,
/* Actually try and execute the command. If no cost-type is given
* use the construction one */
_cleared_object_areas.Clear();
ClearPersistentStorageChanges(false);
BasePersistentStorageArray::SwitchMode(PSM_ENTER_COMMAND);
CommandCost res2 = proc(tile, flags | DC_EXEC, p1, p2, text);
BasePersistentStorageArray::SwitchMode(PSM_LEAVE_COMMAND);
if (cmd_id == CMD_COMPANY_CTRL) {
cur_company.Trash();
@@ -727,7 +733,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd,
if (!test_and_exec_can_differ) {
assert(res.GetCost() == res2.GetCost() && res.Failed() == res2.Failed()); // sanity check
} else if (res2.Failed()) {
return_dcpi(res2, false);
return_dcpi(res2);
}
/* If we're needing more money and we haven't done
@@ -737,7 +743,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd,
* So make sure the signal buffer is empty even in this case */
UpdateSignalsInBuffer();
SetDParam(0, _additional_cash_required);
return_dcpi(CommandCost(STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY), false);
return_dcpi(CommandCost(STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY));
}
/* update last build coordinate of company. */
@@ -751,7 +757,7 @@ CommandCost DoCommandPInternal(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd,
/* update signals if needed */
UpdateSignalsInBuffer();
return_dcpi(res2, true);
return_dcpi(res2);
}
#undef return_dcpi
@@ -779,13 +785,15 @@ uint32 CommandCost::textref_stack[16];
/**
* Activate usage of the NewGRF #TextRefStack for the error message.
* @param number of entries to copy from the temporary NewGRF registers
* @param grffile NewGRF that provides the #TextRefStack
* @param num_registers number of entries to copy from the temporary NewGRF registers
*/
void CommandCost::UseTextRefStack(uint num_registers)
void CommandCost::UseTextRefStack(const GRFFile *grffile, uint num_registers)
{
extern TemporaryStorageArray<int32, 0x110> _temp_store;
assert(num_registers < lengthof(textref_stack));
this->textref_stack_grffile = grffile;
this->textref_stack_size = num_registers;
for (uint i = 0; i < num_registers; i++) {
textref_stack[i] = _temp_store.GetValue(0x100 + i);
+19 -5
View File
@@ -16,6 +16,8 @@
#include "strings_type.h"
#include "tile_type.h"
struct GRFFile;
/**
* Common return value for all commands. Wraps the cost and
* a possible error message/state together.
@@ -25,6 +27,7 @@ class CommandCost {
Money cost; ///< The cost of this action
StringID message; ///< Warning message for when success is unset
bool success; ///< Whether the comment went fine up to this moment
const GRFFile *textref_stack_grffile; ///< NewGRF providing the #TextRefStack content.
uint textref_stack_size; ///< Number of uint32 values to put on the #TextRefStack for the error message.
static uint32 textref_stack[16];
@@ -33,25 +36,25 @@ public:
/**
* Creates a command cost return with no cost and no error
*/
CommandCost() : expense_type(INVALID_EXPENSES), cost(0), message(INVALID_STRING_ID), success(true), textref_stack_size(0) {}
CommandCost() : expense_type(INVALID_EXPENSES), cost(0), message(INVALID_STRING_ID), success(true), textref_stack_grffile(NULL), textref_stack_size(0) {}
/**
* Creates a command return value the is failed with the given message
*/
explicit CommandCost(StringID msg) : expense_type(INVALID_EXPENSES), cost(0), message(msg), success(false), textref_stack_size(0) {}
explicit CommandCost(StringID msg) : expense_type(INVALID_EXPENSES), cost(0), message(msg), success(false), textref_stack_grffile(NULL), textref_stack_size(0) {}
/**
* Creates a command cost with given expense type and start cost of 0
* @param ex_t the expense type
*/
explicit CommandCost(ExpensesType ex_t) : expense_type(ex_t), cost(0), message(INVALID_STRING_ID), success(true), textref_stack_size(0) {}
explicit CommandCost(ExpensesType ex_t) : expense_type(ex_t), cost(0), message(INVALID_STRING_ID), success(true), textref_stack_grffile(NULL), textref_stack_size(0) {}
/**
* Creates a command return value with the given start cost and expense type
* @param ex_t the expense type
* @param cst the initial cost of this command
*/
CommandCost(ExpensesType ex_t, const Money &cst) : expense_type(ex_t), cost(cst), message(INVALID_STRING_ID), success(true), textref_stack_size(0) {}
CommandCost(ExpensesType ex_t, const Money &cst) : expense_type(ex_t), cost(cst), message(INVALID_STRING_ID), success(true), textref_stack_grffile(NULL), textref_stack_size(0) {}
/**
@@ -103,7 +106,16 @@ public:
this->message = message;
}
void UseTextRefStack(uint num_registers);
void UseTextRefStack(const GRFFile *grffile, uint num_registers);
/**
* Returns the NewGRF providing the #TextRefStack of the error message.
* @return the NewGRF.
*/
const GRFFile *GetTextRefStackGRF() const
{
return this->textref_stack_grffile;
}
/**
* Returns the number of uint32 values for the #TextRefStack of the error message.
@@ -276,8 +288,10 @@ enum Commands {
CMD_CREATE_STORY_PAGE_ELEMENT, ///< create a new story page element
CMD_UPDATE_STORY_PAGE_ELEMENT, ///< update a story page element
CMD_SET_STORY_PAGE_TITLE, ///< update title of a story page
CMD_SET_STORY_PAGE_DATE, ///< update date of a story page
CMD_SHOW_STORY_PAGE, ///< show a story page
CMD_REMOVE_STORY_PAGE, ///< remove a story page
CMD_REMOVE_STORY_PAGE_ELEMENT, ///< remove a story page element
CMD_LEVEL_LAND, ///< level land
CMD_BUILD_LOCK, ///< build a lock
+7 -45
View File
@@ -853,59 +853,21 @@ CommandCost CmdCompanyCtrl(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
MarkWholeScreenDirty();
}
if (_network_server) {
if (ci != NULL) {
/* ci is only NULL when replaying.
* When replaying no client is actually in need of an update. */
ci->client_playas = c->index;
NetworkUpdateClientInfo(ci->client_id);
}
if (Company::IsValidID(c->index)) {
_network_company_states[c->index].months_empty = 0;
_network_company_states[c->index].password[0] = '\0';
NetworkServerUpdateCompanyPassworded(c->index, false);
/* XXX - When a client joins, we automatically set its name to the
* client's name (for some reason). As it stands now only the server
* knows the client's name, so it needs to send out a "broadcast" to
* do this. To achieve this we send a network command. However, it
* uses _local_company to execute the command as. To prevent abuse
* (eg. only yourself can change your name/company), we 'cheat' by
* impersonation _local_company as the server. Not the best solution;
* but it works.
* TODO: Perhaps this could be improved by when the client is ready
* with joining to let it send itself the command, and not the server?
* For example in network_client.c:534? */
if (ci != NULL) {
/* ci is only NULL when replaying.
* When replaying, the command to rename the president will
* automatically be ran, so this is not even needed to get
* the exact same state. */
NetworkSendCommand(0, 0, 0, CMD_RENAME_PRESIDENT, NULL, ci->client_name, c->index);
}
}
/* Announce new company on network. */
NetworkAdminCompanyInfo(c, true);
if (ci != NULL) {
/* ci is only NULL when replaying.
* When replaying, the message that someone started a new company
* is not interesting at all. */
NetworkServerSendChat(NETWORK_ACTION_COMPANY_NEW, DESTTYPE_BROADCAST, 0, "", ci->client_id, c->index + 1);
}
}
NetworkServerNewCompany(c, ci);
#endif /* ENABLE_NETWORK */
break;
}
case 1: // Make a new AI company
case 1: { // Make a new AI company
if (!(flags & DC_EXEC)) return CommandCost();
if (company_id != INVALID_COMPANY && (company_id >= MAX_COMPANIES || Company::IsValidID(company_id))) return CMD_ERROR;
DoStartupNewCompany(true, company_id);
Company *c = DoStartupNewCompany(true, company_id);
#ifdef ENABLE_NETWORK
if (c != NULL) NetworkServerNewCompany(c, NULL);
#endif /* ENABLE_NETWORK */
break;
}
case 2: { // Delete a company
CompanyRemoveReason reason = (CompanyRemoveReason)GB(p2, 0, 2);
+1 -1
View File
@@ -2013,7 +2013,7 @@ struct CompanyWindow : Window
NWidgetStacked *wi = this->GetWidget<NWidgetStacked>(WID_C_SELECT_BUTTONS);
if (plane != wi->shown_plane) {
wi->SetDisplayedPlane(plane);
this->SetDirty();
this->InvalidateData();
return;
}
+1 -1
View File
@@ -475,7 +475,7 @@ void IConsoleCmdExec(const char *cmdstr)
DEBUG(console, 8, "Token %d is: '%s'", i, tokens[i]);
}
if (tokens[0] == '\0') return; // don't execute empty commands
if (StrEmpty(tokens[0])) return; // don't execute empty commands
/* 2. Determine type of command (cmd or alias) and execute
* First try commands, then aliases. Execute
* the found action taking into account its hooking code
+2 -2
View File
@@ -185,7 +185,7 @@ struct IConsoleWindow : Window
~IConsoleWindow()
{
_iconsole_mode = ICONSOLE_CLOSED;
_video_driver->EditBoxLostFocus();
VideoDriver::GetInstance()->EditBoxLostFocus();
}
/**
@@ -374,7 +374,7 @@ struct IConsoleWindow : Window
virtual void OnFocusLost()
{
_video_driver->EditBoxLostFocus();
VideoDriver::GetInstance()->EditBoxLostFocus();
}
};
+3
View File
@@ -81,6 +81,9 @@ private:
*/
template <class Titem, typename Tindex, size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
struct Pool : PoolBase {
/* Ensure Tmax_size is within the bounds of Tindex. */
assert_compile((uint64)(Tmax_size - 1) >> 8 * sizeof(Tindex) == 0);
static const size_t MAX_SIZE = Tmax_size; ///< Make template parameter accessible from outside
const char * const name; ///< Name of this pool
+142 -57
View File
@@ -12,16 +12,90 @@
#ifndef SMALLSTACK_TYPE_HPP
#define SMALLSTACK_TYPE_HPP
#include "pool_type.hpp"
#include "pool_func.hpp"
#include "smallvec_type.hpp"
#include "../thread/thread.h"
/**
* A simplified pool which stores values instead of pointers and doesn't
* redefine operator new/delete. It also never zeroes memory and always reuses
* it.
*/
template<typename Titem, typename Tindex, Tindex Tgrowth_step, Tindex Tmax_size>
class SimplePool {
public:
inline SimplePool() : first_unused(0), first_free(0), mutex(ThreadMutex::New()) {}
inline ~SimplePool() { delete this->mutex; }
/**
* Get the mutex. We don't lock the mutex in the pool methods as the
* SmallStack isn't necessarily in a consistent state after each method.
* @return Mutex.
*/
inline ThreadMutex *GetMutex() { return this->mutex; }
/**
* Get the item at position index.
* @return Item at index.
*/
inline Titem &Get(Tindex index) { return this->data[index]; }
/**
* Create a new item and return its index.
* @return Index of new item.
*/
inline Tindex Create()
{
Tindex index = this->FindFirstFree();
if (index < Tmax_size) {
this->data[index].valid = true;
this->first_free = index + 1;
this->first_unused = max(this->first_unused, this->first_free);
}
return index;
}
/**
* Destroy (or rather invalidate) the item at the given index.
* @param index Index of item to be destroyed.
*/
inline void Destroy(Tindex index)
{
this->data[index].valid = false;
this->first_free = min(this->first_free, index);
}
private:
inline Tindex FindFirstFree()
{
Tindex index = this->first_free;
for (; index < this->first_unused; index++) {
if (!this->data[index].valid) return index;
}
if (index >= this->data.Length() && index < Tmax_size) {
this->data.Resize(index + 1);
}
return index;
}
struct SimplePoolPoolItem : public Titem {
bool valid;
};
Tindex first_unused;
Tindex first_free;
ThreadMutex *mutex;
SmallVector<SimplePoolPoolItem, Tgrowth_step> data;
};
/**
* Base class for SmallStack. We cannot add this into SmallStack itself as
* certain compilers don't like it.
*/
template <typename Tindex, typename Titem>
class SmallStackItem {
protected:
template <typename Titem, typename Tindex>
struct SmallStackItem {
Tindex next; ///< Pool index of next item.
Titem value; ///< Value of current item.
@@ -50,30 +124,30 @@ protected:
* 5. You can choose your own index type, so that you can align it with your
* value type. E.G. value types of 16 bits length like to be combined with
* index types of the same length.
* 6. All accesses to the underlying pool are guarded by a mutex and atomic in
* the sense that the mutex stays locked until the pool has reacquired a
* consistent state. This means that even though a common data structure is
* used the SmallStack is still reentrant.
* @tparam Titem Value type to be used.
* @tparam Tindex Index type to use for the pool.
* @tparam Tinvalid Invalid item to keep at the bottom of each stack.
* @tparam Tgrowth_step Growth step for pool.
* @tparam Tmax_size Maximum size for pool.
*/
template <typename Titem, typename Tindex, Titem Tinvalid, size_t Tgrowth_step, size_t Tmax_size>
class SmallStack : public SmallStackItem<Tindex, Titem> {
protected:
class PooledSmallStack;
template <typename Titem, typename Tindex, Titem Tinvalid, Tindex Tgrowth_step, Tindex Tmax_size>
class SmallStack : public SmallStackItem<Titem, Tindex> {
public:
typedef SmallStackItem<Titem, Tindex> Item;
/**
* Create a branch in the pool if necessary.
* SmallStack item that can be kept in a pool.
*/
void Branch()
{
if (PooledSmallStack::IsValidID(this->next)) {
PooledSmallStack::Get(this->next)->CreateBranch();
}
}
struct PooledSmallStack : public Item {
Tindex branch_count; ///< Number of branches in the tree structure this item is parent of
};
public:
typedef SmallStackItem<Tindex, Titem> Item;
typedef Pool<PooledSmallStack, Tindex, Tgrowth_step, Tmax_size, PT_NORMAL, true, false> SmallStackPool;
typedef SimplePool<PooledSmallStack, Tindex, Tgrowth_step, Tmax_size> SmallStackPool;
/**
* Constructor for a stack with one or two items in it.
@@ -86,14 +160,8 @@ public:
*/
inline ~SmallStack()
{
if (PooledSmallStack::IsValidID(this->next)) {
PooledSmallStack *item = PooledSmallStack::Get(this->next);
if (item->NumBranches() == 0) {
delete item;
} else {
item->DeleteBranch();
}
}
/* Pop() locks the mutex and after each pop the pool is consistent.*/
while (this->next != Tmax_size) this->Pop();
}
/**
@@ -110,23 +178,32 @@ public:
inline SmallStack &operator=(const SmallStack &other)
{
if (this == &other) return *this;
this->~SmallStack();
while (this->next != Tmax_size) this->Pop();
this->next = other.next;
this->value = other.value;
/* Deleting and branching are independent operations, so it's fine to
* acquire separate locks for them. */
this->Branch();
return *this;
}
/**
* Push a new item onto the stack.
* Pushes a new item onto the stack if there is still space in the
* underlying pool. Otherwise the topmost item's value gets overwritten.
* @param item Item to be pushed.
*/
inline void Push(const Titem &item)
{
if (this->value != Tinvalid) {
assert(PooledSmallStack::CanAllocateItem());
PooledSmallStack *next = new PooledSmallStack(this->value, this->next);
this->next = next->index;
ThreadMutexLocker lock(_pool.GetMutex());
Tindex new_item = _pool.Create();
if (new_item != Tmax_size) {
PooledSmallStack &pushed = _pool.Get(new_item);
pushed.value = this->value;
pushed.next = this->next;
pushed.branch_count = 0;
this->next = new_item;
}
}
this->value = item;
}
@@ -138,17 +215,26 @@ public:
inline Titem Pop()
{
Titem ret = this->value;
if (!PooledSmallStack::IsValidID(this->next)) {
if (this->next == Tmax_size) {
this->value = Tinvalid;
} else {
PooledSmallStack *next = PooledSmallStack::Get(this->next);
static_cast<Item &>(*this) = *next;
if (next->NumBranches() == 0) {
delete next;
ThreadMutexLocker lock(_pool.GetMutex());
PooledSmallStack &popped = _pool.Get(this->next);
this->value = popped.value;
if (popped.branch_count == 0) {
_pool.Destroy(this->next);
} else {
next->DeleteBranch();
this->Branch();
--popped.branch_count;
/* We can't use Branch() here as we already have the mutex.*/
if (popped.next != Tmax_size) {
++(_pool.Get(popped.next).branch_count);
}
}
/* Accessing popped here is no problem as the pool will only set
* the validity flag, not actually delete the item, on Destroy().
* It's impossible for another thread to acquire the same item in
* the mean time because of the mutex. */
this->next = popped.next;
}
return ret;
}
@@ -159,7 +245,7 @@ public:
*/
inline bool IsEmpty() const
{
return this->value == Tinvalid && !PooledSmallStack::IsValidID(this->next);
return this->value == Tinvalid && this->next == Tmax_size;
}
/**
@@ -170,11 +256,14 @@ public:
inline bool Contains(const Titem &item) const
{
if (item == Tinvalid || item == this->value) return true;
const SmallStack *in_list = this;
while (PooledSmallStack::IsValidID(in_list->next)) {
in_list = static_cast<const SmallStack *>(
static_cast<const Item *>(PooledSmallStack::Get(in_list->next)));
if (in_list->value == item) return true;
if (this->next != Tmax_size) {
ThreadMutexLocker lock(_pool.GetMutex());
const SmallStack *in_list = this;
do {
in_list = static_cast<const SmallStack *>(
static_cast<const Item *>(&_pool.Get(in_list->next)));
if (in_list->value == item) return true;
} while (in_list->next != Tmax_size);
}
return false;
}
@@ -183,19 +272,15 @@ protected:
static SmallStackPool _pool;
/**
* SmallStack item that can be kept in a pool (by having an index).
* Create a branch in the pool if necessary.
*/
class PooledSmallStack : public Item, public SmallStackPool::template PoolItem<&SmallStack::_pool> {
private:
Tindex branch_count; ///< Number of branches in the tree structure this item is parent of
public:
PooledSmallStack(Titem value, Tindex next) : Item(value, next), branch_count(0) {}
inline void CreateBranch() { ++this->branch_count; }
inline void DeleteBranch() { --this->branch_count; }
inline Tindex NumBranches() { return this->branch_count; }
};
inline void Branch()
{
if (this->next != Tmax_size) {
ThreadMutexLocker lock(_pool.GetMutex());
++(_pool.Get(this->next).branch_count);
}
}
};
#endif
+6 -6
View File
@@ -138,14 +138,14 @@ char *CrashLog::LogConfiguration(char *buffer, const char *last) const
BaseGraphics::GetUsedSet() == NULL ? "none" : BaseGraphics::GetUsedSet()->name,
BaseGraphics::GetUsedSet() == NULL ? UINT32_MAX : BaseGraphics::GetUsedSet()->version,
_current_language == NULL ? "none" : _current_language->file,
_music_driver == NULL ? "none" : _music_driver->GetName(),
MusicDriver::GetInstance() == NULL ? "none" : MusicDriver::GetInstance()->GetName(),
BaseMusic::GetUsedSet() == NULL ? "none" : BaseMusic::GetUsedSet()->name,
BaseMusic::GetUsedSet() == NULL ? UINT32_MAX : BaseMusic::GetUsedSet()->version,
_networking ? (_network_server ? "server" : "client") : "no",
_sound_driver == NULL ? "none" : _sound_driver->GetName(),
SoundDriver::GetInstance() == NULL ? "none" : SoundDriver::GetInstance()->GetName(),
BaseSounds::GetUsedSet() == NULL ? "none" : BaseSounds::GetUsedSet()->name,
BaseSounds::GetUsedSet() == NULL ? UINT32_MAX : BaseSounds::GetUsedSet()->version,
_video_driver == NULL ? "none" : _video_driver->GetName()
VideoDriver::GetInstance() == NULL ? "none" : VideoDriver::GetInstance()->GetName()
);
buffer += seprintf(buffer, last,
@@ -482,7 +482,7 @@ bool CrashLog::MakeCrashLog() const
*/
/* static */ void CrashLog::AfterCrashLogCleanup()
{
if (_music_driver != NULL) _music_driver->Stop();
if (_sound_driver != NULL) _sound_driver->Stop();
if (_video_driver != NULL) _video_driver->Stop();
if (MusicDriver::GetInstance() != NULL) MusicDriver::GetInstance()->Stop();
if (SoundDriver::GetInstance() != NULL) SoundDriver::GetInstance()->Stop();
if (VideoDriver::GetInstance() != NULL) VideoDriver::GetInstance()->Stop();
}
+5 -5
View File
@@ -144,14 +144,14 @@ void CheckSwitchToEuro()
* Will fill _currency_specs array with
* default values from origin_currency_specs
* Called only from newgrf.cpp and settings.cpp.
* @param preserve_custom will not reset custom currency (the latest one on the list)
* if ever it is flagged to true. In which case, the total size of the memory to move
* will be one currency spec less, thus preserving the custom currency from been
* overwritten.
* @param preserve_custom will not reset custom currency
*/
void ResetCurrencies(bool preserve_custom)
{
memcpy(&_currency_specs, &origin_currency_specs, sizeof(origin_currency_specs) - (preserve_custom ? sizeof(_custom_currency) : 0));
for (uint i = 0; i < CURRENCY_END; i++) {
if (preserve_custom && i == CURRENCY_CUSTOM) continue;
_currency_specs[i] = origin_currency_specs[i];
}
}
/**
+2 -2
View File
@@ -41,13 +41,13 @@ void CcBuildDocks(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p
{
if (result.Failed()) return;
if (_settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT, tile);
if (_settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT_WATER, tile);
if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace();
}
void CcBuildCanal(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
{
if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT, tile);
if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT_WATER, tile);
}
+25 -9
View File
@@ -16,17 +16,14 @@
#include "video/video_driver.hpp"
#include "string_func.h"
VideoDriver *_video_driver; ///< The currently active video driver.
char *_ini_videodriver; ///< The video driver a stored in the configuration file.
int _num_resolutions; ///< The number of resolutions.
Dimension _resolutions[32]; ///< List of resolutions.
Dimension _cur_resolution; ///< The current resolution.
bool _rightclick_emulate; ///< Whether right clicking is emulated.
SoundDriver *_sound_driver; ///< The currently active sound driver.
char *_ini_sounddriver; ///< The sound driver a stored in the configuration file.
MusicDriver *_music_driver; ///< The currently active music driver.
char *_ini_musicdriver; ///< The music driver a stored in the configuration file.
char *_ini_blitter; ///< The blitter as stored in the configuration file.
@@ -86,9 +83,25 @@ int GetDriverParamInt(const char * const *parm, const char *name, int def)
* @param type the type of driver to select
* @post Sets the driver so GetCurrentDriver() returns it too.
*/
Driver *DriverFactoryBase::SelectDriver(const char *name, Driver::Type type)
void DriverFactoryBase::SelectDriver(const char *name, Driver::Type type)
{
if (GetDrivers().size() == 0) return NULL;
if (!DriverFactoryBase::SelectDriverImpl(name, type)) {
StrEmpty(name) ?
usererror("Failed to autoprobe %s driver", GetDriverTypeName(type)) :
usererror("Failed to select requested %s driver '%s'", GetDriverTypeName(type), name);
}
}
/**
* Find the requested driver and return its class.
* @param name the driver to select.
* @param type the type of driver to select
* @post Sets the driver so GetCurrentDriver() returns it too.
* @return True upon success, otherwise false.
*/
bool DriverFactoryBase::SelectDriverImpl(const char *name, Driver::Type type)
{
if (GetDrivers().size() == 0) return false;
if (StrEmpty(name)) {
/* Probe for this driver, but do not fall back to dedicated/null! */
@@ -101,15 +114,18 @@ Driver *DriverFactoryBase::SelectDriver(const char *name, Driver::Type type)
if (d->type != type) continue;
if (d->priority != priority) continue;
Driver *oldd = *GetActiveDriver(type);
Driver *newd = d->CreateInstance();
*GetActiveDriver(type) = newd;
const char *err = newd->Start(NULL);
if (err == NULL) {
DEBUG(driver, 1, "Successfully probed %s driver '%s'", GetDriverTypeName(type), d->name);
delete *GetActiveDriver(type);
*GetActiveDriver(type) = newd;
return newd;
delete oldd;
return true;
}
*GetActiveDriver(type) = oldd;
DEBUG(driver, 1, "Probing %s driver '%s' failed with error: %s", GetDriverTypeName(type), d->name, err);
delete newd;
}
@@ -158,7 +174,7 @@ Driver *DriverFactoryBase::SelectDriver(const char *name, Driver::Type type)
DEBUG(driver, 1, "Successfully loaded %s driver '%s'", GetDriverTypeName(type), d->name);
delete *GetActiveDriver(type);
*GetActiveDriver(type) = newd;
return newd;
return true;
}
usererror("No such %s driver: %s\n", GetDriverTypeName(type), buffer);
}
+7 -1
View File
@@ -59,6 +59,10 @@ DECLARE_POSTFIX_INCREMENT(Driver::Type)
/** Base for all driver factories. */
class DriverFactoryBase {
private:
friend class MusicDriver;
friend class SoundDriver;
friend class VideoDriver;
Driver::Type type; ///< The type of driver.
int priority; ///< The priority of this factory.
const char *name; ///< The name of the drivers of this factory.
@@ -97,6 +101,8 @@ private:
return driver_type_name[type];
}
static bool SelectDriverImpl(const char *name, Driver::Type type);
protected:
DriverFactoryBase(Driver::Type type, int priority, const char *name, const char *description);
@@ -114,7 +120,7 @@ public:
}
}
static Driver *SelectDriver(const char *name, Driver::Type type);
static void SelectDriver(const char *name, Driver::Type type);
static char *GetDriversInfo(char *p, const char *last);
/**
+160 -62
View File
@@ -19,6 +19,7 @@
#include "network/network_func.h"
#include "ai/ai.hpp"
#include "aircraft.h"
#include "train.h"
#include "newgrf_engine.h"
#include "engine_base.h"
#include "ground_vehicle.hpp"
@@ -1066,9 +1067,9 @@ static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID dest, Ti
/* Update station statistics */
if (accepted > 0) {
SetBit(st->goods[cargo_type].acceptance_pickup, GoodsEntry::GES_EVER_ACCEPTED);
SetBit(st->goods[cargo_type].acceptance_pickup, GoodsEntry::GES_CURRENT_MONTH);
SetBit(st->goods[cargo_type].acceptance_pickup, GoodsEntry::GES_ACCEPTED_BIGTICK);
SetBit(st->goods[cargo_type].status, GoodsEntry::GES_EVER_ACCEPTED);
SetBit(st->goods[cargo_type].status, GoodsEntry::GES_CURRENT_MONTH);
SetBit(st->goods[cargo_type].status, GoodsEntry::GES_ACCEPTED_BIGTICK);
}
/* Update company statistics */
@@ -1240,7 +1241,7 @@ void PrepareUnload(Vehicle *front_v)
const GoodsEntry *ge = &st->goods[v->cargo_type];
if (v->cargo_cap > 0 && v->cargo.TotalCount() > 0) {
v->cargo.Stage(
HasBit(ge->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE),
HasBit(ge->status, GoodsEntry::GES_ACCEPTANCE),
front_v->last_station_visited, next_station,
front_v->current_order.GetUnloadType(), ge,
front_v->cargo_payment);
@@ -1338,21 +1339,135 @@ static void ReserveConsist(Station *st, Vehicle *u, CargoArray *consist_capleft,
}
/**
* Checks whether an articulated vehicle is empty.
* @param v Vehicle
* @return true if all parts are empty.
* Iterate the articulated parts of a vehicle, also considering the special cases of "normal"
* aircraft and double headed trains. Apply an action to each vehicle and immediately return false
* if that action does so. Otherwise return true.
* @tparam Taction Class of action to be applied. Must implement bool operator()([const] Vehicle *).
* @param v First articulated part.
* @param action Instance of Taction.
* @return false if any of the action invocations returned false, true otherwise.
*/
static bool IsArticulatedVehicleEmpty(Vehicle *v)
template<class Taction>
bool IterateVehicleParts(Vehicle *v, Taction action)
{
v = v->GetFirstEnginePart();
for (; v != NULL; v = v->HasArticulatedPart() ? v->GetNextArticulatedPart() : NULL) {
if (v->cargo.StoredCount() != 0) return false;
for (Vehicle *w = v; w != NULL;
w = w->HasArticulatedPart() ? w->GetNextArticulatedPart() : NULL) {
if (!action(w)) return false;
if (w->type == VEH_TRAIN) {
Train *train = Train::From(w);
if (train->IsMultiheaded() && !action(train->other_multiheaded_part)) return false;
}
}
if (v->type == VEH_AIRCRAFT && Aircraft::From(v)->IsNormalAircraft()) return action(v->Next());
return true;
}
/**
* Action to check if a vehicle has no stored cargo.
*/
struct IsEmptyAction
{
/**
* Checks if the vehicle has stored cargo.
* @param v Vehicle to be checked.
* @return true if v is either empty or has only reserved cargo, false otherwise.
*/
bool operator()(const Vehicle *v)
{
return v->cargo.StoredCount() == 0;
}
};
/**
* Refit preparation action.
*/
struct PrepareRefitAction
{
CargoArray &consist_capleft; ///< Capacities left in the consist.
uint32 &refit_mask; ///< Bitmask of possible refit cargoes.
/**
* Create a refit preparation action.
* @param consist_capleft Capacities left in consist, to be updated here.
* @param refit_mask Refit mask to be constructed from refit information of vehicles.
*/
PrepareRefitAction(CargoArray &consist_capleft, uint32 &refit_mask) :
consist_capleft(consist_capleft), refit_mask(refit_mask) {}
/**
* Prepares for refitting of a vehicle, subtracting its free capacity from consist_capleft and
* adding the cargoes it can refit to to the refit mask.
* @param v The vehicle to be refitted.
* @return true.
*/
bool operator()(const Vehicle *v)
{
this->consist_capleft[v->cargo_type] -= v->cargo_cap - v->cargo.ReservedCount();
this->refit_mask |= EngInfo(v->engine_type)->refit_mask;
return true;
}
};
/**
* Action for returning reserved cargo.
*/
struct ReturnCargoAction
{
Station *st; ///< Station to give the returned cargo to.
StationID next_hop; ///< Next hop the cargo should be assigned to.
/**
* Construct a cargo return action.
* @param st Station to give the returned cargo to.
* @param next_one Next hop the cargo should be assigned to.
*/
ReturnCargoAction(Station *st, StationID next_one) : st(st), next_hop(next_one) {}
/**
* Return all reserved cargo from a vehicle.
* @param v Vehicle to return cargo from.
* @return true.
*/
bool operator()(Vehicle *v)
{
v->cargo.Return(UINT_MAX, &this->st->goods[v->cargo_type].cargo, this->next_hop);
return true;
}
};
/**
* Action for finalizing a refit.
*/
struct FinalizeRefitAction
{
CargoArray &consist_capleft; ///< Capacities left in the consist.
Station *st; ///< Station to reserve cargo from.
StationIDStack &next_station; ///< Next hops to reserve cargo for.
/**
* Create a finalizing action.
* @param consist_capleft Capacities left in the consist.
* @param st Station to reserve cargo from.
* @param next_station Next hops to reserve cargo for.
*/
FinalizeRefitAction(CargoArray &consist_capleft, Station *st, StationIDStack &next_station) :
consist_capleft(consist_capleft), st(st), next_station(next_station) {}
/**
* Reserve cargo from the station and update the remaining consist capacities with the
* vehicle's remaining free capacity.
* @param v Vehicle to be finalized.
* @return true.
*/
bool operator()(Vehicle *v)
{
this->st->goods[v->cargo_type].cargo.Reserve(v->cargo_cap - v->cargo.RemainingCount(),
&v->cargo, st->xy, next_station);
this->consist_capleft[v->cargo_type] += v->cargo_cap - v->cargo.RemainingCount();
return true;
}
};
/**
* Refit a vehicle in a station.
* @param v Vehicle to be refitted.
@@ -1363,32 +1478,15 @@ static bool IsArticulatedVehicleEmpty(Vehicle *v)
*/
static void HandleStationRefit(Vehicle *v, CargoArray &consist_capleft, Station *st, StationIDStack next_station, CargoID new_cid)
{
if (v->type == VEH_AIRCRAFT && (!Aircraft::From(v)->IsNormalAircraft() || v->Next()->cargo.StoredCount() > 0)) {
return;
}
bool is_normal_aircraft = (v->type == VEH_AIRCRAFT && Aircraft::From(v)->IsNormalAircraft());
Vehicle *v_start = v->GetFirstEnginePart();
/* Remove old capacity from consist capacity */
consist_capleft[v_start->cargo_type] -= (v_start->cargo_cap - v_start->cargo.ReservedCount());
for (Vehicle *w = v_start; w->HasArticulatedPart(); ) {
w = w->GetNextArticulatedPart();
consist_capleft[w->cargo_type] -= (w->cargo_cap - w->cargo.ReservedCount());
}
if (is_normal_aircraft) {
consist_capleft[v->Next()->cargo_type] -= (v->Next()->cargo_cap - v->Next()->cargo.ReservedCount());
}
if (!IterateVehicleParts(v_start, IsEmptyAction())) return;
Backup<CompanyByte> cur_company(_current_company, v->owner, FILE_LINE);
/* Check if all articulated parts are empty and collect refit mask. */
uint32 refit_mask = v->GetEngine()->info.refit_mask;
Vehicle *w = v_start;
while (w->HasArticulatedPart()) {
w = w->GetNextArticulatedPart();
refit_mask |= EngInfo(w->engine_type)->refit_mask;
}
/* Remove old capacity from consist capacity and collect refit mask. */
IterateVehicleParts(v_start, PrepareRefitAction(consist_capleft, refit_mask));
if (new_cid == CT_AUTO_REFIT) {
/* Get a refittable cargo type with waiting cargo for next_station or INVALID_STATION. */
@@ -1401,8 +1499,13 @@ static void HandleStationRefit(Vehicle *v, CargoArray &consist_capleft, Station
DoCommand(v_start->tile, v_start->index, cid | 1U << 6 | 0xFF << 8 | 1U << 16, DC_QUERY_COST, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts.
/* Try to balance different loadable cargoes between parts of the consist, so that
* all of them can be loaded. Avoid a situation where all vehicles suddenly switch
* to the first loadable cargo for which there is only one packet. */
if (_returned_refit_capacity > 0 && consist_capleft[cid] < consist_capleft[new_cid]) {
* to the first loadable cargo for which there is only one packet. If the capacities
* are equal refit to the cargo of which most is available. This is important for
* consists of only a single vehicle as those will generally have a consist_capleft
* of 0 for all cargoes. */
if (_returned_refit_capacity > 0 && (consist_capleft[cid] < consist_capleft[new_cid] ||
(consist_capleft[cid] == consist_capleft[new_cid] &&
st->goods[cid].cargo.AvailableCount() > st->goods[new_cid].cargo.AvailableCount()))) {
new_cid = cid;
}
}
@@ -1411,29 +1514,13 @@ static void HandleStationRefit(Vehicle *v, CargoArray &consist_capleft, Station
/* Refit if given a valid cargo. */
if (new_cid < NUM_CARGO && new_cid != v_start->cargo_type) {
StationID next_one = StationIDStack(next_station).Pop();
v_start->cargo.Return(UINT_MAX, &st->goods[v_start->cargo_type].cargo, next_one);
for (w = v_start; w->HasArticulatedPart();) {
w = w->GetNextArticulatedPart();
w->cargo.Return(UINT_MAX, &st->goods[w->cargo_type].cargo, next_one);
}
if (is_normal_aircraft) {
v->Next()->cargo.Return(UINT_MAX, &st->goods[v->Next()->cargo_type].cargo, next_one);
}
IterateVehicleParts(v_start, ReturnCargoAction(st, StationIDStack(next_station).Pop()));
CommandCost cost = DoCommand(v_start->tile, v_start->index, new_cid | 1U << 6 | 0xFF << 8 | 1U << 16, DC_EXEC, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts.
if (cost.Succeeded()) v->First()->profit_this_year -= cost.GetCost() << 8;
}
/* Add new capacity to consist capacity and reserve cargo */
w = v_start;
do {
st->goods[w->cargo_type].cargo.Reserve(w->cargo_cap, &w->cargo, st->xy, next_station);
consist_capleft[w->cargo_type] += w->cargo_cap - w->cargo.RemainingCount();
w = w->HasArticulatedPart() ? w->GetNextArticulatedPart() : NULL;
} while (w != NULL);
if (is_normal_aircraft) {
consist_capleft[v->Next()->cargo_type] += v->Next()->cargo_cap - v->Next()->cargo.RemainingCount();
}
IterateVehicleParts(v_start, FinalizeRefitAction(consist_capleft, st, next_station));
cur_company.Restore();
}
@@ -1503,12 +1590,12 @@ static void LoadUnloadVehicle(Vehicle *front)
payment->SetCargo(v->cargo_type);
if (!HasBit(ge->acceptance_pickup, GoodsEntry::GES_ACCEPTANCE) && v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER) > 0) {
if (!HasBit(ge->status, GoodsEntry::GES_ACCEPTANCE) && v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER) > 0) {
/* The station does not accept our goods anymore. */
if (front->current_order.GetUnloadType() & (OUFB_TRANSFER | OUFB_UNLOAD)) {
/* Transfer instead of delivering. */
v->cargo.Reassign(v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER),
VehicleCargoList::MTA_DELIVER, VehicleCargoList::MTA_TRANSFER);
v->cargo.Reassign<VehicleCargoList::MTA_DELIVER, VehicleCargoList::MTA_TRANSFER>(
v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER), INVALID_STATION);
} else {
uint new_remaining = v->cargo.RemainingCount() + v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER);
if (v->cargo_cap < new_remaining) {
@@ -1517,8 +1604,8 @@ static void LoadUnloadVehicle(Vehicle *front)
}
/* Keep instead of delivering. This may lead to no cargo being unloaded, so ...*/
v->cargo.Reassign(v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER),
VehicleCargoList::MTA_DELIVER, VehicleCargoList::MTA_KEEP);
v->cargo.Reassign<VehicleCargoList::MTA_DELIVER, VehicleCargoList::MTA_KEEP>(
v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER));
/* ... say we unloaded something, otherwise we'll think we didn't unload
* something and we didn't load something, so we must be finished
@@ -1528,8 +1615,18 @@ static void LoadUnloadVehicle(Vehicle *front)
}
}
/* Mark the station dirty if we transfer, but not if we only deliver. */
dirty_station = v->cargo.ActionCount(VehicleCargoList::MTA_TRANSFER) > 0;
if (v->cargo.ActionCount(VehicleCargoList::MTA_TRANSFER) > 0) {
/* Mark the station dirty if we transfer, but not if we only deliver. */
dirty_station = true;
if (!ge->HasRating()) {
/* Upon transfering cargo, make sure the station has a rating. Fake a pickup for the
* first unload to prevent the cargo from quickly decaying after the initial drop. */
ge->time_since_pickup = 0;
SetBit(ge->status, GoodsEntry::GES_RATING);
}
}
amount_unloaded = v->cargo.Unload(amount_unloaded, &ge->cargo, payment);
remaining = v->cargo.UnloadCount() > 0;
if (amount_unloaded > 0) {
@@ -1555,7 +1652,7 @@ static void LoadUnloadVehicle(Vehicle *front)
if (front->current_order.GetLoadType() & OLFB_NO_LOAD || HasBit(front->vehicle_flags, VF_STOP_LOADING)) continue;
/* This order has a refit, if this is the first vehicle part carrying cargo and the whole vehicle is empty, try refitting. */
if (front->current_order.IsRefit() && artic_part == 1 && IsArticulatedVehicleEmpty(v)) {
if (front->current_order.IsRefit() && artic_part == 1) {
HandleStationRefit(v, consist_capleft, st, next_station, front->current_order.GetRefitCargo());
ge = &st->goods[v->cargo_type];
}
@@ -1738,6 +1835,7 @@ static void LoadUnloadVehicle(Vehicle *front)
if (dirty_station) {
st->MarkTilesDirty(true);
SetWindowDirty(WC_STATION_VIEW, last_visited);
InvalidateWindowData(WC_STATION_LIST, last_visited);
}
}
+1 -1
View File
@@ -627,7 +627,7 @@ bool SettingsDisableElrail(int32 p1)
FOR_ALL_TRAINS(t) {
/* power and acceleration is cached only for front engines */
if (t->IsFrontEngine()) {
t->ConsistChanged(true);
t->ConsistChanged(CCF_TRACK);
}
}
+5 -2
View File
@@ -16,6 +16,8 @@
#include "company_type.h"
#include "core/geometry_type.hpp"
struct GRFFile;
/** Message severity/type */
enum WarningLevel {
WL_INFO, ///< Used for DoCommand-like (and some non-fatal AI GUI) errors/information
@@ -30,6 +32,7 @@ protected:
uint duration; ///< Length of display of the message. 0 means forever,
uint64 decode_params[20]; ///< Parameters of the message strings.
const char *strings[20]; ///< Copies of raw strings that were used.
const GRFFile *textref_stack_grffile; ///< NewGRF that filled the #TextRefStack for the error message.
uint textref_stack_size; ///< Number of uint32 values to put on the #TextRefStack for the error message.
uint32 textref_stack[16]; ///< Values to put on the #TextRefStack for the error message.
StringID summary_msg; ///< General error message showed in first line. Must be valid.
@@ -40,7 +43,7 @@ protected:
public:
ErrorMessageData(const ErrorMessageData &data);
~ErrorMessageData();
ErrorMessageData(StringID summary_msg, StringID detailed_msg, uint duration = 0, int x = 0, int y = 0, uint textref_stack_size = 0, const uint32 *textref_stack = NULL);
ErrorMessageData(StringID summary_msg, StringID detailed_msg, uint duration = 0, int x = 0, int y = 0, const GRFFile *textref_stack_grffile = NULL, uint textref_stack_size = 0, const uint32 *textref_stack = NULL);
/** Check whether error window shall display a company manager face */
bool HasFace() const { return face != INVALID_COMPANY; }
@@ -53,7 +56,7 @@ public:
void ScheduleErrorMessage(const ErrorMessageData &data);
void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x = 0, int y = 0, uint textref_stack_size = 0, const uint32 *textref_stack = NULL);
void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x = 0, int y = 0, const GRFFile *textref_stack_grffile = NULL, uint textref_stack_size = 0, const uint32 *textref_stack = NULL);
void ClearErrorMessages();
void ShowFirstError();
void UnshowCriticalError();
+11 -8
View File
@@ -94,11 +94,13 @@ ErrorMessageData::~ErrorMessageData()
* @param duration The amount of time to show this error message.
* @param x World X position (TileVirtX) of the error location. Set both x and y to 0 to just center the message when there is no related error tile.
* @param y World Y position (TileVirtY) of the error location. Set both x and y to 0 to just center the message when there is no related error tile.
* @param textref_stack_grffile NewGRF that provides the #TextRefStack for the error message.
* @param textref_stack_size Number of uint32 values to put on the #TextRefStack for the error message; 0 if the #TextRefStack shall not be used.
* @param textref_stack Values to put on the #TextRefStack.
*/
ErrorMessageData::ErrorMessageData(StringID summary_msg, StringID detailed_msg, uint duration, int x, int y, uint textref_stack_size, const uint32 *textref_stack) :
ErrorMessageData::ErrorMessageData(StringID summary_msg, StringID detailed_msg, uint duration, int x, int y, const GRFFile *textref_stack_grffile, uint textref_stack_size, const uint32 *textref_stack) :
duration(duration),
textref_stack_grffile(textref_stack_grffile),
textref_stack_size(textref_stack_size),
summary_msg(summary_msg),
detailed_msg(detailed_msg),
@@ -126,7 +128,7 @@ void ErrorMessageData::CopyOutDParams()
memset(this->strings, 0, sizeof(this->strings));
/* Get parameters using type information */
if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_size, this->textref_stack);
if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack);
CopyOutDParam(this->decode_params, this->strings, this->detailed_msg == INVALID_STRING_ID ? this->summary_msg : this->detailed_msg, lengthof(this->decode_params));
if (this->textref_stack_size > 0) StopTextRefStackUsage();
@@ -181,7 +183,7 @@ public:
if (widget != WID_EM_MESSAGE) return;
CopyInDParam(0, this->decode_params, lengthof(this->decode_params));
if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_size, this->textref_stack);
if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack);
int text_width = max(0, (int)size->width - WD_FRAMETEXT_LEFT - WD_FRAMETEXT_RIGHT);
this->height_summary = GetStringHeight(this->summary_msg, text_width);
@@ -253,7 +255,7 @@ public:
case WID_EM_MESSAGE:
CopyInDParam(0, this->decode_params, lengthof(this->decode_params));
if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_size, this->textref_stack);
if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack);
if (this->detailed_msg == INVALID_STRING_ID) {
DrawStringMultiLine(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom - WD_FRAMERECT_BOTTOM,
@@ -358,19 +360,20 @@ void UnshowCriticalError()
* @param wl Message severity.
* @param x World X position (TileVirtX) of the error location. Set both x and y to 0 to just center the message when there is no related error tile.
* @param y World Y position (TileVirtY) of the error location. Set both x and y to 0 to just center the message when there is no related error tile.
* @param textref_stack_grffile NewGRF providing the #TextRefStack for the error message.
* @param textref_stack_size Number of uint32 values to put on the #TextRefStack for the error message; 0 if the #TextRefStack shall not be used.
* @param textref_stack Values to put on the #TextRefStack.
*/
void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x, int y, uint textref_stack_size, const uint32 *textref_stack)
void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x, int y, const GRFFile *textref_stack_grffile, uint textref_stack_size, const uint32 *textref_stack)
{
assert(textref_stack_size == 0 || textref_stack != NULL);
assert(textref_stack_size == 0 || (textref_stack_grffile != NULL && textref_stack != NULL));
if (summary_msg == STR_NULL) summary_msg = STR_EMPTY;
if (wl != WL_INFO) {
/* Print message to console */
char buf[DRAW_STRING_BUFFER];
if (textref_stack_size > 0) StartTextRefStackUsage(textref_stack_size, textref_stack);
if (textref_stack_size > 0) StartTextRefStackUsage(textref_stack_grffile, textref_stack_size, textref_stack);
char *b = GetString(buf, summary_msg, lastof(buf));
if (detailed_msg != INVALID_STRING_ID) {
@@ -390,7 +393,7 @@ void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel
if (_settings_client.gui.errmsg_duration == 0 && !no_timeout) return;
ErrorMessageData data(summary_msg, detailed_msg, no_timeout ? 0 : _settings_client.gui.errmsg_duration, x, y, textref_stack_size, textref_stack);
ErrorMessageData data(summary_msg, detailed_msg, no_timeout ? 0 : _settings_client.gui.errmsg_duration, x, y, textref_stack_grffile, textref_stack_size, textref_stack);
data.CopyOutDParams();
ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0);
+29 -20
View File
@@ -849,29 +849,38 @@ bool TarScanner::AddFile(const char *filename, size_t basepath_length, const cha
char *pos = link;
while (*pos != '\0') {
char *next = strchr(link, PATHSEPCHAR);
if (next == NULL) next = pos + strlen(pos);
char *next = strchr(pos, PATHSEPCHAR);
if (next == NULL) {
next = pos + strlen(pos);
} else {
/* Terminate the substring up to the path separator character. */
*next++= '\0';
}
/* Skip '.' (current dir) */
if (next != pos + 1 || pos[0] != '.') {
if (next == pos + 2 && pos[0] == '.' && pos[1] == '.') {
/* level up */
if (dest[0] == '\0') {
DEBUG(misc, 1, "Ignoring link pointing outside of data directory: %s -> %s", name, link);
break;
}
/* Truncate 'dest' after last PATHSEPCHAR.
* This assumes that the truncated part is a real directory and not a link. */
destpos = strrchr(dest, PATHSEPCHAR);
if (destpos == NULL) destpos = dest;
} else {
/* Append at end of 'dest' */
if (destpos != dest) *(destpos++) = PATHSEPCHAR;
strncpy(destpos, pos, next - pos); // Safe as we do '\0'-termination ourselves
destpos += next - pos;
if (strcmp(pos, ".") == 0) {
/* Skip '.' (current dir) */
} else if (strcmp(pos, "..") == 0) {
/* level up */
if (dest[0] == '\0') {
DEBUG(misc, 1, "Ignoring link pointing outside of data directory: %s -> %s", name, link);
break;
}
/* Truncate 'dest' after last PATHSEPCHAR.
* This assumes that the truncated part is a real directory and not a link. */
destpos = strrchr(dest, PATHSEPCHAR);
if (destpos == NULL) destpos = dest;
*destpos = '\0';
} else {
/* Append at end of 'dest' */
if (destpos != dest) destpos = strecpy(destpos, PATHSEP, lastof(dest));
destpos = strecpy(destpos, pos, lastof(dest));
}
if (destpos >= lastof(dest)) {
DEBUG(misc, 0, "The length of a link in tar-file '%s' is too large (malformed?)", filename);
fclose(f);
return false;
}
pos = next;
+4
View File
@@ -400,6 +400,10 @@ FiosType FiosGetSavegameListCallback(SaveLoadDialogMode mode, const char *file,
* .SS1 Transport Tycoon Deluxe preset game
* .SV1 Transport Tycoon Deluxe (Patch) saved game
* .SV2 Transport Tycoon Deluxe (Patch) saved 2-player game */
/* Don't crash if we supply no extension */
if (ext == NULL) return FIOS_TYPE_INVALID;
if (strcasecmp(ext, ".sav") == 0) {
GetFileTitle(file, title, last, SAVE_DIR);
return FIOS_TYPE_FILE;
+17 -7
View File
@@ -133,9 +133,11 @@ static const NWidgetPart _nested_load_heightmap_dialog_widgets[] = {
SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), SetScrollbar(WID_SL_SCROLLBAR), EndContainer(),
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SL_SCROLLBAR),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_CONTENT_DOWNLOAD), SetResize(1, 0),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_CONTENT_DOWNLOAD), SetResize(1, 0), SetFill(1, 0),
SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SL_LOAD_BUTTON), SetResize(1, 0), SetFill(1, 0),
SetDataTip(STR_SAVELOAD_LOAD_BUTTON, STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP),
NWidget(WWT_RESIZEBOX, COLOUR_GREY),
EndContainer(),
EndContainer(),
@@ -521,16 +523,21 @@ public:
break;
case WID_SL_LOAD_BUTTON:
if (this->selected != NULL && !_load_check_data.HasErrors() && (_load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs())) {
_switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD_GAME;
if (this->selected != NULL && !_load_check_data.HasErrors()) {
const char *name = FiosBrowseTo(this->selected);
SetFiosType(this->selected->type);
strecpy(_file_to_saveload.name, name, lastof(_file_to_saveload.name));
strecpy(_file_to_saveload.title, this->selected->title, lastof(_file_to_saveload.title));
ClearErrorMessages();
delete this;
if (_saveload_mode == SLD_LOAD_HEIGHTMAP) {
delete this;
ShowHeightmapLoad();
} else if (_load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs()) {
_switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD_GAME;
ClearErrorMessages();
delete this;
}
}
break;
@@ -679,6 +686,9 @@ public:
case 1:
/* Selection changes */
if (!gui_scope) break;
if (_saveload_mode == SLD_LOAD_HEIGHTMAP) {
this->SetWidgetDisabledState(WID_SL_LOAD_BUTTON, this->selected == NULL || _load_check_data.HasErrors());
}
if (_saveload_mode == SLD_LOAD_GAME || _saveload_mode == SLD_LOAD_SCENARIO) {
this->SetWidgetDisabledState(WID_SL_LOAD_BUTTON,
this->selected == NULL || _load_check_data.HasErrors() || !(_load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs()));
+22 -10
View File
@@ -274,23 +274,35 @@ FreeTypeFontCache::FreeTypeFontCache(FontSize fs, FT_Face face, int pixels) : Fo
}
FT_Error err = FT_Set_Pixel_Sizes(this->face, 0, pixels);
if (err == FT_Err_Invalid_Pixel_Size) {
if (err != FT_Err_Ok) {
/* Find nearest size to that requested */
FT_Bitmap_Size *bs = this->face->available_sizes;
int i = this->face->num_fixed_sizes;
int n = bs->height;
for (; --i; bs++) {
if (abs(pixels - bs->height) < abs(pixels - n)) n = bs->height;
}
if (i > 0) { // In pathetic cases one might get no fixed sizes at all.
int n = bs->height;
FT_Int chosen = 0;
for (; --i; bs++) {
if (abs(pixels - bs->height) >= abs(pixels - n)) continue;
n = bs->height;
chosen = this->face->num_fixed_sizes - i;
}
FT_Set_Pixel_Sizes(this->face, 0, n);
/* Don't use FT_Set_Pixel_Sizes here - it might give us another
* error, even though the size is available (FS#5885). */
err = FT_Select_Size(this->face, chosen);
}
}
this->units_per_em = this->face->units_per_EM;
this->ascender = this->face->size->metrics.ascender >> 6;
this->descender = this->face->size->metrics.descender >> 6;
this->height = this->ascender - this->descender;
if (err == FT_Err_Ok) {
this->units_per_em = this->face->units_per_EM;
this->ascender = this->face->size->metrics.ascender >> 6;
this->descender = this->face->size->metrics.descender >> 6;
this->height = this->ascender - this->descender;
} else {
/* Both FT_Set_Pixel_Sizes and FT_Select_Size failed. */
DEBUG(freetype, 0, "Font size selection failed. Using FontCache defaults.");
}
}
/**
+4
View File
@@ -67,6 +67,8 @@
#include "../script/api/game/game_station.hpp.sq"
#include "../script/api/game/game_stationlist.hpp.sq"
#include "../script/api/game/game_story_page.hpp.sq"
#include "../script/api/game/game_storypageelementlist.hpp.sq"
#include "../script/api/game/game_storypagelist.hpp.sq"
#include "../script/api/game/game_subsidy.hpp.sq"
#include "../script/api/game/game_subsidylist.hpp.sq"
#include "../script/api/game/game_testmode.hpp.sq"
@@ -171,6 +173,8 @@ void GameInstance::RegisterAPI()
SQGSStationList_Register(this->engine);
SQGSStationList_Vehicle_Register(this->engine);
SQGSStoryPage_Register(this->engine);
SQGSStoryPageElementList_Register(this->engine);
SQGSStoryPageList_Register(this->engine);
SQGSSubsidy_Register(this->engine);
SQGSSubsidyList_Register(this->engine);
SQGSTestMode_Register(this->engine);
+1 -1
View File
@@ -377,7 +377,7 @@ void ReconsiderGameScriptLanguage()
if (_current_data == NULL) return;
char temp[MAX_PATH];
strecpy(temp, _current_language->file, temp + sizeof(temp));
strecpy(temp, _current_language->file, lastof(temp));
/* Remove the extension */
char *l = strrchr(temp, '.');
+8 -5
View File
@@ -98,13 +98,15 @@ static void _GenerateWorld(void *)
try {
_generating_world = true;
_modal_progress_work_mutex->BeginCritical();
if (_network_dedicated) DEBUG(net, 0, "Generating map, please wait...");
if (_network_dedicated) DEBUG(net, 1, "Generating map, please wait...");
/* Set the Random() seed to generation_seed so we produce the same map with the same seed */
if (_settings_game.game_creation.generation_seed == GENERATE_NEW_SEED) _settings_game.game_creation.generation_seed = _settings_newgame.game_creation.generation_seed = InteractiveRandom();
_random.SetSeed(_settings_game.game_creation.generation_seed);
SetGeneratingWorldProgress(GWP_MAP_INIT, 2);
SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, HT_NONE, WC_MAIN_WINDOW, 0);
BasePersistentStorageArray::SwitchMode(PSM_ENTER_GAMELOOP);
IncreaseGeneratingWorldProgress(GWP_MAP_INIT);
/* Must start economy early because of the costs. */
StartupEconomy();
@@ -141,8 +143,6 @@ static void _GenerateWorld(void *)
}
}
ClearPersistentStorageChanges(true);
/* These are probably pointless when inside the scenario editor. */
SetGeneratingWorldProgress(GWP_GAME_INIT, 3);
StartupCompanies();
@@ -179,6 +179,8 @@ static void _GenerateWorld(void *)
}
}
BasePersistentStorageArray::SwitchMode(PSM_LEAVE_GAMELOOP);
ResetObjectToPlace();
_cur_company.Trash();
_current_company = _local_company = _gw.lc;
@@ -193,7 +195,7 @@ static void _GenerateWorld(void *)
ShowNewGRFError();
if (_network_dedicated) DEBUG(net, 0, "Map generated, starting game");
if (_network_dedicated) DEBUG(net, 1, "Map generated, starting game");
DEBUG(desync, 1, "new_map: %08x", _settings_game.game_creation.generation_seed);
if (_debug_desync_level > 0) {
@@ -202,6 +204,7 @@ static void _GenerateWorld(void *)
SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR, false);
}
} catch (...) {
BasePersistentStorageArray::SwitchMode(PSM_LEAVE_GAMELOOP, true);
if (_cur_company.IsValid()) _cur_company.Restore();
_generating_world = false;
_modal_progress_work_mutex->EndCritical();
@@ -325,7 +328,7 @@ void GenerateWorld(GenWorldMode mode, uint size_x, uint size_y, bool reset_setti
_gw.thread = NULL;
}
if (!_video_driver->HasGUI() || !ThreadObject::New(&_GenerateWorld, NULL, &_gw.thread)) {
if (!VideoDriver::GetInstance()->HasGUI() || !ThreadObject::New(&_GenerateWorld, NULL, &_gw.thread)) {
DEBUG(misc, 1, "Cannot create genworld thread, reverting to single-threaded mode");
_gw.threaded = false;
_modal_progress_work_mutex->EndCritical();
+17 -10
View File
@@ -85,7 +85,7 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo)
blitter->ScrollBuffer(_screen.dst_ptr, left, top, width, height, xo, yo);
/* This part of the screen is now dirty. */
_video_driver->MakeDirty(left, top, width, height);
VideoDriver::GetInstance()->MakeDirty(left, top, width, height);
}
@@ -418,19 +418,21 @@ static int DrawLayoutLine(const ParagraphLayouter::Line *line, int y, int left,
NOT_REACHED();
}
TextColour colour = TC_BLACK;
bool draw_shadow = false;
for (int run_index = 0; run_index < line->CountRuns(); run_index++) {
const ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index);
const Font *f = (const Font*)run->GetFont();
FontCache *fc = f->fc;
TextColour colour = f->colour;
colour = f->colour;
SetColourRemap(colour);
DrawPixelInfo *dpi = _cur_dpi;
int dpi_left = dpi->left;
int dpi_right = dpi->left + dpi->width - 1;
bool draw_shadow = fc->GetDrawGlyphShadow() && colour != TC_BLACK;
draw_shadow = fc->GetDrawGlyphShadow() && colour != TC_BLACK;
for (int i = 0; i < run->GetGlyphCount(); i++) {
GlyphID glyph = run->GetGlyphs()[i];
@@ -461,6 +463,11 @@ static int DrawLayoutLine(const ParagraphLayouter::Line *line, int y, int left,
if (truncation) {
int x = (_current_text_dir == TD_RTL) ? left : (right - 3 * dot_width);
for (int i = 0; i < 3; i++, x += dot_width) {
if (draw_shadow) {
SetColourRemap(TC_BLACK);
GfxMainBlitter(dot_sprite, x + 1, y + 1, BM_COLOUR_REMAP);
SetColourRemap(colour);
}
GfxMainBlitter(dot_sprite, x, y, BM_COLOUR_REMAP);
}
}
@@ -788,7 +795,7 @@ void DrawSpriteViewport(SpriteID img, PaletteID pal, int x, int y, const SubSpri
GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, BM_TRANSPARENT, sub, real_sprite);
} else if (pal != PAL_NONE) {
_colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1;
GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, BM_COLOUR_REMAP, sub, real_sprite);
GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, pal == PALETTE_CRASH ? BM_CRASH_REMAP : BM_COLOUR_REMAP, sub, real_sprite);
} else {
GfxMainBlitterViewport(GetSprite(real_sprite, ST_NORMAL), x, y, BM_NORMAL, sub, real_sprite);
}
@@ -811,7 +818,7 @@ void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub,
GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, BM_TRANSPARENT, sub, real_sprite, zoom);
} else if (pal != PAL_NONE) {
_colour_remap_ptr = GetNonSprite(GB(pal, 0, PALETTE_WIDTH), ST_RECOLOUR) + 1;
GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, BM_COLOUR_REMAP, sub, real_sprite, zoom);
GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, pal == PALETTE_CRASH ? BM_CRASH_REMAP : BM_COLOUR_REMAP, sub, real_sprite, zoom);
} else {
GfxMainBlitter(GetSprite(real_sprite, ST_NORMAL), x, y, BM_NORMAL, sub, real_sprite, zoom);
}
@@ -1176,7 +1183,7 @@ void UndrawMouseCursor()
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
_cursor.visible = false;
blitter->CopyFromBuffer(blitter->MoveTo(_screen.dst_ptr, _cursor.draw_pos.x, _cursor.draw_pos.y), _cursor_backup.GetBuffer(), _cursor.draw_size.x, _cursor.draw_size.y);
_video_driver->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y);
VideoDriver::GetInstance()->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y);
}
}
@@ -1236,7 +1243,7 @@ void DrawMouseCursor()
_cur_dpi = &_screen;
DrawSprite(_cursor.sprite, _cursor.pal, _cursor.pos.x + _cursor.short_vehicle_offset, _cursor.pos.y);
_video_driver->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y);
VideoDriver::GetInstance()->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y);
_cursor.visible = true;
_cursor.dirty = false;
@@ -1260,7 +1267,7 @@ void RedrawScreenRect(int left, int top, int right, int bottom)
DrawOverlappedWindowForAll(left, top, right, bottom);
_video_driver->MakeDirty(left, top, right - left, bottom - top);
VideoDriver::GetInstance()->MakeDirty(left, top, right - left, bottom - top);
}
/**
@@ -1569,12 +1576,12 @@ void SetAnimatedMouseCursor(const AnimCursor *table)
bool ChangeResInGame(int width, int height)
{
return (_screen.width == width && _screen.height == height) || _video_driver->ChangeResolution(width, height);
return (_screen.width == width && _screen.height == height) || VideoDriver::GetInstance()->ChangeResolution(width, height);
}
bool ToggleFullScreen(bool fs)
{
bool result = _video_driver->ToggleFullscreen(fs);
bool result = VideoDriver::GetInstance()->ToggleFullscreen(fs);
if (_fullscreen != fs && _num_resolutions == 0) {
DEBUG(driver, 0, "Could not find a suitable fullscreen resolution");
}
+2 -2
View File
@@ -282,9 +282,9 @@ static bool SwitchNewGRFBlitter()
break;
}
if (!_video_driver->AfterBlitterChange()) {
if (!VideoDriver::GetInstance()->AfterBlitterChange()) {
/* Failed to switch blitter, let's hope we can return to the old one. */
if (BlitterFactory::SelectBlitter(cur_blitter) == NULL || !_video_driver->AfterBlitterChange()) usererror("Failed to reinitialize video driver. Specify a fixed blitter in the config");
if (BlitterFactory::SelectBlitter(cur_blitter) == NULL || !VideoDriver::GetInstance()->AfterBlitterChange()) usererror("Failed to reinitialize video driver. Specify a fixed blitter in the config");
}
return true;
+26 -5
View File
@@ -92,7 +92,11 @@ CommandCost CmdCreateGoal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
g->progress = NULL;
g->completed = false;
InvalidateWindowData(WC_GOALS_LIST, 0);
if (g->company == INVALID_COMPANY) {
InvalidateWindowClassesData(WC_GOALS_LIST);
} else {
InvalidateWindowData(WC_GOALS_LIST, g->company);
}
if (Goal::GetNumItems() == 1) InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
_new_goal_id = g->index;
@@ -117,9 +121,14 @@ CommandCost CmdRemoveGoal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
if (flags & DC_EXEC) {
Goal *g = Goal::Get(p1);
CompanyID c = g->company;
delete g;
InvalidateWindowData(WC_GOALS_LIST, 0);
if (c == INVALID_COMPANY) {
InvalidateWindowClassesData(WC_GOALS_LIST);
} else {
InvalidateWindowData(WC_GOALS_LIST, c);
}
if (Goal::GetNumItems() == 0) InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
}
@@ -146,7 +155,11 @@ CommandCost CmdSetGoalText(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
free(g->text);
g->text = strdup(text);
InvalidateWindowData(WC_GOALS_LIST, 0);
if (g->company == INVALID_COMPANY) {
InvalidateWindowClassesData(WC_GOALS_LIST);
} else {
InvalidateWindowData(WC_GOALS_LIST, g->company);
}
}
return CommandCost();
@@ -175,7 +188,11 @@ CommandCost CmdSetGoalProgress(TileIndex tile, DoCommandFlag flags, uint32 p1, u
g->progress = strdup(text);
}
InvalidateWindowData(WC_GOALS_LIST, 0);
if (g->company == INVALID_COMPANY) {
InvalidateWindowClassesData(WC_GOALS_LIST);
} else {
InvalidateWindowData(WC_GOALS_LIST, g->company);
}
}
return CommandCost();
@@ -199,7 +216,11 @@ CommandCost CmdSetGoalCompleted(TileIndex tile, DoCommandFlag flags, uint32 p1,
Goal *g = Goal::Get(p1);
g->completed = p2 == 1;
InvalidateWindowData(WC_GOALS_LIST, 0);
if (g->company == INVALID_COMPANY) {
InvalidateWindowClassesData(WC_GOALS_LIST);
} else {
InvalidateWindowData(WC_GOALS_LIST, g->company);
}
}
return CommandCost();
+2
View File
@@ -273,6 +273,8 @@ struct GoalListWindow : public Window {
{
this->DrawWidgets();
if (this->IsShaded()) return; // Don't draw anything when the window is shaded.
/* Calculate progress column width. */
uint max_width = 0;
Goal *s;
+25 -2
View File
@@ -1563,7 +1563,30 @@ static bool CheckIfCanLevelIndustryPlatform(TileIndex tile, DoCommandFlag flags,
static CommandCost CheckIfFarEnoughFromConflictingIndustry(TileIndex tile, int type)
{
const IndustrySpec *indspec = GetIndustrySpec(type);
const Industry *i;
const Industry *i = NULL;
/* On a large map with many industries, it may be faster to check an area. */
static const int dmax = 14;
if (Industry::GetNumItems() > (size_t) (dmax * dmax * 2)) {
const int tx = TileX(tile);
const int ty = TileY(tile);
TileArea tile_area = TileArea(TileXY(max(0, tx - dmax), max(0, ty - dmax)), TileXY(min(MapMaxX(), tx + dmax), min(MapMaxY(), ty + dmax)));
TILE_AREA_LOOP(atile, tile_area) {
if (GetTileType(atile) == MP_INDUSTRY) {
const Industry *i2 = Industry::GetByTile(atile);
if (i == i2) continue;
i = i2;
if (DistanceMax(tile, i->location.tile) > (uint)dmax) continue;
if (i->type == indspec->conflicting[0] ||
i->type == indspec->conflicting[1] ||
i->type == indspec->conflicting[2]) {
return_cmd_error(STR_ERROR_INDUSTRY_TOO_CLOSE);
}
}
}
return CommandCost();
}
FOR_ALL_INDUSTRIES(i) {
/* Within 14 tiles from another industry is considered close */
if (DistanceMax(tile, i->location.tile) > 14) continue;
@@ -1995,7 +2018,7 @@ static uint GetNumberOfIndustries()
assert(lengthof(numof_industry_table) == ID_END);
uint difficulty = (_game_mode != GM_EDITOR) ? _settings_game.difficulty.industry_density : (uint)ID_VERY_LOW;
return ScaleByMapSize(numof_industry_table[difficulty]);
return min(IndustryPool::MAX_SIZE, ScaleByMapSize(numof_industry_table[difficulty]));
}
/**
+3 -3
View File
@@ -79,7 +79,7 @@ static void GetCargoSuffix(uint cargo, CargoSuffixType cst, const Industry *ind,
if (callback > 0x400) {
ErrorUnknownCallbackResult(indspec->grf_prop.grffile->grfid, CBID_INDUSTRY_CARGO_SUFFIX, callback);
} else if (indspec->grf_prop.grffile->grf_version >= 8 || GB(callback, 0, 8) != 0xFF) {
StartTextRefStackUsage(6);
StartTextRefStackUsage(indspec->grf_prop.grffile, 6);
GetString(suffix, GetGRFStringID(indspec->grf_prop.grffile->grfid, 0xD000 + callback), suffix_last);
StopTextRefStackUsage();
}
@@ -471,7 +471,7 @@ public:
} else {
str = GetGRFStringID(indsp->grf_prop.grffile->grfid, 0xD000 + callback_res); // No. here's the new string
if (str != STR_UNDEFINED) {
StartTextRefStackUsage(6);
StartTextRefStackUsage(indsp->grf_prop.grffile, 6);
DrawStringMultiLine(left, right, y, bottom, str, TC_YELLOW);
StopTextRefStackUsage();
}
@@ -800,7 +800,7 @@ public:
if (message != STR_NULL && message != STR_UNDEFINED) {
y += WD_PAR_VSEP_WIDE;
StartTextRefStackUsage(6);
StartTextRefStackUsage(ind->grf_prop.grffile, 6);
/* Use all the available space left from where we stand up to the
* end of the window. We ALSO enlarge the window if needed, so we
* can 'go' wild with the bottom of the window. */
+2 -1
View File
@@ -63,7 +63,8 @@ IniGroup::IniGroup(IniLoadFile *parent, const char *name, size_t len) : next(NUL
if (len == 0) len = strlen(name);
this->name = strndup(name, len);
if (this->name != NULL) str_validate(this->name, this->name + len);
if (this->name == NULL) error("not enough memory to allocate group name");
str_validate(this->name, this->name + len);
this->last_item = &this->item;
*parent->last_group = this;
+24 -23
View File
@@ -32,6 +32,7 @@
#include "company_func.h"
#include "pathfinder/npf/aystar.h"
#include <list>
#include <set>
#include "table/strings.h"
#include "table/sprites.h"
@@ -667,8 +668,7 @@ CommandCost CmdClearArea(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
const Company *c = (flags & (DC_AUTO | DC_BANKRUPT)) ? NULL : Company::GetIfValid(_current_company);
int limit = (c == NULL ? INT32_MAX : GB(c->clear_limit, 16, 16));
TileArea ta(tile, p1);
TileIterator *iter = HasBit(p2, 0) ? (TileIterator *)new DiagonalTileIterator(tile, p1) : new OrthogonalTileIterator(ta);
TileIterator *iter = HasBit(p2, 0) ? (TileIterator *)new DiagonalTileIterator(tile, p1) : new OrthogonalTileIterator(tile, p1);
for (; *iter != INVALID_TILE; ++(*iter)) {
TileIndex t = *iter;
CommandCost ret = DoCommand(t, 0, 0, flags & ~DC_EXEC, CMD_LANDSCAPE_CLEAR);
@@ -692,11 +692,10 @@ CommandCost CmdClearArea(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
/* draw explosion animation...
* Disable explosions when game is paused. Looks silly and blocks the view. */
TileIndex off = t - ta.tile;
if ((TileX(off) == 0 || TileX(off) == ta.w - 1U) && (TileY(off) == 0 || TileY(off) == ta.h - 1U) && _pause_mode == PM_UNPAUSED) {
/* big explosion in each corner, or small explosion for single tiles */
if ((t == tile || t == p1) && _pause_mode == PM_UNPAUSED) {
/* big explosion in two corners, or small explosion for single tiles */
CreateEffectVehicleAbove(TileX(t) * TILE_SIZE + TILE_SIZE / 2, TileY(t) * TILE_SIZE + TILE_SIZE / 2, 2,
ta.w == 1 && ta.h == 1 ? EV_EXPLOSION_SMALL : EV_EXPLOSION_LARGE
TileX(tile) == TileX(p1) && TileY(tile) == TileY(p1) ? EV_EXPLOSION_SMALL : EV_EXPLOSION_LARGE
);
}
} else {
@@ -722,12 +721,13 @@ void RunTileLoop()
* shift register (LFSR). This allows a deterministic pseudorandom ordering, but
* still with minimal state and fast iteration. */
/* Maximal length LFSR feedback terms, from 12-bit (for 64x64 maps) to 22-bit (for 2048x2048 maps).
/* Maximal length LFSR feedback terms, from 12-bit (for 64x64 maps) to 24-bit (for 4096x4096 maps).
* Extracted from http://www.ece.cmu.edu/~koopman/lfsr/ */
static const uint32 feedbacks[] = {
0xD8F, 0x1296, 0x2496, 0x4357, 0x8679, 0x1030E, 0x206CD, 0x403FE, 0x807B8, 0x1004B2, 0x2006A8
0xD8F, 0x1296, 0x2496, 0x4357, 0x8679, 0x1030E, 0x206CD, 0x403FE, 0x807B8, 0x1004B2, 0x2006A8, 0x4004B2, 0x800B87
};
const uint32 feedback = feedbacks[MapLogX() + MapLogY() - 12];
assert_compile(lengthof(feedbacks) == 2 * MAX_MAP_SIZE_BITS - 2 * MIN_MAP_SIZE_BITS + 1);
const uint32 feedback = feedbacks[MapLogX() + MapLogY() - 2 * MIN_MAP_SIZE_BITS];
/* We update every tile every 256 ticks, so divide the map size by 2^8 = 256 */
uint count = 1 << (MapLogX() + MapLogY() - 8);
@@ -1097,18 +1097,20 @@ static void BuildRiver(TileIndex begin, TileIndex end)
/**
* Try to flow the river down from a given begin.
* @param marks Array for temporary of iterated tiles.
* @param spring The springing point of the river.
* @param begin The begin point we are looking from; somewhere down hill from the spring.
* @return True iff a river could/has been built, otherwise false.
*/
static bool FlowRiver(bool *marks, TileIndex spring, TileIndex begin)
static bool FlowRiver(TileIndex spring, TileIndex begin)
{
#define SET_MARK(x) marks.insert(x)
#define IS_MARKED(x) (marks.find(x) != marks.end())
uint height = TileHeight(begin);
if (IsWaterTile(begin)) return DistanceManhattan(spring, begin) > _settings_game.game_creation.min_river_length;
MemSetT(marks, 0, MapSize());
marks[begin] = true;
std::set<TileIndex> marks;
SET_MARK(begin);
/* Breadth first search for the closest tile we can flow down to. */
std::list<TileIndex> queue;
@@ -1129,8 +1131,8 @@ static bool FlowRiver(bool *marks, TileIndex spring, TileIndex begin)
for (DiagDirection d = DIAGDIR_BEGIN; d < DIAGDIR_END; d++) {
TileIndex t2 = end + TileOffsByDiagDir(d);
if (IsValidTile(t2) && !marks[t2] && FlowsDown(end, t2)) {
marks[t2] = true;
if (IsValidTile(t2) && !IS_MARKED(t2) && FlowsDown(end, t2)) {
SET_MARK(t2);
count++;
queue.push_back(t2);
}
@@ -1139,13 +1141,14 @@ static bool FlowRiver(bool *marks, TileIndex spring, TileIndex begin)
if (found) {
/* Flow further down hill. */
found = FlowRiver(marks, spring, end);
found = FlowRiver(spring, end);
} else if (count > 32) {
/* Maybe we can make a lake. Find the Nth of the considered tiles. */
TileIndex lakeCenter = 0;
for (int i = RandomRange(count - 1); i != 0; lakeCenter++) {
if (marks[lakeCenter]) i--;
}
int i = RandomRange(count - 1) + 1;
std::set<TileIndex>::const_iterator cit = marks.begin();
while (--i) cit++;
lakeCenter = *cit;
if (IsValidTile(lakeCenter) &&
/* A river, or lake, can only be built on flat slopes. */
@@ -1169,6 +1172,7 @@ static bool FlowRiver(bool *marks, TileIndex spring, TileIndex begin)
}
}
marks.clear();
if (found) BuildRiver(begin, end);
return found;
}
@@ -1183,19 +1187,16 @@ static void CreateRivers()
uint wells = ScaleByMapSize(4 << _settings_game.game_creation.amount_of_rivers);
SetGeneratingWorldProgress(GWP_RIVER, wells + 256 / 64); // Include the tile loop calls below.
bool *marks = CallocT<bool>(MapSize());
for (; wells != 0; wells--) {
IncreaseGeneratingWorldProgress(GWP_RIVER);
for (int tries = 0; tries < 128; tries++) {
TileIndex t = RandomTile();
if (!CircularTileSearch(&t, 8, FindSpring, NULL)) continue;
if (FlowRiver(marks, t, t)) break;
if (FlowRiver(t, t)) break;
}
}
free(marks);
/* Run tile loop to update the ground density. */
for (uint i = 0; i != 256; i++) {
if (i % 64 == 0) IncreaseGeneratingWorldProgress(GWP_RIVER);
+10 -5
View File
@@ -811,13 +811,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} wag in depot
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} wag in die vliegtuig hangar
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} het te min bevele in skedule
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} het 'n leë bevel
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} het duplikaat bevele
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} het onwettige stasie in sy bevele
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} raak oud.
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} raak baie oud.
@@ -1071,7 +1069,8 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Maatskappy inst
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Maatskappy instelling (word gestoor in Spaarspeletjies; raak net nuwe speletjies)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Maatskappy instelling (word gestoor in spaarspeletjie; raak net die huidige maatskappy)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Vertoon:
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorie:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipe:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Beperk die lys hier onder tot slegs veranderde verstellings
STR_CONFIG_SETTING_RESTRICT_BASIC :Basiese verstellings
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Gevorderde verstellings
@@ -1086,6 +1085,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spel instelling
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spel instelling (word gestoor in spaarspeletjie; raak net die huidige speletjie)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Maatskappy instelling (word gestoor in spaarspeletjies; raak slegs nuwe speletjies)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Maatskappy instelling (word gestoor in spaarspeletjie; raak net die huidige maatskappy)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Wys alle soekresultate deur oprigting{}{SILVER}Kategorie {BLACK}tot {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Wys alle soekresultate deur oprigting{}{SILVER}Tik {BLACK}tot {WHITE}Alle opstel tipes
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Wys alle soekresultate deur oprigting{}{SILVER}Kategorie {BLACK}tot {WHITE}{STRING} {BLACK}en {SILVER}Tik {BLACK}tot {WHITE}Alle opstel tipes
STR_CONFIG_SETTINGS_NONE :{WHITE}- Geen -
STR_CONFIG_SETTING_OFF :Af
STR_CONFIG_SETTING_ON :Aan
@@ -1804,6 +1807,7 @@ STR_LIVERY_FREIGHT_TRAM :Vrag Trem
STR_FACE_CAPTION :{WHITE}Gesig Keuse
STR_FACE_CANCEL_TOOLTIP :{BLACK}Kanselleer nuwe gesig keuse
STR_FACE_OK_TOOLTIP :{BLACK}Aanvar nuwe gesig keuse
STR_MAPGEN_RANDOM :{BLACK}Lukraake
STR_FACE_MALE_BUTTON :{BLACK}Manlik
STR_FACE_MALE_TOOLTIP :{BLACK}Kies manlik gesigte
@@ -2548,6 +2552,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NuweGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Vrag aangeneem: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Spoorlyn spoed limiet: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Pad spoedgrens: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rotse
@@ -2683,7 +2688,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Beweeg d
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Beweeg die sneeu lyn een af
STR_MAPGEN_RANDOM_SEED :{BLACK}Lukraak Saad:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klik om 'n willekeurige saad in te voer
STR_MAPGEN_RANDOM :{BLACK}Lukraake
STR_MAPGEN_RANDOM_HELP :{BLACK}Verander die lukraak saad gebruik vir Terrein Generasie
STR_MAPGEN_LAND_GENERATOR :{BLACK}Land genereerder:
STR_MAPGEN_TREE_PLACER :{BLACK}Boom algoritme:
@@ -2877,6 +2881,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Vermiste l
STR_NEWGRF_BROKEN :{WHITE}Die gedrag van NewGRF '{0:STRING}' kan moontlik sinkroniesasie probleme of program ongelukke veroorsaak
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Dit het die aangedrewe-wa staat vir '{1:ENGINE}' wanneer nie in 'n depot verander
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Het lengte van voertuig verander '{1:ENGINE}' wanneer dit nie in 'n diensstasie is nie
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Dit verander voertuig kapasiteit vir '{1:ENGINE}' wanneer nie binne 'n diensstasie is nie of herstelwerk word gedoen
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Trein '{VEHICLE}' wat aan '{COMPANY}' behoort se lengte is ongeldig. Dit is waarskynlik veroorsaak deur 'n NewGRF. Spel kan verongeluk of sinchronisasie verloor
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' verskaf foutiewe inligting.
+2 -5
View File
@@ -785,13 +785,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} تنتظر في حوض السفن
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} تنتظر في الحظيرة
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} لديها اوامر قليلة جدا في جدولها
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} لديها امر غير صالح
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} لديها امر مكرر
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} لديها محطة غير صالحة في القائمة
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} اصبحت قديمة
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} اصبحت قديمة جدا
@@ -1029,7 +1027,6 @@ STR_CONFIG_SETTING_CAPTION :{WHITE}إعدا
STR_CONFIG_SETTING_EXPAND_ALL :مدد الكل
STR_CONFIG_SETTING_COLLAPSE_ALL :إسحب الكل
STR_CONFIG_SETTING_RESTRICT_LABEL :اظهر:
STR_CONFIG_SETTING_RESTRICT_BASIC :اﻹعدادات الاساسيه
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}احصر القائمة على انواع اعدادات محددة
@@ -1475,6 +1472,7 @@ STR_LIVERY_FREIGHT_TRAM :عربة ترا
STR_FACE_CAPTION :{WHITE}اختيار الوجة
STR_FACE_CANCEL_TOOLTIP :{BLACK}الغاء اختيار الوجة الجديد
STR_FACE_OK_TOOLTIP :{BLACK}اقبل الوجة الجديد
STR_MAPGEN_RANDOM :{BLACK}عشوائي
STR_FACE_MALE_BUTTON :{BLACK}رجل
STR_FACE_MALE_TOOLTIP :{BLACK}اختر وجة رجل
@@ -2317,7 +2315,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}ارفع
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}خفض خط الثلج مستوى واحد
STR_MAPGEN_RANDOM_SEED :{BLACK}مرجع عشوائي
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}اضغط لادخال مرجع عشوائي
STR_MAPGEN_RANDOM :{BLACK}عشوائي
STR_MAPGEN_RANDOM_HELP :{BLACK}غير المرجع العشوائي لتوليد تضاريس الخريطة
STR_MAPGEN_LAND_GENERATOR :{BLACK}مولد الخريطة:
STR_MAPGEN_TREE_PLACER :{BLACK} لوغاريثم الشجر:
+106 -10
View File
@@ -199,21 +199,26 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hp
STR_UNITS_POWER_METRIC :{COMMA}hp
STR_UNITS_POWER_SI :{COMMA}kW
STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t
STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t
STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg
STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} tona{P "" s}
STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tona
STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg
STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}galoi
STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l
STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³
STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} galoi{P "" s}
STR_UNITS_VOLUME_LONG_METRIC :{COMMA} litro
STR_UNITS_VOLUME_LONG_SI :{COMMA} m³
STR_UNITS_FORCE_SI :{COMMA} kN
STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ft
STR_UNITS_HEIGHT_METRIC :{COMMA} m
STR_UNITS_HEIGHT_SI :{COMMA} m
# Common window strings
@@ -221,6 +226,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Lokarri
STR_LIST_FILTER_OSKTITLE :{BLACK}Sartu lokarri iragazkia
STR_LIST_FILTER_TOOLTIP :{BLACK}Sartu hitz bat iragazkian zerrendan aurkitzeko
STR_TOOLTIP_GROUP_ORDER :{BLACK}Aukeratu taldekatzeko ordena
STR_TOOLTIP_SORT_ORDER :{BLACK}Hautatu agertze ordena (deszendientea/aszendientea)
STR_TOOLTIP_SORT_CRITERIA :{BLACK}Aukeratu ordenatze irizpideak
STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Aukeratu iragazki irizpideak
@@ -288,6 +294,7 @@ STR_SORT_BY_POWER_VS_RUNNING_COST :Potentzia/Mante
STR_SORT_BY_CARGO_CAPACITY :Zama Edukiera
STR_SORT_BY_RANGE :Irismena
STR_SORT_BY_POPULATION :Biztanleria
STR_SORT_BY_RATING :Balorazioa
# Tooltips for the main toolbar
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Jokoa pausatu
@@ -703,6 +710,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA
STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Aukeratu hirien izenak on/off mapan
STR_SMALLMAP_CENTER :{BLACK}Mapa txikia orain zauden posizioan zentratu
STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM})
STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING}
STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY}
STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN}
STR_SMALLMAP_DISABLE_ALL :{BLACK}Dena desgaitu
@@ -713,6 +721,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Erakutsi
STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Garaiera mapa erakutsi/ ez erakutsi
STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ez erakutsi konpainiaren jabetzak mapan.
STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Erakutsi konpaniaren propietate denak mapan
STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Ez erakutsi zamarik mapan
STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Zama guztiak mapan erakutsi
# Status bar messages
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Erakutsi azken mezu edo albiste erreportaia
@@ -789,13 +799,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} deposituan itxaroten dago
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} hegazkin deposituan itxaroten dago
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} agindu gutxiegi ditu zerrendan
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} agindu zerrenda hutsik du
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} agindu bikoitzak ditu
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} geltoki baliogabea du aginduetan
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} zaharra bihurtzen ari da
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} oso zaharra bihurtzen ari da
@@ -1047,7 +1055,8 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Joko ezarpenak
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Konpainia ezarpenak (Gorden bilduta; bakarrik joko berriei eragingo die)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Konpainia ezarpenak (Gorden bilduta; bakarrik uneko konpainiari eragiten dio)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Erakutsi
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategoria:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Mota:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Beheko zerrenda laburtu bakarrik aldatutako ezarpenak erakutsiz
STR_CONFIG_SETTING_RESTRICT_BASIC :Oinarrizko ezarpenak
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Ezarpen aurreratuak
@@ -1055,6 +1064,7 @@ STR_CONFIG_SETTING_RESTRICT_ALL :Adituentzako ez
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ezarpenak lehenetsitakoen balio ezberdinarekin
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Balio ezberdinak dituzten ezarpenak zure joko berriaren ezarpenekin alderatuta
STR_CONFIG_SETTINGS_NONE :{WHITE}- Ezer ez -
STR_CONFIG_SETTING_OFF :Itzalita
STR_CONFIG_SETTING_ON :Piztuta
@@ -1503,21 +1513,50 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Joko hasieran h
STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Errepideak eraikitzerakoan elementu ez egokiak eragotzi: {STRING}
STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Errepide berreraikuntza ordaintzerakoan irteerarik gabeko errepideak kentzea
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :eskuz egin
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetrikoa
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetrikoa
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Banaketen zehaztasuna: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Abiadura unitateak: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Inperiala (milia/orduko)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrikoa (km/h)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Ibilgailuen indar unitateak: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Inperiala (zp)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrikoa (zp)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Pisu unitateak: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrikoa (t/tona)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Bolumen unitateak: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Inperiala (galoi)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrikoa (l)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrikoa (kgf)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Garaiera unitateak: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Inperiala (oin)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrikoa (m)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m)
STR_CONFIG_SETTING_GUI :{ORANGE}Interfazea
STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Kokapena
STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Eraikuntza
STR_CONFIG_SETTING_VEHICLES :{ORANGE}Ibilgailuak
STR_CONFIG_SETTING_STATIONS :{ORANGE}Geltokiak
STR_CONFIG_SETTING_ECONOMY :{ORANGE}Ekonomia
STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Zama Banaketa
STR_CONFIG_SETTING_AI :{ORANGE}Lehiakideak
STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Aukerak erakutsi
STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interakzioa
STR_CONFIG_SETTING_SOUND :{ORANGE}Soinu efektuak
STR_CONFIG_SETTING_NEWS :{ORANGE}Albisteak eta mezuak
STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Seinaleak
STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Zamak
STR_CONFIG_SETTING_AI_NPC :{ORANGE}Ordenagailu jokalariak
@@ -1560,6 +1599,7 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... Gord
STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... jaramonik ez egiten Grafiko baseari '{STRING}': ez da aurkitu
STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... jaramonik ez egiten Soinu Paketeari '{STRING}': ez da aurkitu
STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... jaramonik ez egiten musika paketeari'{STRING}': ez da aurkitu
STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Memoriaz kanpo
# Intro window
STR_INTRO_CAPTION :{WHITE}OpenTTD {REV}
@@ -1681,6 +1721,7 @@ STR_LIVERY_FREIGHT_TRAM :Merkantzietarak
STR_FACE_CAPTION :{WHITE}Aurpegia aukeratu
STR_FACE_CANCEL_TOOLTIP :{BLACK}Bertan behera utzi aurpegia aukeratu
STR_FACE_OK_TOOLTIP :{BLACK}Aurpegi berria onartu
STR_MAPGEN_RANDOM :{BLACK}Ausaz egin
STR_FACE_MALE_BUTTON :{BLACK}Gizonezkoa
STR_FACE_MALE_TOOLTIP :{BLACK}Aukeratu gizonezko aurpegiak
@@ -1736,6 +1777,8 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Aldatu k
# Network server list
STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Multijokalaria
STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Ez
STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Bai
STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Jokalariaren izena:
STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Izen honen bidez ezagutua izango zara beste jokalarien artean
@@ -1794,6 +1837,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Jokoaren
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Pasahitza ezarri
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Babestu zure jokoa pasahitz batekin ez baduzu nahi publikoa izatea
STR_NETWORK_START_SERVER_UNADVERTISED :Ez
STR_NETWORK_START_SERVER_ADVERTISED :Bai
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} Bezero
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Gehienezko bezeroak:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Gehienezko bezero kopurua aukeratu. Ez da beharrezkoa guztia betetzea
@@ -1914,6 +1959,7 @@ STR_NETWORK_CLIENT :Bezeroa
STR_NETWORK_SPECTATORS :Ikusleak
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Eman nahi duzun diru kantitatea ezarri
STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Ikusle
# Network set password
STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ez gorde sartutako pasahitza
@@ -2103,8 +2149,12 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Zama adi
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Objektuak ikusezinak egin, gardenak izan ordez
# Linkgraph legend window
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Denak
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Bat ere ez
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}erabiltzeke
STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}saturatua
# Base for station construction window(s)
STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Geltoki irismena erakutsi
@@ -2166,7 +2216,7 @@ STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Geltokia
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Eraikiko den geltoki mota
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Eraikiko den geltoki mota
STR_STATION_CLASS_DFLT :Oinarrizko geltokia
STR_STATION_CLASS_DFLT :Geltoki lehenetsia
STR_STATION_CLASS_WAYP :Bidepuntuak
# Signal window
@@ -2408,6 +2458,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Onartutako zama: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Trenbidearen abiadura muga: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Bideko abiadura muga: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Haitzak
@@ -2523,6 +2574,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Gorde
STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Jokoa gorde, aukeratutako izenarekin
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Kargatu
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Aukeratutako jokoa kargatu
STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Aukeratutako garaiera mapa kargatu
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Jokoaren Xehetasunak
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Ez dago informaziorik
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
@@ -2542,7 +2594,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Igo punt
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Jeitsi puntu batean elur garaiera
STR_MAPGEN_RANDOM_SEED :{BLACK}Ausazko hazia:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikatu ausazko hazia ezartzeko
STR_MAPGEN_RANDOM :{BLACK}Ausaz egin
STR_MAPGEN_RANDOM_HELP :{BLACK}Ausazko hazia aldatu paisaia sortzeko
STR_MAPGEN_LAND_GENERATOR :{BLACK}Paisaia sortzailea:
STR_MAPGEN_TREE_PLACER :{BLACK}Zuhaitz algoritmoa:
@@ -2749,6 +2800,7 @@ STR_NEWGRF_INVALID_ENGINE :<garraio modelo
STR_NEWGRF_INVALID_INDUSTRYTYPE :<industria baliogabea>
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
STR_INVALID_VEHICLE :<ibilgailu ezegokia>
# NewGRF scanning window
STR_NEWGRF_SCAN_CAPTION :{WHITE} NewGRF berriak bilatzen.
@@ -2831,9 +2883,13 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Urte ba
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Udaletxea sobornatu zure balorazioa hobetzeko, isun larria jasotzeko arriskuarekinn.{}Kostea: {CURRENCY_LONG}
# Goal window
STR_GOALS_CAPTION :{WHITE}{COMPANY} Helburuak
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Helburu orokorrak
STR_GOALS_GLOBAL_TITLE :{BLACK}Helburu orokorrak:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Ezer ez -
STR_GOALS_PROGRESS :{ORANGE}{STRING}
STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING}
STR_GOALS_COMPANY_TITLE :{BLACK}Konpainiaren helburuak:
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikatu helburuan ikupegi nagusia industrian/herrian/laukian zentratzeko. Ktrl+Klik ikuspegi lehio berria irekiko du industri/herri/laukiaren kokapenean
@@ -2873,6 +2929,13 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING
STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikatu garraio zerbitzuan ikuspegi nagusia industria/herrian zentratzeko. Ktrl+Klik ikuspegi lehio berria irekiko du indutri/herriaren kokapenean
# Story book window
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Orrialdea {NUM}
STR_STORY_BOOK_PREV_PAGE :{BLACK}Aurrekoa
STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Aurreko orrialdera joan
STR_STORY_BOOK_NEXT_PAGE :{BLACK}Hurrengoa
STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Hurrengo orrialdera joan
STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Helburu erreferentzia baliogabea
# Station list window
STR_STATION_LIST_TOOLTIP :{BLACK}Geltokien izenak - Klikatu geltokiaren izenean ikuspegi nagusia geltokian zentratzeko. Ktrl+Klik Ikuspegi lehio berria irekiko du geltokiaren kokapenean
@@ -2900,8 +2963,27 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Zama balorazioak
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Geltokiaren zama balorazioak erakutsi
STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%)
STR_STATION_VIEW_WAITING_STATION :Geltokia: Itxaroten
STR_STATION_VIEW_WAITING_AMOUNT :Kopurua: Itxoiten
STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} {STATION}-tik
STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT}{STATION}-tik
STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT}{STATION}-ra
STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} geltoki ezezagunetik
STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} edozein geltokitara
STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} edozein geltokitatik pasatuz
STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} geltoki honetatik
STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} geltoki honetan geldituz
STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} geltoki honetara
STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} gelditu gabe
STR_STATION_VIEW_GROUP_S_V_D :Abiapuntua-Bidea-Helburua
STR_STATION_VIEW_GROUP_S_D_V :Abiapuntua-Helburua-Bidea
STR_STATION_VIEW_GROUP_V_S_D :Bidea-Abiapuntua-Helburua
STR_STATION_VIEW_GROUP_V_D_S :Bidea-Helburua-Abiapuntua
STR_STATION_VIEW_GROUP_D_S_V :Helburua-Abiapuntua-Bidea
STR_STATION_VIEW_GROUP_D_V_S :Helburua-Bidea-Abiapuntua
############ range for rating starts
STR_CARGO_RATING_APPALLING :Negargarria
@@ -3044,6 +3126,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Azken hi
STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} (%{COMMA} garraiatua)
STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Ikuspegi nagusia industrian kokatu. Ktrl+Klik ikuspegi lehio berri bat irekiko du industriaren kokapenarekin
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ekoizpen kopurua: {YELLOW}{COMMA}%
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industriak berehalako itxiera iragarri du!
############ range for requires starts
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Beharrezkoa du: {YELLOW}{STRING}{STRING}
@@ -3159,10 +3242,10 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Ibilgail
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Itsasontia erosi
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Hegazkina erosi
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Piztuta dagoen ibilgailua erosi. Shift+Klik gutxi gora beherako kostea erakutsi
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Piztuta dagoen ibilgailua erosi. Shift+Klik gutxi gora beherako kostea erakutsi
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Piztuta dagoen itsasontzia erosi. Shift+Klik gutxi gora beherako kostea erakutsi
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Piztuta dagoen hegazkina erosi. Shift+Klik gutxi gora beherako kostea erakutsi
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Aukeratuta dagoen ibilgailua erosi. Shift+Klik gutxi gora beherako kostea erakutsi
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Aukeratuta dagoen ibilgailua erosi. Shift+Klik gutxi gora beherako kostea erakutsi
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Aukeratuta dagoen itsasontzia erosi. Shift+Klik gutxi gora beherako kostea erakutsi
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Aukeratuta dagoen hegazkina erosi. Shift+Klik gutxi gora beherako kostea erakutsi
STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Berrizendatu
STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Berrizendatu
@@ -3407,6 +3490,9 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Mantenim
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Mantenimendu tartea 10 puntutan igo. Ktrl+klik mantenimendu tartea 5 puntutan igo
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Mantenimendu tartea 10 puntutan gutxitu. Ktrl+klik mantenimendu tartea 5 puntutan gutxitu
STR_VEHICLE_DETAILS_DEFAULT :Lehenetsia
STR_VEHICLE_DETAILS_DAYS :Egunak
STR_VEHICLE_DETAILS_PERCENT :Ehunekoa
STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Trena izendatu
STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Errepide ibilgailua izendatu
@@ -3756,6 +3842,7 @@ STR_AI_SETTINGS_START_DELAY :IA hau abiarazt
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} ren "irakur nazazu" artxiboa
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} {STRING}-aren aldaketak
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} {STRING} rako lizentzia
STR_TEXTFILE_WRAP_TEXT :{WHITE}Testua trinkotu
STR_TEXTFILE_VIEW_README :{BLACK}Ikusi "irakur nazazu"
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Aldaketak
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lizentzia
@@ -3778,6 +3865,10 @@ STR_INCOME_FLOAT_INCOME_SMALL :{TINY_FONT}{GRE
STR_INCOME_FLOAT_INCOME :{GREEN}Sarrerak: {CURRENCY_LONG}
STR_FEEDER_TINY :{TINY_FONT}{YELLOW}Transferitu: {CURRENCY_LONG}
STR_FEEDER :{YELLOW}Transferitu: {CURRENCY_LONG}
STR_FEEDER_INCOME_TINY :{TINY_FONT}{YELLOW}Transferitu: {CURRENCY_LONG}{WHITE} / {GREEN}Sarrera: {CURRENCY_LONG}
STR_FEEDER_INCOME :{YELLOW}Transferitu: {CURRENCY_LONG}{WHITE} / {GREEN}Sarrera: {CURRENCY_LONG}
STR_FEEDER_COST_TINY :{TINY_FONT}{YELLOW}Transferitu: {CURRENCY_LONG}{WHITE} / {RED}Kostua: {CURRENCY_LONG}
STR_FEEDER_COST :{YELLOW}Transferitu: {CURRENCY_LONG}{WHITE} / {RED}Kostua: {CURRENCY_LONG}
STR_MESSAGE_ESTIMATED_COST :{WHITE}Gutxi gora beherako kostea: {CURRENCY_LONG}
STR_MESSAGE_ESTIMATED_INCOME :{WHITE}Gutxi gora beherako sarrerak: {CURRENCY_LONG}
@@ -4129,6 +4220,9 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Ezin da
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... garraioa suntsituta
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ez da ibilgailu erabilgarririk egongo
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Aldatu zure NewGRF konfigurazioa
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ez dago ibilgailu erabilgarririk oraindik
# Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ezin da trena seinalea pasatzera behartu, istripu arriskua...
@@ -4173,6 +4267,7 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ezin da
STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe-ren simulazio bat
# Translatable descriptions in media/baseset/*.ob* files
STR_BASESOUNDS_NONE_DESCRIPTION :Soinurik gabeko soinu pakete bat
##id 0x2000
# Town building names
@@ -4622,6 +4717,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
STR_JUST_STRING :{STRING}
STR_JUST_STRING_STRING :{STRING}{STRING}
STR_JUST_RAW_STRING :{STRING}
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
# Slightly 'raw' stringcodes with colour or size
STR_BLACK_COMMA :{BLACK}{COMMA}
+95 -89
View File
@@ -553,8 +553,8 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Закр
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Загаловак вакна — цягніце яго для перамяшчэньня вакна
STR_TOOLTIP_SHADE :{BLACK}Згарнуць вакно, пакінуўшы загаловак
STR_TOOLTIP_DEBUG :{BLACK}Паказаць наладачную iнфармацыю NewGRF
STR_TOOLTIP_DEFSIZE :{BLACK}Змяніць памеры вакна на значэньні па змаўчаньні. Ctrl+пстрычка захавае бягучы памер як значэньне па змаўчаньні.
STR_TOOLTIP_STICKY :{BLACK}Пазначыць гэтае вакно як незачыняльнае па клявішы «Закрыць усе вокны». Ctrl+пстрычка захоўвае гэты стан па змаўчанні.
STR_TOOLTIP_DEFSIZE :{BLACK}Зьмяніць памеры вакна на значэньні па змоўчаньні. Ctrl+пстрычка захавае бягучы памер як значэньне па змоўчаньні.
STR_TOOLTIP_STICKY :{BLACK}Пазначыць гэтае вакно як незачыняльнае па клявішы «Закрыць усе вокны». Ctrl+пстрычка захоўвае гэты стан па змоўчаньні.
STR_TOOLTIP_RESIZE :{BLACK}Націсьніце ды цягніце для зьмяненьня памеру вакна
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Вялікае/маленькае вакно
STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Пракрутка ўверх/уніз
@@ -612,7 +612,7 @@ STR_SORT_BY_POWER_VS_RUNNING_COST :Магутна
STR_SORT_BY_CARGO_CAPACITY :Ёмiстасьць
STR_SORT_BY_RANGE :Далёкасьць
STR_SORT_BY_POPULATION :Насельніцтва
STR_SORT_BY_RATING :Рэйтынг
STR_SORT_BY_RATING :Рэйтынґ
# Tooltips for the main toolbar
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Паўза
@@ -626,7 +626,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Сьпi
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Паказаць фінансавую інфармацыю кампаніі
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Паказаць агульную інфармацыю аб кампаніі
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Паказаць гісторыю кампаніі
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Паказаць спіс задач
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Паказаць сьпіс задач
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Паказаць ґрафiкi
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Паказаць рэйтынґі кампаніяў
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Сьпіс існуючых прадпрыемстваў; заснаваньне новых
@@ -700,7 +700,7 @@ STR_FILE_MENU_EXIT :Выхад
# map menu
STR_MAP_MENU_MAP_OF_WORLD :Мапа сусьвету
STR_MAP_MENU_EXTRA_VIEW_PORT :Дадатковае вакно прагляду
STR_MAP_MENU_LINGRAPH_LEGEND :Легенда грузаперавозак
STR_MAP_MENU_LINGRAPH_LEGEND :Леґенда грузаперавозак
STR_MAP_MENU_SIGN_LIST :Сьпіс таблічак
############ range for town menu starts
@@ -994,13 +994,13 @@ STR_SMALLMAP_TYPE_OWNERS :Уладаль
STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Паказаць на мапе контуры зямлі
STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Паказаць на мапе транспарт
STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Паказаць на мапе прамысловасьць
STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Паказаць на карце грузавыя плыні
STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Паказаць на мапе грузавыя плыні
STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Паказаць на мапе маршруты
STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Паказаць на мапе расьліннасьць
STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Паказаць на мапе уладальнікаў зямлі
STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Клiк па тыпе прадпрыемства пераключае яго паказ на мапе. Ctrl+клiк адключае ўсе тыпы, акрамя аднаго выбранага. Паўторны Ctrl+клiк уключае ўсе тыпы прадпрыемстваў.
STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Клiк па назьве кампанii пераключае паказ яе маёмасьцi на мапе. Ctrl+клiк адключае ўсе кампанii, акрамя адной выбранай.
STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Пстрычка па назве грузу пераключае бачнасць гэтага грузу. Ctrl+пстрычка хавае ўсе грузы акрамя выбранага. Паўторная Ctrl+пстрычка адлюстроўвае ўсе грузы.
STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Пстрычка па назве грузу пераключае бачнасьць гэтага грузу. Ctrl+пстрычка хавае ўсе грузы акрамя выбранага. Паўторная Ctrl+пстрычка адлюстроўвае ўсе грузы.
STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Дарогі
STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Чыгункі
@@ -1123,13 +1123,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} чакае ў дэпо
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} чакае ў самалётным анґары
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}У ТС «{VEHICLE}» не хапае заданьняў у раскладзе
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} не мае заданьняў
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} мае дубляваныя заданьні
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} мае няісную станцыю ў заданьнях
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} састарэў
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} цалкам састарэў
@@ -1383,7 +1381,8 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Наладкі
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Наладкі кампаніі (утрымліваюцца ў файлах захаваньняў; сапраўдныя толькі для новых гульняў)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Наладкі кампаніі (утрымліваюцца ў файлах захаваньняў; сапраўдныя толькі для бягучай гульні)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Паказваць:
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Катэґорыя:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Тып:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Адлюстроўваць у сьпісе толькі зьмененыя наладкі
STR_CONFIG_SETTING_RESTRICT_BASIC :Базавыя наладкі
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Пашыраныя наладкі
@@ -1398,6 +1397,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Наладкі
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Наладкі гульні (запісваюцца ў захаваньне; уплываюць толькі на бягучую гульню)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Наладкі кампаніі (запісваюцца ў захаваньні; уплываюць толькі на новыя гульні)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Наладкі кампаніі (запісваюцца ў захаваньне; уплываюць толькі на бягучую кампанію)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Катэґорыя {BLACK}да {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Тып BLACK}да {WHITE}Усе тыпы наладак
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Катэґорыя {BLACK}да {WHITE}{STRING} {BLACK}і {SILVER}Тып {BLACK}да {WHITE}Усе тыпы наладак
STR_CONFIG_SETTINGS_NONE :{WHITE}- Няма -
STR_CONFIG_SETTING_OFF :не
STR_CONFIG_SETTING_ON :так
@@ -1432,7 +1435,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Усталюй
STR_CONFIG_SETTING_RECESSIONS :Спады: {STRING}
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Калі ўключана, спад можа наставаць раз у некалькі гадоў. Падчас спаду ўвесь аб'ём вытворчасьці значна ніжэй (ён вяртаецца да ранейшага ўзроўня, калі спад сканчаецца)
STR_CONFIG_SETTING_TRAIN_REVERSING :Забараніць разварот цягнікоў на станцыях: {STRING}
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Калі ўключана, цягнікі ня будуць разварочвацца на прахадных станцыях, нават калі гэта дазволіць скараціць шлях да наступнага пункта прызначэньня
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Калі ўключана, цягнікі ня будуць разварочвацца на прахадных станцыях, нават калі гэта дазволіць скараціць шлях да наступнага пункта прызначэньня.
STR_CONFIG_SETTING_DISASTERS :Бедствы: {STRING}
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Пераключыце бедствы, якія могуць час ад часу блякаваць ці зьнішчаць транспартныя сродкі ды інфраструктуру
STR_CONFIG_SETTING_CITY_APPROVAL :Стаўленьне гарадзкой рады да рэструктурызацыі навакольляў: {STRING}
@@ -1652,7 +1655,7 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-01-31
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Калі ў NewGRF ня вызначана палітра, выкарыстоўваць: {STRING}
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Палітра ґрафічных набораў (NewGRF), якая ўжываецца па змоўчаньні, калі ня вызначана ў самім наборы.
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Палітра па змаўчаньні (DOS)
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Палітра па змоўчаньні (DOS)
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Састарэлы фармат палітры (Win)
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Аўтаматычнае ўключэньне паўзы напачатку гульні: {STRING}
@@ -1879,64 +1882,64 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Адносна
STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Выдаляць абсурдныя элемэнты падчас дарожнага будаўніцтва: {STRING}
STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Выдаляць "мёртвыя" канцы дарогаў, якія ўтварыліся пасля рэканструкцыі вуліц.
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Абнаўляць граф размеркаваньня раз у {STRING} д{P 0:2 зень ні зён}
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Перыяд пераразліку графаў размеркаваньня. У кожным цыкле разлічваецца не граф цалкам, а толькі адзін з яго кампанентаў. Чым менш гэта значэньне, тым больш будзе нагрузка на працэсар. Чым больш значэньне, тым больш часу пройдзе перад пачаткам разліку графаў для новых маршрутаў.
STR_CONFIG_SETTING_LINKGRAPH_TIME :Пералічваць граф размеркавання раз у {STRING} д{P 0:2 зень ні зён}
STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Час, адведзены для пераразліку кампанентаў графа. Разлік запускаецца асобным струменем і працягваецца на працягу паказанай колькасці гульнявых дзён. Калі значэньне будзе занадта маленькім, то, магчыма, разлік не паспее завяршыцца, і гульня будзе чакаць завяршэнні (гэта прывядзе да затрымак). Пры вялікіх значэньнях графы размеркаваньня будуць павольней абнаўляцца пры зменах маршрутаў.
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Абнаўляць ґраф размеркаваньня раз у {STRING} д{P 0:2 зень ні зён}
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Перыяд пераразьліку ґрафаў размеркаваньня. У кожным цыкле разьлічваецца не ґраф цалкам, а толькі адзін зь яго кампанэнтаў. Чым менш гэта значэньне, тым больш будзе нагрузка на працэсар. Чым больш значэньне, тым больш часу пройдзе перад пачаткам разьліку ґрафаў для новых маршрутаў.
STR_CONFIG_SETTING_LINKGRAPH_TIME :Пералічваць ґраф разьмеркаваньня раз у {STRING} д{P 0:2 зень ні зён}
STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Час, адведзены для пераразьліку кампанэнтаў ґрафа. Разьлік запускаецца асобным патокам і працягваецца на працягу паказанай колькасьці гульнявых дзён. Калі значэньне будзе надта малым, то, магчыма, разьлік не пасьпее завяршыцца, і гульня будзе чакаць завяршэньня (гэта прывядзе да затрымак). Пры вялікіх значэньнях ґрафы размеркаваньня будуць павольней абнаўляцца пры зьменах маршрутаў.
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :уручную
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :несіметрычнае
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :сіметрычнае
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Размеркаваньне пасажыраў: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :«Сіметрычнае» азначае, што прыкладна аднолькавая колькасць пасажыраў будзе накіроўвацца па прамым і зваротным маршрутам.{}«Несіметрычнае» азначае, што пасажыраплыні ў любых кірунках не будуць залежаць адзін ад аднаго.{}«Уручную» - не выкарыстоўваць аўтаматычнае размеркаваньне для пасажыраў.
STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Размеркаваньне пошты: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :«Сіметрычнае» азначае, што прыкладна аднолькавая колькасць пошты будзе накіроўвацца па прамым і зваротным маршрутам.{}«Несіметрычнае» азначае, што аб'ёмы пошты ў любых кірунках не будуць залежаць адзін ад аднаго.{}«Уручную» - не выкарыстоўваць аўтаматычнае размеркаваньне для пошты.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Размеркаваньне каштоўных грузаў: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Каштоўныя грузы - гэта каштоўнасці, алмазы і золата. Модулі NewGRF могуць змяніць вызначэньні грузаў.{}«Сіметрычнае» азначае, што прыкладна аднолькавая колькасць грузу будзе накіроўвацца па прамым і зваротным маршрутам.{}«Несіметрычнае» азначае, што аб'ёмы грузаў у любых кірунках не будуць залежаць адзін ад аднаго.{}«Уручную» - не выкарыстоўваць аўтаматычнае размеркаваньне грузаў.{}На субарктычных мапах рэкамендуецца ўсталяваць несіметрычнае ці ручное размеркаваньне, бо банкі не вяртаюць золата ў шахты. Ва ўмераным ці субтрапічным клімаце можна ўсталяваць сіметрычнае размеркаваньне, бо банкі абменьваюцца каштоўнасцямі паміж сабой.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Размеркаваньне іншых грузаў: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :«Сіметрычнае» азначае, што прыкладна аднолькавая колькасць грузу будзе накіроўвацца па прамым і зваротным маршрутам.{}«Несіметрычнае» азначае, што аб'ёмы грузаў у любых кірунках не будуць залежаць адзін ад аднаго.{}«Уручную» - не выкарыстоўваць аўтаматычнае размеркаваньне грузаў.{}Вам, хутчэй за ўсё, запатрабуецца несіметрычнае ці ручное размеркаваньне.
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Дакладнасць размеркаваньня: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Чым вышэй дадзенае значэньне, тым больш працэсарнага часу выкарыстоўваецца для разліку графа грузаперавозак. Пры высокіх значэньнях магчымы затрымкі ў гульні. Аднак пры нізкіх значэньнях разлікі грузаплыняў будуць недакладнымі, і грузы, магчыма, будуць адпраўляцца не туды, куды трэба.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Залежнасць попыту ад адлегласці: {STRING}
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Калі гэта значэньне больш 0, тая колькасць грузу, які адпраўляецца з адной станцыі на іншую, будзе залежаць ад адлегласці паміж станцыямі. Чым вышэй гэта значэньне, тым больш грузу будзе адпраўляцца да блізкіх станцый і менш{NBSP}- да далёкіх.
STR_CONFIG_SETTING_DEMAND_SIZE :Колькасць грузу, які вяртаецца, пры сіметрычным размеркаваньні: {STRING}
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Усталёўка гэтага значэньня ніжэй 100% прымусіць размеркаваньне быць меней «сіметрычным»: колькасць грузу, які вяртаецца, зможа быць менш, чым колькасць адпраўленага. Усталёўка ў 0% зробіць размеркаваньне цалкам несіметрычным.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Мяжа загрузкі кароткіх маршрутаў перад выкарыстаньнем ёмістых: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Пры наяўнасці некалькіх маршрутаў паміж станцыямі алгарытм размеркаваньня грузаў будзе выкарыстоўваць найкароткі маршрут да яго загрузкі, потым наступны па даўжыні і г.{NBSP}д. Пры лішку грузу маршруты будуць перагружацца пачынальна з самых прадукцыйных. Загрузка разлічваецца зыходзячы з адзнакі прапускной здольнасці (якая можа быць недакладнай) і інтэнсіўнасці выкарыстаньня. Гэта наладка вызначае, наколькі загружаць маршрут перад тым, як пачаць выкарыстоўваць наступны. Усталюйце значэньне ніжэй 100% для таго, каб пазбегнуць затрымкі грузу, калі прапускная здольнасць маршруту будзе пераацэнена алгарытмам.
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :несымэтрычнае
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :сымэтрычнае
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Разьмеркаваньне пасажыраў: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :«Сымэтрычнае» азначае, што прыкладна аднолькавая колькасьць пасажыраў будзе накіроўвацца па прамым і зваротным маршрутам.{}«Несымэтрычнае» азначае, што пасажырапатокі ў любых кірунках не будуць залежаць адзін ад аднаго.{}«Уручную» не выкарыстоўваць аўтаматычнае разьмеркаваньне для пасажыраў.
STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Разьмеркаваньне пошты: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :«Сымэтрычнае» азначае, што прыкладна аднолькавая колькасьць пошты будзе накіроўвацца па прамым і зваротным маршрутам.{}«Несымэтрычнае» азначае, што аб'ёмы пошты ў любых кірунках не будуць залежаць адзін ад аднаго.{}«Уручную» не выкарыстоўваць аўтаматычнае разьмеркаваньне для пошты.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Разьмеркаваньне каштоўных грузаў: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Каштоўныя грузы гэта каштоўнасьці, алмазы й золата. Модулі NewGRF могуць зьмяніць вызначэньні грузаў.{}«Сымэтрычнае» азначае, што прыкладна аднолькавая колькасьць грузу будзе накіроўвацца па прамым і зваротным маршрутам.{}«Несымэтрычнае» азначае, што аб'ёмы грузаў у любых кірунках не будуць залежаць адзін ад аднаго.{}«Уручную» не выкарыстоўваць аўтаматычнае разьмеркаваньне грузаў.{}На субарктычных мапах рэкамендуецца ўсталяваць несымэтрычнае ці ручное разьмеркаваньне, бо банкі не вяртаюць золата ў шахты. Ва ўмераным ці субтрапічным клімаце можна ўсталяваць сымэтрычнае разьмеркаваньне, бо банкі абменьваюцца каштоўнасьцямі паміж сабой.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Разьмеркаваньне іншых грузаў: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :«Несымэтрычнае» азначае, што выпадковыя аб'ёмы грузаў могуць быць адпраўлены ў любых кірунках.{}«Уручную» азначае, што ніякага аўтаматычнага разьмеркаваньня для гэтых грузаў ня будзе.
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Дакладнасьць разьмеркаваньня: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Чым вышэй дадзенае значэньне, тым больш працэсарнага часу выкарыстоўваецца для разьліку ґрафа грузаперавозак. Пры высокіх значэньнях магчымы затрымкі ў гульні. Аднак пры нізкіх значэньнях разлікі грузапатокаў будуць недакладнымі, і грузы, магчыма, будуць адпраўляцца не туды, куды трэба.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Залежнасьць попыту ад адлегласьці: {STRING}
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Калі гэта значэньне больш за 0 — тая колькасьць грузу, што адпраўляецца з адной станцыі на іншую, будзе залежаць ад адлегласьці паміж станцыямі. Чым вышэй гэта значэньне, тым больш грузу будзе адпраўляцца да блізкіх станцый і менш{NBSP} да далёкіх.
STR_CONFIG_SETTING_DEMAND_SIZE :Колькасьць грузу, што вяртаецца, пры сымэтрычным разьмеркаваньні: {STRING}
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Усталёўка гэтага значэньня ніжэй 100% прымусіць разьмеркаваньне быць меней «сымэтрычным»: колькасьць грузу, які вяртаецца, зможа быць меншай за колькасць адпраўленага. Усталёўка 0% зробіць разьмеркаваньне цалкам несымэтрычным.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Насычэньне кароткіх маршрутаў перад выкарыстаньнем ёмістых: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Пры наяўнасці некалькіх маршрутаў паміж станцыямі альґарытм разьмеркаваньня грузаў будзе выкарыстоўваць карацейшы маршрут да яго насычэньня, потым наступны па даўжыні, пакуль ён таксама не будзе насычаны, і г.{NBSP}д. Насычэньне вызначаецца па ацэнцы ёмістасьці ды плянуемай напружанасьці выкарыстаньня. Калі ўсе шляхі насычаныя, а попыт застаецца, Cargodist будзе перагружаць усе маршруты, аддаючы перавагу больш ёмістым. Збольшага альґарытм ня будзе дакладна вылічваць ёмістасьць. Гэта наладка дазваляе вызнасыць, наколькі загружаць маршрут, перад тым як пачаць выкарыстоўваць даўжэйшы. Усталюйце значэньне ніжэй за 100%, каб пазьбегнуць перагрузкі станцыяў у выпадку, калі прапускная здольнасьць маршруту будзе пераацэнена альґарытмам.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Сістэма адзінак для хуткасці: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Паказваць значэнні хуткасці ў выбранай сістэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :англійская (міль/г)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :метрычная (км/г)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Сыстэма адзінак для хуткасьці: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Паказваць значэньні хуткасьці ў выбранай сыстэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :ангельскія (міль/г)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :мэтрычная (км/г)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :СІ (м/с)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Сістэма адзінак для магутнасці: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Паказваць магутнасць рухавікоў транспартных сродкаў у выбранай сістэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :англійская (к. с.)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :метрычная (к. с.)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Сыстэма адзінак для магутнасьці: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Паказваць магутнасьць рухавікоў транспартных сродкаў у выбранай сыстэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :ангельская (к. с.)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :мэтрычная (к. с.)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :СІ (кВт)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Сістэма адзінак для масы: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Паказваць велічыні масы ў абранай сістэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :англійская (малая тона)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :метрычная (т)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Сыстэма адзінак для масы: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Паказваць велічыні масы ў абранай сыстэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :ангельская (малая тона)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :мэтрычная (т)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :СІ (кг)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Сістэма адзінак для аб'ёму: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Паказваць значэньні аб'ёму ў выбранай сістэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :англійская (галон)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :метрычная (л)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Сыстэма адзінак для аб'ёму: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Паказваць значэньні аб'ёму ў выбранай сыстэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :ангельская (галон)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :мэтрычная (л)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :СІ (m³)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Сістэма адзінак для цягавага намаганьня: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Паказваць значэнні цягавага намаганьня ў выбранай сістэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Сыстэма адзінак для цягавага намаганьня: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Паказваць значэньні цягавага намаганьня ў выбранай сыстэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :ангельская (фунт-сіла)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :метрычная (кгс)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :мэтрычная (кгс)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :СІ (кН)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Сістэма адзінак для вышыні: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Паказваць значэнні вышыні ў выбранай сістэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :англійская (фут)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :метрычная (м)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Сыстэма адзінак для вышыні: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Паказваць значэньні вышыні ў выбранай сыстэме адзінак
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :ангельская (фут)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :мэтрычная (м)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :СІ (м)
STR_CONFIG_SETTING_GUI :{ORANGE}Інтэрфэйс
@@ -1945,7 +1948,7 @@ STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Буд
STR_CONFIG_SETTING_VEHICLES :{ORANGE}Транспарт
STR_CONFIG_SETTING_STATIONS :{ORANGE}Станцыі
STR_CONFIG_SETTING_ECONOMY :{ORANGE}Эканоміка
STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Размеркаваньне грузаў
STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Разьмеркаваньне грузаў
STR_CONFIG_SETTING_AI :{ORANGE}Канкурэнты
STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Наладкі відарысу
STR_CONFIG_SETTING_INTERACTION :{ORANGE}Узаемадзеяньне
@@ -2116,6 +2119,7 @@ STR_LIVERY_FREIGHT_TRAM :Грузавы
STR_FACE_CAPTION :{WHITE}Выбар твару
STR_FACE_CANCEL_TOOLTIP :{BLACK}Скасаваць выбар новага твару
STR_FACE_OK_TOOLTIP :{BLACK}Прыняць выбар новага твару
STR_MAPGEN_RANDOM :{BLACK}Выпадковая
STR_FACE_MALE_BUTTON :{BLACK}Мужчынскі
STR_FACE_MALE_TOOLTIP :{BLACK}Выбар мужчынскіх твараў
@@ -2172,7 +2176,7 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Зьмя
# Network server list
STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Сеткавая гульня
STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Інтэрнэт
STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Выберыце паміж гульнёй праз Інтэрнэт, або ў лакальнай сетцы
STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Выберыце паміж гульнёй праз Інтэрнэт або ў лакальнай сетцы
STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Не
STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Так
STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Імя гульца:
@@ -2564,14 +2568,14 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Пера
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Зрабіць аб'екты не празрыстымі, а цалкам нябачнымі
# Linkgraph legend window
STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Схема грузаплыняў
STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Схема грузапатокаў
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Усе
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Няма
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Выберыце кампаніі для адлюстраваньня
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}нявыкарыст.
STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}загруж.
STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}насычана
STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}перагруз
# Base for station construction window(s)
@@ -2880,6 +2884,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Прымае: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Макс. хуткасьць чыгункi: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Макс. хуткасьць аўтамабіляў: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Камяні
@@ -2976,7 +2981,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Зямля на
STR_ABOUT_OPENTTD :{WHITE}Аб OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Арыґінальныя аўтарскія правы {COPYRIGHT} 1995 Chris Sawyer. Усе правы абароненыя.
STR_ABOUT_VERSION :{BLACK}OpenTTD вэрсія {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Каманда распрацоўнікаў OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 20022014 Каманда распрацоўнікаў OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Захаваць гульню
@@ -2995,6 +3000,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Заха
STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Захаваць гульню пад выбранай назвай
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Загрузіць
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Загрузіць выбраную гульню
STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Загрузіць выбраную мапу вышыняў
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Зьвесткі аб гульні
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Няма зьвесткаў.
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
@@ -3015,7 +3021,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Падн
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Апусьціць сьнегавую лінію
STR_MAPGEN_RANDOM_SEED :{BLACK}Выпадковая лічба:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Пстрыкніце тут, каб увесьці адвольную пачатковую лічбу. Ляндшафт ствараецца псэўдавыпадкова, лічба — апорная кропка ў пасьлядоўнасьці выпадковых лічбаў.
STR_MAPGEN_RANDOM :{BLACK}Выпадковая
STR_MAPGEN_RANDOM_HELP :{BLACK}Зьмяніць выпадковую лічбу, якую выкарыстоўвае ґенэратар ляндшафту
STR_MAPGEN_LAND_GENERATOR :{BLACK}Ґенэратар ляндшафту:
STR_MAPGEN_TREE_PLACER :{BLACK}Альґарытм дрэваў:
@@ -3209,6 +3214,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Файлы
STR_NEWGRF_BROKEN :{WHITE}Файл NewGRF «{0:STRING}» можа прывесьці да страты сынхранізацыі й крушэньня гульні.
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Мяняецца стан лакаматыва «{1:ENGINE}», які знаходзіцца па-за дэпо.
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Мяняецца даўжыня транспарту «{1:ENGINE}», які знаходзіцца па-за дэпо.
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Гэта зьмяніла ёмістасьць транспарту '{1:ENGINE}', калі не ў дэпо для пераабсталяваньня
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Цягнік «{VEHICLE}», які належыць «{COMPANY}», мае няправільную даўжыню. Верагодна, гэта выклікана праблемамі ў файле новай ґрафікі. Гульня можа рассынхранізавацца або «выляцець».
STR_NEWGRF_BUGGY :{WHITE}NewGRF «{0:STRING}» падае няправільную інфармацыю.
@@ -3355,10 +3361,10 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Наці
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}Гісторыя кампаніі «{COMPANY}»
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Сусветная гісторыя
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Сусьветная гісторыя
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Стар. {NUM}
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Перайсьці на патрэбную старонку, выбраўшы яе ў выпадаючым спісе.
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Перайсьці на патрэбную старонку, выбраўшы яе ў выпадаючым сьпісе.
STR_STORY_BOOK_PREV_PAGE :{BLACK}Папярэдняя
STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Папярэдняя старонка
STR_STORY_BOOK_NEXT_PAGE :{BLACK}Наступная
@@ -3392,18 +3398,18 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рэйтынґ
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Паказаць рэйтынґ станцыі
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Месячны аб'ём паставак і мясцовы рэйтынг:
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Месячны аб'ём паставак і мясцовы рэйтынґ:
STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%)
STR_STATION_VIEW_GROUP :{BLACK}Групаваць
STR_STATION_VIEW_WAITING_STATION :па станцыі (якія чакаюць)
STR_STATION_VIEW_WAITING_AMOUNT :па колькасці (якія чакаюць)
STR_STATION_VIEW_PLANNED_STATION :па станцыі (планаваныя)
STR_STATION_VIEW_PLANNED_AMOUNT :па колькасці (планаваныя)
STR_STATION_VIEW_WAITING_AMOUNT :па колькасьці (якія чакаюць)
STR_STATION_VIEW_PLANNED_STATION :па станцыі (плянаваныя)
STR_STATION_VIEW_PLANNED_AMOUNT :па колькасьці (плянаваныя)
STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} з {STATION}
STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} праз {STATION}
STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} у {STATION}
STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} з невядомай станцыі
STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} зь невядомай станцыі
STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} на любую станцыю
STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} праз любую станцыю
STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} з гэтай станцыі
@@ -3411,12 +3417,12 @@ STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_S
STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} на гэту станцыю
STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} без перасадак
STR_STATION_VIEW_GROUP_S_V_D :Адкуль - Праз - Куды
STR_STATION_VIEW_GROUP_S_D_V :Адкуль - Куды - Праз
STR_STATION_VIEW_GROUP_V_S_D :Праз - Адкуль - Куды
STR_STATION_VIEW_GROUP_V_D_S :Праз - Куды - Адкуль
STR_STATION_VIEW_GROUP_D_S_V :Куды - Адкуль - Праз
STR_STATION_VIEW_GROUP_D_V_S :Куды - Праз - Адкуль
STR_STATION_VIEW_GROUP_S_V_D :Адкуль Праз Куды
STR_STATION_VIEW_GROUP_S_D_V :Адкуль Куды Праз
STR_STATION_VIEW_GROUP_V_S_D :Праз Адкуль Куды
STR_STATION_VIEW_GROUP_V_D_S :Праз Куды Адкуль
STR_STATION_VIEW_GROUP_D_S_V :Куды Адкуль Праз
STR_STATION_VIEW_GROUP_D_V_S :Куды Праз Адкуль
############ range for rating starts
STR_CARGO_RATING_APPALLING :Жудасны
@@ -4183,7 +4189,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ґраф
STR_TIMETABLE_STATUS_START_AT :{BLACK}Адлік часу пачнецца з {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}Пачатковая дата
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Выберыце пачатковую дату для гэтага графіка. Ctrl+пстрычка ўсталюе пачатковую дату і раўнамерна размяркуе ўсе транспартныя сродкі, якія рухаюцца па гэтым маршруце, калі час руху па ім цалкам разлічаны.
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Выберыце пачатковую дату для гэтага ґрафіка. Ctrl+пстрычка ўсталюе пачатковую дату і раўнамерна разьмяркуе ўсе транспартныя сродкі, якія рухаюцца па гэтым маршруце, калі час руху па ім цалкам разьлічаны.
STR_TIMETABLE_CHANGE_TIME :{BLACK}Зьмяніць час
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Зьмяніць час для вылучанага заданьня
@@ -4298,7 +4304,7 @@ STR_TEXTFILE_README_CAPTION :{WHITE}{STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} сьпiс зьменаў {STRING}
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} ліцэнзія {STRING}
STR_TEXTFILE_WRAP_TEXT :{WHITE}Пераносіць тэкст
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Пераносіць тэкст так, каб ён змяшчаўся ў акне без неабходнасці прагорткі
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Пераносіць тэкст так, каб ён зьмяшчаўся ў вакне без неабходнасьці пракруткі
STR_TEXTFILE_VIEW_README :{BLACK}Прагледзець iнструкцыю
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Журнал зьменаў
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Ліцэнзія
@@ -4677,9 +4683,9 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Не а
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... транспартны сродак зьнішчаны
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Усе транспартныя сродкі будуць недаступныя
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Змяніце канфігурацыю модуля NewGRF
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Зьмяніце канфігурацыю модуля NewGRF
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Няма даступных транспартных сродкаў
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Пачніце гульню не раней {DATE_SHORT} або падключыце NewGRF, дадаючы транспартныя сродкі, якія выкарыстоўваліся тым часам.
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Пачніце гульню пасьля {DATE_SHORT} або падключыце NewGRF з транспартам адпаведных часоў.
# Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Немагчыма іґнараваць сыґнал. Небясьпечна...
@@ -4724,14 +4730,14 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Не а
STR_DESKTOP_SHORTCUT_COMMENT :Эканамічны сімулятар на аснове «Transport Tycoon Deluxe»
# Translatable descriptions in media/baseset/*.ob* files
STR_BASEGRAPHICS_DOS_DESCRIPTION :Арыгінальная графіка з Transport Tycoon Deluxe для DOS.
STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Арыгінальная графіка з нямецкай версіі Transport Tycoon Deluxe для DOS.
STR_BASEGRAPHICS_WIN_DESCRIPTION :Арыгінальная графіка з Transport Tycoon Deluxe для Windows.
STR_BASESOUNDS_DOS_DESCRIPTION :Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS.
STR_BASESOUNDS_WIN_DESCRIPTION :Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows.
STR_BASESOUNDS_NONE_DESCRIPTION :"Пусты" набор гукавога афармленьня, не змяшчаючы ніякіх гукаў.
STR_BASEMUSIC_WIN_DESCRIPTION :Арыгінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows.
STR_BASEMUSIC_NONE_DESCRIPTION :"Пусты" набор музычнага афармлення, не змяшчаючы ніякай музыкі.
STR_BASEGRAPHICS_DOS_DESCRIPTION :Арыґінальная ґрафіка з Transport Tycoon Deluxe для DOS.
STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Арыґінальная ґрафіка зь нямецкай версіі Transport Tycoon Deluxe для DOS.
STR_BASEGRAPHICS_WIN_DESCRIPTION :Арыґінальная ґрафіка з Transport Tycoon Deluxe для Windows.
STR_BASESOUNDS_DOS_DESCRIPTION :Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS.
STR_BASESOUNDS_WIN_DESCRIPTION :Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows.
STR_BASESOUNDS_NONE_DESCRIPTION :"Пусты" набор гукавога афармленьня, які не зьмяшчае ніякіх гукаў.
STR_BASEMUSIC_WIN_DESCRIPTION :Арыґінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows.
STR_BASEMUSIC_NONE_DESCRIPTION :"Пусты" набор музычнага афармлення, які не зьмяшчае ніякай музыкі.
##id 0x2000
# Town building names
+48 -42
View File
@@ -811,13 +811,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} está aguardando no depósito
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} está aguardando no hangar
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} tem tem muito poucas ordens no horário
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} tem uma ordem nula
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} tem ordens duplicadas
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} tem uma estação inválida em suas ordens
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} está ficando velho
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} está ficando muito velho
@@ -1071,8 +1069,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Config. do jogo
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Config. da companhia (guardado no savegame; afeta apenas novos jogos)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Config. da companhia (guardado no savegame; afeta apenas a comp. atual)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Exibir:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restringe a lista abaixo a mostrar apenas configs. alteradas
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categoria:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tipo:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restringe a lista abaixo a mostrar apenas filtros pré-definidos
STR_CONFIG_SETTING_RESTRICT_BASIC :Configs. básicas
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Configs. avançadas
STR_CONFIG_SETTING_RESTRICT_ALL :Configs. expert / todas as configs.
@@ -1081,11 +1080,15 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Configs. com um
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restringe a lista abaixo a determinados tipos
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Todos os tipos de configs.
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Config. do cliente (não é guardado no savegame; afeta todos os jogos)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Config. do jogo (guardado no savegame; afeta apenas novos jogos)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Config. do jogo (guardado no savegame; afeta apenas o jogo atual)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Config. da companhia (guardado no savegame; afeta apenas novos jogos)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Config. de companhia (guardado no savegame; afeta apenas a companhia atual)
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Configs. do cliente (não é guardado no savegame; afeta todos os jogos)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Configs. do jogo (guardado no savegame; afeta apenas novos jogos)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Configs. do jogo (guardado no savegame; afeta apenas o jogo atual)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Configs. da companhia (guardado no savegame; afeta apenas novos jogos)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Configs. de companhia (guardado no savegame; afeta apenas a companhia atual)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Mostrar todos resultados por configuração{}{SILVER}Categoria {BLACK}até {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Mostrar todos resultados por configuração{}{SILVER}Tipo {BLACK}até {WHITE}Todas configurações de tipos
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Mostrar todos resultados por configuração{}{SILVER}Category {BLACK}até {WHITE}{STRING} {BLACK}e {SILVER}Tipo {BLACK}até {WHITE}Todas configurações de tipos
STR_CONFIG_SETTINGS_NONE :{G=m}{WHITE}- Nenhum -
STR_CONFIG_SETTING_OFF :Desl.
STR_CONFIG_SETTING_ON :Lig.
@@ -1123,12 +1126,12 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Desabilitar rev
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Se ativado, trens não irão mudar de direção em estações não terminais, mesmo se houver um caminho mais curto ao próximo destino ao trocar de direção
STR_CONFIG_SETTING_DISASTERS :Desastres: {STRING}
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Alterna desastres que podem ocasionalmente bloquear ou destruir veículos ou infraestrutura
STR_CONFIG_SETTING_CITY_APPROVAL :Atitude da prefeitura em relação à restruturação de área: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL :Atitude da prefeitura em relação à restruturação local: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Escolhe como a poluição sonoroa e ambiental afeta a classificação na cidade e as ações futuras naquela área
STR_CONFIG_SETTING_BUILDONSLOPES :Permitir a construção em declives e encostas: {STRING}
STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Se ativado, trilhos e estações podem ser construídas na maioria das inclinações. Se desativado, são permitidas apenas em inclinações correspondentes à direção da via, sem precisar de fundações
STR_CONFIG_SETTING_AUTOSLOPE :Permitir paisagismo sob edifícios, ruas, etc. (auto nivelação): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE :Permitir paisagismo sob edifícios, trilhos, etc.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite paisagismo sob edifícios e vias sem precisar removê-las
STR_CONFIG_SETTING_CATCHMENT :Dimensionamento mais realista das áreas de abrangência: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Exibe áreas de abrangência de para diferentes tipos de estações e aeroportos
@@ -1243,7 +1246,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Veículos nunca
STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Quanto ativado, mantém todos os modelos de veículos disponíveis após serem introduzidos
STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Auto-renovação de veículos quando ficam velhos: {STRING}
STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Quando ativado, os veículos próximos do fim da vida útil são automaticamente substituídos quando as condições forem atingidas
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Renovar a {STRING} da vida útil
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Renovar veículos a {STRING} da vida útil
STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Idade relativa para quando um veículo deva ser renovado
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} m{P 0 ês eses} antes
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} m{P 0 ês eses} depois
@@ -1264,7 +1267,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grossura da lin
STR_CONFIG_SETTING_LAND_GENERATOR :Gerador de Terreno: {STRING}
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Dist. máx. da borda para Refinarias de Óleo: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Dist máx da borda para Refinarias de Óleo: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Refinarias são construídas apenas nas bordas, ou no litoral, para ilhas
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altitude da linha de neve: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Irregularidade do terreno (TerraGenesis apenas) : {STRING}
@@ -1285,7 +1288,7 @@ STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :Se desativado,
STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Há construções na borda norte do mapa
STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Há bordas acima da nível do mar
STR_CONFIG_SETTING_STATION_SPREAD :Tam. máx. de estações compostas {STRING}
STR_CONFIG_SETTING_STATION_SPREAD :Tam máx de estações compostas {STRING}
STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Área máxima que uma só estação pode ocupar com partes de estação. Valores altos tornam o jogo lento
STR_CONFIG_SETTING_SERVICEATHELIPAD :Manutenção automática de helicópteros em heliportos: {STRING}
STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Faz manutenção de helicópteros a cada pouso, mesmo que não haja depósito no local de pouso
@@ -1302,7 +1305,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Suavizar rolame
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla como a janela principal rola para uma posição específica quando clicado no minimapa ou após localizar um objeto. Ativado torna o rolamento suave. Desativado torna o rolamento instanâneo
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Exibe distâncias quando usar ferramentas de construção: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Exibe distâncias e diferenças de altitude quando clicando e arrastando enquanto constrói
STR_CONFIG_SETTING_LIVERIES :Exibir cores das empresas: {STRING}
STR_CONFIG_SETTING_LIVERIES :Exibir cores avançadas: {STRING}
STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Contra o uso de cores de veículos dependentes do tipo (ao invés de cores específicas à companhia)
STR_CONFIG_SETTING_LIVERIES_NONE :Nenhum
STR_CONFIG_SETTING_LIVERIES_OWN :Minha empresa
@@ -1351,7 +1354,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nenhuma ação
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Todas ações "não-construentes"
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Todas ações exceto modificações de terreno
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Todas ações
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Usar a lista avançada de veículos: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Usar a lista agrupada de veículos: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ativa o uso da listagem avançada para agrupamento de veículos
STR_CONFIG_SETTING_LOADING_INDICATORS :Usar indicadores de carga: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Seleciona se os indicadores de carga são exibidos sobre os veículos (des)carregando
@@ -1366,7 +1369,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipo de trilho
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Primeiro disponível
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Último disponível
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mais utilizado
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Exibir vias reservadas: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Exibir vias reservadas para trilhos: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Escurece as vias reservadas para ajudar a lidar com problemas de trens não funcionando em blocos baseados em destinos
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Manter a barra de construção aberta: {STRING}
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mantém as ferramentas de construção para pontes, túneis, etc abertas após o uso
@@ -1392,13 +1395,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Tocar som ambie
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Desativar construção de infraestrutura quando nenhum veículo adequado estiver disponível: {STRING}
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Quando ativado, a infraestrutura só é disponível se há veículos disponíveis para usá-la, prevenindo gasto de tempo e dinheiro com infraestrutura inútil.
STR_CONFIG_SETTING_MAX_TRAINS :Máximo de trens por companhia: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS :Número máx de trens por companhia: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Máx. de trens que uma companhia pode ter
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Máximo de automóveis por companhia: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Número máx de automóveis por companhia: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Quantidade máxima de automóveis que uma companhia pode ter
STR_CONFIG_SETTING_MAX_AIRCRAFT :Máximo de aeronaves por companhia: {STRING}
STR_CONFIG_SETTING_MAX_AIRCRAFT :Número máx de aeronaves por companhia: {STRING}
STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Quantidade máxima de aeronaves que uma companhia pode ter
STR_CONFIG_SETTING_MAX_SHIPS :Máximo de embarcações por companhia: {STRING}
STR_CONFIG_SETTING_MAX_SHIPS :Número máx de embarcações por companhia: {STRING}
STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Quantidade máxima de embarcações que uma companhia pode ter
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Desativar trens para o computador: {STRING}
@@ -1516,7 +1519,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permite cidades
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Permitir cidades construirem cruzamentos de nível: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Se ativado, permite as cidades construírem ruas que atravessam ferrovias
STR_CONFIG_SETTING_NOISE_LEVEL :Permitir controle de ruído de aeronaves pelas cidades: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Se desativado, podem haver 2 aeroportos por cidade. Se ativado, o número de aeroportos depende do controle de ruído da cidade, que depende da população, tamanho e distância do aeroporto
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Se desativado, podem haver 2 aeroportos por cidade. Se ativado, o número de aeroportos é limitado pelo controle de ruído da cidade, que depende da população, tamanho e distância do aeroporto
STR_CONFIG_SETTING_TOWN_FOUNDING :Fundação de cidades no jogo: {STRING}
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Se ativado, permite jogadores construírem novas cidades
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Proibido
@@ -1581,7 +1584,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simétrico" si
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modo de distribuição para classe BLINDADOS de carga: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :A classe BLINDADO indica objetos de valor no clima temperado, diamantes no subtropical ou ouro no subártico. NewGRF's podem mudar isso. "simétrico" significa que aproximadamente a mesma quantidade de carga será enviada da estação A para a estação B assim como de B para A. "assimétrico" significa que quantidades de carga arbitrárias serão enviadas em ambas as direções. "manual" significa que não haverá distribuição automática. Para objetos de valor, sugere-se usar "assimétrico" ou "manual" para subártico, já que bancos não enviam ouro de volta a minas. Para temperado e subtropical você pode selecionar "simétrico", já que bancos trocam objetos de valor entre si.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modo de distribuição para outras classes de carga: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"simétrico" significa que aproximadamente a mesma quantidade de carga será enviada da estação A para a estação B assim como de B para A. "assimétrico" significa que quantidades de carga arbitrárias serão enviadas em ambas as direções. "manual" significa que não haverá distribuição automática. Você provavelmente irá querer usar "assimétrico" ou "manual".
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"assimétrico" significa que quantidades de carga arbitrárias serão enviadas em ambas as direções. "manual" significa que não haverá distribuição automática. Você provavelmente irá querer usar "assimétrico" ou "manual".
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisão da distribuição: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Quanto mais alto você define esse valor, mais tempo de CPU será dado ao cálculo do gráfico. Se levar muito tempo, você poderá notar um pouco de lag. Se você definir um valor muito baixo, a distribuição será imprecisa, e você notará cargas deixando de serem enviadas aonde deveriam ir.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Efeito da distância na demanda: {STRING}
@@ -1804,6 +1807,7 @@ STR_LIVERY_FREIGHT_TRAM :Bonde de Carga
STR_FACE_CAPTION :{WHITE}Seleção de Rosto
STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancelar seleção da novo rosto
STR_FACE_OK_TOOLTIP :{BLACK}Aceitar seleção do novo rosto
STR_MAPGEN_RANDOM :{BLACK}Randomizar
STR_FACE_MALE_BUTTON :{BLACK}Masculino
STR_FACE_MALE_TOOLTIP :{BLACK}Rostos masculinos
@@ -1924,13 +1928,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Proteja
STR_NETWORK_START_SERVER_UNADVERTISED :Não
STR_NETWORK_START_SERVER_ADVERTISED :Sim
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} cliente{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Máx de clientes:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Num máx de clientes:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Escolha o número máximo de clientes. Não é necessário estarem todos preenchidos
STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} empresa{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Máximo de empresas:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Núm máx de empresas:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limita o servidor para uma certa quantia de empresas
STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} espectador{P "" es}
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Máx de espectadores:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Núm máx de espectadores:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limita o servidor para um certa quantia de espectadores
STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Idioma falado:
STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Outros jogadores saberão o idioma utilizado no servidor.
@@ -2548,6 +2552,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceita: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Velocidade limite do trilho: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Limite de velocidade da rua: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rochas
@@ -2663,6 +2668,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Salvar
STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Salvar o jogo atual, usando o nome escolhido
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Carregar
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Carrega o jogo selecionado
STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Carrega o mapa topográfico selecionado
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalhes do Jogo
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nenhuma informação disponível
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
@@ -2683,7 +2689,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Aumentar
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Diminuir a linha da neve em um ponto
STR_MAPGEN_RANDOM_SEED :{BLACK}Semente:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Clique para digitar uma semente
STR_MAPGEN_RANDOM :{BLACK}Randomizar
STR_MAPGEN_RANDOM_HELP :{BLACK}Muda a semente randômica da Geração de Terreno
STR_MAPGEN_LAND_GENERATOR :{BLACK}Gerador de terra
STR_MAPGEN_TREE_PLACER :{BLACK}Algorítimo de árvores
@@ -2877,6 +2882,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Arquivos f
STR_NEWGRF_BROKEN :{WHITE}'{0:STRING}' tem altas chances de causar desincronias e/ou travamentos
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Alterou o estado do vagão motorizado para '{1:ENGINE}' estando fora de um depósito
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Mudou o tamanho do veículo para '{1:ENGINE}' estando fora de um depósito
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}A capacidade do veículo mudou para '{1:ENGINE}' quando fora do depósito
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Trem '{VEHICLE}' de '{COMPANY}' tem um tamanho inválido. Provavelmente causado por um NewGRF. O jogo pode travar ou sair de sincronia
STR_NEWGRF_BUGGY :{WHITE}O NewGRF '{0:STRING}' retorna informação incorreta
@@ -3684,8 +3690,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Altera a
STR_ORDER_REFIT :{BLACK}Adaptar
STR_ORDER_REFIT_TOOLTIP :{BLACK}Selecionar a adaptação na ordem atual. CTRL + Clique para remover a instrução
STR_ORDER_REFIT_AUTO :{BLACK}Auto-reforma
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selecione o tipo de carga para o qual auto-reformar nessa ordem. Ctrl+clique para remover a ordem de reforma. Auto-reformar apenas será feito se o veículo permitir
STR_ORDER_REFIT_AUTO :{BLACK}Reformar na estação
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Selecione o tipo de carga para o qual reformar nessa ordem. Ctrl+clique para remover a ordem de reforma. Reforma apenas será feita se o veículo permitir
STR_ORDER_DROP_REFIT_AUTO :Carga fixa
STR_ORDER_DROP_REFIT_AUTO_ANY :Cargas disponíveis
@@ -3776,18 +3782,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Não descarreg
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Não descarregar e esperar por qualquer carregamento completo)
STR_ORDER_NO_UNLOAD_NO_LOAD :(Não descarregar e não carregar)
STR_ORDER_AUTO_REFIT :(Auto-reformar para {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Carga completa com auto-reforma para {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Qualquer carga completa com auto-reforma para {STRING})
STR_ORDER_UNLOAD_REFIT :(Descarregar e carregar com auto-reforma para {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descarregar e aguardar carga completa com auto-reforma para {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descarregar e aguardar qualquer carga completa com auto-reforma para {STRING})
STR_ORDER_TRANSFER_REFIT :(Transferir e carregar com auto-reforma para {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir e aguardar carga completa com auto-reforma para {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir e aguardar por qualquer carga completa com auto-reforma para {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(Não descarregar e carregar com auto-reforma para {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Não descarregar e aguardar carga completa com auto-reforma para {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Não carregar e aguardar por qualquer carga completa com auto-reforma para {STRING})
STR_ORDER_AUTO_REFIT :(Reformar para {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Carga completa com reforma para {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Qualquer carga completa com reforma para {STRING})
STR_ORDER_UNLOAD_REFIT :(Descarregar e carregar com reforma para {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Descarregar e aguardar carga completa com reforma para {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Descarregar e aguardar qualquer carga completa com reforma para {STRING})
STR_ORDER_TRANSFER_REFIT :(Transferir e carregar com reforma para {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transferir e aguardar carga completa com reforma para {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transferir e aguardar por qualquer carga completa com reforma para {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(Não descarregar e carregar com reforma para {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Não descarregar e aguardar carga completa com reforma para {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Não descarregar e aguardar por qualquer carga completa com reforma para {STRING})
STR_ORDER_AUTO_REFIT_ANY :cargas disponíveis
+72 -9
View File
@@ -201,21 +201,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA} к.с.
STR_UNITS_POWER_METRIC :{COMMA} к.с.
STR_UNITS_POWER_SI :{COMMA} kW
STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}т
STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} т.
STR_UNITS_WEIGHT_SHORT_SI :{COMMA} кг.
STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} тон{P "" а}
STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} тон{P "" а}
STR_UNITS_WEIGHT_LONG_SI :{COMMA} кг
STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}гал
STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} л.
STR_UNITS_VOLUME_SHORT_SI :{COMMA} м³
STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} галон{P "" и}
STR_UNITS_VOLUME_LONG_METRIC :{COMMA} лит{P ър ри}
STR_UNITS_VOLUME_LONG_SI :{COMMA} куб. м.
STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf
STR_UNITS_FORCE_METRIC :{COMMA} kgf
STR_UNITS_FORCE_SI :{COMMA} kN
STR_UNITS_HEIGHT_IMPERIAL :{COMMA} фут
STR_UNITS_HEIGHT_METRIC :{COMMA} м
STR_UNITS_HEIGHT_SI :{COMMA} м
# Common window strings
@@ -234,7 +241,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Затв
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Заглавие на прозорец - преместване на прозореца с мишката
STR_TOOLTIP_SHADE :{BLACK}Прибиране на прозореца - показва само заглавната лента
STR_TOOLTIP_DEBUG :{BLACK}Покажи debug информация за новите графики (NewGRF)
STR_TOOLTIP_STICKY :{BLACK}Маркиране прозореца за незатваряне от клавиша 'Затваряне всички прозороци'
STR_TOOLTIP_STICKY :{BLACK}Маркиране прозореца като незатворяем от клавиша 'Затваряне всички прозороци'
STR_TOOLTIP_RESIZE :{BLACK}Преместете за оразмеряване прозореца
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Активирай голям/малък размер на прозореца
STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Лента за позициониране - превърта списъка нагоре/надолу
@@ -278,6 +285,8 @@ STR_SORT_BY_LENGTH :Дължина
STR_SORT_BY_LIFE_TIME :Оставащо време за експлоатация
STR_SORT_BY_TIMETABLE_DELAY :Закъснение
STR_SORT_BY_FACILITY :Вид на гарата
STR_SORT_BY_WAITING_TOTAL :Целия чакащ товар
STR_SORT_BY_WAITING_AVAILABLE :Наличен чакащ товар
STR_SORT_BY_RATING_MAX :Най-голяма оценка на товари
STR_SORT_BY_RATING_MIN :Най-ниска оценка на товари
STR_SORT_BY_ENGINE_ID :Двигател № (класическо сортиране)
@@ -290,6 +299,7 @@ STR_SORT_BY_POWER_VS_RUNNING_COST :Мощност/
STR_SORT_BY_CARGO_CAPACITY :Товарен капацитет
STR_SORT_BY_RANGE :Обхват
STR_SORT_BY_POPULATION :Население
STR_SORT_BY_RATING :Рейтинг
# Tooltips for the main toolbar
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Пауза
@@ -302,6 +312,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Пока
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Списък със станциите на компанията
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Показване на финансова информация за компанията
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Покажи обща информация за компанията
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Покази списък с целите
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Покажи графиките
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Покажи класирането на компаниите
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Инвестирай в нова индустрия
@@ -791,13 +802,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} чака в депото
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} чака в хангара
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} има прекалено малко задачи
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} има празна задача
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} има дублирани задачи
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} има невалидна спирка в задачите
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} започва да остарява
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} е много остаряло
@@ -876,6 +885,8 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Литовск
STR_GAME_OPTIONS_CURRENCY_KRW :Южнокорейски Вон (KRW)
STR_GAME_OPTIONS_CURRENCY_ZAR :Южноафрикански Ранд (ZAR)
STR_GAME_OPTIONS_CURRENCY_CUSTOM :друга...
STR_GAME_OPTIONS_CURRENCY_GEL :Грузинско лари (ГЕЛ)
STR_GAME_OPTIONS_CURRENCY_IRR :Ирански Риал (ИРР)
############ end of currency region
@@ -1049,7 +1060,6 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Настрой
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Настройки на компанията (запаметени в записа; влияят само на нови игри)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Настройки на компанията (запаметени в записа; влияят само на текущата компания)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Покажи:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Ограничи долният списък да показва само променените настройки
STR_CONFIG_SETTING_RESTRICT_BASIC :Прости настройки
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Разширени настройки
@@ -1064,6 +1074,7 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Игрови н
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Игрови настройки (съхраняват се в записаната игра; важат само за текущата игра)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Настройки за компанията (съхраняват се в записаната игра; важат само за нови игри)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Настройки за компанията (съхраняват се в записаната игра; важат само за текущата компания)
STR_CONFIG_SETTINGS_NONE :{WHITE}- Нищо -
STR_CONFIG_SETTING_OFF :изключено
STR_CONFIG_SETTING_ON :включено
@@ -1104,9 +1115,9 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Задава к
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Цени на конструкции: {STRING}
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Задава ниво то на конструиране и цени за закупуване
STR_CONFIG_SETTING_RECESSIONS :Рецесии: {STRING}
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ако е разрешено рецесии могат да се появяват на всеки няколко години. По време на рецесия цялото производство е значително намалено (връща се на предишно ниво след края на рецесията)
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Ако е разрешено, рецесии могат да се появяват на всеки няколко години. По време на рецесия цялото производство е значително намалено (връща се на предишно ниво след края на рецесията)
STR_CONFIG_SETTING_TRAIN_REVERSING :Забрани обръщане на посоката на влакове в гарите: {STRING}
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ако е избрано влаковете няма да обръщат на не-терминални гари, ако има по-кратък път до целта им при обръщане.
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Ако е избрано, влаковете няма да обръщат на не-терминални гари, ако има по-кратък път до целта им при обръщане.
STR_CONFIG_SETTING_DISASTERS :Бедствия: {STRING}
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Включване/Изключване на бедствия които могат от време на време да блокират или разрушат превозни средства или инфраструктура
STR_CONFIG_SETTING_CITY_APPROVAL :Отношението на градския съвет към реструктурирането на района: {STRING}
@@ -1326,6 +1337,7 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Палитра по подразбиране за NewGRF, които не са задали палитра: {STRING}
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Палитра по подразбиране за NewGRF, за които е зададена от коя се нуждаят
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Legacy (W) palette
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Игрите започват в пауза: {STRING}
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Ако тази опция бъде активирана, играта автоматично ще бъде паузирана, когато започнете нова игра, това ще ви позволи да изучите по-подробно картата
@@ -1362,7 +1374,7 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Звуков с
STR_CONFIG_SETTING_SOUND_NEWS :Вестник: {STRING}
STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Звуков сигнал при показването на новини
STR_CONFIG_SETTING_SOUND_NEW_YEAR :Край на година: {STRING}
STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Звуков сигнал при проказване на баланса в края на годината
STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Звуков сигнал при проказване на баланса в края на годината сравнен с края на предишната година
STR_CONFIG_SETTING_SOUND_CONFIRM :Конструкция: {STRING}
STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Изпълнявай звуков ефект при успешно конструиране или други действия
STR_CONFIG_SETTING_SOUND_CLICK :Вутона натиска: {STRING}
@@ -1552,13 +1564,44 @@ STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Премахв
STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Премахва краищата на пътища при финансиране на ремонт на пътя
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Единици за скорост: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Всеки път при показване на скорости, да бъдат изписвани в избраните мерни единици
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metric (km/h)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Единици на мощност на превозното средство: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Всеки път при показване на мощност, да бъде изписвана в избраните мерни единици
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (hp)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metric (hp)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Единици за тежина: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Всеки път при показване на тежести, да бъдат изписвани в избраните мерни единици
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperial (short t/ton)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metric (t/tonne)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Мерни единици на обем: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Всеки път при показване на обеми, да се изписват в избраните мерни единици
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperial (gal)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metric (l)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Мерни единици на теглителната сила: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Всеки път при показване на теглителна сила, да бъде изписване в избраните мерни единици
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperial (lbf)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metric (kgf)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Височинна мерна единица: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Всеки път при показване на височините, да се изписват в избраните мерни единици
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperial (ft)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m)
STR_CONFIG_SETTING_GUI :{ORANGE}Интерфейс
STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Позициониране
STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Строене
STR_CONFIG_SETTING_VEHICLES :{ORANGE}Автомобили
STR_CONFIG_SETTING_STATIONS :{ORANGE}Станции
@@ -1610,6 +1653,7 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... save
STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... пропуска набора от основната графика '{STRING}': не е открит
STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... пропуска набора от основни звуци '{STRING}': не е открит
STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... пропруска набора от основни песни '{STRING}': не е открит
STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Отвъд паметта
# Intro window
STR_INTRO_CAPTION :{WHITE}OpenTTD {REV}
@@ -1731,6 +1775,7 @@ STR_LIVERY_FREIGHT_TRAM :Товарен
STR_FACE_CAPTION :{WHITE}Избор на лице
STR_FACE_CANCEL_TOOLTIP :{BLACK}Прекъсване избора на ново лице
STR_FACE_OK_TOOLTIP :{BLACK}Признавам избора на ново лице
STR_MAPGEN_RANDOM :{BLACK}Произволно
STR_FACE_MALE_BUTTON :{BLACK}Мъж
STR_FACE_MALE_TOOLTIP :{BLACK}Избери мъжки лица
@@ -1786,6 +1831,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Cмен
# Network server list
STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Онлайн играчи
STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Рекламирана
STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Избери игра измежду рекламирана през интернет или нерекламирана през Локален интернет хост или ЛАН
STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Не
STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Да
STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Име на играч:
STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Чрез това име другите играчи ще ви идентифицират
@@ -1844,6 +1893,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Имет
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Поставяне на парола
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Защитаване на вашата игра с парола за да не е публично достъпна
STR_NETWORK_START_SERVER_UNADVERTISED :Не
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} клиент{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Макс. брой играчи:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Избор на максималния брой клиенти. Не всички слотове трябва да се попълнят
@@ -1964,6 +2014,7 @@ STR_NETWORK_CLIENT :Клиент
STR_NETWORK_SPECTATORS :Наблюдатели
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Въведете количеството пари, което искате да дадете
STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Зрител
# Network set password
STR_COMPANY_PASSWORD_CANCEL :{BLACK}Незапазвай паролата
@@ -2595,7 +2646,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Прем
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Преместване снежната линия надолу
STR_MAPGEN_RANDOM_SEED :{BLACK}Случайност:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Натиснете за въвеждане семе на случайност
STR_MAPGEN_RANDOM :{BLACK}Произволно
STR_MAPGEN_RANDOM_HELP :{BLACK}Промяна на случайността използване за генериране на терен
STR_MAPGEN_LAND_GENERATOR :{BLACK}Земегенератор:
STR_MAPGEN_TREE_PLACER :{BLACK}Дърворазсад:
@@ -2804,6 +2854,7 @@ STR_NEWGRF_INVALID_ENGINE :<невалид
STR_NEWGRF_INVALID_INDUSTRYTYPE :<невалдна индустрия>
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
STR_INVALID_VEHICLE :<невалидно превозно средство>
# NewGRF scanning window
STR_NEWGRF_SCAN_CAPTION :{WHITE}Търси NewGRF-и
@@ -2886,9 +2937,11 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Пок
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW} Подкупването на местната власт за да увеличи рейтинга носи огромен риск ако бъдете хванати.{} Цена: {CURRENCY_LONG}
# Goal window
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Глобални цели
STR_GOALS_GLOBAL_TITLE :{BLACK}Основни цели:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Никакви -
STR_GOALS_SPECTATOR_NONE :{ORANGE}- Неприложимо-
STR_GOALS_COMPANY_TITLE :{BLACK}Цели на компанията:
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Кликни на задачата за да центрирате камерата на фабрика/град/плочка. Ctrl+Click отваря нов прозорец центриран на фабрика/град/плочка
@@ -2928,6 +2981,7 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING
STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Натисни върху услугата за да се фокусира върху индустрията/града. Ctrl отваря нов изглед към индустрията/града
# Story book window
STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Невалидна цел
# Station list window
STR_STATION_LIST_TOOLTIP :{BLACK}Имена на станции - натиснете върху името, за да фиксирате главния прозорец върху станцията
@@ -2958,6 +3012,7 @@ STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Рейт
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Покажи нивото на обслужване
STR_STATION_VIEW_GROUP_D_V_S :Посока-през-Източника
############ range for rating starts
STR_CARGO_RATING_APPALLING :Плачевно
@@ -3100,6 +3155,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Прои
STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% превозено)
STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Фокусиране на основният изглед върху индустрията. Ctrl+Click отваря прозорец на нов изглед върху индустрията.
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Ниво на производство: {YELLOW}{COMMA}%
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Индустрията обяви незабавна ликвидация!
############ range for requires starts
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Нуждае се от: {YELLOW}{STRING}{STRING}
@@ -3816,6 +3872,8 @@ STR_AI_SETTINGS_START_DELAY :Броят дн
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme of {STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} Дневник на промените на {STRING}
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} лиценз на {STRING}
STR_TEXTFILE_WRAP_TEXT :{WHITE}Реорганизирай текста
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Реорганизирай текста така, че изцяло да се помести в прозореца
STR_TEXTFILE_VIEW_README :{BLACK}Отвори readme
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Дневник на промените
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Лиценз
@@ -4193,6 +4251,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Инте
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... машината е унищожена
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Никакви превозни средства няма да бъдат налични
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Промени своята NewGRF конфигурация
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Няма налични превозни средства все още
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Започни нова игра след {DATE_SHORT} или използвай NewGRF , който показва ранни превозни средства
# Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Влака не може да пропусне сигнала при опасност...
@@ -4694,6 +4756,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
STR_JUST_STRING :{STRING}
STR_JUST_STRING_STRING :{STRING}{STRING}
STR_JUST_RAW_STRING :{STRING}
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
# Slightly 'raw' stringcodes with colour or size
STR_BLACK_COMMA :{BLACK}{COMMA}
+360 -354
View File
File diff suppressed because it is too large Load Diff
+30 -24
View File
@@ -906,13 +906,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} čeka u brodogradilištu
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} čeka u zrakoplovnom hangaru
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ima premalo naredbi u rasporedu
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} ima nevažeće naredbe
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} ima duplicirane naredbe
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} ima neispravnu postaju u svojim naredbama
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} postaje star
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} postaje vrlo star
@@ -1166,8 +1164,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Postavke igre (
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Postavke kompanije (pohranjene u snimljenoj datoteci; utječu samo na nove igre)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Postavke kompanije (pohranjene u snimljenoj datoteci; utječu samo na trenutnu kompaniju)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Prikaži:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Sužava doljnju listu prikazom samo izmijenjenih postavki
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorija:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tip:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Sužava doljnju listu koristeći samo predpostavljene filtere
STR_CONFIG_SETTING_RESTRICT_BASIC :Osnovne postavke
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Napredne postavke
STR_CONFIG_SETTING_RESTRICT_ALL :Postavke za napredne korisnike / sve postavke
@@ -1181,6 +1180,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Postavke igre (
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Postavke igre (spremljene prilikom snimanja; utječu samo na tekuću igru)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Postavke kompanije (spremljene prilikom snimanja; utječu samo na nove igre)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Postavke kompanije (spremljene prilikom snimanja; utječu samo na trenutnu kompaniju)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Prikaži sve rezultate pretraga po postavkama{}{SILVER}Kategorija {BLACK}do {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Prikaži sve rezultate pretraga po postavkama{}{SILVER}Tip {BLACK}do {WHITE}Svi tipovi postavki
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Prikaži sve rezultate pretrage po postavkama{}{SILVER}Kategorija {BLACK}do {WHITE}{STRING} {BLACK}i {SILVER}Tip {BLACK}do {WHITE}Svi tipovi postavki
STR_CONFIG_SETTINGS_NONE :{WHITE}- Nijedna -
STR_CONFIG_SETTING_OFF :Isključeno
STR_CONFIG_SETTING_ON :Uključeno
@@ -1223,7 +1226,7 @@ STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Odaberi koliko
STR_CONFIG_SETTING_BUILDONSLOPES :Dopusti izgradnju na kosinama i obalama: {STRING}
STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Ukoliko je uključenom, tračnice i stanice se mogu graditi na većini nagiba. Ukoliko je isključeni, dozvoljava se njihova gradnja samo na nagibima koji se podudaraju smjerom tračnica i tada ne trebaju temelje
STR_CONFIG_SETTING_AUTOSLOPE :Dopusti modeliranje zemlje ispod građevina, tračnica, itd (autonagib): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE :Dopusti modeliranje zemlje ispod građevina, tračnica, itd.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Dozvoli uređivanje terena ispod građevina i pruga bez njihovog uklanjanja
STR_CONFIG_SETTING_CATCHMENT :Dopusti realističnije veličine područja zahvaćanja: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Različiti dohvati za različite vrste stanica i zračnih luka
@@ -1359,7 +1362,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Debljina linije
STR_CONFIG_SETTING_LAND_GENERATOR :Generator zemlje: {STRING}
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Izvorni
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Najveća udaljenost Rafinerija Nafte od rubova: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Najveća udaljenost rafinerija nafte od rubova mape: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Rafinerije nafte se grade samo uz rubove mape odnosno na obali za otočne mape
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Visina linije snijega: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Grubost terena (samo TerraGenesis) : {STRING}
@@ -1397,7 +1400,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Glatko klizanje
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Kontroliraj kako se glavni prikaz pomiče na neku lokaciju kada se klikne na malu mapu ili kada se izda naredba za pomicanje na određeni objekt na mapi. Ako je uključeno, prikaz se pomiče glatko, ako je isključeno, prikaz odmah preskoči na ciljnu lokaciju
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Pokaži mjerni naputak prilikom korištenja raznih alata za izgradnju: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Prikaži udaljenosu u pločicama i visinsku razliku kod povlačenja prilikom operacija gradnje
STR_CONFIG_SETTING_LIVERIES :Pokaži tvrtkine boje: {STRING}
STR_CONFIG_SETTING_LIVERIES :Pokaži specifične livreje prema tipu vozila: {STRING}
STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontroliraj korištenje shema boja tipa vozila za određena vozila (u suprotnosti sa shemama boja kompanija)
STR_CONFIG_SETTING_LIVERIES_NONE :Nijedna
STR_CONFIG_SETTING_LIVERIES_OWN :Vlastita tvrtka
@@ -1446,7 +1449,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Nijedna akcija
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Sve ne-konstrukcijske akcije
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Sve osim akcija za izmjenu krajolika
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Sve akcije
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Koristi napredni popis vozila: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Koristi grupe u listi vozila: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Uključi korištenje naprednih lista vozila za grupiranje vozila
STR_CONFIG_SETTING_LOADING_INDICATORS :Koristi pokazatelje utovara: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Odaberi da li će prikazivači utovara biti prikazani iznad vozila koja se utovaruju ili iznad vozila koja se istovaruju
@@ -1487,13 +1490,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Sviraj zvučne
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Isključi gradnju infrastrukture kada odgovarajuća vozila nisu dostupna: {STRING}
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Kada je uključeno, infrastruktura je dostupna samo ako su dostupna i vozila za nju, sprečavajući trošenje vremena i novca na neupotrebljivu infrastrukturu
STR_CONFIG_SETTING_MAX_TRAINS :Maksimalan broj vlakova po kompaniji: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS :Maksimalni broj vlakova po kompaniji: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Najveći broj vlakova koje može imati kompanija
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maksimalan broj cestovnih vozila po kompaniji: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maksimalni broj cestovnih vozila po kompaniji: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Najveći broj cestovnih vozila koje može imati kompanija
STR_CONFIG_SETTING_MAX_AIRCRAFT :Maksimalan broj zrakoplova po kompaniji: {STRING}
STR_CONFIG_SETTING_MAX_AIRCRAFT :Maksimalni broj zrakoplova po kompaniji: {STRING}
STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Najveći broj zrakoplova koje može imati kompanija
STR_CONFIG_SETTING_MAX_SHIPS :Maksimalan broj brodova po kompaniji: {STRING}
STR_CONFIG_SETTING_MAX_SHIPS :Maksimalni broj brodova po kompaniji: {STRING}
STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Najveći broj brodova koje može imati kompanija
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Isključi vlakove za računalo: {STRING}
@@ -1611,7 +1614,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Dozvoli gradovi
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Gradovi smiju graditi pružne prijelaze: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Uključivanje ove postavke dozvoljava se gradovima da grade cestovno-pružne prijelaze
STR_CONFIG_SETTING_NOISE_LEVEL :Omogući određivanje razine buke za zračne luke od strane gradova: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kada je ova postavka isključena, mogu postojati dve zračne luke u svakom gradu. Kada je ova postavka uključena, broj zračnih luka u nekom gradu je limitirana količinom dozvoljene buke u gradu, koja ovisi o populaciji i udaljenosti i veličini zračnih luka
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kada je ova postavka isključena, mogu postojati dva aerodroma u svakom gradu. Kada je ova postavka uključena, broj aerodroma u nekom gradu je limitirana količinom dozvoljene buke u gradu, koja ovisi o populaciji i udaljenosti i veličini aerodroma
STR_CONFIG_SETTING_TOWN_FOUNDING :Osnivanje gradova tijekom igre: {STRING}
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Uklučivanje ove postavke dozvoljava igračima osnivanje novih gradova tijekom igre
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Zabranjeno
@@ -1676,7 +1679,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Simetrično" z
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Način distribucije za OKLOPLJENU klasu tereta: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :OKLOPLJENA klasa tereta sadrži vrijednosnice u umjerenoj klimi, dijamante u subtropskoj klimi ili zlato u subarktičkoj klimi. NewGFR-ovi bi mogli ovo izmijeniti. "Simetrično" znači da će se otprilike ista količina tereta slati od stanice A prema stanici B ako od B prema A. "Asimetrično" znači da će se proizvoljne količine tereta slati u oba smjera. "Ručno" znači da se distribucija tih tereta neće vršiti automatski. Preporučljivo je namjestiti ovu postavku na "asimetrično" ili "ručno" kod subarktičke klime jer banke neće slati zlato natrag prema rudnicima zlata. Za umjerenu i subtropsku klimu možete namjestiti i "simetrično" jer će banke slati neke vrijednosnice natrag prema izvorišnoj banci.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Način distribucije za ostale klase tereta: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Simetrično" znači da će se otprilike ista količina tereta slati od stanice A prema stanici B ako od B prema A. "Asimetrično" znači da će se proizvoljne količine tereta slati u oba smjera. "Ručno" znači da se distribucija tih tereta neće vršiti automatski. Preporučljivo bi bilo ovu postavku namjestiti na "asimetrično" ili "ručno".
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asimetrično" znači da će se proizvoljna količina tereta slati u bilo kojem smjeru. "Ručno" znači da neće biti nikakve automatske distribucije za te terete.
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Točnost distribucije: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Čim višu vrijednost odaberete, CPU će trebati više vremena za kalkulaciju poveznog grafikona. Ako bude trebalo predugo, mogli bi primijetiti usporavanje igre. U suprotnom, ako namjestite na manju vrijednost, distribucija će biti netočnija i mogli bi primijetiti da se teret šalje na mjesta koja niste očekivali.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Efekt udaljenosti na potražnju: {STRING}
@@ -1899,6 +1902,7 @@ STR_LIVERY_FREIGHT_TRAM :Teretni tramvaj
STR_FACE_CAPTION :{WHITE}Izbor lica
STR_FACE_CANCEL_TOOLTIP :{BLACK}Odustani od izbora novog lica
STR_FACE_OK_TOOLTIP :{BLACK}Prihvati izbor novog lica
STR_MAPGEN_RANDOM :{BLACK}Nasumično
STR_FACE_MALE_BUTTON :{BLACK}Muško
STR_FACE_MALE_TOOLTIP :{BLACK}Odaberi muška lica
@@ -2019,13 +2023,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zaštiti
STR_NETWORK_START_SERVER_UNADVERTISED :Ne
STR_NETWORK_START_SERVER_ADVERTISED :Da
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klijen{P t ta ata}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks klijenata:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maksimalni broj klijenata:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Izaberi maksimalan broj klijenata. Ne moraju sva mjesta biti popunjena.
STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} tvrtk{P a e i}
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maks tvrtki:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maksimalni broj tvrtki:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Ograniči poslužitelj na određeni broj tvrtki
STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} gledatelj{P "" a a}
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maks promatrača:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maksimalni broj promatrača:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Ograniči poslužitelj na određeni broj gledatelja
STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Jezik kojim se govori:
STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Drugi igrači znat će kojim se jezikom govori na poslužitelju
@@ -2643,6 +2647,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Prihvaćeni teret: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Najveća brzina željeznice: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Ograničenje brzine na cesti: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Stijenje
@@ -2758,6 +2763,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Spremi
STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Spremi trenutnu igru koristeći odabrano ime
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Učitaj
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Učitaj odabranu igru
STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Učitaj odabranu visinsku kartu
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalji o igri
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nema dostupnih informacija.
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
@@ -2778,7 +2784,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Pomakni
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Pomakni visinu linije snijega za jedan dolje
STR_MAPGEN_RANDOM_SEED :{BLACK}Nasumični slijed:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikni za unos nasumičnog slijeda
STR_MAPGEN_RANDOM :{BLACK}Nasumično
STR_MAPGEN_RANDOM_HELP :{BLACK}Promijeni slučajni slijed koji se koristi za kreiranje terena
STR_MAPGEN_LAND_GENERATOR :{BLACK}Izrađivač zemljišta:
STR_MAPGEN_TREE_PLACER :{BLACK} Algoritam za drveće:
@@ -2972,6 +2977,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Nedostaju
STR_NEWGRF_BROKEN :{WHITE}Ponašanje NewGRF '{0:STRING}' će vjerojatno uzrokovati deharmonizaciju i/ili rušenje igre
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Promijenjen status motoriziranog vagona za '{1:ENGINE}' kad vozilo nije u depou.
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Ovo mijenja dužinu vozila za '{1:ENGINE}' kada vozilo nije unutar depoa
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Promijenilo je kapacitet vozila za '{1:ENGINE}' kada nije u depou ili se remontira
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Vlak'{VEHICLE}' koji pripada tvrtci '{COMPANY}' neispravne je dužine. Uzrok problema je vjerojatno u NewGRF datotekama. Igra će se možda deharmonizirati ili srušiti
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' daje netočne informacije
@@ -3236,7 +3242,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN
STR_FINANCES_TOTAL_CAPTION :{WHITE}Ukupno:
STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bankovna bilanca
STR_FINANCES_LOAN_TITLE :{WHITE}Zajam
STR_FINANCES_MAX_LOAN :{WHITE}Maks zajam: {BLACK}{CURRENCY_LONG}
STR_FINANCES_MAX_LOAN :{WHITE}Maksimalni kredit: {BLACK}{CURRENCY_LONG}
STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG}
STR_FINANCES_BORROW_BUTTON :{BLACK}Pozajmi {CURRENCY_LONG}
STR_FINANCES_BORROW_TOOLTIP :{BLACK}Povećaj iznos zajma. Ctrl+klik posuđuje najveći mogući iznos
@@ -3779,7 +3785,7 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Promijen
STR_ORDER_REFIT :{BLACK}Prenamijeni
STR_ORDER_REFIT_TOOLTIP :{BLACK}Odaberi vrstu tereta za prenamijenu u ovoj naredbi. Ctrl+klik kako bi uklonio naputak za prenamjenu
STR_ORDER_REFIT_AUTO :{BLACK}Auto-remont
STR_ORDER_REFIT_AUTO :{BLACK}Auto-remont na stanici
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Odaberi za koji tip tereta odraditi auto-remont. Ctrl+Click za micanje remontnih uputa. Auto-remont će se odraditi samo ako ga vozilo dopušta.
STR_ORDER_DROP_REFIT_AUTO :Popravljen teret
STR_ORDER_DROP_REFIT_AUTO_ANY :Dostupni teret
@@ -3872,8 +3878,8 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Čekaj bilo ko
STR_ORDER_NO_UNLOAD_NO_LOAD :(Bez iskrcaja i bez ukrcaja)
STR_ORDER_AUTO_REFIT :(Auto-remont u {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Puni teret sa auto-remontom u {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Bilo koji puni teret sa auto-remontom u {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Preuzimanje punog tereta sa auto-remontom u {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Preuzimanje bilo kojeg punog tereta sa auto-remontom u {STRING})
STR_ORDER_UNLOAD_REFIT :(Iskrcaj i preuzimanje tereta sa auto-remontom u {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Iskrcaj i čekanje punog tereta sa auto-remontom u {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Iskrcaj i čekanje bilo kojeg punog tereta sa auto-remontom u {STRING})
@@ -3908,7 +3914,7 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Vozni re
STR_TIMETABLE_NO_TRAVEL :Nema putovanja
STR_TIMETABLE_NOT_TIMETABLEABLE :Putovanje (automatsko; prema rasporedu sljedeće ručno određene naredbe)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Putovanje (izvan voznog reda)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Putuj uz najviše {2:VELOCITY} (not timetabled)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Putovanje (nije mjereno) uz najviše {2:VELOCITY}
STR_TIMETABLE_TRAVEL_FOR :Putovanje za {STRING}
STR_TIMETABLE_TRAVEL_FOR_SPEED :Putuj prema {STRING} uz najviše {VELOCITY}
STR_TIMETABLE_STAY_FOR :i boravak za {STRING}
+47 -36
View File
@@ -34,10 +34,15 @@ STR_CARGO_PLURAL_PASSENGERS.gen :Cestujících
STR_CARGO_PLURAL_PASSENGERS.big :Cestující
STR_CARGO_PLURAL_COAL :Uhlí
STR_CARGO_PLURAL_COAL.big :Uhlí
STR_CARGO_PLURAL_MAIL :Pošta
STR_CARGO_PLURAL_MAIL.gen :Pošty
STR_CARGO_PLURAL_MAIL.acc :Poštu
STR_CARGO_PLURAL_MAIL :{G=f}Pošta
STR_CARGO_PLURAL_MAIL.nom :{G=f}pošta
STR_CARGO_PLURAL_MAIL.gen :{G=f}pošty
STR_CARGO_PLURAL_MAIL.dat :{G=f}poštu
STR_CARGO_PLURAL_MAIL.acc :{G=f}poštu
STR_CARGO_PLURAL_MAIL.loc :{G=f}poště
STR_CARGO_PLURAL_MAIL.ins :{G=f}poštou
STR_CARGO_PLURAL_MAIL.big :Pošta
STR_CARGO_PLURAL_MAIL.small :{G=f}pošta
STR_CARGO_PLURAL_OIL :Ropa
STR_CARGO_PLURAL_OIL.gen :Ropy
STR_CARGO_PLURAL_OIL.acc :Ropu
@@ -210,7 +215,7 @@ STR_ABBREV_GRAIN :{TINY_FONT}ZR
STR_ABBREV_WOOD :{TINY_FONT}DŘ
STR_ABBREV_IRON_ORE :{TINY_FONT}ŽR
STR_ABBREV_STEEL :{TINY_FONT}OC
STR_ABBREV_VALUABLES :{TINY_FONT}CE
STR_ABBREV_VALUABLES :{TINY_FONT}CN
STR_ABBREV_COPPER_ORE :{TINY_FONT}MR
STR_ABBREV_MAIZE :{TINY_FONT}KU
STR_ABBREV_FRUIT :{TINY_FONT}OV
@@ -352,7 +357,7 @@ STR_SORT_BY_MAX_SPEED :max. rychlosti
STR_SORT_BY_MODEL :modelu
STR_SORT_BY_VALUE :hodnoty
STR_SORT_BY_LENGTH :délky
STR_SORT_BY_LIFE_TIME :Zbývající životnost
STR_SORT_BY_LIFE_TIME :zbývající životnosti
STR_SORT_BY_TIMETABLE_DELAY :zpoždění
STR_SORT_BY_FACILITY :druhu stanice
STR_SORT_BY_WAITING_TOTAL :Celkového čekajícího nákladu
@@ -892,13 +897,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} čeká v depu
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} čeká v hangáru
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} má příliš málo příkazů
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} nemá žádné příkazy
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} má zdvojené příkazy
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} má v příkazech neplatnou stanici
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} zastarává
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} silně zastarává
@@ -1152,8 +1155,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Nastavení hry
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Nastavení společnosti (uchováno v uložených hrách; ovlivní pouze nové hry)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Nastavení společnosti (uchováno v uložené hře; ovlivní pouze stávající společnost)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Zobrazit:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Zobrazovat v seznamu níže pouze změněná nastavení
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategorie:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Druh:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Omezit nastavení v seznamu níže pomocí předdefinovaných filtrů
STR_CONFIG_SETTING_RESTRICT_BASIC :Základní nastavení
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Pokročilé nastavení
STR_CONFIG_SETTING_RESTRICT_ALL :Expertní nastavení / všechna nastavení
@@ -1162,11 +1166,15 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Nastavení s ji
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Omezí určitá nastavení v seznamu níže
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Všechny typy nastavení
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Nastavení klienta (neuchováno v uložených hrách; ovlivní všechny hry)
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Nastavení klienta (neuchována v uložených hrách; ovlivní všechny hry)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Nastavení hry (uchováno v uložených hrách; ovlivní pouze nové hry)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Nastavení hry (uchováno v uložené hře; ovlivní pouze stávající hru)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Nastavení společnosti (uchováno v uložených hrách; ovlivní pouze nové hry)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Nastavení společnosti (uchováno v uložené hře; ovlivní pouze stávající společnost)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Všechny výsledky vyhledávání zobrazíš nastavením {}{SILVER}kategorie {BLACK}na {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Všechny výsledky vyhledávání zobrazíš nastavením {}{SILVER}typu {BLACK}na {WHITE}Všechny typy nastavení
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Všechny výsledky vyhledávání zobrazíš nastavením {}{SILVER}kategorie {BLACK}na {WHITE}{STRING} {BLACK}a {SILVER}typu {BLACK}na {WHITE}Všechny typy nastavení
STR_CONFIG_SETTINGS_NONE :{WHITE}- Nic -
STR_CONFIG_SETTING_OFF :Vypnuto
STR_CONFIG_SETTING_ON :Zapnuto
@@ -1209,7 +1217,7 @@ STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vyber jak moc h
STR_CONFIG_SETTING_BUILDONSLOPES :Povolit výstavbu na svazích kopců a na pobřežích: {STRING}
STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Pokud je zapnuto, tratě a stanice mohou být postaveny na většině svahů. Pokud ne, mohou být postaveny pouze na svazích stejného směru tak, že nevyžadují žádné základy.
STR_CONFIG_SETTING_AUTOSLOPE :Srovnání terénu pod budovami, kolejemi atd. (autoslope): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE :Povolit srovnání terénu pod budovami, kolejemi atd. (autoslope): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Povoluje změnu terénu pod budovami a tratěmi bez jejich odstranění
STR_CONFIG_SETTING_CATCHMENT :Povolit u oblasti pokrytí realističtější velikost: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Rozdílná velikost oblasti pokrytí u různých stanic a letišť
@@ -1324,7 +1332,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vozidlům se ni
STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Pokud je zapnuto, všechny modely vlaků zůstanou po uvedení dostupné napořád. (nezastarají)
STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Automaticky nahradit dopravní prostředek, když zestárne: {STRING}
STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Pokud je zapnuto, vozidla na konci své plánované životnosti budou automaticky nahrazena, když jsou splněny podmínky pro automatické obnovení.
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automaticky nahradit vozidlo {STRING} před/po dosažení životnosti
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Automaticky nahradit vozidlo při dosažení {STRING} životnosti
STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relativní věk kdy by měli být vozidlo automaticky vyměněno za nové
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} měsíc{P "" e ů} před
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} měsíc{P "" e ů} po
@@ -1432,7 +1440,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Žádné akce
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Všechny akce kromě stavebních
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Všechny akce kromě úprav terénu
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Všechny akce
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Používat pokročilý seznam vozidel: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Používat seznam vozidel se skupinami: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Umožňuje použití vylepšeného seznamu vozidel ve skupinách
STR_CONFIG_SETTING_LOADING_INDICATORS :Používat ukazatele naložení: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Vyber jestli budou zobrazovány ukazatele naložení nad nakládajícími a vykládajícími vozidly.
@@ -1473,7 +1481,7 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Přehrávat zvu
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Zakázat zastávky, když nejsou dostupná příslušná vozidla: {STRING}
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Pokud je zapnuto, infrastruktura je dostupná pouze pokud jsou k dispozici vozidla, která ji mohou používat. Zamezí ztrátě času a peněz za budovaní nevyužitelné infrastruktury
STR_CONFIG_SETTING_MAX_TRAINS :Maximum vlaků na hráče: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS :Maximum vlaků na společnost: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximální počet vlaků, které může společnost vlastnit
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum silničních vozidel na společnost: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximální počet vozidel, které může společnost vlastnit
@@ -1597,7 +1605,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Povolí městů
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Města mohou stavět přejezdy: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Povolení tohoto nastavení umožní městům, budovat železniční přejezdy
STR_CONFIG_SETTING_NOISE_LEVEL :Umožnit městům ovlivňovat hlukový limit pro letiště: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Pokud je vypnuto, ve každém městě mohou být dvě letiště. Pokud je zapnuto, počet letišť bude omezen hlukovými limity města, což závisí na jeho populaci, velikosti letiště a jeho vzdálenosti od centra města
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Pokud je vypnuto, ve každém městě mohou být dvě letiště. Pokud je zapnuto, počet letišť ve městě bude omezen hlukovými limity města, což závisí na jeho populaci, velikosti letiště a jeho vzdálenosti od centra města
STR_CONFIG_SETTING_TOWN_FOUNDING :Zakládání měst během hry: {STRING}
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Povoluje hráčům zakládat nové města během hry
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Zakázáno
@@ -1660,7 +1668,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Rovnoměrný"
STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Mód distribuce pro poštu: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství pošty bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolná množství pošty může být odesláno v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro poštu.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Mód distribuce pro náklady pancéřových vozů: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Pancéřované vozy převážejí ceniny v mírném, diamanty v subtropickém nebo zlato v subarktickém klimatu. Nové grafiky však toho mohou změnit. "Rovnoměrný" znamená, že téměř stejné množství nákladu bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolná množství nákladu mohou být odeslána v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro tyto druhy nákladu. Je doporučeno nastavit "nerovnoměrný" nebo "manuální" při hraní v subarktickém klimatu, neboť banky posílají do dolů žádné zlato. Pro mírné a subtropické klima můžeš nastavit "rovnoměrné", neboť banky odesílají zpět do původní banky nějaký náklad cenin.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Pancéřované vozy převážejí ceniny v mírném, diamanty v subtropickém nebo zlato v subarktickém klimatu. Nové grafiky však toho mohou změnit. "Rovnoměrný" znamená, že téměř stejné množství nákladu bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolná množství nákladu mohou být odeslána v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro tyto druhy nákladu. Je doporučeno nastavit "nerovnoměrný" nebo "manuální" při hraní v subarktickém klimatu, neboť banky neposílají do dolů žádné zlato. Pro mírné a subtropické klima můžeš nastavit "rovnoměrné", neboť banky odesílají zpět do původní banky nějaký náklad cenin.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Módy distribuce pro ostatní třídy nákladu: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství nákladu bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolná množství nákladu mohou být odeslána v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro tyto druhy nákladu. Pravděpodobně chceš nastavit "nerovnoměrná" nebo "manuální"."
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Přesnost distribuce: {STRING}
@@ -1669,8 +1677,8 @@ STR_CONFIG_SETTING_DEMAND_DISTANCE :Vliv vzdálenos
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Pokud nastavíš vyšší hodnotu než 0, vzdálenost mezi zdrojovou stanicí A u určitých druhů nákladu a možnou cílovou stanicí B bude mít efekt na množství odeslaného nákladu z A do B. Čím vzdálenější je B od A, tím méně nákladu bude odesláno. Čím vyšší hodnotu nastavíš tím méně nákladu bude odesláno do vzdálených stanic a více bude odesláno do blízkých stanic.
STR_CONFIG_SETTING_DEMAND_SIZE :Množství vracejícího se nákladu pro rovnoměrný mód: {STRING}
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Nastavením méně než 100% zapříčiní, že se bude rovnoměrná distribuce chovat více nerovnoměrně. Méně nákladu bude odesláno zpět, pokud je určité množství odesláno do stanice. Pokud nastavíš 0%, bude se rovnoměrná distribuce chovat jako nerovnoměrná.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Vytížení kratších cest před využitím kapacitnějších: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Vzhledem k tomu, že je často mezi dvěmi stanicemi více cest, Cargodist jako první vytíží tu nejkratší a dále využije druhou nejkratší dokud také není vytížená a tak dále. Pokud jsou všechny trasy zatížené ale stále nestačí provozu, přetíží všechny trasy s preferencí té nejkapacitnější. Bohužel, většinou však algoritmus neodhaduje kapacitu přesně. Toto nastavení dovolí zvolit na kolik procent musí být nejkratší cesta zaplněna, než dojde k vytížení té delší. Nastav na méně než 100% pro zabránění přeplnění stanic v případně nadhodnocené kapacity.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Vytížení kratších tras před využitím kapacitnějších tras: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Vzhledem k tomu, že je často mezi dvěma stanicemi více tras, Distribuce nákladu jako první vytíží tu nejkratší a dále využije druhou nejkratší dokud také není vytížená a tak dále. Pokud jsou všechny trasy zatížené, ale stále nestačí provozu, přetíží všechny trasy s preferencí té nejkapacitnější. Bohužel, většinou však algoritmus neodhaduje kapacitu přesně. Toto nastavení dovolí zvolit na kolik procent musí být nejkratší cesta zaplněna, než dojde k vytížení té delší. Nastav na méně než 100% pro zabránění přeplnění stanic v případně nadhodnocené kapacity.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Jednotky rychlosti: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kdykoliv se rychlost zobrazí v uživatelském rozhraní, bude ve zvolených jednotkách
@@ -1684,7 +1692,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperiální (h
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrické (hp)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Jednotky hmotnost: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Jednotky hmotnosti: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Kdykoliv se hmotnost zobrazí v uživatelském rozhraní, bude ve zvolených jednotkách
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperiální (short t/ton)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrické (t/tuna)
@@ -1885,6 +1893,7 @@ STR_LIVERY_FREIGHT_TRAM :Nákladní tram
STR_FACE_CAPTION :{WHITE}Volba tváře
STR_FACE_CANCEL_TOOLTIP :{BLACK}Zrušit volbu nového obličeje
STR_FACE_OK_TOOLTIP :{BLACK}Potvrdit výběr obličeje
STR_MAPGEN_RANDOM :{BLACK}Nové číslo
STR_FACE_MALE_BUTTON :{BLACK}Mužská
STR_FACE_MALE_TOOLTIP :{BLACK}Zvolit mužské obličeje
@@ -2635,6 +2644,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Přijímané zboží: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rychlostní omezení tratě: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Rychlostní omezení silnice: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kamení
@@ -2750,6 +2760,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Uložit
STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Uložit současnou hru se zvoleným jménem
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Nahrát
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Rozehrát vybranou hru
STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Načíst označenou výškovou mapu
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Vlastnosti hry
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Není dostupná žádná informace
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
@@ -2770,7 +2781,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Zvýšit
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Snížit sněžnou čáru o jednu úroveň
STR_MAPGEN_RANDOM_SEED :{BLACK}Náhodné číslo:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Zde můžeš zadat seed
STR_MAPGEN_RANDOM :{BLACK}Nové číslo
STR_MAPGEN_RANDOM_HELP :{BLACK}Vytvořit nový seed (číslo) pro generátor terénu
STR_MAPGEN_LAND_GENERATOR :{BLACK}Generátor krajiny:
STR_MAPGEN_TREE_PLACER :{BLACK}Sázení stromů:
@@ -2964,6 +2974,7 @@ STR_NEWGRF_LIST_MISSING :{RED}některé
STR_NEWGRF_BROKEN :{WHITE}Chování grafiky '{0:STRING}' by mohlo způsobit desynchronizaci a/nebo pád hry
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Změnil se stav lokomotivy '{1:ENGINE}', když nebyla v depu
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Změnilo délku vozidla '{1:ENGINE}', když nebylo v depu
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Změnila se kapacita vozidla '{1:ENGINE}', i když nebylo v depu nebo nebylo přestavováno
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Vlak '{VEHICLE}' patřící '{COMPANY}' nemá platnou délku. Pravděpodobně to způsobila nějaká grafika. Hra se může desynchronizovat nebo spadnout
STR_NEWGRF_BUGGY :{WHITE}Grafika '{0:STRING}' poskytuje neplatné informace
@@ -3228,7 +3239,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN
STR_FINANCES_TOTAL_CAPTION :{WHITE}Celkem:
STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Stav na účtu
STR_FINANCES_LOAN_TITLE :{WHITE}Půjčka
STR_FINANCES_MAX_LOAN :{WHITE}Max. půjčka: {BLACK}{CURRENCY_LONG}
STR_FINANCES_MAX_LOAN :{WHITE}Maximální půjčka: {BLACK}{CURRENCY_LONG}
STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG}
STR_FINANCES_BORROW_BUTTON :{BLACK}Půjčit {CURRENCY_LONG}
STR_FINANCES_BORROW_TOOLTIP :{BLACK}Půjčit si více
@@ -3777,7 +3788,7 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Ovlivnit
STR_ORDER_REFIT :{BLACK}Přestavět
STR_ORDER_REFIT_TOOLTIP :{BLACK}Vyber, na který druh nákladu přestavět. Ctrl+klik odstraní přestavbu z příkazu
STR_ORDER_REFIT_AUTO :{BLACK}Automaticky přestavět
STR_ORDER_REFIT_AUTO :{BLACK}Ve stanici přestavět
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Zvolit druh nákladu pro automatické přestavění pro tento příkaz. Ctrl+Click odebere z příkazu automatické přestavění. Automatické přestavění bude fungovat pouze pokud vozidlo lze přestavět.
STR_ORDER_DROP_REFIT_AUTO :Neměnný náklad
STR_ORDER_DROP_REFIT_AUTO_ANY :Dostupný náklad
@@ -3869,18 +3880,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(nevykládat a
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(nevykládat a plně naložit čímkoli)
STR_ORDER_NO_UNLOAD_NO_LOAD :(nevykládat ani nenakládat)
STR_ORDER_AUTO_REFIT :(Automatické přestavění na {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Plně naložit vše s automatickým přestavěním na {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Plně naložit cokoliv a automaticky přestavět na {STRING})
STR_ORDER_UNLOAD_REFIT :(Vyložit a naložit s automatickým přestavěním na {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Vyložit a počkat na plné naložení s automatickým přestavěním na {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Vyložit a počkat na naložení čehokoliv s automatickým přestavěním na {STRING})
STR_ORDER_TRANSFER_REFIT :(Přeložit a naložit s automatickým přestavěním na {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Přeložit a počkat na plné naložení s automatickým přestavěním na {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Přeložit a počkat na naložení čehokoliv s automatickým přestavěním na {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(Nevykládat a naložit s automatickým přestavěním na {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Nevykládat a počkat na plné naložení s automatickým přestavěním na {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Nevykládat a počkat na plné naložení čehokoliv s automatickým přestavěním na {STRING})
STR_ORDER_AUTO_REFIT :(Přestavění na {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Plně naložit vše s přestavěním na {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Plně naložit cokoliv a přestavět na {STRING})
STR_ORDER_UNLOAD_REFIT :(Vyložit a naložit s přestavěním na {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Vyložit a počkat na plné naložení s přestavěním na {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Vyložit a počkat na naložení čehokoliv s přestavěním na {STRING})
STR_ORDER_TRANSFER_REFIT :(Přeložit a naložit s přestavěním na {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Přeložit a počkat na plné naložení s přestavěním na {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Přeložit a počkat na naložení čehokoliv s přestavěním na {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(Nevykládat a naložit s přestavěním na {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Nevykládat a počkat na plné naložení s přestavěním na {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Nevykládat a počkat na plné naložení čehokoliv s přestavěním na {STRING})
STR_ORDER_AUTO_REFIT_ANY :dostupný náklad
@@ -3906,7 +3917,7 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Jízdní
STR_TIMETABLE_NO_TRAVEL :Nikam nejet
STR_TIMETABLE_NOT_TIMETABLEABLE :Jet do (automatický; jizdní řád podle následujícího ručního příkazu)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Jet do (mimo jízdní řád)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Jet maximálně {2:VELOCITY} (mimo jízdní řád)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Jet (mimo jízdní řád) maximální rychlostí {2:VELOCITY}
STR_TIMETABLE_TRAVEL_FOR :Jet do {STRING}
STR_TIMETABLE_TRAVEL_FOR_SPEED :Jeď {STRING} a maximálně {VELOCITY}
STR_TIMETABLE_STAY_FOR :a zůstat {STRING}
+152 -16
View File
@@ -199,21 +199,28 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}hk
STR_UNITS_POWER_METRIC :{COMMA}hk
STR_UNITS_POWER_SI :{COMMA}kW
STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t
STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA}t
STR_UNITS_WEIGHT_SHORT_SI :{COMMA}kg
STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} ton{P "" s}
STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} ton{P "" s}
STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg
STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}gal
STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}l
STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³
STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} gallon
STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter
STR_UNITS_VOLUME_LONG_SI :{COMMA} m³
STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf
STR_UNITS_FORCE_METRIC :{COMMA} kp
STR_UNITS_FORCE_SI :{COMMA} kN
STR_UNITS_HEIGHT_IMPERIAL :{COMMA} fod
STR_UNITS_HEIGHT_METRIC :{COMMA} m
STR_UNITS_HEIGHT_SI :{COMMA} m
# Common window strings
@@ -221,6 +228,7 @@ STR_LIST_FILTER_TITLE :{BLACK}Filtrer
STR_LIST_FILTER_OSKTITLE :{BLACK}Indtast filter-udtryk
STR_LIST_FILTER_TOOLTIP :{BLACK}Indtast nøgleord til at filtrere listen efter
STR_TOOLTIP_GROUP_ORDER :{BLACK}Vælg grupperingssortering
STR_TOOLTIP_SORT_ORDER :{BLACK}Vælg sorteringsorden (faldende/stigende)
STR_TOOLTIP_SORT_CRITERIA :{BLACK}Vælg sorteringskriterie
STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Vælg filtreringskriterier
@@ -232,6 +240,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Luk vind
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Vinduestitel - træk her for at flytte vinduet
STR_TOOLTIP_SHADE :{BLACK}Oprul vindue - vis kun titellinien
STR_TOOLTIP_DEBUG :{BLACK}Vis information om NewGRF fejl
STR_TOOLTIP_DEFSIZE :{BLACK}Gendan vinduets standardstørrelse. Ctrl+Klik for at gemme nuværende størrelse som standard
STR_TOOLTIP_STICKY :{BLACK}Marker dette vindue som ulukkeligt af 'Luk ALLE vinduer' tasten. Ctrl+Klik for også at gemme tilstand som standart
STR_TOOLTIP_RESIZE :{BLACK}Klik og træk for at ændre vinduets størrelse
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Skift mellem stort/lille vindue
@@ -276,6 +285,8 @@ STR_SORT_BY_LENGTH :Længde
STR_SORT_BY_LIFE_TIME :Resterende levetid
STR_SORT_BY_TIMETABLE_DELAY :Køreplans forsinkelse
STR_SORT_BY_FACILITY :Stationstype
STR_SORT_BY_WAITING_TOTAL :Total ventende fragt
STR_SORT_BY_WAITING_AVAILABLE :Tilgængelig ventende fragt
STR_SORT_BY_RATING_MAX :Højeste værdi af last
STR_SORT_BY_RATING_MIN :Laveste værdi af last
STR_SORT_BY_ENGINE_ID :Lokomotiv ID (klassisk)
@@ -301,6 +312,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Vis tils
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Vis liste over selskabets stationer
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Vis selskabets finansinformation
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Vis generel selskabsinformation
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Vis historiebog
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Vis målliste
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Vis grafer
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Vis selskabsoversigten
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finansiér opførelse af ny industri
@@ -374,6 +387,7 @@ STR_FILE_MENU_EXIT :Afslut
# map menu
STR_MAP_MENU_MAP_OF_WORLD :Kort over verden
STR_MAP_MENU_EXTRA_VIEW_PORT :Nyt lokalitetsvindue
STR_MAP_MENU_LINGRAPH_LEGEND :Laststrømforklaring
STR_MAP_MENU_SIGN_LIST :Liste over skilte
############ range for town menu starts
@@ -504,7 +518,7 @@ STR_MONTH_ABBREV_OCT :okt
STR_MONTH_ABBREV_NOV :nov
STR_MONTH_ABBREV_DEC :dec
STR_MONTH_JAN :januar
STR_MONTH_JAN :Januar
STR_MONTH_FEB :februar
STR_MONTH_MAR :marts
STR_MONTH_APR :april
@@ -660,17 +674,20 @@ STR_SMALLMAP_CAPTION :{WHITE}Kort - {
STR_SMALLMAP_TYPE_CONTOURS :Konturer
STR_SMALLMAP_TYPE_VEHICLES :Køretøjer
STR_SMALLMAP_TYPE_INDUSTRIES :Industrier
STR_SMALLMAP_TYPE_ROUTEMAP :Laststrøm
STR_SMALLMAP_TYPE_ROUTES :Ruter
STR_SMALLMAP_TYPE_VEGETATION :Vegetation
STR_SMALLMAP_TYPE_OWNERS :Ejere
STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Vis landskabskonturer på kortet
STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Vis køretøjer på kortet
STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Vis industrier på kortet
STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Vis laststrøm på kortet
STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Vis transportruter på kortet
STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Vis vegetation på kortet
STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Vis landejere på kortet
STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klik på en industritype for at vise den.
STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Kik på et selskab for at se dens ejendomme. Ctrl+klik deaktiverer alle selskaber undtagen det valgte. Ctrl+klik igen for atter at aktivere
STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klik på en last for at skifte visning af dens egenskab. Ctrl+Klik slår alle laster undtagen den valgte fra. Ctrl+Klik på den igen for at slå alle laster til
STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Veje
STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Jernbaner
@@ -704,6 +721,7 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA
STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Vis/skjul bynavne på kort
STR_SMALLMAP_CENTER :{BLACK}Centrer det lille kort ved den nuværende position
STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM})
STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING}
STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY}
STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN}
STR_SMALLMAP_DISABLE_ALL :{BLACK}Slå alle fra
@@ -792,13 +810,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} venter i skibsdokken
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} venter i hangaren
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} har for få ordrer i ordrelisten
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} har en ugyldig ordre
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} har dublerede ordrer
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} har en ugyldig station i sine ordrer
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} er gammel
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er meget gammel
@@ -1052,7 +1068,8 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Firma indstilli
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Firma indstilling (lagret i gemt spil; påvirker kun nye spil)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Firma indstilling (lagret i gemt spil; påvirker kun aktuelt selskab)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Vis:
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategori:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Begrænser listen nedenfor så den kun viser ændrede indstillinger
STR_CONFIG_SETTING_RESTRICT_BASIC :Grund Indstillinger
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Avancerede indstillinger
@@ -1067,6 +1084,7 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spil indstillin
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spil indstilling (lagret i gemt spil, påvirker kun det aktuelt spil)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Firma indstilling (lagret i gemt spil; påvirker kun nye spil)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firma indstilling (lagret i gemt spil; påvirker kun aktuelt selskab)
STR_CONFIG_SETTINGS_NONE :{WHITE}- Ingen -
STR_CONFIG_SETTING_OFF :Fra
STR_CONFIG_SETTING_ON :Til
@@ -1321,6 +1339,8 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Standard palette NewGRFer uden valgt palette: {STRING}
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Standardpalet til brug af NewGRFs der ikke angiver hvilken en de har brug for
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Standard (D) palet
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Legacy (W) palet
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Sæt automatisk på pause når nyt spil startes: {STRING}
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Når aktiveret, vil spillet automatisk pause når du starter et nyt spil, det giver mulighed for at studerer kortet nærmere
@@ -1486,24 +1506,24 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Alle
STR_CONFIG_SETTING_TOWN_LAYOUT :Vej-layout for nye byer: {STRING}
STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Layout for vejnettet i byer
STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Standard
STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Bedre veje
STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Optimerede veje
STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 gitter
STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 gitter
STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 vej gitter
STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Tilfældig
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Byer kan bygge veje: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Tillad byer at bygge veje når de vokser. Afvis for at forbygge at byer ikke selv bygger veje
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Tillad byer at bygge veje når de vokser. Deaktiver for at forbyde byer selv at bygge veje
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Byer kan bygge niveaukryds: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Slå denne indstilling til for at tillade byer, at bygge niveaukryds
STR_CONFIG_SETTING_NOISE_LEVEL :Tillad byer at fastsætte støjgrænser for lufthavne: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Hvis denne indstilling er slået fra, kan der bygges to lufthavne i hver by. Hvis denne indstilling er slået til, er grænsen fastsat af støjgrænsen for den enkelte byen, hvilket afhænger af population, lufthavnstørrelse og afstand
STR_CONFIG_SETTING_TOWN_FOUNDING :At stifte byer i selve spillet: {STRING}
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Hvis denne indstilling er slået til er det tilladt for spillere at stifte nye byer i spillet
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Ikke tilladt
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Forbudt
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Tilladt
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Tilladt, tilpasset by-layout
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Placering af træer i spillet: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Kontroler den tilfældige fremkomst af træer i løbet af spillet. Dette vil påvirke industrier der afhænger træers vækst, f.eks. savværker
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Kontroller den tilfældige fremkomst af træer i løbet af spillet. Dette vil påvirke industrier der afhænger træers vækst, f.eks. savværker
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :Ingen {RED}(ødelægger træfabrik)
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Kun i regnskove
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :Alle steder
@@ -1512,7 +1532,7 @@ STR_CONFIG_SETTING_TOOLBAR_POS :Placering af v
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horisontal placering af hovedværktøjlinjen i toppen af skærmen
STR_CONFIG_SETTING_STATUSBAR_POS :Position af statusbar: {STRING}
STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Horisontal placering af statuslinjen i bunden af skærmen
STR_CONFIG_SETTING_SNAP_RADIUS :vinduers fastgørelses radius: {STRING}
STR_CONFIG_SETTING_SNAP_RADIUS :Vinduers fastgørelses radius: {STRING}
STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Afstanden mellem vinduer før vinduet automatisk flyttes på linje med det nærliggende vindue
STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" s}
STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Deaktiveret
@@ -1546,18 +1566,73 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Gennemsnitlig s
STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Fjern absurde vejelementer under opførelse af vej: {STRING}
STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Fjern døde vej-ender i løbet af finansierede vej-rekostruktioner
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Opdatér distributionsgraf hver {STRING} dag{P 0:2 "" e}
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Tid mellem efterfølgende genberegninger af forbindelsesgrafen. Hver genberegning beregner planerne for et komponent af grafen. Det betyder, at en værdi X for denne indstilling ikke betyder at hele grafen vil blive opdateret hver X dage. Kun nogle komponenter vil. Jo kortere du sætter indstillingen, jo mere CPU-tid vil være nødvendig for at beregne forbindelsesgrafen. Jo længere du sætter indstillingen, jo længere vil det tage før lastdistribution starter på nye ruter.
STR_CONFIG_SETTING_LINKGRAPH_TIME :Tag {STRING} dag{P 0:2 "" e} for genberegning af distributionsgraf
STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Tid taget for hver genberegning af et forbindelsesgrafkomponent. Når en genberegning startes, skabes en tråd som er tilladt at køre dette antal dage. Jo kortere du sætter denne indstilling, jo mere sandsynligt er det at tråden ikke er færdig når det er meningen. Så stopper spillet indtil den er ("lag"). Jo længere du sætter denne indstilling, jo længere tager det for distributionen at blive opdateret når ruter ændres.
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuel
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymmetrisk
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symmetrisk
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Distributionsmodel for passagerer: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symmetrisk" betyder at omtrent det samme antal passagerer vil rejse fra en station A til en station B som fra B til A. "asymmetrisk" betyder at vilkårlige antal passagerer kan rejse i hver retning. "manuel" betyder at ingen automatisk distribution vil finde sted for passagerer.
STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Distributionsmodel for post: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrisk" betyder at omtrent den samme mængde post vil blive sendt fra en station A til en station B som fra B til A. "asymmetrisk" betyder at vilkårlige mængder post kan blive sendt i hver retning. "manuel" betyder at ingen automatisk distribution vil finde sted for post.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distributionsmodel for PANSRET lastklasse: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :PANSRET lastklassen indeholder værdigenstande i det tempererede klima, diamanter i det subtropiske klima, eller guld i det subarktiske klima. NewGRF kan ændre dette. "symmetrisk" betyder at omtrent den samme mængde af denne last vil blive sendt fra en station A til en station B som fra B til A. "asymmetrisk" betyder at vilkårlige mængder af denne last kan blive sendt i hver retning. "manuel" betyder at ingen automatisk distribution vil finde sted for denne last. Det anbefales at sætte denne indstilling til assymetrisk eller manuel når der spilles subarktisk, da banker ikke sender guld tilbage til guldminer. For tempereret og subtropisk kan du også vælge symmetrisk, da banker vil sende værdigenstande tilbage til oprindelsesbanken for et læs værdigenstande.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distributionsmodel for andre lastklasser: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetrisk" betyder at omtrent den samme mængde last vil blive sendt fra en station A til en station B som fra B til A. "asymmetrisk" betyder at vilkårlige mængder last kan blive sendt i hver retning. "manuel" betyder at ingen automatisk distribution vil finde sted for disse laster. Du vil nok ønske at sætte dette til "asymmetrisk" eller manuel.
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distributionsnøjagtighed: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Jo højere du sætter denne indstilling, jo mere CPU-tid vil beregningen af forbindelsesgrafen tage. Hvis den tager for længe, kan du opleve lag. Hvis du derimod sætter indstillingen til en lav værdi, vil distributionen være unøjagtig, og du kan opleve last ikke blive sendt til de steder, du forventer.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Effekt af afstand på efterspørgsel: {STRING}
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Hvis du sætter denne indstilling til en værdi større end 0, vil afstanden mellem oprindelsesstation A for noget last og en mulig destination B have en effekt på mængden af last sendt fra A til B. Jo længere væk B er fra A, jo mindre last vil blive sendt. Jo højere du sætter denne indstilling, jo mindre last vil blive sendt til fjerne stationer, og jo mere last vil blive sendt til nærliggende stationer.
STR_CONFIG_SETTING_DEMAND_SIZE :Mængde returnerende last for symmetrisk model: {STRING}
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ved at sætte denne indstilling til mindre end 100%, opfører den symmetriske distribution sig mere som den asymmetriske. Mindre last vil blive tvunget sendt tilbage hvis en bestemt mængde er blevet sendt til en station. Hvis du sætter denne indstilling til 0%, vil den symmetriske distribution opfører sig ligesom den asymmetriske.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Mætning af korte veje før brug af veje med høj kapacitet: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Der er ofte flere veje mellem to givne stationer. Cargodist vil mætte den korteste vej først, så bruge den næstkorteste vej indtil den er mættet, osv.. Mætning bestemmes af en vurdering af kapacitet og planlagt brug. Når den har mættet alle veje, og hvis der stadig er efterspørgsel tilbage, vil den overbelaste alle veje, og foretrække vejene med høj kapacitet. Det meste af tiden vil algoritmen dog ikke vurdere kapaciteten nøjagtigt. Denne indstilling giver dig mulighed for at bestemme op til hvilken procentdel en kortere vej skal være mættet i første omgang før den næste, længere vej vælges. Sæt denne indstilling til mindre end 100% for at undgå overfyldte stationer i tilfælde af overvurderet kapacitet.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Hastighedsenheder: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Når en hastighed er vist i brugergrænsefladen, så vis dem i de valgte enheder
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperisk (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisk (km/t)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Køretøjskraftenheder: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Når et køretøjs kraft er vist i brugergrænsefladen, så vis dem i de valgte enheder
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperisk (hk)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrisk (hk)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Vægtenheder: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Når vægte er vist i brugergrænsefladen, så vis dem i de valgte enheder
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperisk (kort t/ton)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrisk (t/ton)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Rumfangsenheder: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Når rumfang er vist i brugergrænsefladen, så vis dem i de valgte enheder
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperisk (gal)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrisk (l)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Trækevneenheder: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Når trækevne, også kendt som trækkraft, er vist i brugergrænsefladen, så vis det i de valgte enheder
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Imperisk (lbf)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrisk (kp)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Højdeenheder: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Når højder er vist i brugergrænsefladen, så vis dem i de valgte enheder
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperisk (fod)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisk (m)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m)
STR_CONFIG_SETTING_GUI :{ORANGE}Brugerflade
STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Lokalisering
STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruktion
STR_CONFIG_SETTING_VEHICLES :{ORANGE}Køretøjer
STR_CONFIG_SETTING_STATIONS :{ORANGE}Stationer
STR_CONFIG_SETTING_ECONOMY :{ORANGE}Økonomi
STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Fragtdistribution
STR_CONFIG_SETTING_AI :{ORANGE}Modstandere
STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Visningsindstillinger
STR_CONFIG_SETTING_INTERACTION :{ORANGE}Brugerflade
@@ -1728,6 +1803,7 @@ STR_LIVERY_FREIGHT_TRAM :Fragt-sporvogn
STR_FACE_CAPTION :{WHITE}Ansigtsvalg
STR_FACE_CANCEL_TOOLTIP :{BLACK}Annuller nyt valg af ansigt
STR_FACE_OK_TOOLTIP :{BLACK}Accepter nyt ansigtsvalg
STR_MAPGEN_RANDOM :{BLACK}Tilfældig
STR_FACE_MALE_BUTTON :{BLACK}Mand
STR_FACE_MALE_TOOLTIP :{BLACK}Vælg mandlige ansigter
@@ -1783,7 +1859,10 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Ændre s
# Network server list
STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Netværksspil
STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Offentlig
STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Vælg mellem et offentligt (internet) og et ikke offentligt (lokalnetværk, LAN) spil
STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nej
STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ja
STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spiller navn:
STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Dette er det navn, som andre spillere vil kende dig ved
@@ -1842,6 +1921,8 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Navnet v
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Sæt kodeord
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskyt dit spil med et kodeord hvis du ikke vil have fremmede med
STR_NETWORK_START_SERVER_UNADVERTISED :Nej
STR_NETWORK_START_SERVER_ADVERTISED :Ja
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" er}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maksimalt antal tilladte klienter:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Vælg det maksimale antal klienter. Det er ikke nødvendigt at fylde dem alle
@@ -1962,6 +2043,7 @@ STR_NETWORK_CLIENT :Klient
STR_NETWORK_SPECTATORS :Tilskuere
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv beløbet du vil give
STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Tilskuer
# Network set password
STR_COMPANY_PASSWORD_CANCEL :{BLACK}Gem ikke den indtastede adgangskode
@@ -2154,8 +2236,15 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Slå gen
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gør objekter usynlige i stedet for gennemsigtige
# Linkgraph legend window
STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Laststrømforklaring
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Alle
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ingen
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Vælg firmaer at vise
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}ubrugt
STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}mættet
STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}overbelastet
# Base for station construction window(s)
STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Vis dækningsområde
@@ -2398,14 +2487,14 @@ STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Mellem
STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Stor
STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Tilfældig
STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Vælg bystørrelse
STR_FOUND_TOWN_CITY :{BLACK}By
STR_FOUND_TOWN_CITY :{BLACK}Storby
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Storbyer vokser hurtigere en almindelige byer{}Afhængig af indstillingerne kan de være større ved grundlæggelsen
STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Byens vej-layout:
STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Vælg vej-layout for denne by
STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Originalt
STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Bedre veje
STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 gitter
STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 vej gitter
STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 gitter
STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Tilfældigt
@@ -2459,6 +2548,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Togspors hastighedsgrænse: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Vej hastighedsbegrænsning: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Klipper
@@ -2594,7 +2684,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Flyt sne
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Flyt snegrænsen een ned
STR_MAPGEN_RANDOM_SEED :{BLACK}Tilfældig
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klik for at angive tilfældighed
STR_MAPGEN_RANDOM :{BLACK}Tilfældig
STR_MAPGEN_RANDOM_HELP :{BLACK}Ændre den tilfældige værdi ved brug i terrængeneratoren
STR_MAPGEN_LAND_GENERATOR :{BLACK}Terrængenerator:
STR_MAPGEN_TREE_PLACER :{BLACK}Træalgoritme:
@@ -2886,9 +2975,14 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Køb et
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Bestik de lokale myndigheder til at hæve din bedømmelse, med risiko for en stor straf hvis det bliver opdaget.{}Pris: {CURRENCY_LONG}
# Goal window
STR_GOALS_GLOBAL_TITLE :{BLACK}Globale mål
STR_GOALS_CAPTION :{WHITE}{COMPANY} Mål
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globale Mål
STR_GOALS_GLOBAL_TITLE :{BLACK}Globale mål:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Ingen -
STR_GOALS_SPECTATOR_NONE :{ORANGE}- Ikke anvendelig -
STR_GOALS_PROGRESS :{ORANGE}{STRING}
STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING}
STR_GOALS_COMPANY_TITLE :{BLACK}Selskabsmål:
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik på mål for at centrere hovedvinduet over industri/by/felt Ctrl+klik åbner et nyt vindue over industri/by/felt lokation
@@ -2928,6 +3022,16 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING
STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik på servicen for at centrere skærmen over industrien/byen. Ctrl+Klik åbner et nyt vindue ved industriens/byens lokalitet.
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Historiebog
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global Historiebog
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Side {NUM}
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Gå til en bestemt side ved at vælge den i denne rulleliste.
STR_STORY_BOOK_PREV_PAGE :{BLACK}Forrige
STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Gå til forrige side
STR_STORY_BOOK_NEXT_PAGE :{BLACK}Næste
STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Gå til næste side
STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ugyldig målreference
# Station list window
STR_STATION_LIST_TOOLTIP :{BLACK}Stationsnavne - klik på et navn for at centrere skærmen over stationen. Ctrl+Klik åbner et nyt vindue ved stationens lokalitet
@@ -2956,8 +3060,31 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW} {COMPA
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Bedømmelse
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Vis stationens bedømmelse
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Månedligt udbud og lokal bedømmelse
STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%)
STR_STATION_VIEW_GROUP :{BLACK}Gruppér på
STR_STATION_VIEW_WAITING_STATION :Station: Ventende
STR_STATION_VIEW_WAITING_AMOUNT :Mængde: Ventende
STR_STATION_VIEW_PLANNED_STATION :Station: Planlagt
STR_STATION_VIEW_PLANNED_AMOUNT :Mængde: Planlagt
STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} fra {STATION}
STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION}
STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} til {STATION}
STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} fra ukendt station
STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} til enhver station
STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via enhver station
STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} fra denne station
STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stopper ved denne station
STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} til denne station
STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} uden stop
STR_STATION_VIEW_GROUP_S_V_D :Kilde-Via-Destination
STR_STATION_VIEW_GROUP_S_D_V :Kilde-Destination-Via
STR_STATION_VIEW_GROUP_V_S_D :Via-Kilde-Destination
STR_STATION_VIEW_GROUP_V_D_S :Via-Destination-Kilde
STR_STATION_VIEW_GROUP_D_S_V :Destination-Kilde-Via
STR_STATION_VIEW_GROUP_D_V_S :Destination-Via-Kilde
############ range for rating starts
STR_CARGO_RATING_APPALLING :Rædselsfuld
@@ -3100,6 +3227,7 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produkti
STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}% transporteret)
STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centrer skærmen over industriens lokalitet. Ctrl+Klik åbner et nyt vindue ved industriens lokalitet.
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produktions niveauet: {YELLOW}{COMMA}%
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Industrien har rapporteret øjeblikkelig nedlukning!
############ range for requires starts
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Kræver: {YELLOW}{STRING}{STRING}
@@ -3348,7 +3476,7 @@ STR_REPLACE_VEHICLES_STOP :{BLACK}Stop uds
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tryk for at stoppe udskiftningen at den køretøjstype, som du har valgt til venstre
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Udskifter: {ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift imellem lokomotiv- og vogn-udskiftningsvindue
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift imellem lokomotiv- og vognudskiftningsvindue
STR_REPLACE_ENGINES :Lokomotiver
STR_REPLACE_WAGONS :Vogne
@@ -3703,6 +3831,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Denne ti
STR_TIMETABLE_STATUS_START_AT :{BLACK}Denne tidsplan vil starte på {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}Startdato
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vælg en dato som starttidspunkt for denne køreplan. Ctrl+Klik sætter starttidspunkt for denne køreplan, og distribuerer alle køretøjer der deler denne ordre ligeligt baseret på deres relative rækkefølge, hvis ordren er fuldstændigt tidsplanlagt
STR_TIMETABLE_CHANGE_TIME :{BLACK}Ændre tid
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Ændre hvor lang tid den markerede ordre skal tage
@@ -3816,6 +3945,8 @@ STR_AI_SETTINGS_START_DELAY :Antal dage denn
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme for {STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} ændringslog for {STRING}
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licens for {STRING}
STR_TEXTFILE_WRAP_TEXT :{WHITE}Ombryd tekst
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ombryd teksten i vinduet, så det hele passer uden at skulle rulle
STR_TEXTFILE_VIEW_README :{BLACK}Se readme
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Ændringslog
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licens
@@ -4193,6 +4324,10 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikke
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... fartøjet er ødelagt
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ingen køretøjer vil være tilgængelige overhovedet
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Skift din NewGRF-konfiguration
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Ingen køretøjer er tilgængelige endnu
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start et nyt spil efter {DATE_SHORT} eller brug en NewGRF der giver tidlige køretøjer
# Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan ikke få toget til at passere signalet...
@@ -4694,6 +4829,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
STR_JUST_STRING :{STRING}
STR_JUST_STRING_STRING :{STRING}{STRING}
STR_JUST_RAW_STRING :{STRING}
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
# Slightly 'raw' stringcodes with colour or size
STR_BLACK_COMMA :{BLACK}{COMMA}
+41 -35
View File
@@ -810,13 +810,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} wacht in dok
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} wacht in hangar
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} heeft te weinig orders
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} heeft een lege order
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} heeft dubbele orders
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} heeft een ongeldig station in de orders
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} is oud aan het worden
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} is erg oud aan het worden
@@ -1070,8 +1068,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Spelinstellinge
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Bedrijfsinstellingen (Opgeslagen in bestand; hebben alleen invloed op nieuw spel)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Bedrijfsinstellingen (Opgeslagen in bestand; hebben alleen invloed op huidig bedrijf)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Toon:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Filtert de onstaande lijst op alleen gewijzigde instellingen
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categorie:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Beperkt de onderstaande lijst met vooraf gedefinieerde filters
STR_CONFIG_SETTING_RESTRICT_BASIC :Gewone instellingen
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Geavanceerde instellingen
STR_CONFIG_SETTING_RESTRICT_ALL :Geavanceerde instellingen / Alle instellingen
@@ -1081,10 +1080,14 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Instellingen me
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Filter de lijst hieronder op bepaalde instellingstypen
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Alle instellingen
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Gebruikersinstellingen (Niet opgeslagen in bestand; heeft betrekking op alle spellen)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spelinstellingen (Opgeslagen in bestand; hebben alleen betrekking op nieuw spel)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Bedrijfsinstellingen (Opgeslagen in bestand; hebben alleen betrekking op huidig spel)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Spelinstellingen (Opgeslagen in bestand; hebben alleen betrekking op nieuwe spellen)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Spelinstellingen (Opgeslagen in bestand; hebben alleen betrekking op huidig spel)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Bedrijfsinstellingen (Opgeslagen in bestand; heeft alleen betrekking op nieuwe spellen)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Bedrijfsinstellingen (Opgeslagen in bestand; hebben alleen betrekking op huidig bedrijf)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Toon alle zoekresultaten per instelling{}{SILVER}Categorie {BLACK}naar {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Toon alle zoekresultaten per instelling{}{SILVER}Type {BLACK}naar {WHITE}Alle instellingstypen
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Toon alle zoekresultaten per instelling{}{SILVER}Categorie {BLACK}to {WHITE}{STRING} {BLACK}and {SILVER}Type {BLACK}naar {WHITE}Alle instellingstypen
STR_CONFIG_SETTINGS_NONE :{WHITE}- Geen -
STR_CONFIG_SETTING_OFF :Uit
STR_CONFIG_SETTING_ON :Aan
@@ -1127,7 +1130,7 @@ STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Kies hoeveel la
STR_CONFIG_SETTING_BUILDONSLOPES :Bouwen op hellingen en kusten toestaan: {STRING}
STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Indien ingeschakeld kunnen sporen en stations gebouwd worden op hellingen. Indien uitgeschakeld kunnen stations en sporen alleen gebouwd worden op hellingen waar geen fundering nodig is en alleen in de richting van het spoor.
STR_CONFIG_SETTING_AUTOSLOPE :Omgeving aanpassen onder gebouwen, spoorwegen, enz. toestaan (autoslope): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE :Omgeving aanpassen onder gebouwen, spoorwegen, enz. toestaan: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Laat het aanpassen van funderingne onder gebouwen en spoor toe zonder deze te verwijderen
STR_CONFIG_SETTING_CATCHMENT :Gebruik meer realistische handelsgebieden: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Heb verschillende grootte verzorgingsgebied voor verschillende typen stations en luchthavens
@@ -1263,7 +1266,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Breedte van de
STR_CONFIG_SETTING_LAND_GENERATOR :Landgenerator: {STRING}
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Origineel
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max afstand van de rand voor Olierafinaderijen: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum afstand van de rand voor Olierafinaderijen: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olieraffinaderijen worden alleen gebouwd nabij de kaart grens, dat is aan de kust van eiland kaarten
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sneeuwhoogte: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Ruwheid van het terrein (alleen TerraGenesis) : {STRING}
@@ -1301,7 +1304,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Vloeiend scroll
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Bepalen hoe de hoofdweergave schuift naar een specifieke positie bij het klikken op de minikaart of bij de afgifte van een opdracht om naar een specifiek object op de kaart. Indien ingeschakeld, de viewport scrollt soepel, als deze uitgeschakeld gaat u rechtstreeks naar de beoogde plek
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Toon dimensie-informatie bij het gebruik van diverse bouwgereedschappen: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Geef tegel-afstanden en hoogteverschillen bij het slepen tijdens de bouw werkzaamheden
STR_CONFIG_SETTING_LIVERIES :Laat alle bedrijfskleuren zien: {STRING}
STR_CONFIG_SETTING_LIVERIES :Laat alle voertuigkleuren zien: {STRING}
STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Beheer het gebruik van voertuigspecifieke levering voor voertuigen (in tegenstelling tot bedrijfsspecifieke leveringen).
STR_CONFIG_SETTING_LIVERIES_NONE :Niets
STR_CONFIG_SETTING_LIVERIES_OWN :Eigen bedrijf
@@ -1350,7 +1353,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Geen mogelijkhe
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alle niet-constructie mogelijkheden
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alles behalve landschapsaanpassingen
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alle mogelijkheden
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gebruik de geavanceerde voertuigenlijst: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gebruik groepen voor voertuigenlijst: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Schakel het gebruik van de geavanceerde voertuigenlijsten in voor het groeperen van voertuigen
STR_CONFIG_SETTING_LOADING_INDICATORS :Gebruik laadindicatoren: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Geef aan of laad indicatoren worden weergegeven boven ladende of lossende voertuigen
@@ -1391,13 +1394,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Speel omgevings
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Bouwen van infrastructuur uitschakelen wanneer geen geschikt voertuig beschikbaar is: {STRING}
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Wanneer ingeschakeld, de infrastructuur is alleen beschikbaar als er ook voertuigen beschikbaar zijn, het voorkomen van verspilling van tijd en geld aan onbruikbare infrastructuur
STR_CONFIG_SETTING_MAX_TRAINS :Maximaal aantal treinen per bedrijf: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS :Maximum aantal treinen per bedrijf: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximum aantal treinen dat een bedrijf kan hebben
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximaal aantal wegvoertuigen per bedrijf: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum aantal wegvoertuigen per bedrijf: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximum aantal wegvoertuigen die een bedrijf kan hebben
STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximaal aantal vliegtuigen per bedrijf: {STRING}
STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum aantal vliegtuigen per bedrijf: {STRING}
STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximum aantal vliegtuigen dat een bedrijf kan hebben
STR_CONFIG_SETTING_MAX_SHIPS :Maximaal aantal schepen per bedrijf: {STRING}
STR_CONFIG_SETTING_MAX_SHIPS :Maximum aantal schepen per bedrijf: {STRING}
STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximum aantal schepen dat een bedrijf kan hebben
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Treinen voor de computer uitschakelen: {STRING}
@@ -1580,7 +1583,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrisch" b
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distributie-modus voor de GEPANTSERDE lading klasse: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :De GEPANTSERDE lading klasse bevat waardevolle spullen in het gematigde klimaat, diamanten in de subtropische of goud in subarctische klimaat. NewGRFs kan dat veranderen. "symmetrisch" betekent dat ongeveer dezelfde hoeveelheid lading die wordt verzonden van een station A naar station B als een van B naar A. "asymmetrische" dat willekeurige deze vracht kan in beide richtingen worden verzonden. "handmatig" betekent dat er geen automatische distributie zal plaatsvinden voor die lading. Het wordt aanbevolen om dit op asymmetrische of handmatig bij het spelen van subarctische, zoals banken zullen geen goud terug te sturen naar goudmijnen. Voor gematigde en subtropische kunt u ook kiezen symmetrische als banken zullen waardevolle spullen terugsturen naar de oorsprong bank van enkele lading van kostbaarheden.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distributie-modus voor andere vrachtsoorten: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetrisch" betekent dat ongeveer dezelfde hoeveelheid vracht wordt verzonden van een station A naar station B als een van B naar A. "asymmetrische" dat willekeurige hoeveelheid lading in beide richtingen worden verzonden. "handmatig" betekent dat er geen automatische distributie zal plaatsvinden voor die ladingen. Waarschijnlijk wilt u dit instellen op "asymmetrische" of handmatig.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetrisch" betekent dat willekeurige hoeveelheden lading in beide richtingen kan worden gestuurd. "manual" betekent dat er geen automatische distributie zal plaatsvinden voor die lading.
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Verdeelnauwkeurigheid: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Hoe hoger de instelling des te meer CPU-tijd de berekening van de link grafiek zal gebruiken. Als het te lang duurt kan vertraging opleveren. Als u deze instelt op een lage waarde, echter, zal de verdeling onnauwkeurig zijn, en de lading zal niet altijd worden verzonden naar de plaatsen die u verwacht.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect van afstand op de vraag: {STRING}
@@ -1803,6 +1806,7 @@ STR_LIVERY_FREIGHT_TRAM :Vrachttram
STR_FACE_CAPTION :{WHITE}Gezichtskeuze
STR_FACE_CANCEL_TOOLTIP :{BLACK}Annuleer nieuwe gezichtskeuze
STR_FACE_OK_TOOLTIP :{BLACK}Accepteer nieuwe gezichtskeuze
STR_MAPGEN_RANDOM :{BLACK}Willekeurig maken
STR_FACE_MALE_BUTTON :{BLACK}Mannelijk
STR_FACE_MALE_TOOLTIP :{BLACK}Selecteer mannelijke gezichten
@@ -1923,13 +1927,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Bescherm
STR_NETWORK_START_SERVER_UNADVERTISED :Nee
STR_NETWORK_START_SERVER_ADVERTISED :Ja
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} speler{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximaal aantal spelers:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum aantal spelers:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Kies het maximaal aantal toegestane spelers. Niet alle posities hoeven gebruikt te worden
STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} bedr{P ijf ijven}
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max bedrijven:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximum aantal bedrijven:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Beperk de server tot een bepaald aantal bedrijven
STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} toeschouwer{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max toeschouwers:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximum aantal toeschouwers:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Beperk de server tot een bepaald aantal toeschouwers
STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Gesproken taal:
STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Andere spelers zullen weten welke taal er wordt gesproken op de server
@@ -2547,6 +2551,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Geaccepteerde vracht: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Spoor snelheidslimiet: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Snelheidslimiet weg: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rotsen
@@ -2662,6 +2667,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Opslaan
STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Sla het huidige spel op onder de gekozen naam
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Laad
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Laad het geselecteerde spel
STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Laad de geselecteerd hoogtekaart
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spel details
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Geen informatie beschikbaar
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
@@ -2682,7 +2688,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Verschui
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Verschuif de sneeuwgrens één omlaag
STR_MAPGEN_RANDOM_SEED :{BLACK}Willekeurig getal:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klik om een willekeurig getal in te voeren
STR_MAPGEN_RANDOM :{BLACK}Willekeurig maken
STR_MAPGEN_RANDOM_HELP :{BLACK}Wijzig het willekeurige getal dat gebruikt wordt om het landschap te genereren
STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerator:
STR_MAPGEN_TREE_PLACER :{BLACK}Bosalgoritme:
@@ -2876,6 +2881,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Ontbrekend
STR_NEWGRF_BROKEN :{WHITE}Gedrag van NewGRF '{0:STRING}' zal waarschijnlijk desynchronisatiefouten (desyncs) en/of crashes veroorzaken
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Wagon '{1:ENGINE}' gewijzigde status van aandrijfeenheid wanneer niet in een depot
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Het verandert de lengte van voertuig '{1:ENGINE}' terwijl het niet in een depot is
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Het wijzigde voertuigcapaciteit voor '{1:ENGINE}' wanneer niet in een depot of ombouwen
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Trein '{VEHICLE}' behorend bij '{COMPANY}' heeft een ongeldige lengte. Het is waarschijnlijk veroorzaakt door problemen met NewGRFs. Het spel kan desynchroniseren of vastlopen
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' geeft onjuiste informatie
@@ -3140,7 +3146,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN
STR_FINANCES_TOTAL_CAPTION :{WHITE}Totaal:
STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Banksaldo
STR_FINANCES_LOAN_TITLE :{WHITE}Lening
STR_FINANCES_MAX_LOAN :{WHITE}Max. lening: {BLACK}{CURRENCY_LONG}
STR_FINANCES_MAX_LOAN :{WHITE}Maximum lening: {BLACK}{CURRENCY_LONG}
STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG}
STR_FINANCES_BORROW_BUTTON :{BLACK}Leen {CURRENCY_LONG}
STR_FINANCES_BORROW_TOOLTIP :{BLACK}Vergroot lening. Ctrl+klik om zoveel als mogelijk te lenen
@@ -3683,8 +3689,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Verander
STR_ORDER_REFIT :{BLACK}Ombouwen
STR_ORDER_REFIT_TOOLTIP :{BLACK}Kies naar welk type vracht ombouwen in deze order. Ctrl+klik om ombouw instructie te verwijderen
STR_ORDER_REFIT_AUTO :{BLACK}Auto-ombouwen
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Kies vrachttype voor auto-ombouwen naar in deze order. Ctrl+Klik om ombouw opdracht te verwijderen. Auto-ombouwen wordt alleen uitgevoerd als het voertuig dit toelaat
STR_ORDER_REFIT_AUTO :{BLACK}Ombouwen
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Kies vrachttype voor ombouwen naar in deze order. Ctrl+Klik om ombouw opdracht te verwijderen. Ombouwen wordt alleen uitgevoerd als het voertuig dit toelaat
STR_ORDER_DROP_REFIT_AUTO :Voorgedefinieerde vracht
STR_ORDER_DROP_REFIT_AUTO_ANY :Beschikbare vracht
@@ -3775,18 +3781,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Niet lossen en
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Niet lossen en één soort vracht volledig laden)
STR_ORDER_NO_UNLOAD_NO_LOAD :(Niet lossen en niet laden)
STR_ORDER_AUTO_REFIT :(Auto-ombouw naar {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Volledig laden met auto-ombouw naar {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Volledig willekeurige vracht laden met auto-ombouw naar {STRING})
STR_ORDER_UNLOAD_REFIT :(Lossen en neem vracht met auto-ombouw naar {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Lossen en wacht op volledig geladen vracht met auto-ombouw naar {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Lossen en wacht op willekeurig volledig geladen vracht met auto-ombouw naar {STRING})
STR_ORDER_TRANSFER_REFIT :(Overdragen en neem vracht met auto-ombouw naar {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Overdragen en wacht op volledig geladen vracht met auto-ombouw naar {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Overdragen en wacht op willekeurige vollediggeladen vracht met auto-ombouw naar {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(Niet lossen en neem vracht met auto-ombouw naar {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Niet lossen en wacht op volledig geladen vracht met auto-ombouw naar {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Niet lossen en wacht voor willekeurige volledigladen vracht met auto-ombouw naar {STRING})
STR_ORDER_AUTO_REFIT :(Ombouw naar {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Volledig laden met ombouw naar {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Volledig willekeurige vracht laden met ombouw naar {STRING})
STR_ORDER_UNLOAD_REFIT :(Lossen en neem vracht met ombouw naar {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Lossen en wacht op volledig geladen vracht met ombouw naar {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Lossen en wacht op willekeurig volledig geladen vracht met ombouw naar {STRING})
STR_ORDER_TRANSFER_REFIT :(Overdragen en neem vracht met ombouw naar {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Overdragen en wacht op volledig geladen vracht met ombouw naar {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Overdragen en wacht op willekeurige vollediggeladen vracht met ombouw naar {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(Niet lossen en neem vracht met ombouw naar {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Niet lossen en wacht op volledig geladen vracht met ombouw naar {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Niet lossen en wacht voor willekeurige volledigladen vracht met ombouw naar {STRING})
STR_ORDER_AUTO_REFIT_ANY :beschikbare vracht
+50 -44
View File
@@ -810,13 +810,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} is waiting in depot
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} is waiting in the aircraft hangar
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} has too few orders in the schedule
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} has a void order
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} has duplicate orders
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} has an invalid station in its orders
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} is getting old
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} is getting very old
@@ -1070,8 +1068,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Game setting (s
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Company setting (stored in saves; affects only new games)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Company setting (stored in save; affects only current company)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Show:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below showing only changed settings
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Category:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below using predefined filters
STR_CONFIG_SETTING_RESTRICT_BASIC :Basic settings
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Advanced settings
STR_CONFIG_SETTING_RESTRICT_ALL :Expert settings / all settings
@@ -1080,11 +1079,15 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Settings with a
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below to certain setting types
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All setting types
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affects all games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affects only new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affects only current game)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affects only new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affects only current company)
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affect all games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affect only new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affect only current game)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affect only new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affect only current company)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Type {BLACK}to {WHITE}All setting types
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING} {BLACK}and {SILVER}Type {BLACK}to {WHITE}All setting types
STR_CONFIG_SETTINGS_NONE :{WHITE}- None -
STR_CONFIG_SETTING_OFF :Off
STR_CONFIG_SETTING_ON :On
@@ -1122,12 +1125,12 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Disallow train
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :If enabled, trains will not reverse in non-terminus stations, even if there is a shorter path to their next destination when reversing
STR_CONFIG_SETTING_DISASTERS :Disasters: {STRING2}
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toggle disasters which may occasionally block or destroy vehicles or infrastructure
STR_CONFIG_SETTING_CITY_APPROVAL :City council's attitude towards area restructuring: {STRING2}
STR_CONFIG_SETTING_CITY_APPROVAL :Town council's attitude towards area restructuring: {STRING2}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Choose how much noise and environmental damage by companies affect their town rating and further construction actions in their area
STR_CONFIG_SETTING_BUILDONSLOPES :Allow building on slopes and coasts: {STRING2}
STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :If enabled, tracks and stations can be build on most slopes. If disabled, they are only allowed on slopes which match the direction of the track and thus require no foundations
STR_CONFIG_SETTING_AUTOSLOPE :Allow landscaping under buildings, tracks, etc. (autoslope): {STRING2}
STR_CONFIG_SETTING_AUTOSLOPE :Allow landscaping under buildings, tracks, etc.: {STRING2}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Allow landscaping under buildings and tracks without removing them
STR_CONFIG_SETTING_CATCHMENT :Allow more realistically sized catchment areas: {STRING2}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Have differently sized catchment areas for different types of stations and airports
@@ -1242,7 +1245,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicles never
STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :When enabled, all vehicle models remain available forever after their introduction
STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenew vehicle when it gets old: {STRING2}
STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :When enabled, a vehicle nearing its end of life gets automatically replaced when the renew conditions are fulfilled
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING2} max age
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING2} maximum age
STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relative age when a vehicle should be considered for auto-renewing
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} month{P 0 "" s} before
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} month{P 0 "" s} after
@@ -1263,7 +1266,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the li
STR_CONFIG_SETTING_LAND_GENERATOR :Land generator: {STRING2}
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max distance from edge for Oil Refineries: {STRING2}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil refineries: {STRING2}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oil refineries are only constructed near the map border, that is at the coast for island maps
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING2}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain (TerraGenesis only) : {STRING2}
@@ -1284,7 +1287,7 @@ STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :If disabled, th
STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}One or more tiles at the northern edge are not empty
STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}One or more tiles at one of the edges is not water
STR_CONFIG_SETTING_STATION_SPREAD :Max station spread: {STRING2}
STR_CONFIG_SETTING_STATION_SPREAD :Maximum station spread: {STRING2}
STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maximum area the parts of a single station may be spread out on. Note that high values will slow the game
STR_CONFIG_SETTING_SERVICEATHELIPAD :Service helicopters at helipads automatically: {STRING2}
STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Service helicopters after every landing, even if there is no depot at the airport
@@ -1301,7 +1304,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Smooth viewport
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Control how the main view scrolls to a specific position when clicking on the smallmap or when issuing a command to scroll to a specific object on the map. If enabled, the viewport scrolls smoothly, if disabled it jumps directly to the targeted spot
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Show a measurement tooltip when using various build-tools: {STRING2}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Display tile-distances and height differences when dragging during construction operations
STR_CONFIG_SETTING_LIVERIES :Show company liveries: {STRING2}
STR_CONFIG_SETTING_LIVERIES :Show vehicle-type specific liveries: {STRING2}
STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Control usage of vehicle-type specific liveries for vehicles (in contrary to company specific)
STR_CONFIG_SETTING_LIVERIES_NONE :None
STR_CONFIG_SETTING_LIVERIES_OWN :Own company
@@ -1350,7 +1353,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :No actions
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :All non-construction actions
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :All but landscape modifying actions
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :All actions
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use the advanced vehicle list: {STRING2}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use groups in vehicle list: {STRING2}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Enable usage of the advanced vehicle lists for grouping vehicles
STR_CONFIG_SETTING_LOADING_INDICATORS :Use loading indicators: {STRING2}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Select whether loading indicators are displayed above loading or unloading vehicles
@@ -1365,7 +1368,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Rail type to se
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :First available
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Last available
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Most used
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show reserved tracks: {STRING2}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show path reservations for tracks: {STRING2}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Give reserved tracks a different colour to assist in problems with trains refusing to enter path-based blocks
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building tools active after usage: {STRING2}
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use
@@ -1391,13 +1394,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient so
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Disable infrastructure building when no suitable vehicles are available: {STRING2}
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :When enabled, infrastructure is only available if there are also vehicles available, preventing waste of time and money on unusable infrastructure
STR_CONFIG_SETTING_MAX_TRAINS :Max trains per company: {STRING2}
STR_CONFIG_SETTING_MAX_TRAINS :Maximum number of trains per company: {STRING2}
STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximum number of trains that a company can have
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Max road vehicles per company: {STRING2}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum number of road vehicles per company: {STRING2}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximum number of road vehicles that a company can have
STR_CONFIG_SETTING_MAX_AIRCRAFT :Max aircraft per company: {STRING2}
STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum number of aircraft per company: {STRING2}
STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximum number of aircraft that a company can have
STR_CONFIG_SETTING_MAX_SHIPS :Max ships per company: {STRING2}
STR_CONFIG_SETTING_MAX_SHIPS :Maximum number of ships per company: {STRING2}
STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximum number of ships that a company can have
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Disable trains for computer: {STRING2}
@@ -1515,7 +1518,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Allow towns to
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Towns are allowed to build level crossings: {STRING2}
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Enabling this setting allows towns to build level crossings
STR_CONFIG_SETTING_NOISE_LEVEL :Allow town controlled noise level for airports: {STRING2}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a city is limited by the noise acceptance of the town, which depends on population and airport size and distance
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a town is limited by the noise acceptance of the town, which depends on population and airport size and distance
STR_CONFIG_SETTING_TOWN_FOUNDING :Founding towns in game: {STRING2}
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Enabling this setting allows players to found new towns in the game
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Forbidden
@@ -1580,7 +1583,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetric" mea
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribution mode for the ARMOURED cargo class: {STRING2}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMOURED cargo class contains valuables in the temperate, diamonds in the subtropical or gold in subarctic climate. NewGRFs may change that. "symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary of that cargo can be sent in either direction. "manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic, as banks won't send any gold back to gold mines. For temperate and subtropical you can also choose symmetric as banks will send valuables back to the origin bank of some load of valuables.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribution mode for other cargo classes: {STRING2}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetric" means that roughly the same amount of cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargos. You probably want to set this to either "asymmetric" or manual.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargoes.
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribution accuracy: {STRING2}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect of distance on demands: {STRING2}
@@ -1803,6 +1806,7 @@ STR_LIVERY_FREIGHT_TRAM :Freight Tram
STR_FACE_CAPTION :{WHITE}Face Selection
STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancel new face selection
STR_FACE_OK_TOOLTIP :{BLACK}Accept new face selection
STR_MAPGEN_RANDOM :{BLACK}Randomise
STR_FACE_MALE_BUTTON :{BLACK}Male
STR_FACE_MALE_TOOLTIP :{BLACK}Select male faces
@@ -1923,13 +1927,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect
STR_NETWORK_START_SERVER_UNADVERTISED :No
STR_NETWORK_START_SERVER_ADVERTISED :Yes
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max clients:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum number of clients:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choose the maximum number of clients. Not all slots need to be filled
STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compan{P y ies}
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max companies:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximum number of companies:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limit the server to a certain amount of companies
STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectator{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max spectators:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximum number of spectators:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limit the server to a certain amount of spectators
STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Language spoken:
STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Other players will know which language is spoken on the server
@@ -2547,6 +2551,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rail speed limit: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Road speed limit: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocks
@@ -2662,6 +2667,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Save
STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Save the current game, using the selected name
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Load
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Load the selected game
STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Load the selected heightmap
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Game Details
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No information available
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING1}
@@ -2682,7 +2688,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height one down
STR_MAPGEN_RANDOM_SEED :{BLACK}Random seed:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Click to enter a random seed
STR_MAPGEN_RANDOM :{BLACK}Randomise
STR_MAPGEN_RANDOM_HELP :{BLACK}Change the random seed used for Terrain Generation
STR_MAPGEN_LAND_GENERATOR :{BLACK}Land generator:
STR_MAPGEN_TREE_PLACER :{BLACK}Tree algorithm:
@@ -2876,6 +2881,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Missing fi
STR_NEWGRF_BROKEN :{WHITE}Behaviour of NewGRF '{0:RAW_STRING}' is likely to cause desyncs and/or crashes
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}It changed powered-wagon state for '{1:ENGINE}' when not inside a depot
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}It changed vehicle length for '{1:ENGINE}' when not inside a depot
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}It changed vehicle capacity for '{1:ENGINE}' when not inside a depot or refitting
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Train '{VEHICLE}' belonging to '{COMPANY}' has invalid length. It is probably caused by problems with NewGRFs. Game may desync or crash
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:RAW_STRING}' provides incorrect information
@@ -3140,7 +3146,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN
STR_FINANCES_TOTAL_CAPTION :{WHITE}Total:
STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bank Balance
STR_FINANCES_LOAN_TITLE :{WHITE}Loan
STR_FINANCES_MAX_LOAN :{WHITE}Max Loan: {BLACK}{CURRENCY_LONG}
STR_FINANCES_MAX_LOAN :{WHITE}Maximum Loan: {BLACK}{CURRENCY_LONG}
STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG}
STR_FINANCES_BORROW_BUTTON :{BLACK}Borrow {CURRENCY_LONG}
STR_FINANCES_BORROW_TOOLTIP :{BLACK}Increase size of loan. Ctrl+Click borrows as much as possible
@@ -3683,8 +3689,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Change t
STR_ORDER_REFIT :{BLACK}Refit
STR_ORDER_REFIT_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction
STR_ORDER_REFIT_AUTO :{BLACK}Auto-refit
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to auto-refit to in this order. Ctrl+Click to remove refit instruction. Auto-refitting will only be done if the vehicle allows it
STR_ORDER_REFIT_AUTO :{BLACK}Refit at station
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction. Refitting at stations will only be done if the vehicle allows it
STR_ORDER_DROP_REFIT_AUTO :Fixed cargo
STR_ORDER_DROP_REFIT_AUTO_ANY :Available cargo
@@ -3775,18 +3781,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(No unloading a
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(No unloading and wait for any full load)
STR_ORDER_NO_UNLOAD_NO_LOAD :(No unloading and no loading)
STR_ORDER_AUTO_REFIT :(Auto-refit to {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Full load with auto-refit to {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with auto-refit to {STRING})
STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with auto-refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with auto-refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with auto-refit to {STRING})
STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with auto-refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with auto-refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with auto-refit to {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with auto-refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with auto-refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with auto-refit to {STRING})
STR_ORDER_AUTO_REFIT :(Refit to {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Full load with refit to {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with refit to {STRING})
STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with refit to {STRING})
STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with refit to {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with refit to {STRING})
STR_ORDER_AUTO_REFIT_ANY :available cargo
@@ -3812,7 +3818,7 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Timetabl
STR_TIMETABLE_NO_TRAVEL :No travel
STR_TIMETABLE_NOT_TIMETABLEABLE :Travel (automatic; timetabled by next manual order)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Travel (not timetabled)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel with at most {2:VELOCITY} (not timetabled)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel (not timetabled) with at most {2:VELOCITY}
STR_TIMETABLE_TRAVEL_FOR :Travel for {STRING1}
STR_TIMETABLE_TRAVEL_FOR_SPEED :Travel for {STRING1} with at most {VELOCITY}
STR_TIMETABLE_STAY_FOR :and stay for {STRING1}
+50 -44
View File
@@ -810,13 +810,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} is waiting in depot
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} is waiting in the aircraft hangar
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} has too few orders in the schedule
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} has a void order
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} has duplicate orders
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} has an invalid station in its orders
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} is getting old
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} is getting very old
@@ -1070,8 +1068,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Game setting (s
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Company setting (stored in saves; only affects new games)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Company setting (stored in save; only affects current company)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Show:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below showing only changed settings
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Category:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below using predefined filters
STR_CONFIG_SETTING_RESTRICT_BASIC :Basic settings
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Advanced settings
STR_CONFIG_SETTING_RESTRICT_ALL :Expert settings / all settings
@@ -1080,11 +1079,15 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Settings with a
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below to certain setting types
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All setting types
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affects all games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; only affects new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; only affects current game)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; only affects new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; only affects current company)
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affect all games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affect only new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affect only current game)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affect only new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affect only current company)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Type {BLACK}to {WHITE}All setting types
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING} {BLACK}and {SILVER}Type {BLACK}to {WHITE}All setting types
STR_CONFIG_SETTINGS_NONE :{WHITE}- None -
STR_CONFIG_SETTING_OFF :Off
STR_CONFIG_SETTING_ON :On
@@ -1122,12 +1125,12 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Disallow train
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :If enabled, trains will not reverse in non-terminus stations, even if there is a shorter path to their next destination when reversing
STR_CONFIG_SETTING_DISASTERS :Disasters: {STRING}
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toggle disasters which may occasionally block or destroy vehicles or infrastructure
STR_CONFIG_SETTING_CITY_APPROVAL :City council's attitude towards area restructuring: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL :Town council's attitude towards area restructuring: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Choose how much noise and environmental damage by companies affect their town rating and further construction actions in their area
STR_CONFIG_SETTING_BUILDONSLOPES :Allow building on slopes and coasts: {STRING}
STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :If enabled, tracks and stations can be built on most slopes. If disabled, they are only allowed on slopes which match the direction of the track and thus require no foundations
STR_CONFIG_SETTING_AUTOSLOPE :Allow landscaping under buildings, tracks, etc. (autoslope): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE :Allow landscaping under buildings, tracks, etc.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Allow landscaping under buildings and tracks without removing them
STR_CONFIG_SETTING_CATCHMENT :Allow more realistically sized catchment areas: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Have differently sized catchment areas for different types of stations and airports
@@ -1242,7 +1245,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicles never
STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :When enabled, all vehicle models remain available forever after their introduction
STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenew vehicle when it gets old: {STRING}
STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :When enabled, a vehicle nearing its end of life gets replaced automatically when the renew conditions are fulfilled
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING} max age
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING} maximum age
STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relative age when a vehicle should be considered for auto-renewing
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} month{P 0 "" s} before
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} month{P 0 "" s} after
@@ -1263,7 +1266,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the li
STR_CONFIG_SETTING_LAND_GENERATOR :Land generator: {STRING}
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max distance from edge for Oil Refineries: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil refineries: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oil refineries are only constructed near the map border, that is at the coast for island maps
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain (TerraGenesis only) : {STRING}
@@ -1284,7 +1287,7 @@ STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :If disabled, th
STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}One or more tiles at the northern edge are not empty
STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}One or more tiles at one of the edges is not water
STR_CONFIG_SETTING_STATION_SPREAD :Max station spread: {STRING}
STR_CONFIG_SETTING_STATION_SPREAD :Maximum station spread: {STRING}
STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maximum area which parts of a single station may be spread out over. Note that high values will slow the game
STR_CONFIG_SETTING_SERVICEATHELIPAD :Service helicopters at helipads automatically: {STRING}
STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Service helicopters after every landing, even if there is no depot at the airport
@@ -1301,7 +1304,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Smooth viewport
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Control how the main view scrolls to a specific position when clicking on the smallmap or when issuing a command to scroll to a specific object on the map. If enabled, the viewport scrolls smoothly, if disabled it jumps directly to the targeted spot
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Show a measurement tooltip when using various build-tools: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Display tile-distances and height differences when dragging during construction operations
STR_CONFIG_SETTING_LIVERIES :Show company liveries: {STRING}
STR_CONFIG_SETTING_LIVERIES :Show vehicle-type specific liveries: {STRING}
STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Control usage of vehicle-type specific liveries for vehicles (in contrary to company specific)
STR_CONFIG_SETTING_LIVERIES_NONE :None
STR_CONFIG_SETTING_LIVERIES_OWN :Own company
@@ -1350,7 +1353,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :No actions
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :All non-construction actions
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :All but landscape modifying actions
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :All actions
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use the advanced vehicle list: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use groups in vehicle list: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Enable usage of the advanced vehicle lists for grouping vehicles
STR_CONFIG_SETTING_LOADING_INDICATORS :Use loading indicators: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Select whether loading indicators are displayed above loading or unloading vehicles
@@ -1365,7 +1368,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Rail type to se
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :First available
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Last available
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Most used
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show reserved tracks: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show path reservations for tracks: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Give reserved tracks a different colour to assist in problems with trains refusing to enter path-based blocks
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building tools active after usage: {STRING}
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use
@@ -1391,13 +1394,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient so
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Disable infrastructure building when no suitable vehicles are available: {STRING}
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :When enabled, infrastructure is only available if there are also vehicles available, preventing waste of time and money on unusable infrastructure
STR_CONFIG_SETTING_MAX_TRAINS :Max trains per company: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS :Maximum number of trains per company: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximum number of trains that a company can have
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Max road vehicles per company: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum number of road vehicles per company: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximum number of road vehicles that a company can have
STR_CONFIG_SETTING_MAX_AIRCRAFT :Max aircraft per company: {STRING}
STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum number of aircraft per company: {STRING}
STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximum number of aircraft that a company can have
STR_CONFIG_SETTING_MAX_SHIPS :Max ships per company: {STRING}
STR_CONFIG_SETTING_MAX_SHIPS :Maximum number of ships per company: {STRING}
STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximum number of ships that a company can have
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Disable trains for computer: {STRING}
@@ -1515,7 +1518,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Allow towns to
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Towns are allowed to build level crossings: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Enabling this setting allows towns to build level crossings
STR_CONFIG_SETTING_NOISE_LEVEL :Allow town controlled noise level for airports: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a city is limited by the noise acceptance of the town, which depends on population and airport size and distance
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a town is limited by the noise acceptance of the town, which depends on population and airport size and distance
STR_CONFIG_SETTING_TOWN_FOUNDING :Founding towns in game: {STRING}
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Enabling this setting allows players to found new towns in the game
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Forbidden
@@ -1580,7 +1583,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetric" mea
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribution mode for the ARMOURED cargo class: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMOURED cargo class contains valuables in the temperate, diamonds in the subtropical or gold in subarctic climate. NewGRFs may change that. "symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary of that cargo can be sent in either direction. "manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic, as banks won't send any gold back to gold mines. For temperate and subtropical you can also choose symmetric as banks will send valuables back to the origin bank of some load of valuables.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribution mode for other cargo classes: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetric" means that roughly the same amount of cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargos. You probably want to set this to either "asymmetric" or manual.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargoes.
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribution accuracy: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect of distance on demands: {STRING}
@@ -1803,6 +1806,7 @@ STR_LIVERY_FREIGHT_TRAM :Freight Tram
STR_FACE_CAPTION :{WHITE}Face Selection
STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancel new face selection
STR_FACE_OK_TOOLTIP :{BLACK}Accept new face selection
STR_MAPGEN_RANDOM :{BLACK}Randomise
STR_FACE_MALE_BUTTON :{BLACK}Male
STR_FACE_MALE_TOOLTIP :{BLACK}Select male faces
@@ -1923,13 +1927,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect
STR_NETWORK_START_SERVER_UNADVERTISED :No
STR_NETWORK_START_SERVER_ADVERTISED :Yes
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max clients:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum number of clients:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choose the maximum number of clients. Not all slots need to be filled
STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compan{P y ies}
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max companies:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximum number of companies:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limit the server to a certain amount of companies
STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectator{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max spectators:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximum number of spectators:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limit the server to a certain amount of spectators
STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Language spoken:
STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Other players will know which language is spoken on the server
@@ -2547,6 +2551,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rail speed limit: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Road speed limit: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocks
@@ -2662,6 +2667,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Save
STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Save the current game, using the selected name
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Load
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Load the selected game
STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Load the selected heightmap
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Game Details
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No information available
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
@@ -2682,7 +2688,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height one down
STR_MAPGEN_RANDOM_SEED :{BLACK}Random seed:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Click to enter a random seed
STR_MAPGEN_RANDOM :{BLACK}Randomise
STR_MAPGEN_RANDOM_HELP :{BLACK}Change the random seed used for Terrain Generation
STR_MAPGEN_LAND_GENERATOR :{BLACK}Land generator:
STR_MAPGEN_TREE_PLACER :{BLACK}Tree algorithm:
@@ -2876,6 +2881,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Missing fi
STR_NEWGRF_BROKEN :{WHITE}Behaviour of NewGRF '{0:STRING}' is likely to cause desyncs and/or crashes
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}It changed powered-wagon state for '{1:ENGINE}' when not inside a depot
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}It changed vehicle length for '{1:ENGINE}' when not inside a depot
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}It changed vehicle capacity for '{1:ENGINE}' when not inside a depot or refitting
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Train '{VEHICLE}' belonging to '{COMPANY}' has invalid length. It is probably caused by problems with NewGRFs. Game may desync or crash
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' provides incorrect information
@@ -3140,7 +3146,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN
STR_FINANCES_TOTAL_CAPTION :{WHITE}Total:
STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bank Balance
STR_FINANCES_LOAN_TITLE :{WHITE}Loan
STR_FINANCES_MAX_LOAN :{WHITE}Max Loan: {BLACK}{CURRENCY_LONG}
STR_FINANCES_MAX_LOAN :{WHITE}Maximum Loan: {BLACK}{CURRENCY_LONG}
STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG}
STR_FINANCES_BORROW_BUTTON :{BLACK}Borrow {CURRENCY_LONG}
STR_FINANCES_BORROW_TOOLTIP :{BLACK}Increase size of loan. Ctrl+Click borrows as much as possible
@@ -3683,8 +3689,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Change t
STR_ORDER_REFIT :{BLACK}Refit
STR_ORDER_REFIT_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction
STR_ORDER_REFIT_AUTO :{BLACK}Auto-refit
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to auto-refit to in this order. Ctrl+Click to remove refit instruction. Auto-refitting will only be done if the vehicle allows it
STR_ORDER_REFIT_AUTO :{BLACK}Refit at station
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction. Refitting at stations will only be done if the vehicle allows it
STR_ORDER_DROP_REFIT_AUTO :Fixed cargo
STR_ORDER_DROP_REFIT_AUTO_ANY :Available cargo
@@ -3775,18 +3781,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(No unloading a
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(No unloading and wait for any full load)
STR_ORDER_NO_UNLOAD_NO_LOAD :(No unloading and no loading)
STR_ORDER_AUTO_REFIT :(Auto-refit to {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Full load with auto-refit to {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with auto-refit to {STRING})
STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with auto-refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with auto-refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with auto-refit to {STRING})
STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with auto-refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with auto-refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with auto-refit to {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with auto-refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with auto-refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with auto-refit to {STRING})
STR_ORDER_AUTO_REFIT :(Refit to {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Full load with refit to {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with refit to {STRING})
STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with refit to {STRING})
STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with refit to {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with refit to {STRING})
STR_ORDER_AUTO_REFIT_ANY :available cargo
@@ -3812,7 +3818,7 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Timetabl
STR_TIMETABLE_NO_TRAVEL :No travel
STR_TIMETABLE_NOT_TIMETABLEABLE :Travel (automatic; timetabled by next manual order)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Travel (not timetabled)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel with at most {2:VELOCITY} (not timetabled)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel (not timetabled) with at most {2:VELOCITY}
STR_TIMETABLE_TRAVEL_FOR :Travel for {STRING}
STR_TIMETABLE_TRAVEL_FOR_SPEED :Travel for {STRING} with at most {VELOCITY}
STR_TIMETABLE_STAY_FOR :and stay for {STRING}
+58 -52
View File
@@ -810,13 +810,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} is waiting in depot
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} is waiting in the aircraft hangar
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} has too few orders in the schedule
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} has a void order
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} has duplicate orders
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} has an invalid station in its orders
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} is getting old
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} is getting very old
@@ -1070,8 +1068,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Game setting (s
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Company setting (stored in saves; affects only new games)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Company setting (stored in save; affects only current company)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Show:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below showing only changed settings
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Category:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below using predefined filters
STR_CONFIG_SETTING_RESTRICT_BASIC :Basic settings
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Advanced settings
STR_CONFIG_SETTING_RESTRICT_ALL :Expert settings / all settings
@@ -1080,11 +1079,15 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Settings with a
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below to certain setting types
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All setting types
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affects all games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affects only new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affects only current game)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affects only new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affects only current company)
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affect all games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affect only new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affect only current game)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Company settings (stored in saves; affect only new games)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Company settings (stored in save; affect only current company)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Type {BLACK}to {WHITE}All setting types
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Show all search results by setting{}{SILVER}Category {BLACK}to {WHITE}{STRING} {BLACK}and {SILVER}Type {BLACK}to {WHITE}All setting types
STR_CONFIG_SETTINGS_NONE :{WHITE}- None -
STR_CONFIG_SETTING_OFF :Off
STR_CONFIG_SETTING_ON :On
@@ -1122,12 +1125,12 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Disallow train
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :If enabled, trains will not reverse in non-terminus stations, even if there is a shorter path to their next destination when reversing
STR_CONFIG_SETTING_DISASTERS :Disasters: {STRING}
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toggle disasters which may occasionally block or destroy vehicles or infrastructure
STR_CONFIG_SETTING_CITY_APPROVAL :City council's attitude towards area restructuring: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL :Town council's attitude towards area restructuring: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Choose how much noise and environmental damage by companies affect their town rating and further construction actions in their area
STR_CONFIG_SETTING_BUILDONSLOPES :Allow building on slopes and coasts: {STRING}
STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :If enabled, tracks and stations can be build on most slopes. If disabled, they are only allowed on slopes which match the direction of the track and thus require no foundations
STR_CONFIG_SETTING_AUTOSLOPE :Allow terraforming under buildings, tracks, etc. (autoslope): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE :Allow terraforming under buildings, tracks, etc.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Allow terraforming under buildings and tracks without removing them
STR_CONFIG_SETTING_CATCHMENT :Allow more realistically sized catchment areas: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Have differently sized catchment areas for different types of stations and airports
@@ -1242,7 +1245,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Vehicles never
STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :When enabled, all vehicle models remain available forever after their introduction
STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Autorenew vehicle when it gets old: {STRING}
STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :When enabled, a vehicle nearing its end of life gets automatically replaced when the renew conditions are fulfilled
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING} max age
STR_CONFIG_SETTING_AUTORENEW_MONTHS :Autorenew when vehicle is {STRING} maximum age
STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relative age when a vehicle should be considered for auto-renewing
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} month{P 0 "" s} before
STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} month{P 0 "" s} after
@@ -1263,7 +1266,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the li
STR_CONFIG_SETTING_LAND_GENERATOR :Land generator: {STRING}
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Max distance from edge for Oil Refineries: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil refineries: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oil refineries are only constructed near the map border, that is at the coast for island maps
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain (TerraGenesis only) : {STRING}
@@ -1284,7 +1287,7 @@ STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES_HELPTEXT :If disabled, th
STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}One or more tiles at the northern edge are not empty
STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}One or more tiles at one of the edges is not water
STR_CONFIG_SETTING_STATION_SPREAD :Max station spread: {STRING}
STR_CONFIG_SETTING_STATION_SPREAD :Maximum station spread: {STRING}
STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maximum area the parts of a single station may be spread out on. Note that high values will slow the game
STR_CONFIG_SETTING_SERVICEATHELIPAD :Perform maintenance on helicopters at helipads automatically: {STRING}
STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Service helicopters after every landing, even if there is no depot at the airport
@@ -1301,7 +1304,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Smooth viewport
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Control how the main view scrolls to a specific position when clicking on the smallmap or when issuing a command to scroll to a specific object on the map. If enabled, the viewport scrolls smoothly, if disabled it jumps directly to the targeted spot
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Show a measurement tooltip when using various build-tools: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Display tile-distances and height differences when dragging during construction operations
STR_CONFIG_SETTING_LIVERIES :Show company liveries: {STRING}
STR_CONFIG_SETTING_LIVERIES :Show vehicle-type specific liveries: {STRING}
STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Control usage of vehicle-type specific liveries for vehicles (in contrary to company specific)
STR_CONFIG_SETTING_LIVERIES_NONE :None
STR_CONFIG_SETTING_LIVERIES_OWN :Own company
@@ -1350,7 +1353,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :No actions
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :All non-construction actions
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :All but landscape modifying actions
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :All actions
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use the advanced vehicle list: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Use groups in vehicle list: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Enable usage of the advanced vehicle lists for grouping vehicles
STR_CONFIG_SETTING_LOADING_INDICATORS :Use loading indicators: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Select whether loading indicators are displayed above loading or unloading vehicles
@@ -1365,7 +1368,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Rail type to se
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :First available
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Last available
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Most used
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show reserved tracks: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Show path reservations for tracks: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Give reserved tracks a different color to assist in problems with trains refusing to enter path-based blocks
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building tools active after usage: {STRING}
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use
@@ -1391,13 +1394,13 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Play ambient so
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Disable infrastructure building when no suitable vehicles are available: {STRING}
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :When enabled, infrastructure is only available if there are also vehicles available, preventing waste of time and money on unusable infrastructure
STR_CONFIG_SETTING_MAX_TRAINS :Max trains per company: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS :Maximum number of trains per company: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximum number of trains that a company can have
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Max road vehicles per company: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum number of road vehicles per company: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximum number of road vehicles that a company can have
STR_CONFIG_SETTING_MAX_AIRCRAFT :Max aircraft per company: {STRING}
STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum number of aircraft per company: {STRING}
STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximum number of aircraft that a company can have
STR_CONFIG_SETTING_MAX_SHIPS :Max ships per company: {STRING}
STR_CONFIG_SETTING_MAX_SHIPS :Maximum number of ships per company: {STRING}
STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximum number of ships that a company can have
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Disable trains for computer: {STRING}
@@ -1446,7 +1449,7 @@ STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT :Display a newsp
STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :Accidents / disasters: {STRING}
STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT :Display a newspaper when accidents or disasters occur
STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Company information: {STRING}
STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Display a newspaper when a new company starts, or when companies are risking to bankrupt
STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Display a newspaper when a new company starts, or when companies are at risk of going bankrupt
STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Opening of industries: {STRING}
STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT :Display a newspaper when new industries open
STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Closing of industries: {STRING}
@@ -1515,7 +1518,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Allow towns to
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Towns are allowed to build grade crossings: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Enabling this setting allows towns to build grade crossings
STR_CONFIG_SETTING_NOISE_LEVEL :Allow town controlled noise level for airports: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a city is limited by the noise acceptance of the town, which depends on population and airport size and distance
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :With this setting disabled, there can be two airports in each town. With this setting enabled, the number of airports in a town is limited by the noise acceptance of the town, which depends on population and airport size and distance
STR_CONFIG_SETTING_TOWN_FOUNDING :Founding towns in game: {STRING}
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Enabling this setting allows players to found new towns in the game
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Forbidden
@@ -1580,7 +1583,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetric" mea
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Distribution mode for the ARMORED cargo class: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :The ARMORED cargo class contains valuables in the temperate, diamonds in the subtropical or gold in subarctic climate. NewGRFs may change that. "symmetric" means that roughly the same amount of that cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary of that cargo can be sent in either direction. "manual" means that no automatic distribution will take place for that cargo. It is recommended to set this to asymmetric or manual when playing subarctic, as banks won't send any gold back to gold mines. For temperate and subtropical you can also choose symmetric as banks will send valuables back to the origin bank of some load of valuables.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Distribution mode for other cargo classes: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetric" means that roughly the same amount of cargo will be sent from a station A to a station B as from B to A. "asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargos. You probably want to set this to either "asymmetric" or manual.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymmetric" means that arbitrary amounts of cargo can be sent in either direction. "manual" means that no automatic distribution will take place for those cargos.
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Distribution accuracy: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :The higher you set this the more CPU time the calculation of the link graph will take. If it takes too long you may notice lag. If you set it to a low value, however, the distribution will be inaccurate, and you may notice cargo not being sent to the places you expect it to go.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Effect of distance on demands: {STRING}
@@ -1803,6 +1806,7 @@ STR_LIVERY_FREIGHT_TRAM :Freight Streetc
STR_FACE_CAPTION :{WHITE}Face Selection
STR_FACE_CANCEL_TOOLTIP :{BLACK}Cancel new face selection
STR_FACE_OK_TOOLTIP :{BLACK}Accept new face selection
STR_MAPGEN_RANDOM :{BLACK}Randomize
STR_FACE_MALE_BUTTON :{BLACK}Male
STR_FACE_MALE_TOOLTIP :{BLACK}Select male faces
@@ -1869,7 +1873,7 @@ STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Name
STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Name of the game
STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA}
STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Clients
STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clients online / clients max
STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Clients online / clients max{}Companies online / companies max
STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA}
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Map size
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Map size of the game{}Click to sort by area
@@ -1923,13 +1927,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect
STR_NETWORK_START_SERVER_UNADVERTISED :No
STR_NETWORK_START_SERVER_ADVERTISED :Yes
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max clients:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum number of clients:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choose the maximum number of clients. Not all slots need to be filled
STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compan{P y ies}
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max companies:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximum number of companies:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limit the server to a certain number of companies
STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectator{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max spectators:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximum number of spectators:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limit the server to a certain number of spectators
STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Language spoken:
STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Other players will know which language is spoken on the server
@@ -2547,6 +2551,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rail speed limit: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Road speed limit: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocks
@@ -2662,6 +2667,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Save
STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Save the current game, using the selected name
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Load
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Load the selected game
STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Load the selected heightmap
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Game Details
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No information available
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
@@ -2682,7 +2688,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height down one
STR_MAPGEN_RANDOM_SEED :{BLACK}Random seed:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Click to enter a random seed
STR_MAPGEN_RANDOM :{BLACK}Randomize
STR_MAPGEN_RANDOM_HELP :{BLACK}Change the random seed used for Terrain Generation
STR_MAPGEN_LAND_GENERATOR :{BLACK}Land generator:
STR_MAPGEN_TREE_PLACER :{BLACK}Tree algorithm:
@@ -2876,6 +2881,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Missing fi
STR_NEWGRF_BROKEN :{WHITE}Behavior of NewGRF '{0:STRING}' is likely to cause desyncs and/or crashes
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}It changed powered-wagon state for '{1:ENGINE}' when not inside a depot
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}It changed vehicle length for '{1:ENGINE}' when not inside a depot
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}It changed vehicle capacity for '{1:ENGINE}' when not inside a depot or refitting
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Train '{VEHICLE}' belonging to '{COMPANY}' has invalid length. It is probably caused by problems with NewGRFs. Game may desync or crash
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' provides incorrect information
@@ -3086,7 +3092,7 @@ STR_STATION_VIEW_GROUP_D_S_V :Destination-Sou
STR_STATION_VIEW_GROUP_D_V_S :Destination-Via-Source
############ range for rating starts
STR_CARGO_RATING_APPALLING :Appalling
STR_CARGO_RATING_APPALLING :Atrocious
STR_CARGO_RATING_VERY_POOR :Very Poor
STR_CARGO_RATING_POOR :Poor
STR_CARGO_RATING_MEDIOCRE :Mediocre
@@ -3140,7 +3146,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN
STR_FINANCES_TOTAL_CAPTION :{WHITE}Total:
STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Bank Balance
STR_FINANCES_LOAN_TITLE :{WHITE}Loan
STR_FINANCES_MAX_LOAN :{WHITE}Max Loan: {BLACK}{CURRENCY_LONG}
STR_FINANCES_MAX_LOAN :{WHITE}Maximum Loan: {BLACK}{CURRENCY_LONG}
STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG}
STR_FINANCES_BORROW_BUTTON :{BLACK}Borrow {CURRENCY_LONG}
STR_FINANCES_BORROW_TOOLTIP :{BLACK}Increase size of loan. Ctrl+Click borrows as much as possible
@@ -3683,8 +3689,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Change t
STR_ORDER_REFIT :{BLACK}Refit
STR_ORDER_REFIT_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction
STR_ORDER_REFIT_AUTO :{BLACK}Auto-refit
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to auto-refit to in this order. Ctrl+Click to remove refit instruction. Auto-refitting will only be done if the vehicle allows it
STR_ORDER_REFIT_AUTO :{BLACK}Refit at station
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Select what cargo type to refit to in this order. Ctrl+Click to remove refit instruction. Refitting at stations will only be done if the vehicle allows it
STR_ORDER_DROP_REFIT_AUTO :Fixed cargo
STR_ORDER_DROP_REFIT_AUTO_ANY :Available cargo
@@ -3775,18 +3781,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(No unloading a
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(No unloading and wait for any full load)
STR_ORDER_NO_UNLOAD_NO_LOAD :(No unloading and no loading)
STR_ORDER_AUTO_REFIT :(Auto-refit to {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Full load with auto-refit to {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with auto-refit to {STRING})
STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with auto-refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with auto-refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with auto-refit to {STRING})
STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with auto-refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with auto-refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with auto-refit to {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with auto-refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with auto-refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with auto-refit to {STRING})
STR_ORDER_AUTO_REFIT :(Refit to {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Full load with refit to {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Full load any cargo with refit to {STRING})
STR_ORDER_UNLOAD_REFIT :(Unload and take cargo with refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Unload and wait for full load with refit to {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Unload and wait for any full load with refit to {STRING})
STR_ORDER_TRANSFER_REFIT :(Transfer and take cargo with refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transfer and wait for full load with refit to {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transfer and wait for any full load with refit to {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(No unloading and take cargo with refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(No unloading and wait for full load with refit to {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(No unloading and wait for any full load with refit to {STRING})
STR_ORDER_AUTO_REFIT_ANY :available cargo
@@ -3812,7 +3818,7 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Timetabl
STR_TIMETABLE_NO_TRAVEL :No travel
STR_TIMETABLE_NOT_TIMETABLEABLE :Travel (automatic; timetabled by next manual order)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Travel (not timetabled)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel with at most {2:VELOCITY} (not timetabled)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Travel (not timetabled) with at most {2:VELOCITY}
STR_TIMETABLE_TRAVEL_FOR :Travel for {STRING}
STR_TIMETABLE_TRAVEL_FOR_SPEED :Travel for {STRING} with at most {VELOCITY}
STR_TIMETABLE_STAY_FOR :and stay for {STRING}
@@ -4083,7 +4089,7 @@ STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... too
STR_ERROR_TOO_MANY_TOWNS :{WHITE}... too many towns
STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}... there is no more space on the map
STR_ERROR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}The town will not build roads. You can enable building of roads via Advanced Settings->Economy->Towns
STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Road works in progress
STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Road work in progress
STR_ERROR_TOWN_CAN_T_DELETE :{WHITE}Can't delete this town...{}A station or depot is referring to the town or a town owned tile can't be removed
STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... there is no suitable place for a statue in the center of this town
@@ -4486,7 +4492,7 @@ STR_SV_STNAME_DOCKS :{STRING} Docks
STR_SV_STNAME_BUOY :{STRING}
STR_SV_STNAME_WAYPOINT :{STRING}
##id 0x6020
STR_SV_STNAME_ANNEXE :{STRING} Annexe
STR_SV_STNAME_ANNEXE :{STRING} Annex
STR_SV_STNAME_SIDINGS :{STRING} Sidings
STR_SV_STNAME_BRANCH :{STRING} Branch
STR_SV_STNAME_UPPER :Upper {STRING}
@@ -4527,7 +4533,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Elect
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Electric)
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Passenger Car
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Mail Car
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Coal Car
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Coal Hopper
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Oil Tanker
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Livestock Boxcar
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_GOODS_VAN :Goods Car
@@ -4557,7 +4563,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1'
STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Passenger Car
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Mail Car
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Coal Car
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Coal Hopper
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Oil Tanker
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Livestock Boxcar
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_GOODS_VAN :Goods Car
@@ -4589,7 +4595,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera'
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Passenger Car
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Mail Car
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Coal Car
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Coal Hopper
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Oil Tanker
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Livestock Boxcar
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_GOODS_VAN :Goods Car
+2 -5
View File
@@ -784,13 +784,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} atendas en depoto
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} atendas en la hangaro.
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} ne havas sufiĉajn ordonojn en la itinero
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} havas malplenan ordonon
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} havas duoblajn ordonojn
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Ordonoj de {VEHICLE} enhavas nevalidan stacion
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} malnoviĝis
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} tre malnoviĝis
@@ -1029,7 +1027,6 @@ STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(neniu ekspliko
STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Defaŭlta valoro: {ORANGE}{STRING}
STR_CONFIG_SETTING_TYPE :{LTBLUE}Tipo de agordo: {ORANGE}{STRING}
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Montru:
STR_CONFIG_SETTING_RESTRICT_BASIC :Bazniveloj agordoj
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Altnivelaj agordoj
STR_CONFIG_SETTING_RESTRICT_ALL :Altnivelaj agordoj / ĉiu agordoj
@@ -1465,6 +1462,7 @@ STR_LIVERY_FREIGHT_TRAM :Frajttramo
STR_FACE_CAPTION :{WHITE}Elekto de Vizaĝo
STR_FACE_CANCEL_TOOLTIP :{BLACK}Nuligu elekton de nova vizaĝo
STR_FACE_OK_TOOLTIP :{BLACK}Akceptu elekton de nova vizaĝo
STR_MAPGEN_RANDOM :{BLACK}Hazardigu
STR_FACE_MALE_BUTTON :{BLACK}Vira
STR_FACE_MALE_TOOLTIP :{BLACK}Elektu virajn vizaĝojn
@@ -2267,7 +2265,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Altigu l
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Malaltigu la neĝlinion per unu
STR_MAPGEN_RANDOM_SEED :{BLACK}Hazarda Enigo:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klaku por enigi hazardan enigon
STR_MAPGEN_RANDOM :{BLACK}Hazardigu
STR_MAPGEN_RANDOM_HELP :{BLACK}Ŝanĝu la hazardan enigon uzatan de la terengenerilo
STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerilo:
STR_MAPGEN_TREE_PLACER :{BLACK}Arba algoritmo:
+13 -8
View File
@@ -867,13 +867,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} ootab depoos
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} ootab lennukiangaaris
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} sõiduplaanis on liiga vähe ülesandeid
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Sõidukil {VEHICLE} on tühistatud ülesanne
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Sõidukil {VEHICLE} on topeltülesandeid
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Sõiduki «{VEHICLE}» ülesannetes on kõlbmatu jaam
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} on vanaks saamas
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} on väga vanaks saamas
@@ -1127,8 +1125,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Mängu seaded (
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Ettevõtte seaded (hoitakse salvestuses; mõjutab ainult uusi mänge)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Ettevõtte seaded (hoitakse salvestuses; mõjutab ainult praegust ettevõtet)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Näidatud:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Piirab alljärgnevat nimekirja muudetud seadete kuvamiseks
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Rühm:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Liik:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Piirab varem tehtud filtridega alljärgnevat loendit
STR_CONFIG_SETTING_RESTRICT_BASIC :Põhilised seaded
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Täpsemad seaded
STR_CONFIG_SETTING_RESTRICT_ALL :Eksperdi seaded / kõik seaded
@@ -1142,6 +1141,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Mängu seaded (
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Mängu seaded (hoitakse salvestuses; mõjutab ainult praegust mängu)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Firma seaded (hoitakse salvestuses; mõjutab ainult uusi mänge)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Firma seaded (hoitakse salvestuses; mõjutab ainult praegust firmat)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Kõiki otsingu tulemusi näeb, kui{}{SILVER}rühm {BLACK}on {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Kõiki otsingu tulemusi näeb, kui{}{SILVER}liik {BLACK}on {WHITE}Kõik seadistuste liigid
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Kõiki otsingu tulemusi näeb, kui{}{SILVER}rühm {BLACK}on {WHITE}{STRING} {BLACK}ja {SILVER}liik {BLACK}on {WHITE}Kõik seadistuste liigid
STR_CONFIG_SETTINGS_NONE :{WHITE}- Puudub -
STR_CONFIG_SETTING_OFF :Väljas
STR_CONFIG_SETTING_ON :Sees
@@ -1572,7 +1575,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Luba linnadel e
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Linnadel on lubatud ehitada ülesõidukohti: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Selle seade sisse lülitamine lubab linnadel ehitada ülesõidukohti
STR_CONFIG_SETTING_NOISE_LEVEL :Lennujaamade mürapiirangud linnades: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kui ei ole aktiveeritud, siis on igas linnas lubatud kuni kaks lennujaama. Kui see seade on aktiveeritud, siis on lubatud igas linnas lennujaamu ehitada vastavalt linna müra vastuvõrlikkuse tasemele, mis sõltub otseselt linna elanike arvust ja lennujaama suurusest ja kaugusest kesklinnast
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kui seade ei ole sisse lülitatud, siis igasse linna on lubatud ehitada kuni kaks lennuvälja. Kui see seade on lubatud, siis lennuväljade arvu ülempiiri määrab linna müratundlikkus, mis sõltub rahvaarvust ja lennuvälja suurusest ja kaugusest
STR_CONFIG_SETTING_TOWN_FOUNDING :Linnade rajamine keset mängu: {STRING}
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Võimaldab ettevõttel uusi linnu rajada
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Keelatud
@@ -1860,6 +1863,7 @@ STR_LIVERY_FREIGHT_TRAM :Kaubatramm
STR_FACE_CAPTION :{WHITE}Näo valik
STR_FACE_CANCEL_TOOLTIP :{BLACK}Tühista uue näo valimine
STR_FACE_OK_TOOLTIP :{BLACK}Uue näo valimine
STR_MAPGEN_RANDOM :{BLACK}Suvaline
STR_FACE_MALE_BUTTON :{BLACK}Mees
STR_FACE_MALE_TOOLTIP :{BLACK}Vali mehe nägu
@@ -2397,7 +2401,7 @@ STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Rippsild, betoo
STR_BRIDGE_NAME_WOODEN :Puidust
STR_BRIDGE_NAME_CONCRETE :Betoonist
STR_BRIDGE_NAME_TUBULAR_STEEL :Torujas, terasest
STR_BRIDGE_TUBULAR_SILICON :Torujas, silikoonist
STR_BRIDGE_TUBULAR_SILICON :Torujas, Räni
# Road construction toolbar
@@ -2604,6 +2608,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Vastuvõetavad veosed: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Raudtee kiiruspiirang: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Lubatud piirkiirus: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kaljud
@@ -2739,7 +2744,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Lumepiir
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Lumepiiri liigutamine ühe võrra alla
STR_MAPGEN_RANDOM_SEED :{BLACK}Juhuarv:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klõpsa juhuarvu sisestamiseks
STR_MAPGEN_RANDOM :{BLACK}Suvaline
STR_MAPGEN_RANDOM_HELP :{BLACK}Muuda maastiku tekitamisel kasutatavat juhuarvu
STR_MAPGEN_LAND_GENERATOR :{BLACK}Maatekituse meetod:
STR_MAPGEN_TREE_PLACER :{BLACK}Puude algoritm:
@@ -2933,6 +2937,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Puuduvad f
STR_NEWGRF_BROKEN :{WHITE}NewGRF '{STRING}' käitumine põhjustab tõenäoliselt sünkrooni katkemisi ja/või mängu kokkujooksmiseid.
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}See muutis sõiduki '{1:ENGINE}' vedavate vagunite olekut väljaspool depood
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Depoost väljas asudes on sõiduki '{1:ENGINE}' pikkus muudetud.
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Sõiduki '{1:ENGINE}' kandevõimet muudeti, kuid sõiduk ei olnud depoos ega ümberseadistamisel
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Ettevõtte «{1:COMPANY}» rongil «{0:VEHICLE}» pikkus on kõlbmatu. Midagi on valesti NewGRF-iga. Mäng võib kokku joosta või sünkroonist välja minna
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' sisaldab väära teavet.
+2 -5
View File
@@ -791,13 +791,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} bíðar í goymsluni
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} bíðar í hangarinum
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} hevur ov fá boð í skránni
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} hevur eini ógyldig boð
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} hevur boð ið eru eins
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} hevur eina óviðkomandi støð í sinum boðum
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} er vi at eldast
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} er við at eldast serstakliga nógv
@@ -1051,7 +1049,6 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Goymslu instill
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Fyritøku instilling (goymt í goymslufílum; ávirkar einans nýggj spøl)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Fyritøku instilling (goymt í goymslufílum; ávirkar einans núverðandi fyritøku)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Vís:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Avmarkar listan niðanfyr so hann einans vísur broyttar instillingar
STR_CONFIG_SETTING_RESTRICT_BASIC :Grund innstillingar
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Víðkaðir innstillingar
@@ -1683,6 +1680,7 @@ STR_LIVERY_FREIGHT_TRAM :{G=m}Góðs spo
STR_FACE_CAPTION :{WHITE}Andlits úrval
STR_FACE_CANCEL_TOOLTIP :{BLACK}Angra nýtt andlits val
STR_FACE_OK_TOOLTIP :{BLACK}Góðtak nýtt andlits val
STR_MAPGEN_RANDOM :{BLACK}Blanda
STR_FACE_MALE_BUTTON :{BLACK}Kallkyn
STR_FACE_MALE_TOOLTIP :{BLACK}Vel kallkyns andlit
@@ -2482,7 +2480,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Flyt kav
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Flyt kava linjuna eitt niður
STR_MAPGEN_RANDOM_SEED :{BLACK}Tilvildarligt sáð:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Trýst fyri at skriva tilvildarligt sáð
STR_MAPGEN_RANDOM :{BLACK}Blanda
STR_MAPGEN_RANDOM_HELP :{BLACK}Broyt tilvildarliga sáði ið verur nýtt til landslags framleiðslu
STR_MAPGEN_LAND_GENERATOR :{BLACK}Lendis framleiðari:
STR_MAPGEN_TREE_PLACER :{BLACK}Træ algoritma:
+32 -26
View File
@@ -810,13 +810,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} odottaa varikolla
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} odottaa lentokonehallissa
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Kulkuneuvolla {VEHICLE} on liian vähän käskyjä
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}Kulkuneuvolla {VEHICLE} on virheellinen käsky
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Ajoneuvolla {VEHICLE} on toistuvia käskyjä
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Kulkuneuvon {VEHICLE} käskyissä on virheellinen asema
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} on tulossa vanhaksi
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} on tulossa hyvin vanhaksi
@@ -1070,8 +1068,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Pelin asetus (t
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Yhtiön asetus (tallennetaan tallenteisiin; vaikuttaa vain uusiin peleihin)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Yhtiön asetus (tallennetaan tallenteeseen; vaikuttaa vain nykyiseen yhtiöön)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Näytä:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Rajaa alla olevaa listaa ja näyttää vain muutetut asetukset
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategoria:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tyyppi:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Rajaa alla olevaa listaa ennalta määritellyillä suodattimilla
STR_CONFIG_SETTING_RESTRICT_BASIC :Perusasetukset
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Lisäasetukset
STR_CONFIG_SETTING_RESTRICT_ALL :Kehittyneet asetukset / kaikki asetukset
@@ -1085,6 +1084,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Pelin asetukset
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Pelin asetukset (tallennetaan pelitallenteeseen; vaikuttavat vain nykyiseen peliin)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Yhtiön asetukset (tallennetaan pelitallenteisiin; vaikuttavat vain uusiin peleihin)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Yhtiön asetukset (tallennetaan pelitallenteeseen; vaikuttavat ainoastaan nykyiseen yhtiöön)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Näytä kaikki tulokset muuttamalla{}{SILVER}Kategoriaksi {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Näytä kaikki hakutulokset muuttamalla{}{SILVER}Tyypiksi {WHITE}Kaikki asetustyypit
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Näytä kaikki tulokset muuttamalla{}{SILVER}Kategoriaksi {WHITE}{STRING} {BLACK}ja {SILVER}Tyypiksi {WHITE}Kaikki asetustyypit
STR_CONFIG_SETTINGS_NONE :{WHITE}- Ei mitään -
STR_CONFIG_SETTING_OFF :pois
STR_CONFIG_SETTING_ON :päällä
@@ -1127,7 +1130,7 @@ STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Valitse, kuinka
STR_CONFIG_SETTING_BUILDONSLOPES :Rakentaminen rinteisiin ja rannikolle sallittu: {STRING}
STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Mikäli käytössä, ratoja ja asemia voidaan rakentaa useimmille rinteille. Mikäli pois käytöstä, niitä voidaan rakentaa vain radalle sopivaan maastoon joka ei vaadi perustuksia
STR_CONFIG_SETTING_AUTOSLOPE :Salli maaston muokkaaminen rakennusten, raiteiden jne. juurella (autoslope): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE :Salli maaston muokkaaminen rakennusten, raiteiden jne. juurella: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Sallii maaston muokkaamisen rakennusten ja ratojen alta tuhoamatta niitä
STR_CONFIG_SETTING_CATCHMENT :Realistisemman kokoiset vaikutusalueet: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Erityyppisillä asemilla ja lentokentillä on eri kokoiset vaikutusalueet
@@ -1301,7 +1304,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Näkymän tasai
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Hallitse miten päänäkymä siirtyy valittuun paikkaan karttaa klikattaessa tai käytettäessä komentoa joka muuttaa näkymän sijaintia. Mikäli käytössä, päänäkymä siirtyy uuteen sijaintiin pehmeäesti, muutoin se hyppää suoraan valittuun sijaintiin
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Näytä mittauksen työkaluvihje, kun käytetään rakennustyökaluja: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Näytä etäisyydet ja korkeuserot vedettäessä rakennustoimintojen aikana
STR_CONFIG_SETTING_LIVERIES :Näytä yhtiön tunnukset: {STRING}
STR_CONFIG_SETTING_LIVERIES :Näytä kulkuneuvotyypille ominaiset tunnukset: {STRING}
STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Hallitse kulkuneuvokohtaisten tunnusten käyttöä (yhtiökohtaisten tunnusten sijaan)
STR_CONFIG_SETTING_LIVERIES_NONE :Ei yhtään
STR_CONFIG_SETTING_LIVERIES_OWN :Oma yhtiö
@@ -1350,7 +1353,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Ei mitkään to
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Kaikki ei-rakennustoiminnot
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Kaikki paitsi maastonmuokkaustoiminnot
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Kaikki toiminnot
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Edistynyt ajoneuvolista: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Käytä ryhmiä kulkuneuvolistassa: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Salli kehittyneiden kulkuneuvolistojen käyttö kulkuneuvojen ryhmittelyssä
STR_CONFIG_SETTING_LOADING_INDICATORS :Lastausilmaisimet: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Määritä näytetäänkö lastausilmaisimet kulkuneuvojen yläpuolella lastatessa ja purettaessa rahtia
@@ -1365,7 +1368,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Ratatyyppi, jok
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Ensimmäinen
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Viimeinen
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Yleisin
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Näytä varatut raiteet: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Näytä reittivaraukset raiteilla: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Värjää varatut rataosuudet eri värillä. Tämä auttaa opastimien ja risteysten vianetsinnässä
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Pidä rakennustyökalut aktiivisina käytön jälkeen: {STRING}
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Pidä siltojen, tunneleiden, jne. rakennustyökalut käytössä käytön jälkeen
@@ -1580,7 +1583,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symmetrinen" t
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Arvokuljetusten jakautuminen: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Arvokuljetuksiin kuuluvat arvotavarat lauhkeassa ilmastossa, timantit subtrooppisessa ilmastossa ja kulta pohjoisessa ilmastossa. NewGRF:t voivat kuitenkin muuttaa näitä rahteja. "symmetrinen" tarkoittaa, että suunnilleen sama määrä rahtia lähetetään asemalta A asemalle B kuin asemalta B asemalle A. "epäsymmetrinen" tarkoittaa, että eri suuntiin voidaan lähettää eriävä määrä rahtia. "manuaalinen" tarkoittaa, että automaattinen rahdin jakautuminen on poistettu käytöstä rahdilta. Suositeltavia asetuksia ovat "epäsymmetrinen" tai "manuaalinen" pelattaessa pohjoisessa ilmastossa, sillä pankit eivät lähetä kultaa takaisin kaivoksille. Lauhkeassa ja subtrooppisessa ilmastossa pelatessa voidaan myös valita "symmetrinen", sillä pankit lähettävät arvotavaroita takaisin alkuperäiselle pankille.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Muiden rahtityyppien jakautuminen: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symmetrinen" tarkoittaa, että suunnilleen sama määrä rahtia lähetetään asemalta A asemalle B kuin asemalta B asemalle A. "epäsymmetrinen" tarkoittaa, että eri suuntiin voidaan lähettää eriäviä määriä rahtia. "manuaalinen" tarkoittaa, että automaattinen jakautuminen ei ole käytössä rahdille. Suositeltavia asetuksia ovat "epäsymmetrinen" ja "manuaalinen".
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"epäsymmetrinen" tarkoittaa, että eri suuntiin voidaan lähettää eriäviä määriä rahtia. "manuaalinen" tarkoittaa, että automaattinen jakautuminen ei ole käytössä rahdille.
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Jakautumisen tarkkuus: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Mitä suuremmaksi tämä asetus on määritetty, sitä enemmän prosessoriaikaa yhteyskuvaajan laskemiseen kuluu. Mikäli tähän kuluu liian paljon aikaa, saatat havaita pelin nykimistä. Jos arvo on määritetty liian pieneksi, jakauman laskeminen ei ole tarkka ja rahtia ei välttämättä lähetetä odotetuille asemille.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Välimatkan vaikutus kysyntään: {STRING}
@@ -1803,6 +1806,7 @@ STR_LIVERY_FREIGHT_TRAM :Raitiotavaravau
STR_FACE_CAPTION :{WHITE}Kasvojen valinta
STR_FACE_CANCEL_TOOLTIP :{BLACK}Peruuta uusien kasvojen valinta.
STR_FACE_OK_TOOLTIP :{BLACK}Hyväksy uusien kasvojen valinta.
STR_MAPGEN_RANDOM :{BLACK}Satunnainen
STR_FACE_MALE_BUTTON :{BLACK}Mies
STR_FACE_MALE_TOOLTIP :{BLACK}Valitse miehen kasvot.
@@ -2546,7 +2550,8 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Lentoken
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Vastaanottaa rahtia: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Nopeusrajoitus: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Radan nopeusrajoitus: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Tien nopeusrajoitus: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kalliota
@@ -2662,6 +2667,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Tallenna
STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Tallenna nykyinen peli käyttäen valittua nimeä.
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Lataa
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Lataa valittu peli
STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Lataa valittu korkeuskartta
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Tietoja pelistä
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Tietoja ei ole saatavilla
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
@@ -2682,7 +2688,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Siirrä
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Siirrä lumirajaa yksi taso alaspäin
STR_MAPGEN_RANDOM_SEED :{BLACK}Satunnaislukusiemen:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klikkaa antaaksesi satunnaislukusiemenen
STR_MAPGEN_RANDOM :{BLACK}Satunnainen
STR_MAPGEN_RANDOM_HELP :{BLACK}Vaihda maaston luomisessa käytettävä satunnaislukusiemen
STR_MAPGEN_LAND_GENERATOR :{BLACK}Maastogeneraattori:
STR_MAPGEN_TREE_PLACER :{BLACK}Puiden algoritmi:
@@ -2876,6 +2881,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Puuttuvia
STR_NEWGRF_BROKEN :{WHITE}NewGRF:n '{0:STRING}' käytös aiheuttaa todennäköisesti nykimistä ja/tai kaatumisia.
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Se muutti vetävän vaunun '{1:ENGINE}' tilaa tallin ulkopuolella
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Se muutti kulkuneuvon '{1:ENGINE}' pituutta varikon ulkopuolella
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Se muutti kulkuneuvon '{1:ENGINE}' kapasiteettia, vaikka kulkuneuvo ei ollut varikolla tai uudelleensovitettavana
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Yhtiölle '{1:COMPANY}' kuuluvan junan '{0:VEHICLE}' pituus on virheellinen. Tämä johtuu luultavasti NewGRF:ien ongelmista. Peli saattaa nykiä tai kaatua
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' antaa väärää tietoa
@@ -3683,8 +3689,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Muuta ko
STR_ORDER_REFIT :{BLACK}Sovita
STR_ORDER_REFIT_TOOLTIP :{BLACK}Valitse mihin rahtityyppiin tämä käsky sovittaa. Ctrl+Klik poistaa sovituskäskyn
STR_ORDER_REFIT_AUTO :{BLACK}Automaattinen sovitus
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Valitse tällä määräyksellä automaattisesti sovitettava rahtityyppi. Ctrl+Klik poistaaksesi sovitusmääräyksen. Automaattinen sovitus suoritetaan vain, jos kulkuneuvo sallii sen.
STR_ORDER_REFIT_AUTO :{BLACK}Uudelleensovitus asemalla
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Valitse tällä määräyksellä sovitettava rahtityyppi. Ctrl+Klik poistaaksesi sovitusmääräyksen. Sovitus suoritetaan vain, jos kulkuneuvo sallii sen.
STR_ORDER_DROP_REFIT_AUTO :Määrätty rahti
STR_ORDER_DROP_REFIT_AUTO_ANY :Saatavilla oleva rahti
@@ -3775,18 +3781,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ei lastin purk
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ei lastin purkua, mutta odota minkä tahansa lastin täyttymistä)
STR_ORDER_NO_UNLOAD_NO_LOAD :(Ei purkua eikä lastausta)
STR_ORDER_AUTO_REFIT :(Sovita automaattisesti rahdille {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Täysi lasti ja automaattinen sovitus rahdille {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Täysi lasti mitä tahansa rahtia sekä sovita automaattisesti rahdille {STRING})
STR_ORDER_UNLOAD_REFIT :(Pura ja ota rahti sekä automaattinen sovitus rahdille {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Pura ja odota täyttä lastia sekä sovita automaattisesti rahdille {STRING})
STR_ORDER_AUTO_REFIT :(Sovita rahdille {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Täysi lasti ja sovitus rahdille {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Täysi lasti mitä tahansa rahtia sekä sovita rahdille {STRING})
STR_ORDER_UNLOAD_REFIT :(Pura ja ota rahti sekä sovita rahdille {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Pura ja odota täyttä lastia sekä sovita rahdille {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Pura ja odota mitä tahansa täyttä lastia sekä sovita rahdille {STRING})
STR_ORDER_TRANSFER_REFIT :(Siirrä ja ota rahti sekä sovita automaattisesti rahdille {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Siirrä ja odota täyttä lastia sekä sovita automaattisesti rahdille {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Siirrä ja odota mitä tahansa täyttä lastia sekä sovita automaattisesti rahdille {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(Ei purkua ja ota rahti sekä sovita automaattisesti rahdille {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ei purkua ja odota täyttä lastia sekä sovita automaattisesti rahdille {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ei purkua ja odota mitä tahansa täyttä lastia sekä sovita automaattisesti rahdille {STRING})
STR_ORDER_TRANSFER_REFIT :(Siirrä ja ota rahti sekä sovita rahdille {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Siirrä ja odota täyttä lastia sekä sovita rahdille {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Siirrä ja odota mitä tahansa täyttä lastia sekä sovita rahdille {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(Ei purkua ja ota rahti sekä sovita rahdille {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ei purkua ja odota täyttä lastia sekä sovita rahdille {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ei purkua ja odota mitä tahansa täyttä lastia sekä sovita rahdille {STRING})
STR_ORDER_AUTO_REFIT_ANY :saatavilla oleva rahti
@@ -3812,7 +3818,7 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Aikataul
STR_TIMETABLE_NO_TRAVEL :Ei kulkua
STR_TIMETABLE_NOT_TIMETABLEABLE :Kulje (automaattinen; aikataulu seuraavan manuaalisen käskyn mukaisesti)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Kiertävä (ei aikataulua)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Kulje enimmillään {2:VELOCITY} (ei aikataulutettu)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Kulje (ilman aikataulua) enimmillään {2:VELOCITY}
STR_TIMETABLE_TRAVEL_FOR :Kulje kohteeseen {STRING}
STR_TIMETABLE_TRAVEL_FOR_SPEED :Kulje kohteeseen {STRING} enintään {VELOCITY}
STR_TIMETABLE_STAY_FOR :ja odota {STRING}
+37 -31
View File
@@ -811,13 +811,11 @@ STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} est en attente au dépôt
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} est en attente au hangar
# Start of order review system
# DON'T ADD OR REMOVE LINES HERE
# Order review system / warnings
STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE} a trop peu d'ordres dans son itinéraire
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} a un ordre vide
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} a des ordres en double
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} a une station invalide dans ses ordres
# end of order system
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} devient vieux
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} devient très vieux
@@ -1071,8 +1069,9 @@ STR_CONFIG_SETTING_TYPE_GAME_INGAME :Paramètre de j
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Paramètre de compagnie (enregistré dans les sauvegardes{NBSP}; affecte uniquement les nouvelles parties)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Paramètre de compagnie (enregistré dans la sauvegarde{NBSP}; affecte uniquement la compagnie actuelle)
STR_CONFIG_SETTING_RESTRICT_LABEL :{BLACK}Afficher{NBSP}:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restreint la liste ci-dessous en ne montrant que les paramètres modifiés
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Catégorie{NBSP}:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Type{NBSP}:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Restreint la liste ci-dessous en utilisant des filtres prédéfinis
STR_CONFIG_SETTING_RESTRICT_BASIC :Options de base
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Options avancées
STR_CONFIG_SETTING_RESTRICT_ALL :Paramètres expert / Tous les paramètres
@@ -1086,6 +1085,10 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Paramètres de
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Paramètres de jeu (enregistrés dans les sauvegardes{NBSP}; affectent uniquement la partie actuelle)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Paramètres de compagnie (enregistrés dans les sauvegardes{NBSP}; affectent uniquement les nouvelles parties)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Paramètres de compagnie (enregistrés dans les sauvegardes{NBSP}; affectent uniquement la compagnie actuelle)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Afficher tous les résultats de la recherche en définissant{}la {SILVER}catégorie {BLACK}sur {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Afficher tous les résultats de la recherche en définissant{}le {SILVER}type {BLACK}sur {WHITE}tous les types
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Afficher tous les résultats de la recherche en définissant{}la{SILVER}catégorie {BLACK}sur {WHITE}{STRING} {BLACK}et le{SILVER} type {BLACK}sur {WHITE}tous les types
STR_CONFIG_SETTINGS_NONE :{WHITE}- Aucun -
STR_CONFIG_SETTING_OFF :Désactivé
STR_CONFIG_SETTING_ON :Activé
@@ -1128,7 +1131,7 @@ STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Définit commen
STR_CONFIG_SETTING_BUILDONSLOPES :Construction côtière et sur pentes{NBSP}: {STRING}
STR_CONFIG_SETTING_BUILDONSLOPES_HELPTEXT :Si activé, les voies et les stations peuvent être construites sur la plupart des pentes. Si désactivé, elles sont autorisées uniquement sur les pentes correspondant à la direction de la voie et ne requérant pas de fondations.
STR_CONFIG_SETTING_AUTOSLOPE :Terrassement sous les bâtiments, voies, etc. (Autoslope){NBSP}: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE :Terrassement sous les bâtiments, voies, etc.{NBSP}: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Autoriser le terrassement sous les bâtiments et les voies sans les retirer
STR_CONFIG_SETTING_CATCHMENT :Autoriser des zones de desserte plus réalistes{NBSP}: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Les zones de desserte ont des tailles différentes selon les types de stations et d'aéroports
@@ -1302,7 +1305,7 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Défilement ré
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Contrôle comment la vue principale défile jusqu'à une position spécifique lors d'un clic sur la mini-carte ou pour atteindre un objet précis sur la carte. Si activé, la vue défile doucement, si désactivé elle saute directement à la cible
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Montrer une infobulle de mesure lors de l'utilisation de divers outils de construction{NBSP}: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Affiche les distances et les différences de hauteur lors des opérations de construction
STR_CONFIG_SETTING_LIVERIES :Affichage des livrées des compagnies{NBSP}: {STRING}
STR_CONFIG_SETTING_LIVERIES :Affichage des livrées spécifiques aux types de véhicules{NBSP}: {STRING}
STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Contrôle l'utilisation des livrées spécifiques au type de véhicule (ou, au contraire, celles spécifiques à la compagnie)
STR_CONFIG_SETTING_LIVERIES_NONE :Aucune
STR_CONFIG_SETTING_LIVERIES_OWN :Propre compagnie
@@ -1351,7 +1354,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Aucune
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Toutes hors construction
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Toutes sauf celles modifiant le terrain
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Toutes
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Utiliser la liste de véhicules avancée{NBSP}: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Utiliser les groupes dans la liste de véhicules{NBSP}: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Active l'utilisation des listes de véhicule avancées pour grouper les véhicules
STR_CONFIG_SETTING_LOADING_INDICATORS :Utiliser les indicateurs de chargement{NBSP}: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Choisir si les indicateurs de chargement doivent être affichés au dessus des véhicules qui chargent ou déchargent
@@ -1366,7 +1369,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Type de rail à
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Premier disponible
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Dernier disponible
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Le plus utilisé
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Afficher les voies réservées{NBSP}: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Afficher les réservations de chemin sur les voies{NBSP}: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Donne une couleur différente aux voies réservées pour aider à résoudre les problèmes de trains refusant d'entrer dans des blocs basés sur le chemin
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Conserver les outils de construction actifs après usage{NBSP}: {STRING}
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Garde les outils de construction de ponts, tunnels, etc. ouverts après usage
@@ -1516,7 +1519,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Autoriser les v
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Autoriser la construction des passages à niveau par les villes{NBSP}: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Activer ce paramètre pour autoriser les villes à construire des passages à niveau
STR_CONFIG_SETTING_NOISE_LEVEL :Permettre plus d'aéroports par ville, selon les nuisances sonores{NBSP}: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Avec ce paramètre désactivé, il peut y avoir deux aéroports dans chaque ville. Avec ce paramètre désactivé, le nombre d'aéroports dans une ville est limité par le bruit qu'elle accepte, celui-ci dépend de la population, de la taille de l'aéroport et de la distance
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Avec ce paramètre désactivé, il peut y avoir deux aéroports dans chaque ville. Avec ce paramètre activé, le nombre d'aéroports dans une ville est limité par le bruit qu'elle accepte, celui-ci dépend de la population, de la taille de l'aéroport et de la distance
STR_CONFIG_SETTING_TOWN_FOUNDING :Fonder des villes en cours de jeu{NBSP}: {STRING}
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Activer ce paramètre permet aux joueurs de fonder de nouvelles villes dans la partie
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Interdit
@@ -1581,7 +1584,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symétrique" s
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Type de distribution pour les cargaisons de classe ARMOURED{NBSP}: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :La classe de cargaison ARMOURED contient des biens de valeur dans les climats tempéré, des diamants dans le climat subtropical, et de l'or dans le climat subarctique. Les NewGRFs peuvent changer ça. "symétrique" signifie qu'autant de ces cargaisons iront d'une station A vers une station B, que de la station B vers la station A. "asymétrique" signifie qu'une quantité arbitraire de ces cargaisons peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour ces cargaisons. Il est conseillé de choisir "asymétrique" ou "manuel" dans le climat subarctique, car les banques n'enverront pas d'or en retour vers les mines d'or. Dans les climats tempéré et subtropical, on peut choisir aussi "symétrique", car les banques peuvent renvoyer en retour des biens de valeurs aux banques qui en envoient à l'origine.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Type de distribution pour les autres classes de cargaison{NBSP}: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"symétrique" signifie qu'autant de cargaison ira d'une station A vers une station B, que de la station B vers la station A. "asymétrique" signifie qu'une quantité arbitraire de cargaison peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour la cargaison. Le mieux ici est logiquement de choisir "asymétrique" ou "manuel".
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymétrique" signifie qu'une quantité arbitraire de cargaison peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour la cargaison.
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Précision de la distribution{NBSP}: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Plus ce réglage est élevé, plus la réactualisation du graphique de distribution occupe de temps CPU. S'il est trop élevé, cela peut produire de la latence ("lag"). Au contraire, plus la valeur est basse, plus la distribution sera imprécise et l'on risque de voir des cargaisons ne pas aller vers la destination attendue.
STR_CONFIG_SETTING_DEMAND_DISTANCE :Effet de la distance sur la demande{NBSP}: {STRING}
@@ -1804,6 +1807,7 @@ STR_LIVERY_FREIGHT_TRAM :Tramway pour fr
STR_FACE_CAPTION :{WHITE}Sélection du visage
STR_FACE_CANCEL_TOOLTIP :{BLACK}Annuler le choix du nouveau visage
STR_FACE_OK_TOOLTIP :{BLACK}Valider le nouveau visage
STR_MAPGEN_RANDOM :{BLACK}Nouvelle amorce
STR_FACE_MALE_BUTTON :{BLACK}Homme
STR_FACE_MALE_TOOLTIP :{BLACK}Choisir un visage masculin
@@ -1924,13 +1928,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protége
STR_NETWORK_START_SERVER_UNADVERTISED :Non
STR_NETWORK_START_SERVER_ADVERTISED :Oui
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Nombre de clients max.{NBSP}:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Nombre de clients maximum{NBSP}:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choisir un nombre maximum de clients. Tous les emplacements n'auront pas besoin d'être remplis
STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compagnie{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max. compagnies{NBSP}:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Nombre de compagnies maximum{NBSP}:
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limiter le serveur à un certain nombre de compagnies
STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} spectateur{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Max. spectateurs{NBSP}:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Nombre de spectateurs maximum{NBSP}:
STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Limiter le serveur à un certain nombre de spectateurs
STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Langue utilisée{NBSP}:
STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Les autres joueurs sauront quelle langue est parlée sur ce serveur
@@ -2548,6 +2552,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF{N
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Cargaison acceptée{NBSP}: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Vitesse limite de la voie{NBSP}: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Vitesse limite de la route{NBSP}: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Roches
@@ -2663,6 +2668,7 @@ STR_SAVELOAD_SAVE_BUTTON :{BLACK}Sauvegar
STR_SAVELOAD_SAVE_TOOLTIP :{BLACK}Sauvegarder la partie en cours avec le nom choisi
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Charger
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Charger la partie sélectionnée
STR_SAVELOAD_LOAD_HEIGHTMAP_TOOLTIP :{BLACK}Charger la carte d'altitude sélectionnée
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Détails
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Pas d'informations disponibles
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}{NBSP}: {WHITE}{STRING}
@@ -2683,7 +2689,6 @@ STR_MAPGEN_SNOW_LINE_UP :{BLACK}Augmente
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Baisser l'altitude d'enneigement
STR_MAPGEN_RANDOM_SEED :{BLACK}Amorce{NBSP}:
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Cliquer pour saisir une amorce
STR_MAPGEN_RANDOM :{BLACK}Nouvelle amorce
STR_MAPGEN_RANDOM_HELP :{BLACK}Modifier l'amorce utilisée pour la création du terrain
STR_MAPGEN_LAND_GENERATOR :{BLACK}Générateur{NBSP}:
STR_MAPGEN_TREE_PLACER :{BLACK}Ajout des arbres{NBSP}:
@@ -2877,6 +2882,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Modules ma
STR_NEWGRF_BROKEN :{WHITE}Le comportement du NewGRF "{0:STRING}" peut provoquer des erreurs de synchronisation et/ou des plantages
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Il a modifié l'état de wagon motorisé pour "{1:ENGINE}" en dehors du dépôt
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Il a modifié la longueur de véhicule pour "{1:ENGINE}" en dehors du dépôt
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Il a changé la capacité pour '{1:ENGINE}' hors d'un dépôt ou d'un réaménagement
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Le train "{VEHICLE}" appartenant à "{COMPANY}" a une longueur invalide. Cela est probablement dû à des problèmes avec des NewGRFs, et peut provoquer des erreurs de synchronisation ou planter le jeu.
STR_NEWGRF_BUGGY :{WHITE}Le module NewGRF "{0:STRING}" fournit une information incorrecte
@@ -3684,8 +3690,8 @@ STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Modifier
STR_ORDER_REFIT :{BLACK}Réaménager
STR_ORDER_REFIT_TOOLTIP :{BLACK}Choisir pour quelle cargaison réaménager avec cet ordre.{}Ctrl-clic pour retirer l'instruction de réaménagement.
STR_ORDER_REFIT_AUTO :{BLACK}Réaménagement automatique
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Sélectionner pour quel type de cargaison cet ordre va réaménager automatiquement.{}Ctrl-Clic pour retirer l'instruction de réaménagement. Le réaménagement automatique ne sera fait que si le véhicule l'autorise.
STR_ORDER_REFIT_AUTO :{BLACK}Réaménagement aux stations
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Sélectionner pour quel type de cargaison cet ordre va réaménager.{}Ctrl-Clic pour retirer l'instruction de réaménagement. Le réaménagement aux stations ne sera fait que si le véhicule l'autorise.
STR_ORDER_DROP_REFIT_AUTO :Cargaison fixée
STR_ORDER_DROP_REFIT_AUTO_ANY :Cargaison disponible
@@ -3776,18 +3782,18 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD :(Ne pas déchar
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Ne pas décharger et attendre pleine charge pour un seul type)
STR_ORDER_NO_UNLOAD_NO_LOAD :(Ne pas décharger et ne pas charger)
STR_ORDER_AUTO_REFIT :(Réaménager automatiquement pour {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Charger complétement avec réaménagement automatique pour {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Charger complétement pour un seul type avec réaménagement automatique pour {STRING})
STR_ORDER_UNLOAD_REFIT :(Décharger et charger avec réaménagement automatique pour {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Décharger et attendre pleine charge avec réaménagement automatique pour {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Décharger et attendre pleine charge pour un seul type avec réaménagement automatique pour {STRING})
STR_ORDER_TRANSFER_REFIT :(Transférer et charger avec réaménagement automatique pour {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transférer et attendre pleine charge avec réaménagement automatique pour {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transférer et attendre pleine charge pour un seul type avec réaménagement automatique pour {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(Ne pas décharger et charger avec réaménagement automatique pour {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ne pas décharger et attendre pleine charge avec réaménagement automatique pour {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ne pas décharger et attendre pleine charge pour un seul type avec réaménagement automatique pour {STRING})
STR_ORDER_AUTO_REFIT :(Réaménager pour {STRING})
STR_ORDER_FULL_LOAD_REFIT :(Charger complétement avec réaménagement pour {STRING})
STR_ORDER_FULL_LOAD_ANY_REFIT :(Charger complétement pour un seul type avec réaménagement pour {STRING})
STR_ORDER_UNLOAD_REFIT :(Décharger et charger avec réaménagement pour {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Décharger et attendre pleine charge avec réaménagement pour {STRING})
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Décharger et attendre pleine charge pour un seul type avec réaménagement pour {STRING})
STR_ORDER_TRANSFER_REFIT :(Transférer et charger avec réaménagement pour {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_REFIT :(Transférer et attendre pleine charge avec réaménagement pour {STRING})
STR_ORDER_TRANSFER_FULL_LOAD_ANY_REFIT :(Transférer et attendre pleine charge pour un seul type avec réaménagement pour {STRING})
STR_ORDER_NO_UNLOAD_REFIT :(Ne pas décharger et charger avec réaménagement pour {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_REFIT :(Ne pas décharger et attendre pleine charge avec réaménagement pour {STRING})
STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY_REFIT :(Ne pas décharger et attendre pleine charge pour un seul type avec réaménagement pour {STRING})
STR_ORDER_AUTO_REFIT_ANY :cargaison disponible
@@ -3813,9 +3819,9 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Horaire
STR_TIMETABLE_NO_TRAVEL :Pas de voyage
STR_TIMETABLE_NOT_TIMETABLEABLE :Voyager (automatique{NBSP}; horaire au prochain ordre manuel)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Voyager (sans horaire)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Déplacement à {2:VELOCITY} max. (non planifié)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Voyager (non planifié) à {2:VELOCITY} max.
STR_TIMETABLE_TRAVEL_FOR :Voyager pendant {STRING}
STR_TIMETABLE_TRAVEL_FOR_SPEED :Déplacement de {STRING} à {VELOCITY} max.
STR_TIMETABLE_TRAVEL_FOR_SPEED :Voyager pendant {STRING} à {VELOCITY} max.
STR_TIMETABLE_STAY_FOR :et rester pendant {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :et voyager pendant {STRING}
STR_TIMETABLE_DAYS :{COMMA} jour{P "" s}

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