Compare commits

...
110 Commits
Author SHA1 Message Date
rubidium ebeb4115e9 (svn r18735) -Release: 1.0.0-beta2 2010-01-05 21:00:14 +00:00
rubidium 435ef4ea8d (svn r18734) -Prepare: for 1.0.0-beta2 2010-01-05 20:54:54 +00:00
translators b6bca21877 (svn r18733) -Update from WebTranslator v3.0:
catalan - 2 changes by arnau
croatian - 36 changes by 
finnish - 3 changes by jpx_
german - 1 changes by planetmaker
greek - 1 changes by Rubidium
malay - 503 changes by toadhall
polish - 1 changes by xaxa
russian - 1 changes by Lone_Wolf
spanish - 1 changes by Terkhen
2010-01-05 18:45:29 +00:00
rubidium 74ffe8647f (svn r18732) -Codechange: move the company related commands of misc_cmd.cpp to company_cmd.cpp 2010-01-05 17:11:56 +00:00
rubidium f348afb5aa (svn r18731) -Codechange: move the DrawStationCoverage stuff from misc_gui.cpp to station_gui.cpp 2010-01-05 16:59:57 +00:00
yexo 9143b65785 (svn r18730) -Fix [FS#3414]: new viewports didn't center on the correct position 2010-01-05 14:26:15 +00:00
yexo fa23617380 (svn r18729) -Fix [FS#3427]: the lock in the company gui was only drawn for your own company 2010-01-04 23:00:19 +00:00
yexo 6dcfa9a063 (svn r18728) -Fix: don't mark all tiles dirty in the artic tileloop 2010-01-04 22:26:25 +00:00
rubidium 92c75f9092 (svn r18727) -Fix [FS#3480]: some invalid gender/plural indices in strings, which could eventually cause crashes. 2010-01-04 21:58:47 +00:00
rubidium 28fc7b47bd (svn r18726) -Fix [FS#3463]: with non-uniform industries the 'supplies' text when building a station could be incorrect (missing a cargo)
-Change [NoAI]: AITile::GetCargoProduction now returns the number of producers and not the number of tiles of producers.
-Fix [NoAI]: AITileList_IndustryProducing would omit some tiles for at which a station would get cargo.
2010-01-04 21:10:20 +00:00
frosch 1ed599f5cf (svn r18725) -Add: [NoAI] AIWaypoint::WaypointType and AIWaypoint::HasWaypointType().
-Change: [NoAI] Constructor of AIWaypoint now takes a WaypointType to also handle buoys.
-Remove: [NoAI] AIBuoyList.
2010-01-04 19:42:29 +00:00
yexo 27fc22a76b (svn r18724) -Fix [FS#3475] (r17899): refitting a non-refittable vehicle to it's default cargotype failed, causing problems for AIs 2010-01-04 18:50:50 +00:00
rubidium b42e76d858 (svn r18723) -Codechange: also simplify looping over an area when building trees, desert, rocky areas or leveling land 2010-01-04 18:49:27 +00:00
translators 76bf94bf00 (svn r18722) -Update from WebTranslator v3.0:
croatian - 36 changes by 
finnish - 2 changes by jpx_
french - 1 changes by glx
german - 1 changes by planetmaker
greek - 36 changes by fumantsu
italian - 1 changes by lorenzodv
malay - 58 changes by toadhall
romanian - 1 changes by kkmic
russian - 2 changes by Lone_Wolf
serbian - 4 changes by etran
swedish - 1 changes by Landrash
2010-01-04 18:45:41 +00:00
rubidium 9dfa2db455 (svn r18721) -Codechange: simplify adding/removing rectangles of tiles from AITileLists 2010-01-04 18:39:46 +00:00
rubidium 740585c219 (svn r18720) -Codechange: simplify looping and validation of CmdBuildCanal 2010-01-04 18:37:47 +00:00
yexo b378e82676 (svn r18719) -Feature: don't delete the rough/rocky status of a tile when it's covered by snow, this allows rocky tiles under snow if you have a variable snowline 2010-01-04 18:33:43 +00:00
rubidium 3e131e2fec (svn r18718) -Codechange: make a wrapper macro for looping TileAreas 2010-01-04 18:30:10 +00:00
rubidium 87466a4ed0 (svn r18717) -Codechange: use TileArea in industry instead of three separate variables. Also make use of TileArea functions for determining the 'width' and 'height' of an industry. 2010-01-04 18:21:07 +00:00
rubidium 71f2789270 (svn r18716) -Codechange: pass a TileArea to FindStationsAroundTiles 2010-01-04 18:16:32 +00:00
rubidium 31b325baaf (svn r18715) -Codechange: make StationFinder a subclass of TileArea 2010-01-04 18:12:10 +00:00
rubidium 8b88bb0c9b (svn r18714) -Codechange: move the TileArea struct to it's own header 2010-01-04 18:05:14 +00:00
rubidium 02a297669a (svn r18713) -Fix [FS#3476]: the join station window didn't account for scrolling, so if you did scroll the station was not joined with the selected station 2010-01-04 17:54:57 +00:00
peter1138 51f5102713 (svn r18712) -Fix (r5167): Spurious character spacing with free type fonts for small and large font sizes. 2010-01-04 16:37:53 +00:00
yexo 051e54c9a7 (svn r18711) -Doc: update landscape documentation about m1 (tile owner) 2010-01-04 14:33:32 +00:00
rubidium 3e481c4027 (svn r18710) -Fix [FS#3478]: the wrong town is mentioned in the error when trying to make one way roads of town owned roads 2010-01-04 11:35:12 +00:00
peter1138 abb147d974 (svn r18709) -Fix (r10227,FS#3464): Animation buffer for 32bpp-anim blitter was only validated during sprite blitting, other drawing operations didn't check it. Initial startup and window resize could therefore lead to crash. 2010-01-04 02:32:36 +00:00
peter1138 5ab64809fe (svn r18708) -Feature: [NewGRF] Add support for custom station foundation graphics. 2010-01-03 22:44:57 +00:00
yexo 9e2ccca327 (svn r18707) -Fix (r17802): local variables should not be accessed after the function returns 2010-01-03 22:43:12 +00:00
yexo 33e48c63b8 (svn r18706) -Cleanup: remove docs/Manual.txt and docs/OSX_install_instructions.txt, the contents of those are already in readme.txt and they were outdated.
Add docs/obm_format.txt and docs/obs_format.txt to Makefile.bundle
Add several documentation files to the windows installer
2010-01-03 22:10:17 +00:00
rubidium e9325f69fb (svn r18705) -Update: the known bugs document about the PulseAudio issue based on mgmuscari's solution/workaround 2010-01-03 21:57:21 +00:00
yexo 1c1035c44c (svn r18704) -Doc: update the 'Compiling OpenTTD using Microsoft Visual C++' documentation 2010-01-03 21:35:17 +00:00
rubidium 069b6a9fab (svn r18703) -Feature-ish: allow virtually paying a percentage of the leg profit in feeder chains. This to give the user a better chance to get a feeder system without "losses". 2010-01-03 21:29:20 +00:00
frosch a9d4147eb2 (svn r18702) -Fix [FS#3467]: Enable DrawGroundSpriteAt() to deal with foundations as DrawGroundSprite() does, and use this for drawing one-way-road-signs and clear-land-fences. 2010-01-03 20:55:00 +00:00
yexo 8a50a4112c (svn r18701) -Fix (r18700): always compile before making a commit 2010-01-03 20:14:50 +00:00
yexo 47a11fff20 (svn r18700) -Fix: when deleting an industry on water (oil rigs) the tiles on water were not marked dirty 2010-01-03 19:33:12 +00:00
frosch 666c856457 (svn r18699) -Fix [FS#PlanetAndy]: GRF parameters were not properly initialised to zero, and not always checked for valid range. 2010-01-03 19:29:56 +00:00
translators f82c591022 (svn r18698) -Update from WebTranslator v3.0:
croatian - 36 changes by 
estonian - 71 changes by KSiimson
greek - 4 changes by fumantsu
indonesian - 4 changes by prof
portuguese - 1 changes by JayCity
spanish - 1 changes by Terkhen
urdu - 13 changes by waderay
2010-01-03 18:45:21 +00:00
rubidium 409007cd92 (svn r18697) -Fix [FS#3471]: crash when scrolling to an item removed by filtering in the 'add NewGRF window' 2010-01-03 15:25:51 +00:00
yexo 6e97511bcb (svn r18696) -Fix [FS#3404]: AITile::IsCoastTile returned false for coast tiles with trees on them. 2010-01-03 12:42:50 +00:00
translators c73df2016a (svn r18694) -Update from WebTranslator v3.0:
catalan - 7 changes by arnau
croatian - 36 changes by 
korean - 1 changes by junho2813
norwegian_nynorsk - 10 changes by 2rB
polish - 4 changes by silver_777
portuguese - 2 changes by JayCity
romanian - 41 changes by tonny
2010-01-02 18:45:23 +00:00
alberth ab26bfd6a0 (svn r18693) -Doc: Add some doxygen comments to smallmap code. 2010-01-02 18:29:51 +00:00
yexo c8c61faff2 (svn r18692) -Fix: after a company went bankrupt it was impossible to build a new waypoint close to a deleted one until the grey sign was gone 2010-01-02 17:09:14 +00:00
yexo d8bcda3b94 (svn r18691) -Change [NoAI]: cleanup some errors messages and add a few to AIWaypoint 2010-01-02 16:47:32 +00:00
rubidium 43a5a4bee8 (svn r18690) -Fix [FS#3469]: some keys that open windows that want to be located relatively to the toolbars/statusbar could cause a crash when in one of the end game screens 2010-01-02 16:05:27 +00:00
rubidium 35c79d81ef (svn r18689) -Codechange: move the looping over chunkhandlers code to a macro 2010-01-02 15:56:20 +00:00
rubidium 58be174df2 (svn r18688) -Cleanup: remove some unused code/constants 2010-01-02 15:52:41 +00:00
yexo fe67e85700 (svn r18687) -Add [NoAI]: AIEngine::IsBuildable to check if you can build a certain engine.
-Change: AIEngine::IsValidEngine will now also return true when you have at least one vehicle of that type even if you can't build it anymore.
2010-01-02 15:52:29 +00:00
rubidium ea75e7da60 (svn r18686) -Fix [FS#3470]: in some cases _sl.chs is used when not initialised. As _sl.chs always refers to a single table when initialised replace _sl.chs with the actual table 2010-01-02 15:48:07 +00:00
rubidium 0f22c6030d (svn r18685) -Update: add genders to Catalan 2010-01-02 11:26:20 +00:00
rubidium ad667bf50a (svn r18684) -Fix: for some "man"s an empty line is an error 2010-01-01 22:01:14 +00:00
rubidium b2e9b5d612 (svn r18683) -Fix: it's not an other 2010-01-01 18:45:40 +00:00
translators 115b207745 (svn r18682) -Update from WebTranslator v3.0:
traditional_chinese - 1 changes by josesun
croatian - 36 changes by 
czech - 1 changes by martin_meridius
korean - 1 changes by junho2813
norwegian_bokmal - 5 changes by CyberKenny
portuguese - 9 changes by JayCity
romanian - 5 changes by tonny
serbian - 5 changes by etran
ukrainian - 5 changes by Madvin
2010-01-01 18:45:35 +00:00
peter1138 81dc77ee23 (svn r18681) -Codechange: Use existing TILE_LOOP method for iterating trigger area. 2010-01-01 18:19:26 +00:00
peter1138 f77d88c0aa (svn r18680) -Fix: Whole station area is already correct size. 2010-01-01 18:10:50 +00:00
rubidium 936477c323 (svn r18679) -Fix (r16993): tile area of waypoints wasn't correctly given to NewGRFs in case of multi tile waypoints 2010-01-01 18:10:10 +00:00
rubidium 0bc292056d (svn r18678) -Update: happy new year 2010-01-01 00:00:45 +00:00
translators b6496be499 (svn r18677) -Update from WebTranslator v3.0:
catalan - 5 changes by arnau
traditional_chinese - 36 changes by josesun
croatian - 36 changes by 
czech - 4 changes by martin_meridius
dutch - 5 changes by habell
finnish - 1 changes by jpx_
french - 2 changes by Skiper, glx
german - 5 changes by planetmaker
hungarian - 5 changes by alyr
italian - 5 changes by lorenzodv
korean - 4 changes by junho2813
lithuanian - 14 changes by Devastator
persian - 1 changes by Gajoo
portuguese - 2 changes by JayCity
russian - 11 changes by Lone_Wolf
spanish - 1 changes by Terkhen
swedish - 4 changes by Landrash
urdu - 15 changes by waderay
2009-12-31 18:45:51 +00:00
rubidium ebfdcf575d (svn r18676) -Change [FS#3411]: 'escape' in the 'found town' window removes the focus from the town name input box 2009-12-31 18:12:10 +00:00
rubidium de3cff9e1a (svn r18675) -Add [FS#3256]: function to remove focus from all widgets in a window 2009-12-31 18:11:03 +00:00
peter1138 739aea3e1a (svn r18674) -Feature (FS#3459): Configurable slope steepness for trains from 0% to 10%, default is 3% as before (mostly by Terkhen) 2009-12-31 10:41:03 +00:00
peter1138 2d14ced236 (svn r18673) -Fix (r17943): Deja vu: 3 byte structs are padded to a word on ARM. 2009-12-31 07:39:05 +00:00
rubidium 768bfa969d (svn r18672) -Codechange: mention the game date in the crash log 2009-12-31 00:09:29 +00:00
rubidium 75c46b7a27 (svn r18671) -Fix [FS#3452]: [NewGRF] If an action B did not have a 'data' string but would print it OpenTTD would segfault 2009-12-30 20:31:43 +00:00
alberth d86dbabbc4 (svn r18670) -Fix [FS#3455]: Update all tiles when snowline height changes in larger steps than one tile. 2009-12-30 19:30:49 +00:00
translators 84a7f6aa5b (svn r18669) -Update from WebTranslator v3.0:
afrikaans - 13 changes by burgerd
croatian - 36 changes by 
english_US - 74 changes by agenthh
finnish - 4 changes by jpx_
french - 5 changes by glx
greek - 20 changes by fumantsu
lithuanian - 55 changes by Devastator
persian - 1 changes by Gajoo
spanish - 4 changes by Terkhen
urdu - 19 changes by waderay
2009-12-30 18:45:29 +00:00
rubidium fbfbd2dfb9 (svn r18668) -Fix [FS#3450]: the space between the S and X of OS X should be a non-breaking one 2009-12-30 18:10:07 +00:00
rubidium e6dbe673f0 (svn r18667) -Fix [FS#3454]: [NoAI] crash when trying to get the order destination of a 'nearest depot' order 2009-12-30 18:07:28 +00:00
alberth 4801b17837 (svn r18666) -Codechange: Add tooltips to enable/disable all buttons in smallmap. 2009-12-30 17:58:19 +00:00
alberth 0a7fc9e4ea (svn r18665) -Feature [FS#567]: Allow contour-map to be shown with coloured industries in smallmap. 2009-12-30 17:44:38 +00:00
alberth ba3ef1a2d5 (svn r18664) -Fix [FS#3449]: Unshade shaded finances window when toggling size. 2009-12-30 08:40:05 +00:00
alberth 2ab3e5ab40 (svn r18663) -Codechange (r1): Remove unused _smallmap_vegetation_andor colour masks. 2009-12-30 08:01:54 +00:00
orudge b1f8915f1d (svn r18662) -Feature: Add WarpIN-based installer for OS/2 2009-12-30 02:23:10 +00:00
yexo 60a48dbec1 (svn r18661) -Fix [FS#3169]: aircraft on the metropolitan airport took a long route to the closest loading pad 2009-12-29 23:23:16 +00:00
yexo 1520aab5b2 (svn r18660) -Cleanup: remove useless function 2009-12-29 23:13:36 +00:00
orudge 5b896198e5 (svn r18659) -Fix: Some minor language corrections in installer 2009-12-29 19:47:57 +00:00
rubidium 891ded5c48 (svn r18658) -Fix [FS#3443]: wrong strings drawn for cargo subtype in vehicle details 2009-12-29 18:57:25 +00:00
translators 6cfa7df1cf (svn r18657) -Update from WebTranslator v3.0:
afrikaans - 174 changes by burgerd
catalan - 10 changes by arnau
croatian - 36 changes by 
norwegian_bokmal - 7 changes by Zhygometh
swedish - 32 changes by Landrash
ukrainian - 82 changes by Madvin
vietnamese - 23 changes by nglekhoi
2009-12-29 18:45:24 +00:00
orudge 00ede07b13 (svn r18656) -Feature: Add event semaphore support for OS/2 2009-12-29 04:27:39 +00:00
rubidium 1f2159b54e (svn r18655) -Fix: the icon that is supposed to be 256x256 pixels wasn't 256x256 pixels
-Add: the 'source' for the icons
2009-12-28 19:26:44 +00:00
translators 96c699ff1e (svn r18654) -Update from WebTranslator v3.0:
croatian - 36 changes by 
finnish - 5 changes by jpx_
portuguese - 1 changes by JayCity
russian - 1 changes by Lone_Wolf
vietnamese - 27 changes by motorolavn, nglekhoi
2009-12-28 18:45:17 +00:00
rubidium 4697a1f431 (svn r18653) -Fix [FS#3442]: when trying to attach a wagon to an existing free wagon chain, don't attach it to itself 2009-12-28 18:26:39 +00:00
rubidium 454e124912 (svn r18652) -Fix: glitches due to having the wrong bounding boxes for the face widgets 2009-12-28 13:04:18 +00:00
smatz f60b3a28d6 (svn r18651) -Fix [FS#3438](r18518): [NoAI] When AI tried to create NO_UNLOAD order, GOTO_NEAREST_DEPOT order was created instead 2009-12-28 12:12:57 +00:00
smatz 96a5db36f8 (svn r18650) -Fix: in the case of level crossing, location of the owner of road was documented wrongly (Eddi) 2009-12-27 21:45:27 +00:00
translators 224f3cd361 (svn r18649) -Update from WebTranslator v3.0:
croatian - 36 changes by 
finnish - 3 changes by Tve4
korean - 1 changes by dlunch
norwegian_nynorsk - 7 changes by 2rB
vietnamese - 39 changes by motorolavn, nglekhoi
2009-12-27 18:45:17 +00:00
michi_cc 40ba9933dc (svn r18648) -Fix/Feature [FS#3430-ish]: [YAPP] Treat the backside of an one-way path signals as a safe waiting point. 2009-12-27 14:37:54 +00:00
michi_cc f7025612e1 (svn r18647) -Fix: [YAPP] A train inside a station was not always found when checking for trains on a reserved path. 2009-12-27 14:37:50 +00:00
michi_cc 182b0b5c14 (svn r18646) -Fix [FS#3418]: [YAPP] Don't extend the reserved path through a newly built path signal directly in front of a stopped or loading train. Also restore the reserved path in more cases after removing a signal. 2009-12-27 14:37:46 +00:00
smatz 29e05554d7 (svn r18645) -Fix [FS#3433](r942): out-of-bounds access in the 'Start new multiplayer game' GUI 2009-12-27 13:38:08 +00:00
rubidium b0c9b2c232 (svn r18644) -Fix [FS#3434]: company league window was too narrow 2009-12-27 13:19:17 +00:00
rubidium 04a8888547 (svn r18643) -Fix [FS#3436]: rotation could not be changed for heightmaps 2009-12-27 12:58:23 +00:00
rubidium fb9eba67d1 (svn r18642) -Fix [FS#3432]: when a company goes bankrupt and has vehicles on a drive through road stop that is not theirs, the 'filled' cache of the road stops would get corrupted 2009-12-27 09:05:00 +00:00
translators 9aa89db3d6 (svn r18641) -Update from WebTranslator v3.0:
catalan - 6 changes by arnau
croatian - 36 changes by 
norwegian_nynorsk - 15 changes by 2rB
russian - 4 changes by Lone_Wolf
vietnamese - 45 changes by motorolavn, nglekhoi
2009-12-26 18:45:20 +00:00
smatz ce08aebde7 (svn r18640) -Fix (r18633): don't assert when accessing first invalid item, it's used quite often in the code
-Revert (r18637): it's not needed any more
2009-12-26 13:49:14 +00:00
rubidium 9574371e53 (svn r18639) -Update: Squirrel from 2.2.3 to 2.2.4
-Revert (r17273): this fix is included in Squirrel 2.2.4
2009-12-26 09:59:32 +00:00
rubidium 28c7c49855 (svn r18638) -Fix: downloading music sets would fail 2009-12-26 09:38:41 +00:00
rubidium e7efb42a27 (svn r18637) -Fix [FS#3428]: check whether the content list is empty before trying to draw it 2009-12-26 09:01:28 +00:00
smatz 9cefcdab82 (svn r18636) -Codechange: make TextEffect::duration a value in ticks instead of ticks * 8 2009-12-25 23:22:41 +00:00
smatz e6d6704f32 (svn r18635) -Codechange: store TextEffects in a SmallVector 2009-12-25 23:15:08 +00:00
rubidium 69f1db204e (svn r18634) -Revert (r16808): the fix doesn't work in all cases
-Fix [FS#3421] (r16838): crash when invalid pointers are left due to saveload failing at e.g. decompressing the savegame
2009-12-25 23:14:12 +00:00
smatz a7be7ebe80 (svn r18633) -Codechange: fortify SmallVector a bit more 2009-12-25 23:10:20 +00:00
rubidium 4dbf08fc4b (svn r18632) -Fix (r18629): error in string caused failure of Czech language 2009-12-25 20:11:31 +00:00
rubidium 7ed2e65b77 (svn r18631) -Fix [FS#3419]: when making a screenshot from the console the currently executed command would be shown twice 2009-12-25 19:17:36 +00:00
rubidium 21a3f97a0b (svn r18630) -Fix [FS#3419]: when making a screenshot the name of the previous screenshot went missing in the 'successful screenshot' message 2009-12-25 19:16:58 +00:00
translators 6cf4637dac (svn r18629) -Update from WebTranslator v3.0:
croatian - 36 changes by 
czech - 63 changes by martin_meridius
danish - 21 changes by beruic
indonesian - 14 changes by adjayanto
russian - 20 changes by Lone_Wolf
2009-12-25 18:45:18 +00:00
rubidium c8db92e3dd (svn r18628) -Fix [FS#3422]: (un)loading counter being reset while loading a train and changing the (path) signal setup around the station 2009-12-25 18:01:27 +00:00
smatz c4205c2599 (svn r18627) -Fix: no need to print 'Registers:' twice in win64 crash logs 2009-12-25 11:52:14 +00:00
rubidium 770c5d0594 (svn r18626) -Fix [FS#3425]: {CARGO} takes 2 parameters, not 1. This made {N:XYZ} commands after CARGO mess up their indices and that then triggered an assertion 2009-12-25 10:04:30 +00:00
translators aa6081d830 (svn r18625) -Update from WebTranslator v3.0:
croatian - 36 changes by 
german - 6 changes by planetmaker
hungarian - 1 changes by alyr
italian - 15 changes by lorenzodv
korean - 1 changes by junho2813
romanian - 171 changes by tonny
spanish - 1 changes by Terkhen
2009-12-24 18:45:26 +00:00
225 changed files with 5548 additions and 3154 deletions
+2 -1
View File
@@ -59,7 +59,6 @@ ifdef OSXAPP
$(Q)echo "APPL????" > "$(BUNDLE_DIR)/$(OSXAPP)/Contents/PkgInfo"
$(Q)cp "$(ROOT_DIR)/os/macosx/openttd.icns" "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/openttd.icns"
$(Q)$(ROOT_DIR)/os/macosx/plistgen.sh "$(BUNDLE_DIR)/$(OSXAPP)" "$(REV)"
$(Q)cp "$(ROOT_DIR)/docs/OSX_install_instructions.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/os/macosx/splash.png" "$(DATA_DIR)"
endif
$(Q)cp "$(BIN_DIR)/$(TTD)" "$(TTD_DIR)/"
@@ -74,6 +73,8 @@ endif
$(Q)cp "$(ROOT_DIR)/COPYING" "$(BUNDLE_DIR)/"
$(Q)cp "$(ROOT_DIR)/known-bugs.txt" "$(BUNDLE_DIR)/"
$(Q)cp "$(ROOT_DIR)/docs/obg_format.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/docs/obm_format.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/docs/obs_format.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/docs/multiplayer.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/docs/32bpp.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/changelog.txt" "$(BUNDLE_DIR)/"
+167
View File
@@ -91,3 +91,170 @@ AIVehicle.SkipToVehicleOrder <- function(vehicle_id, order_position)
{
return AIOrder.SkipToOrder(vehicle_id, order_position);
}
AIEngine.IsValidEngine <- function(engine_id)
{
return AIEngine.IsBuildable(engine_id);
}
AIEngine._GetName <- AIEngine.GetName;
AIEngine.GetName <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return null;
return AIEngine._GetName(engine_id);
}
AIEngine._GetCargoType <- AIEngine.GetCargoType;
AIEngine.GetCargoType <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return 255;
return AIEngine._GetCargoType(engine_id);
}
AIEngine._CanRefitCargo <- AIEngine.CanRefitCargo;
AIEngine.CanRefitCargo <- function(engine_id, cargo_id)
{
if (!AIEngine.IsBuildable(engine_id)) return false;
return AIEngine._CanRefitCargo(engine_id, cargo_id);
}
AIEngine._CanPullCargo <- AIEngine.CanPullCargo;
AIEngine.CanPullCargo <- function(engine_id, cargo_id)
{
if (!AIEngine.IsBuildable(engine_id)) return false;
return AIEngine._CanPullCargo(engine_id, cargo_id);
}
AIEngine._GetCapacity <- AIEngine.GetCapacity;
AIEngine.GetCapacity <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return -1;
return AIEngine._GetCapacity(engine_id);
}
AIEngine._GetReliability <- AIEngine.GetReliability;
AIEngine.GetReliability <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return -1;
return AIEngine._GetReliability(engine_id);
}
AIEngine._GetMaxSpeed <- AIEngine.GetMaxSpeed;
AIEngine.GetMaxSpeed <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return -1;
return AIEngine._GetMaxSpeed(engine_id);
}
AIEngine._GetPrice <- AIEngine.GetPrice;
AIEngine.GetPrice <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return -1;
return AIEngine._GetPrice(engine_id);
}
AIEngine._GetMaxAge <- AIEngine.GetMaxAge;
AIEngine.GetMaxAge <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return -1;
return AIEngine._GetMaxAge(engine_id);
}
AIEngine._GetRunningCost <- AIEngine.GetRunningCost;
AIEngine.GetRunningCost <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return -1;
return AIEngine._GetRunningCost(engine_id);
}
AIEngine._GetPower <- AIEngine.GetPower;
AIEngine.GetPower <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return -1;
return AIEngine._GetPower(engine_id);
}
AIEngine._GetWeight <- AIEngine.GetWeight;
AIEngine.GetWeight <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return -1;
return AIEngine._GetWeight(engine_id);
}
AIEngine._GetMaxTractiveEffort <- AIEngine.GetMaxTractiveEffort;
AIEngine.GetMaxTractiveEffort <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return -1;
return AIEngine._GetMaxTractiveEffort(engine_id);
}
AIEngine._GetDesignDate <- AIEngine.GetDesignDate;
AIEngine.GetDesignDate <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return -1;
return AIEngine._GetDesignDate(engine_id);
}
AIEngine._GetVehicleType <- AIEngine.GetVehicleType;
AIEngine.GetVehicleType <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return AIVehicle.VT_INVALID;
return AIEngine._GetVehicleType(engine_id);
}
AIEngine._IsWagon <- AIEngine.IsWagon;
AIEngine.IsWagon <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return false;
return AIEngine._IsWagon(engine_id);
}
AIEngine._CanRunOnRail <- AIEngine.CanRunOnRail;
AIEngine.CanRunOnRail <- function(engine_id, track_rail_type)
{
if (!AIEngine.IsBuildable(engine_id)) return false;
return AIEngine._CanRunOnRail(engine_id, track_rail_type);
}
AIEngine._HasPowerOnRail <- AIEngine.HasPowerOnRail;
AIEngine.HasPowerOnRail <- function(engine_id, track_rail_type)
{
if (!AIEngine.IsBuildable(engine_id)) return false;
return AIEngine._HasPowerOnRail(engine_id, track_rail_type);
}
AIEngine._GetRoadType <- AIEngine.GetRoadType;
AIEngine.GetRoadType <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return AIRoad.ROADTYPE_INVALID;
return AIEngine._GetRoadType(engine_id);
}
AIEngine._GetRailType <- AIEngine.GetRailType;
AIEngine.GetRailType <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return AIRail.RAILTYPE_INVALID;
return AIEngine._GetRailType(engine_id);
}
AIEngine._IsArticulated <- AIEngine.IsArticulated;
AIEngine.IsArticulated <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return false;
return AIEngine._IsArticulated(engine_id);
}
AIEngine._GetPlaneType <- AIEngine.GetPlaneType;
AIEngine.GetPlaneType <- function(engine_id)
{
if (!AIEngine.IsBuildable(engine_id)) return -1;
return AIEngine._GetPlaneType(engine_id);
}
_AIWaypointList <- AIWaypointList;
class AIWaypointList extends _AIWaypointList {
constructor()
{
::_AIWaypointList.constructor(AIWaypoint.WAYPOINT_RAIL);
}
}
+7 -3
View File
@@ -805,13 +805,17 @@ function Regression::Marine()
print(" IsCanalTile(): " + AIMarine.IsCanalTile(32127));
print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF));
local list = AIBuoyList();
local list = AIWaypointList(AIWaypoint.WAYPOINT_BUOY);
print("");
print("--AIBuoyList--");
print("--AIWaypointList(BUOY)--");
print(" Count(): " + list.Count());
print(" Location ListDump:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + i);
print(" " + AIWaypoint.GetLocation(i));
}
print(" HasWaypointType:");
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
print(" " + AIWaypoint.HasWaypointType(i, AIWaypoint.WAYPOINT_RAIL) + " " + AIWaypoint.HasWaypointType(i, AIWaypoint.WAYPOINT_BUOY) + " " + AIWaypoint.HasWaypointType(i, AIWaypoint.WAYPOINT_ANY));
}
print("");
+90 -86
View File
@@ -7100,10 +7100,12 @@
IsCanalTile(): true
GetBankBalance(): 1999951154
--AIBuoyList--
--AIWaypointList(BUOY)--
Count(): 1
Location ListDump:
28481
HasWaypointType:
false true false
RemoveWaterDepot(): true
RemoveDock(): true
@@ -7819,97 +7821,99 @@
19693 => 8
--TileList_IndustryProducing--
Count(): 90
Count(): 92
Location ListDump:
46149 => 14
46146 => 14
45894 => 14
45889 => 14
45638 => 14
45633 => 14
45382 => 14
45377 => 14
45126 => 12
45121 => 12
44869 => 12
44868 => 12
44867 => 12
44866 => 12
46150 => 11
46145 => 11
46405 => 10
46404 => 10
46403 => 10
46402 => 10
45895 => 9
45888 => 9
45639 => 9
45632 => 9
45383 => 9
45376 => 9
44870 => 9
44865 => 9
46406 => 8
46401 => 8
45127 => 8
45120 => 8
44613 => 8
44612 => 8
44611 => 8
44610 => 8
46151 => 7
46144 => 7
46661 => 6
46660 => 6
46659 => 6
46658 => 6
44871 => 6
44864 => 6
44614 => 6
44609 => 6
46662 => 5
46657 => 5
46407 => 5
46400 => 5
45896 => 4
45887 => 4
45640 => 4
45631 => 4
45384 => 4
45375 => 4
45128 => 4
45119 => 4
44615 => 4
44608 => 4
44357 => 4
44356 => 4
44355 => 4
44354 => 4
46663 => 3
46656 => 3
46152 => 3
46143 => 3
44872 => 3
44863 => 3
44358 => 3
44353 => 3
46918 => 2
46917 => 2
46916 => 2
46915 => 2
46914 => 2
46913 => 2
46408 => 2
46399 => 2
44616 => 2
44607 => 2
44359 => 2
44352 => 2
46920 => 1
46919 => 1
46918 => 1
46917 => 1
46916 => 1
46915 => 1
46914 => 1
46913 => 1
46912 => 1
46911 => 1
46664 => 1
46663 => 1
46662 => 1
46661 => 1
46660 => 1
46659 => 1
46658 => 1
46657 => 1
46656 => 1
46655 => 1
46408 => 1
46407 => 1
46406 => 1
46405 => 1
46404 => 1
46403 => 1
46402 => 1
46401 => 1
46400 => 1
46399 => 1
46152 => 1
46151 => 1
46150 => 1
46149 => 1
46146 => 1
46145 => 1
46144 => 1
46143 => 1
45896 => 1
45895 => 1
45894 => 1
45889 => 1
45888 => 1
45887 => 1
45640 => 1
45639 => 1
45638 => 1
45633 => 1
45632 => 1
45631 => 1
45384 => 1
45383 => 1
45382 => 1
45377 => 1
45376 => 1
45375 => 1
45128 => 1
45127 => 1
45126 => 1
45121 => 1
45120 => 1
45119 => 1
44872 => 1
44871 => 1
44870 => 1
44869 => 1
44868 => 1
44867 => 1
44866 => 1
44865 => 1
44864 => 1
44863 => 1
44616 => 1
44615 => 1
44614 => 1
44613 => 1
44612 => 1
44611 => 1
44610 => 1
44609 => 1
44608 => 1
44607 => 1
44360 => 1
44359 => 1
44358 => 1
44357 => 1
44356 => 1
44355 => 1
44354 => 1
44353 => 1
44352 => 1
44351 => 1
--TileList_StationType--
+49 -1
View File
@@ -1,3 +1,51 @@
1.0.0-beta2 (2010-01-05)
------------------------------------------------------------------------
- Feature: Do not delete the rough/rocky status of a tile when it is covered by snow, this allows rocky tiles under snow if you have a variable snowline (r18719)
- Feature: [NewGRF] Add support for custom station foundation graphics (r18708)
- Feature: Allow virtually paying a percentage of the leg profit in feeder chains. This to give the user a better chance to get a feeder system without 'losses' (r18703)
- Feature: Configurable slope steepness for trains from 0% to 10%, default is 3% as before [FS#3459] (r18674)
- Feature: Allow contour-map to be shown with coloured industries in smallmap [FS#567] (r18665)
- Add [NoAI]: AIEngine::IsBuildable to check if you can build a certain engine (r18687)
- Change: [NoAI] Merge buoy and waypoint functions (r18725)
- Change: [NoAI] AIEngine::IsValidEngine will now also return true when you have at least one vehicle of that type even if you cannot build it anymore (r18687)
- Change: Update Squirrel from 2.2.3 to 2.2.4 (r18639)
- Fix: New viewports did not center on the correct position [FS#3414] (r18730)
- Fix: The lock in the company window was only drawn for your own company [FS#3427] (r18729)
- Fix: Some invalid gender/plural indices in strings, which could eventually cause crashes [FS#3480] (r18727)
- Fix: With non-uniform industries the 'supplies' text when building a station could be incorrect (missing a cargo) [FS#3463] (r18726)
- Fix: Refitting a non-refittable vehicle to it's default cargotype failed, causing problems for AIs [FS#3475] (r18724)
- Fix: The join station window did not account for scrolling, so if you did scroll the station was not joined with the selected station [FS#3476] (r18713)
- Fix: The wrong town is mentioned in the error when trying to make one way roads of town owned roads [FS#3478] (r18710)
- Fix: Animation buffer for 32bpp-anim blitter was only validated during sprite blitting, other drawing operations did not check it. Initial startup and window resize could therefore lead to crash [FS#3464] (r18709)
- Fix: Enable DrawGroundSpriteAt() to deal with foundations as DrawGroundSprite() does, and use this for drawing one-way-road-signs and clear-land-fences [FS#3467] (r18702)
- Fix: When deleting an industry on water (oil rigs) the tiles on water were not marked dirty (r18700)
- Fix: [NewGRF] GRF parameters were not properly initialised to zero, and not always checked for valid range (r18699)
- Fix: Crash when scrolling to an item removed by filtering in the 'add NewGRF window' [FS#3471] (r18697)
- Fix: [NoAI] AITile::IsCoastTile returned false for coast tiles with trees on them [FS#3404] (r18696)
- Fix: After a company went bankrupt it was impossible to build a new waypoint close to a deleted one until the grey sign was gone (r18692)
- Fix: Some keys that open windows that want to be located relatively to the toolbars/statusbar could cause a crash when in one of the end game screens [FS#3469] (r18690)
- Fix: In some cases _sl.chs is used when not initialised. As _sl.chs always refers to a single table when initialised replace _sl.chs with the actual table [FS#3470] (r18686)
- Fix: [NewGRF] Tile area of waypoints was not correctly given to NewGRFs in case of multi tile waypoints (r18679)
- Fix: [NewGRF] If an action B did not have a 'data' string but would print it OpenTTD would segfault [FS#3452] (r18671)
- Fix: Update all tiles when snowline height changes in larger steps than one tile [FS#3455] (r18670)
- Fix: [NoAI] crash when trying to get the order destination of a 'nearest depot' order [FS#3454] (r18667)
- Fix: Aircraft on the metropolitan airport took a long route to the closest loading pad [FS#3169] (r18661)
- Fix: [NewGRF] Wrong strings drawn for cargo subtype in vehicle details [FS#3443] (r18658)
- Fix: When trying to attach a wagon to an existing free wagon chain, do not attach it to itself [FS#3442] (r18653)
- Fix: [NoAI] When AI tried to create NO_UNLOAD order, GOTO_NEAREST_DEPOT order was created instead [FS#3438] (r18651)
- Fix: [YAPP] Treat the backside of an one-way path signals as a safe waiting point [FS#3430] (r18648)
- Fix: [YAPP] A train inside a station was not always found when checking for trains on a reserved path (r18647)
- Fix: [YAPP] Do not extend the reserved path through a newly built path signal directly in front of a stopped or loading train. Also restore the reserved path in more cases after removing a signal [FS#3418] (r18646)
- Fix: Company league window was too narrow [FS#3434] (r18644)
- Fix: Rotation could not be changed for heightmaps [FS#3436] (r18643)
- Fix: When a company goes bankrupt and has vehicles on a drive through road stop that is not theirs, the 'filled' cache of the road stops would get corrupted [FS#3432] (r18642)
- Fix: Downloading music sets would fail (r18638)
- Fix: Crash when invalid pointers are left due to saveload failing at e.g. decompressing the savegame [FS#3421] (r18634)
- Fix: When making a screenshot the name of the previous screenshot went missing in the 'successful screenshot' message and the console command would be shown twice [FS#3419] (r18631, r18630)
- Fix: (un)loading counter being reset while loading a train and changing the (path) signal setup around the station [FS#3422] (r18628)
- Fix: {CARGO} takes 2 parameters, not 1. This made {N:XYZ} commands after CARGO mess up their indices and that then triggered an assertion [FS#3425] (r18626)
1.0.0-beta1 (2009-12-24)
------------------------------------------------------------------------
- Feature: Music replacement sets, like graphics and sound replacement sets (r18608)
@@ -2357,7 +2405,7 @@
- Fix: Saving or loading a map doesnt pauses the game anymore
- Fix: Some bridge part is not displayed transparent in transparent mode
- Fix: Starting with -r option allows all resolutions
- Fix: The pathfinder no longer sees rail with an other owner as a possible route
- Fix: The pathfinder no longer sees rail with another owner as a possible route
- Fix: Unable to select other screenshot format in Game Option
- Fix: Unwanted town renaming
- Fix: Vehicles slow down under bridge if the track is on a foundation
+1 -1
View File
@@ -11,7 +11,7 @@ log() {
}
set_default() {
released_version=""
released_version="1.0.0-beta2"
ignore_extra_parameters="0"
# We set all kinds of defaults for params. Later on the user can override
+1 -1
View File
@@ -27,7 +27,7 @@ OpenTTD palette. Upon load of the PNG, the mask is loaded too, and overrides
the RGB (not the Alpha) of the original PNG image, and replacing it with a
8bpp color remapped and converted to 32bpp.
An other thing that OpenTTD needs in your png, is 2 tEXt chunks: x_offs and
Another thing that OpenTTD needs in your png, is 2 tEXt chunks: x_offs and
y_offs. This to define the x- and y-offset, of course. Use the tool we supply
to add this information. Sadly enough most graphical editors trashes those
chunks upon save, so you have to readd it every time you save your image.
-100
View File
@@ -1,100 +0,0 @@
Welcome to the manual for OpenTTD. The latest release version at the time of writing is 0.3.2.
1 Obtaining OpenTTD.
You can obtain built binaries of OpenTTD for the 4 supported platforms - Win32, Linux,-x86, BeOS 5 and MacOS-X from the projects Sourceforge page, at http://sourceforge.net/projects/openttd . For the non-Win32 builds you will need libSDL.so, libpng.so and zlib.so compiled for your platform. Some builds will include these.
If you use another platform, such as FreeBSD, which has POSIX file i/o and an SDL port, you should be able to build OpenTTD from its source. This is available in the proejcts Subversion repository at svn://svn.openttd.com . The module name is "trunk".
1.1 Building OpenTTD.
Once you have obtained a recent copy of the source, you must build it. Windows build instructions will be provided later.
On UNIX platforms (including OS-X and BeOS), ensure you have a recent GCC (2.9 or above, or 3 and above).You will also need SDL development headers and libraries (libSDL 1.2 or higher). For PNG screenshot support and zlib compressed games, you will need libpng 1.0.12 or higher and zlib 1.2 or higher.
Most UNIX platforms:
First run ./configure, them use make or gmake to compile OpenTTD. You can configure the different compile options via ./configure.
BeOS:
On BeOS, run ./configure and then use jam. There are a variaty of options you can pass to your build tool, these are reported by ./configure.
1.2 Installing OpenTTD.
On Windows, insert your "Transport Tycoon Deluxe for Windows 95" disk. You can use a DOS version, but your graphics will be purple. NB: Even if your version of Transport Tycoon Deluxe ran on Windows 95, it may still be the DOS version. Then run the OpenTTD installer.
On UNIX platforms; decompress your OpenTTD archive, or otherwise run the installer. You should be left with an OpenTTD directory on your system. In this directory, make a subdirectory called 'data', and into this place the sample.cat file and all the .grf files from the install CD of 'Transport Tycoon Deluxe for Windows 95".
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
If you want MIDI music, copy the 'gm' folder from the original game directory/CD to the OpenTTD folder.
1.3 Running OpenTTD.
On Windows, you can use a third-party launcher such as OTTD-Launcher to run OpenTTD directly from Explorer. Otherwise, navigate via the command prompt to the correct location and launch ttd.exe.
On Linux, navigate at the shell to the correct location and run ttd.
On BeOS and Mac OS-X, just double click the ttd binary in the Tracker/Finder. You can also start from the shell.
1.4 Configuring OpenTTD
OpenTTD's launch menu contains three configuration menus - Difficulty Settings, Configure Patches and Game Settings. Most of these menus can be configured from within a running game as well.
Difficulty Settings lets you configure settings that affect the difficulty of playing the game. These include when your (computer-controlled) competitors can start building, how many of them there are, and how intelligent they are. You can also control how much the subsidy mutliplier is for subsidised routes, and how stable/volitile the in-game economy is. You can also set how you want the terrain to be configured in a random game.
Game Settings lets you set regional settings - currency, language, town names, etc. It also lets you select the resolution to run the game at, as well as the screenshot format to use.
Configure Patches lets you select which patches to use in the game. This allows you to set the game play to either original Transport Tycoon Deluxe compatible mode or a mode more like playing under TTD-Patch. Patches include building on slopes, longer bridges, longer trains, pre-signals, and TTD-Patch compatible handling of non-stop orders.
2.1 Gameplay
This section of the manual is written with the assumption that you already know the gameplay basics of Transport Tycoon Deluxe, on either DOS or Windows. As you must have the Windows Transport Tycoon Deluxe CD to play OpenTTD, you should either have a paper manual or the complete manual in PDF format on the disk. This section will only cover the gameplay differences from Transport Tycoon Deluxe.
2.2 Station Construction
In OpenTTD, you can build rail stations up to seven squares long and with up to seven platforms. You can also have stations spreading across far larger distances, allowing a large rail station to be connected to a large airport, for instance.
However, there is an even more noticable difference in rail station construction. You may now add platforms and lenght to a station after it has been built, and you may also add platforms of a different type. Users of TTDPatch will be used to this behaviour. But beyond what TTDPatch has, you can make stations of uneven lenght/width, and even ones with perpendicular tracks. You can also delete single tiles or tracks from a station, by holding down Shift before pressing the station construction button.
2.3 Checkpoint Stations
Checkpoint stations (the small blue item in the rail construction window) are small 1x1 stations. They must be built on top of pre-existing track. They do not accept or produce carge of any kind. They exist solely for use as route points. They become useful when dealing with large networks where trains may attempt to route themselves along undesirable or impossible routes. As an alternative to checkpoint stations, you can also direct trains to visit depots along the way. This has the advantage of also servicing the train and hence the train will rarely to never need to depart from its route to be serviced.
2.4 Freeform Rail Laying.
Along side the other rail laying buttons, you will see a button that looks somewhat like a crossing. This is the freeform rail laying tool., and it allows you to drag rail in any direction to lay it. This has a number of advantages, one of the main ones being that it can seriously speed up the laying of diagonal tracks.
2.5 Vehicle Queuing (with Quantum Effects)
This useful addition to OpenTTD means that road vehicles will queue outside a road station to wait for a space rather than attempt to enter it immediately. As anyone who has operated a large road network with busy stations will know, road vehicles quickly pile up inside stations. This will prevent that. The Quantum Effects are down to a bug in the game that means that mutliple vehicles will often only take up one space in the queue. However, this is almost too useful to fix, and should still be there in later versions. This can be enabled/disabled.
2.6 Building On Slopes
This allows you to build roads, rails, stations and depots on slopes. It also allows the construction of trasmitters and lighthouses on slopes in the scenario editor. There are some minor differences between OpenTTD's and TTD-Patch's handling of building on slopes, the main one being that bridges must still have solid land at their endings.
2.7 Long Bridges
OpenTTD allows you to constuct bridges up to 127 squares - half the size of the current map. This means that the crossing of large estuaries, such at the Bristol Channel in the original "West Country 90210" scenario can be acheived with one bridge instead of many bridges with staging points.
2.8 Long trains
OpenTTD allows trains of around 60 cars length, hence allowing you to use 7 square stations to their capacity and beyond.
2.9 Speed Display
This addition to OpenTTD allows you to see the current speed of any vehicle in their status window. Just open the status window of a vehicle and you can see the speed at that given moment. This allows you to see wheter better bridges, flatter/straighter track or more powerful engines could be used to increase the speed of a vehicle
2.10 More Trains, More Ships, More Everything!
Virtually any settings - train numbers, start date, what vehicles your competitors can use, etc - can be set in OpenTTD. Just use the Configure Patches menu on the main screen.
2.11 Network Play
See multiplayer.txt for more info.
2.12 Rail Recycling.
This button, at the end of the train construction window, lets you 'recycle' track to a new type. It also works on bridges, tunnels, stations and depots.
2.13 Canal Building
This button, at the end of the water construction window, lets you build canals and shiplifts across the landscape. These act just like normal water.
-23
View File
@@ -1,23 +0,0 @@
To install OpenTTD, you should drag the game to any location you want and in that folder, you should create a folder called "data". It should contain:
sample.cat
trg1r.grf
trgcr.grf
trghr.grf
trgir.grf
trgtr.grf
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
You should also use the data folder to add any custom grf files if you like
if you want music, you can add a GM folder and add all .gm files from TTD inside it
If you want to use the scenarios, you can copy the scenario folder as well. If you already have one, just copy the content so you don't overwrite old ones that have been removed.
In the end, you should have a folder containing:
OpenTTD (the actual game)
data (containing the grf files)
GM (optional for music)
scenario (optional pregenerated maps)
The game adds some items by itself when it runs, like a save folder and a setting file
+7 -14
View File
@@ -1,5 +1,5 @@
Compiling OpenTTD using Microsoft Visual C++
January 2, 2007
Last updated: 2010-01-03
--------------------------------------------
PLEASE READ THE ENTIRE DOCUMENT BEFORE DOING ANY ACTUAL CHANGES!!
@@ -10,7 +10,7 @@ OpenTTD includes projects for MSVC 2005.NET and MSVC 2008.NET. Both will
compile out of the box, providing you have the required libraries/headers;
which ones, see below. There is no support for VS6 or MSVC 2002, or
MSVC 2003.NET. You are therefore strongly encouraged to either upgrade to
MSVC 2005 Express (free) or use GCC.
MSVC 2008 Express (free) or use GCC.
1) REQUIRED FILES
@@ -36,16 +36,16 @@ You need an SVN-client to download the source from subversion:
2) INCLUDES AND LIBRARIES
-------------------------
Put the newly downloaded files in the VC lib\ and include\ directories; where
"C:\Program Files\Microsoft Visual Studio 8\VC" is your location of Visual C.
"C:\Program Files\Microsoft Visual Studio 9.0\VC" is your location of Visual C.
If you are compiling for an x64 system, use the include\ and lib\ directories
from the win64/ folder.
* openttd-useful.zip\include\*
* afxresh.h
to > C:\Program Files\Microsoft Visual Studio 8\VC\Include
to > C:\Program Files\Microsoft Visual Studio 9.0\VC\Include
* openttd-useful.zip\lib\*
to > C:\Program Files\Microsoft Visual Studio 8\VC\Lib
to > C:\Program Files\Microsoft Visual Studio 9.0\VC\Lib
Custom directories might be recommended, check 2.2)
@@ -76,14 +76,7 @@ list, above all others, otherwise compilation will most likely fail!!
3) TTD GRAPHICS FILES
---------------------
Copy the following files from Transport Tycoon Deluxe to the bin/data folder
* sample.cat
* trg1r.grf
* trgcr.grf
* trghr.grf
* trgir.grf
* trgtr.grf
See section 4.1 of readme.txt for the required 3rdparty files and how to install them.
4) COMPILING
@@ -112,4 +105,4 @@ to ask about reasons; or just wait. The problem will most likely solve itself
within a few days as the problem is noticed and fixed.
An up-to-date version of this README can be found on the wiki:
http://wiki.openttd.org/index.php/MicrosoftVisualCExpress
http://wiki.openttd.org/Microsoft_Visual_C%2B%2B_2008_Express_Editions
+14 -8
View File
@@ -11,12 +11,13 @@
<body>
<h3><a name="Landscape">Landscape</a></h3>
<p>Seven attributes (counting &quot;<span style="font-weight: bold;">type_height</span>&quot;) hold the informations about a tile.<BR>
<p>Eight attributes (counting &quot;<span style="font-weight: bold;">type_height</span>&quot;) hold the informations about a tile.<BR>
These attributes are referred to as
"<span style="font-weight: bold;">type_height</span>",
"<span style="font-weight: bold;">m1</span>", "<span style="font-weight: bold;">m2</span>",
"<span style="font-weight: bold;">m3</span>", "<span style="font-weight: bold;">m4</span>",
"<span style="font-weight: bold;">m5</span>" and "<span style="font-weight: bold;">m6</span>".<BR>
"<span style="font-weight: bold;">m5</span>", "<span style="font-weight: bold;">m6</span>"
and "<span style="font-weight: bold;">m7</span>".<BR>
The most important value is the class of a tile, stored in the upper 4 bits
of the <span style="font-weight: bold;">type_height</span> attribute. The lower 4 bits are used to encode the height and
slope data.
@@ -52,11 +53,10 @@
</p>
The <a name="OwnershipInfo">owner of a tile</a>, as frequently associated with attribute m1,
can be either players (human or AI) or "Game entities".
can be either companies (human or AI) or "Game entities".
They are identified using:
<table border="1">
<tr><td><tt>00</tt>&nbsp; </td><td align=left>current player</td></tr>
<tr><td><tt>01..08</tt>&nbsp; </td><td align=left>AI or network players</td></tr>
<tr><td><tt>00..0E</tt>&nbsp; </td><td align=left>Normal companies</td></tr>
<tr><td><tt>0F</tt>&nbsp; </td><td align=left>a town owns the tile</td></tr>
<tr><td><tt>10</tt>&nbsp; </td><td align=left>nobody owns the tile</td></tr>
<tr><td><tt>11</tt>&nbsp; </td><td align=left>"water" owns the tile</td></tr>
@@ -81,6 +81,7 @@
<li>m1: <a href="#OwnershipInfo">owner</a> of the tile (normally <tt>10</tt>)</li>
<li>m2: see fields</li>
<li>m3 bits 3..0: see fields</li>
<li>m3 bit 4: set if the tile is covered with snow</li>
<li>m4 bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none)</li>
<li>m4 bits 4..2: same as 7..5, but for the SE border</li>
<li>m5 bits 7..5: update counter, incremented on every periodic processing for tile types,
@@ -601,7 +602,7 @@
</table>
</li>
<li>m5 bit 5: set if crossing lights are on</li>
<li>m6 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
<li>m5 bit 4: pbs reservation state</li>
</ul>
</li>
@@ -723,8 +724,7 @@
<td>
<ul>
<li>m1: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li>
<li>m2 bits 7..6: ground density
<li>m2 bits 5..4: ground
<li>m2 bits 8..6: ground
<table>
<tr>
@@ -746,8 +746,14 @@
<td align=left><tt>3</tt>&nbsp; </td>
<td>on shore (density must be 3)</td>
</tr>
<tr>
<td align=left><tt>4</tt>&nbsp; </td>
<td>on snow with rough land underneed</td>
</tr>
</table>
</li>
<li>m2 bits 5..4: ground density</li>
<li>m2 bits 3..0: update counter, incremented on every periodic processing.<br>
on wraparound the growth status is updated (or, if it's <tt>3</tt>, a random action is taken)</li>
<li>m3 bits 7..0: type of trees:
+3 -3
View File
@@ -68,7 +68,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOO</span>X <span class="free">OOOO</span></td>
<td class="bits">XXXX XX<span class="free">OO</span></td>
<td class="bits">XXXX XXXX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td>
@@ -79,7 +79,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td>
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
<td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits"><span class="free">OOOO</span> XXXX</td>
<td class="bits"><span class="free">OOO</span>X XXXX</td>
<td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td>
@@ -170,7 +170,7 @@ the array so you can quickly see what is used and what is not.
<td class="caption">trees</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
<td class="bits"><span class="free">OOOO OOOO</span> XXXX XXXX</td>
<td class="bits"><span class="free">OOOO OOO</span>X XXXX XXXX</td>
<td class="bits"><span class="option">~~</span>XX XXXX</td>
<td class="bits">XXXX XX<span class="free">OO</span></td>
<td class="bits">XX<span class="free">OO O</span>XXX</td>
+1 -1
View File
@@ -67,7 +67,7 @@ must be either absolute or relative to the current path or one of the search pat
Display a summary of all options and lists all the available AIs, blitters, sound, music and video drivers, graphics sets and sound sets.
.It Fl i Ar palette
Set the palette. '0' for the DOS palette, '1' for the Windows palette and '2' to autodetect (default).
.sp
The palette depends where the base graphics set originated from. If it came from the Transport Tycoon Deluxe for DOS it has the DOS palette, if it came from the Windows version of Transport Tycoon Deluxe it has the Windows palette. All others likely have the Windows palette as that is the most used palette.
.It Fl I Ar graphicsset
Set the graphics set, see
+25 -7
View File
@@ -1,6 +1,6 @@
OpenTTD's known bugs
Last updated: 2009-12-24
Release version: 1.0.0-beta1
Last updated: 2010-01-05
Release version: 1.0.0-beta2
------------------------------------------------------------------------
@@ -34,6 +34,7 @@ that you can find at: http://bugs.openttd.org
If the bugs are closed but still listed here it means that the bug is fixed
and that the nightlies and next major release will not have that bug.
- 3447 [OSX] SDL port is unuseable
- 3194 [OSX] Full screen strobing/flickering
- 2782 [OSX] Port hopelessly outdated
- 2585 [OSX] OS' mouse pointer showing
@@ -135,11 +136,28 @@ Extreme CPU usage/hangs when using SDL and PulseAudio [FS#3294]
OpenTTD can be extremely slow/use a lot of CPU when the sound is
played via SDL and then through PulseAudio's ALSA wrapper. Under the
same configuration OpenTTD, or rather SDL, might hang when exiting
the game. This setup seems to be the default configuration for
Ubuntu 9.04 and later. For Ubuntu this issue can be solved by
installing the 'libsdl1.2debian-pulseaudio' package from Ubuntu's
Universe repository. For other distributions a similar package needs
to be installed.
the game. This problem is seen most in Ubuntu 9.04 and higher.
This is because recent versions of the PulseAudio sound server are
configured to use timer-based audio scheduling rather than
interrupt-based audio scheduling. Configuring PulseAudio to force
use of interrupt-based scheduling may resolve sound problems for
some users. Under recent versions of Ubuntu Linux (9.04 and higher)
this can be accomplished by changing the following line in the
/etc/pulsa/default.pa file:
load-module module-udev-detect
to
load-module module-udev-detect tsched=0
Note that PulseAudio must be restarted for changes to take effect.
Older versions of PulseAudio may use the module-hal-detect module
instead. Adding tsched=0 to the end of that line will have a similar
effect.
Another possible solution is selecting the "pulse" backend of SDL
by either using "SDL_AUDIODRIVER=pulse openttd" at the command
prompt or installing the 'libsdl1.2debian-pulseaudio' package from
Ubuntu's Universe repository. For other distributions a similar
package needs to be installed.
OpenTTD not properly resizing with SDL on X [FS#3305]
Under some X window managers OpenTTD's window does not properly
Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 20 KiB

+265
View File
@@ -0,0 +1,265 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="256"
height="256"
id="svg2"
inkscape:version="0.47 r22583"
sodipodi:docname="openttd.svg">
<metadata
id="metadata42">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1177"
id="namedview40"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="163.74991"
inkscape:cy="132.32268"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 124 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="256 : 124 : 1"
inkscape:persp3d-origin="128 : 82.666667 : 1"
id="perspective44" />
<linearGradient
id="linearGradient3421">
<stop
style="stop-color:#fe7600;stop-opacity:1"
offset="0"
id="stop3423" />
<stop
style="stop-color:#f2b26d;stop-opacity:1"
offset="1"
id="stop3425" />
</linearGradient>
<linearGradient
id="linearGradient3269">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3271" />
<stop
style="stop-color:#ffffff;stop-opacity:0"
offset="1"
id="stop3273" />
</linearGradient>
<linearGradient
x1="312.62323"
y1="468.58658"
x2="315.21729"
y2="471.18063"
id="linearGradient3275"
xlink:href="#linearGradient3269"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="312.62323"
y1="468.58658"
x2="315.21729"
y2="471.18063"
id="linearGradient3289"
xlink:href="#linearGradient3269"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="312.62323"
y1="468.58658"
x2="315.21729"
y2="471.18063"
id="linearGradient3308"
xlink:href="#linearGradient3269"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,-266.24277,420.94154)" />
<linearGradient
x1="312.62323"
y1="468.58658"
x2="315.21729"
y2="471.18063"
id="linearGradient3326"
xlink:href="#linearGradient3269"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,-266.24277,420.94154)" />
<linearGradient
x1="312.62323"
y1="468.58658"
x2="315.21729"
y2="471.18063"
id="linearGradient3336"
xlink:href="#linearGradient3269"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0.3591922,-0.1487874)" />
<linearGradient
x1="312.62323"
y1="468.58658"
x2="315.21729"
y2="471.18063"
id="linearGradient3406"
xlink:href="#linearGradient3269"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-2.2643187,40.455238)" />
<linearGradient
x1="133.3282"
y1="156.16792"
x2="117.66125"
y2="78.463249"
id="linearGradient3431"
xlink:href="#linearGradient3421"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="133.3282"
y1="156.16792"
x2="117.66125"
y2="78.463249"
id="linearGradient3488"
xlink:href="#linearGradient3421"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(2,2)" />
<filter
id="filter3566"
color-interpolation-filters="sRGB">
<feGaussianBlur
id="feGaussianBlur3568"
stdDeviation="1.2236964"
inkscape:collect="always" />
</filter>
<linearGradient
x1="136.3282"
y1="151.16792"
x2="117.66125"
y2="78.463249"
id="linearGradient3571"
xlink:href="#linearGradient3421"
gradientUnits="userSpaceOnUse" />
</defs>
<g
transform="translate(-246.4375,-405.5443)"
id="layer1">
<path
d="m 127.34375,3.46875 c -0.48316,0.02376 -0.94805,0.22615 -1.3125,0.59375 L 7.65625,122.40625 c -0.78094,0.7811 -0.78094,2.06266 0,2.84375 L 25.25,142.84375 5,163.09375 c -0.78094,0.7811 -0.78094,2.03141 0,2.8125 l 80.40625,80.40625 c 0.7811,0.78094 2.03141,0.78093 2.8125,0 l 20.25,-20.25 17.59375,17.59375 c 0.7811,0.78093 2.03141,0.78093 2.8125,0 l 17.5625,-17.5625 20.21875,20.21875 c 0.78108,0.78094 2.06265,0.78093 2.84375,0 l 80.375,-80.40625 c 0.78094,-0.78109 0.78094,-2.0314 0,-2.8125 L 229.65625,142.875 247.25,125.28125 c 0.78094,-0.7811 0.78094,-2.06265 0,-2.84375 L 128.875,4.0625 c -0.0421,-0.04625 -0.11001,-0.11415 -0.15625,-0.15625 -0.39876,-0.33006 -0.89184,-0.46126 -1.375,-0.4375 z m -6,43.5625 14.15625,0 0,19.75 c 0.01,0.435733 0.30048,0.815 0.71875,0.9375 2.36672,0.715663 4.34765,1.46009 5.9375,2.1875 1.57854,0.722523 3.76284,1.94 6.53125,3.65625 0.23423,0.144983 0.51508,0.19598 0.78125,0.125 0.26615,-0.07098 0.49406,-0.25764 0.625,-0.5 l 2.875,-5.40625 7.75,0 9.34375,36.21875 -13.625,3.90625 c -4.11145,-10.161057 -10.59377,-17.79909 -19.46875,-22.625 -0.31359,-0.166457 -0.69786,-0.15518 -1,0.03125 -0.30216,0.186431 -0.47688,0.52006 -0.46875,0.875 l 0,24.03125 c 0.01,0.43573 0.30048,0.815 0.71875,0.9375 10.93974,3.10986 18.88772,6.27714 23.75,9.4375 4.89952,3.1848 8.58915,7.0982 11.15625,11.71875 2.57543,4.63598 3.84364,9.41467 3.84375,14.375 -1.1e-4,5.33303 -1.49612,10.44021 -4.5625,15.40625 -3.05188,4.94228 -7.57932,9.1061 -13.59375,12.46875 -5.99929,3.35409 -12.74816,5.29505 -20.375,5.84375 -0.52771,0.0331 -0.93848,0.47125 -0.9375,1 l 0,19.25 -14.15625,0 0,-20.65625 c 0.0115,-0.47702 -0.31562,-0.89572 -0.78125,-1 -6.24994,-1.46738 -12.82661,-4.66999 -19.71875,-9.6875 -0.25021,-0.18733 -0.57446,-0.24211 -0.875,-0.15625 -0.300532,0.0859 -0.54278,0.30252 -0.65625,0.59375 l -3.75,9.25 -7.625,0 -7.875,-42.34375 14.3125,-3.4375 c 2.78387,6.00776 5.47545,10.86469 8.09375,14.4375 2.72545,3.71918 5.79951,6.95217 9.21875,9.6875 2.53873,2.0772 5.32819,3.64369 8.34375,4.6875 0.30262,0.0995 0.64703,0.0602 0.90625,-0.125 0.25923,-0.18516 0.40226,-0.49396 0.40625,-0.8125 l 0,-27.875 c 0.008,-0.43878 -0.2706,-0.83165 -0.6875,-0.96875 -11.9575,-4.0043 -20.14727,-7.50583 -24.4375,-10.375 C 91.88074,118.97403 88.49102,115.30727 86,110.8125 83.50306,106.30724 82.24999,101.8073 82.25,97.25 c -1e-5,-5.212767 1.5369,-10.24246 4.65625,-15.125 3.11104,-4.869387 7.41684,-8.74009 12.96875,-11.625 5.52685,-2.871687 12.35433,-4.48215 20.5,-4.8125 0.54002,-0.01694 0.96896,-0.45971 0.96875,-1 l 0,-17.65625 z m -2,37.375 c -3.80484,0.61143 -6.64239,1.484763 -8.125,2.53125 -2.55269,1.82341 -3.68754,3.817503 -3.6875,6.21875 -3e-5,1.99888 0.82821,3.916143 2.6875,5.90625 1.5957,1.70818 4.79074,3.41885 9.125,5.03125 l 0,-19.6875 z m 18.15625,55.125 0,22.40625 c 3.64443,-0.60429 6.6344,-1.65745 8.8125,-3.25 2.37481,-1.73646 3.46868,-3.90374 3.46875,-6.875 -7e-5,-2.6212 -0.83434,-4.7944 -2.625,-6.6875 -2.27356,-2.32082 -5.55946,-4.16441 -9.65625,-5.59375 z"
transform="translate(247,408.36218)"
style="fill:#000000;fill-opacity:0.69019608;fill-rule:evenodd;stroke:none;filter:url(#filter3566)"
id="path3453" />
<path
d="m 125.4375,3.46875 -118.375,118.375 118.375,118.375 118.40625,-118.375 L 125.4375,3.46875 z m -7.09375,40.5625 16.15625,0 0,20.75 c 2.39847,0.725255 4.41692,1.465836 6.0625,2.21875 1.64544,0.753136 3.86718,1.989686 6.65625,3.71875 l 3.15625,-5.9375 9.125,0 9.78125,37.90625 -15.375,4.4375 C 149.89001,96.694255 143.4247,89.040435 134.5,84.1875 l 0,24.03125 c 10.98855,3.12374 18.97973,6.29945 24,9.5625 5.02009,3.26318 8.85036,7.29338 11.5,12.0625 2.64944,4.76921 3.96864,9.71205 3.96875,14.84375 -1.1e-4,5.52222 -1.56729,10.83367 -4.71875,15.9375 -3.15166,5.10387 -7.80181,9.38205 -13.9375,12.8125 -6.13586,3.43045 -13.05918,5.41095 -20.8125,5.96875 l 0,20.25 -16.15625,0 0,-21.65625 c -6.41472,-1.50606 -13.12131,-4.79903 -20.09375,-9.875 l -4,9.875 -9.125,0 -8.21875,-44.09375 16,-3.84375 c 2.900524,6.35894 5.697538,11.34646 8.375,15 2.6774,3.65361 5.68442,6.8226 9.03125,9.5 2.45427,2.0081 5.13065,3.52723 8.03125,4.53125 l 0,-27.875 c -11.9927,-4.01609 -20.225144,-7.51572 -24.6875,-10.5 C 89.193843,117.73459 85.690854,113.94229 83.125,109.3125 80.559118,104.68285 79.249989,99.991365 79.25,95.25 c -9e-6,-5.410553 1.605147,-10.635971 4.8125,-15.65625 3.207321,-5.02008 7.654184,-9.01231 13.34375,-11.96875 5.68951,-2.956214 12.68204,-4.602705 20.9375,-4.9375 l 0,-18.65625 z m 0,37.15625 c -4.57399,0.613679 -7.82228,1.598881 -9.71875,2.9375 -2.73325,1.952387 -4.09379,4.29813 -4.09375,7.03125 -4e-5,2.287057 0.98853,4.4742 2.96875,6.59375 1.98014,2.119711 5.6004,4.09012 10.84375,5.875 l 0,-22.4375 z m 16.15625,54.875 0,25.125 c 4.35076,-0.55777 7.81241,-1.79097 10.40625,-3.6875 2.59369,-1.8965 3.87492,-4.45224 3.875,-7.6875 -8e-5,-2.84474 -0.95404,-5.31111 -2.90625,-7.375 -2.67751,-2.73317 -6.46645,-4.8689 -11.375,-6.375 z"
transform="translate(247,408.36218)"
style="fill:url(#linearGradient3571);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3418" />
<rect
width="113.67383"
height="30.562906"
x="581.44257"
y="195.29802"
transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,0,0)"
style="fill:#6ad636;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3277" />
<path
d="m 271.41033,548.04524 -21.3701,21.3701 c -0.51722,0.5028 -0.72366,1.24514 -0.54025,1.94279 0.18341,0.69764 0.72825,1.24248 1.42588,1.42589 0.69765,0.1834 1.44,-0.023 1.9428,-0.54026 l 21.91555,-21.91555 -3.37388,-2.28297 z"
style="opacity:0.7;fill:url(#linearGradient3406);fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3404" />
<rect
width="167.41394"
height="167.41394"
x="554.57251"
y="27.848526"
transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,0,0)"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2251" />
<path
d="m 373.71159,410.23833 c -0.81035,-0.62925 -1.9654,-0.54334 -2.67374,0.19888 l -118.37411,118.3741 c -0.51722,0.5028 -0.72366,1.24514 -0.54025,1.94279 0.18341,0.69764 0.72825,1.24248 1.42588,1.42589 0.69765,0.1834 1.44,-0.023 1.9428,-0.54026 l 118.3741,-118.3741 c 0.42126,-0.40199 0.64643,-0.96759 0.61671,-1.54911 -0.0297,-0.58152 -0.31136,-1.12123 -0.77139,-1.47819 l 0,0 z"
style="opacity:0.7;fill:url(#linearGradient3336);fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3256" />
<rect
width="113.67384"
height="30.56292"
x="54.718613"
y="-752.58502"
transform="matrix(-0.7071068,0.7071068,-0.7071068,-0.7071068,0,0)"
style="fill:#6ad636;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3279" />
<rect
width="11.142811"
height="14.090264"
x="602.29895"
y="203.53435"
transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,0,0)"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3291" />
<rect
width="11.142811"
height="8.5145016"
x="622.57172"
y="203.53435"
transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,0,0)"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3293" />
<path
d="m 308.55497,616.32265 -7.87916,-7.87915 9.96333,-9.96333 7.87916,7.87916"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
id="rect3295" />
<path
d="m 315.01081,622.77849 9.96332,-9.96333 7.87916,7.87916 -9.96333,9.96332"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
id="rect3297" />
<path
d="m 445.04627,584.86337 1.41421,1.41422 9.96579,9.96578 1.41421,1.41422 1.41421,-1.41422 6.47445,-6.47444 -2.82843,-2.82843 2.82843,-2.82843 -7.13736,-7.13736 -2.82843,2.82843 -2.82842,-2.82843 -6.47445,6.47445 -1.41421,1.41421 z m 5.65685,0 5.06023,-5.06023 7.13736,7.13736 -5.06023,5.06023 -7.13736,-7.13736 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="rect3347" />
<path
d="m 427.09359,605.64776 -7.87916,7.87915"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
id="rect3343" />
<path
d="m 433.11734,619.55066 -9.96333,-9.96333"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
id="path3352" />
<path
d="m 441.42857,591.31278 -7.87916,7.87916"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
id="path3364" />
<path
d="m 447.45232,605.21568 -9.96333,-9.96333"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
id="path3366" />
<path
d="m 296.30415,584.14518 -9.96332,9.96333"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
id="rect3380" />
<path
d="m 306.75446,602.36485 7.87915,7.87916"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
id="path3384" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

+5 -5
View File
@@ -1,11 +1,11 @@
openttd (1.0~svn-1) UNRELEASED; urgency=low
openttd (1.0.0~beta2) unstable; urgency=low
* Unreleased SVN version. Versioned to allow normal upgrades to released
versions.
* New upstream release.
-- Matthijs Kooijman <matthijs@stdin.nl> Thu, 24 Dec 2009 01:02:03 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Tue, 05 Jan 2010 21:36:51 +0100
openttd (1.0~beta1) unstable; urgency=low
openttd (1.0.0~beta1) unstable; urgency=low
* New upstream release.
-1
View File
@@ -1,3 +1,2 @@
readme.txt
docs/Manual.txt
docs/multiplayer.txt
+21
View File
@@ -0,0 +1,21 @@
@echo off
if "%1" == "" goto err
if "%2" == "" goto err
echo Downloading NoSound...
%1\wget http://binaries.openttd.org/installer/nosound-NOSOUND_VERSION.7z -O %2/data/nosound.7z
echo Extracting NoSound...
%1\7za x -y -O%2/data %2/data/nosound.7z
del %1\data\nosound.7z /n
echo NoSound has been installed.
goto end
:err
echo This batch file is only intended for use by the OpenTTD installer.
echo Please visit www.openttd.org for details on downloading NoSound.
:end
+21
View File
@@ -0,0 +1,21 @@
@echo off
if "%1" == "" goto err
if "%2" == "" goto err
echo Downloading OpenGFX...
%1\wget http://binaries.openttd.org/installer/opengfx-OPENGFX_VERSION.7z -O %2/data/opengfx.7z
echo Extracting OpenGFX...
%1\7za x -y -O%2/data %2/data/opengfx.7z
del %1\data\opengfx.7z /n
echo OpenGFX has been installed.
goto end
:err
echo This batch file is only intended for use by the OpenTTD installer.
echo Please visit www.openttd.org for details on downloading OpenGFX.
:end
+21
View File
@@ -0,0 +1,21 @@
@echo off
if "%1" == "" goto err
if "%2" == "" goto err
echo Downloading OpenSFX...
%1\wget http://binaries.openttd.org/installer/opensfx-OPENSFX_VERSION.7z -O %2/data/opensfx.7z
echo Extracting OpenSFX...
%1\7za x -y -O%2/data %2/data/opensfx.7z
del %1\data\opensfx.7z /n
echo OpenSFX has been installed.
goto end
:err
echo This batch file is only intended for use by the OpenTTD installer.
echo Please visit www.openttd.org for details on downloading OpenSFX.
:end
+85
View File
@@ -0,0 +1,85 @@
@echo off
set OPENTTD_VERSION=1.0.0-beta2
set OPENSFX_VERSION=0.8.0
set NOSOUND_VERSION=0.8.0
set OPENGFX_VERSION=0.7.0
echo To make the installer, you must have the WarpIN compiler (wic) installed and in
echo your path, as well as wget and unzip. This file will download the various DLLs
echo to be distributed with the installer. If you do not want to continue, please
echo press CTRL-C now.
echo.
pause
cd ..\..\..\bundle
if not exist SDL12.dll goto getsdl
if not exist FSLib.dll goto getsdl
goto libc
:getsdl
wget http://www.os2site.com/sw/dev/sdl/sdl-1.2.10-bin-20080804.zip -O dl.zip
unzip -j dl.zip SDL/FSLib.dll SDL/SDL12.dll
del dl.zip
:libc
if exist libc063.dll goto gcc
wget ftp://ftp.netlabs.org/pub/gcc/libc-0.6.3-csd3.zip -O dl.zip
unzip -j dl.zip libc063.dll
del dl.zip
:gcc
if exist gcc442.dll goto tools
wget http://www.owenrudge.net/various/gcc442.zip -O dl.zip
unzip -j dl.zip gcc442.dll
del dl.zip
:tools
cd ..\os\os2\installer
if exist tools goto opengfx
mkdir tools
cd tools
wget http://download.smedley.info/wget-1.11.4-os2-20090315.zip -O dl.zip
unzip -j dl.zip wget/bin/wget.exe
del dl.zip
wget ftp://ftp.os4.su/moveton/p7zip-9.04-bin-os2.zip -O dl.zip
unzip -j dl.zip bin/7za.exe dll/ilibca.dll
del dl.zip
cd ..
:opengfx
if exist opengfx goto opensfx
mkdir opengfx
sed s/OPENGFX_VERSION/%OPENGFX_VERSION%/ < download_opengfx.cmd > opengfx\download_opengfx.cmd
copy remove_opengfx.cmd opengfx
:opensfx
if exist opensfx goto nosound
mkdir opensfx
sed s/OPENSFX_VERSION/%OPENSFX_VERSION%/ < download_opensfx.cmd > opensfx\download_opensfx.cmd
copy remove_opensfx.cmd opensfx
:nosound
mkdir nosound
sed s/NOSOUND_VERSION/%NOSOUND_VERSION%/ < download_nosound.cmd > nosound\download_nosound.cmd
copy remove_nosound.cmd nosound
:end
if exist openttd-%OPENTTD_VERSION%-os2.exe del openttd-%OPENTTD_VERSION%-os2.exe
wic -a openttd-%OPENTTD_VERSION%-os2.exe 1 -c../../../bundle -r * 2 -ctools -r * 3 -copengfx -r * 4 -copensfx -r * 5 -cnosound -r * -U -s openttd.wis
+106
View File
@@ -0,0 +1,106 @@
<WARPIN>
<HEAD>
<TITLE>OpenTTD</TITLE>
<!-- Please remember to increment the build number for each package
when releasing a new stable version, particularly if there are
also release candidates sharing the major/minor versions:
e.g., 0\7\1\16279 for 0.7.1-RC1,
0\7\1\16365 for 0.7.1-RC2,
0\7\1\16540 for 0.7.1 final
-->
<PCK INDEX="1"
PACKAGEID="OpenTTD\OpenTTD\OpenTTD\1\0\0\18862"
TARGET="$(WARPIN_DEFAULTAPPSPATH)\OpenTTD"
SELECT
TITLE="OpenTTD"
LONGFILENAMES
BASE
>OpenTTD is an open source transport simulation game</PCK>
<PCK INDEX="2"
PACKAGEID="OpenTTD\OpenTTD\Downloader\1\0\0\18862"
TARGET="$(WARPIN_DEFAULTAPPSPATH)\OpenTTD"
SELECT
TITLE="Download tools"
REQUIRES=1
FIXED
>Tools required for downloading the OpenGFX/SFX packs</PCK>
<PCK INDEX="3"
PACKAGEID="OpenTTD\OpenTTD\OpenGFX\1\0\0\18862"
TARGET="$(WARPIN_DEFAULTAPPSPATH)\OpenTTD"
SELECT
TITLE="OpenGFX"
LONGFILENAMES
REQUIRES=2
EXECUTE="$(3)\download_opengfx.cmd | $(1) $(/1)"
DEEXECUTE="$(3)\remove_opengfx.cmd | $(1) $(/1)"
FIXED
>Downloads the OpenGFX graphics pack for OpenTTD</PCK>
<PCK INDEX="4"
PACKAGEID="OpenTTD\OpenTTD\OpenSFX\1\0\0\18862"
TARGET="$(WARPIN_DEFAULTAPPSPATH)\OpenTTD"
SELECT
TITLE="OpenSFX"
LONGFILENAMES
REQUIRES=2
EXECUTE="$(4)\download_opensfx.cmd | $(1) $(/1)"
DEEXECUTE="$(4)\remove_opensfx.cmd | $(1) $(/1)"
FIXED
>Downloads the OpenSFX sound effects pack for OpenTTD</PCK>
<PCK INDEX="5"
PACKAGEID="OpenTTD\OpenTTD\NoSound\1\0\0\18862"
TARGET="$(WARPIN_DEFAULTAPPSPATH)\OpenTTD"
SELECT
TITLE="NoSound"
LONGFILENAMES
REQUIRES=2
EXECUTE="$(5)\download_nosound.cmd | $(1) $(/1)"
DEEXECUTE="$(5)\remove_nosound.cmd | $(1) $(/1)"
FIXED
>Downloads the NoSound pack for OpenTTD, to disable sound effects</PCK>
</HEAD>
<BODY>
<!-- page 1: introductory page -->
<PAGE INDEX="1" TYPE="README">
<NEXTBUTTON TARGET=2>~Next</NEXTBUTTON>
<README EXTRACTFROMPCK="1">README.TXT</README>
<TEXT>Welcome to the OpenTTD installer. This program will install OpenTTD 1.0 on your system. Before we begin the installation process, please take a moment to read the following document.
Select "Next" to continue, or "Cancel" to abort installation.</TEXT>
</PAGE>
<!-- page 2: licence page -->
<PAGE INDEX="2" TYPE="README">
<NEXTBUTTON TARGET=3>~Next</NEXTBUTTON>
<README EXTRACTFROMPCK="1">COPYING</README>
<TEXT>OpenTTD is licenced under the GNU General Public License. The text of the licence is below.
Select "Next" if you agree to this licence.
Select "Cancel" to abort installation.</TEXT>
</PAGE>
<!-- The TYPE=CONTAINER will list the packages which can be installed. -->
<PAGE INDEX="3" TYPE="CONTAINER">
<NEXTBUTTON TARGET="4">~Next</NEXTBUTTON>
<TEXT>On this page, you may choose which components to install. If you don't own Transport Tycoon Deluxe, you will need to download OpenGFX (3MiB) and OpenSFX (10MiB).</TEXT>
</PAGE>
<!-- Display another TEXT page to inform the user
that installation will begin. We use the TARGET=0
with the NEXTBUTTON tag which starts installation. -->
<PAGE INDEX="4" TYPE="TEXT">
<NEXTBUTTON TARGET="0">I~nstall</NEXTBUTTON>
<TEXT>
Press "Install" to begin installing OpenTTD.</TEXT>
</PAGE>
</BODY>
</WARPIN>
+15
View File
@@ -0,0 +1,15 @@
@echo off
if "%1" == "" goto err
echo Removing NoSound...
del %1\data\nosound\*.* /n
rmdir %1\data\nosound
echo NoSound has been removed.
goto end
:err
echo This batch file is only intended for use by the OpenTTD installer.
:end
+15
View File
@@ -0,0 +1,15 @@
@echo off
if "%1" == "" goto err
echo Removing OpenGFX...
del %1\data\opengfx\*.* /n
rmdir %1\data\opengfx
echo OpenGFX has been removed.
goto end
:err
echo This batch file is only intended for use by the OpenTTD installer.
:end
+15
View File
@@ -0,0 +1,15 @@
@echo off
if "%1" == "" goto err
echo Removing OpenSFX...
del %1\data\opensfx\*.* /n
rmdir %1\data\opensfx
echo OpenSFX has been removed.
goto end
:err
echo This batch file is only intended for use by the OpenTTD installer.
:end
+1 -1
View File
@@ -2,7 +2,7 @@
#-------------------------------------------------------------------------------
# spec file for the openttd rpm package
#
# Copyright (c) 2007-2009 The OpenTTD developers
# Copyright (c) 2007-2010 The OpenTTD developers
#
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself
+23 -11
View File
@@ -2,8 +2,8 @@
!define APPV_MAJOR 1
!define APPV_MINOR 0
!define APPV_MAINT 0
!define APPV_BUILD 0
!define APPV_EXTRA ""
!define APPV_BUILD 1
!define APPV_EXTRA "-beta2"
!define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version
@@ -30,7 +30,7 @@ SetCompressor LZMA
; Version Info
Var AddWinPrePopulate
VIProductVersion "${APPVERSIONINTERNAL}"
VIAddVersionKey "ProductName" "OpenTTD Installer ${APPBITS} bits for Windows ${EXTRA_VERSION}"
VIAddVersionKey "ProductName" "OpenTTD ${APPBITS}-bit Installer for Windows ${EXTRA_VERSION}"
VIAddVersionKey "Comments" "Installs ${APPNAMEANDVERSION}"
VIAddVersionKey "CompanyName" "OpenTTD Developers"
VIAddVersionKey "FileDescription" "Installs ${APPNAMEANDVERSION}"
@@ -39,7 +39,7 @@ VIAddVersionKey "InternalName" "InstOpenTTD-${APPARCH}"
VIAddVersionKey "FileVersion" "${APPVERSION}-${APPARCH}"
VIAddVersionKey "LegalCopyright" " "
; Main Install settings
Name "${APPNAMEANDVERSION} ${APPBITS} bits for Windows ${EXTRA_VERSION}"
Name "${APPNAMEANDVERSION} ${APPBITS}-bit for Windows ${EXTRA_VERSION}"
; NOTE: Keep trailing backslash!
InstallDirRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Install Folder"
@@ -83,7 +83,7 @@ Page custom SelectCDEnter SelectCDExit ": TTD folder"
!define MUI_FINISHPAGE_TITLE_3LINES
!define MUI_FINISHPAGE_RUN_TEXT "Run ${APPNAMEANDVERSION} now!"
!define MUI_FINISHPAGE_RUN "$INSTDIR\openttd.exe"
!define MUI_FINISHPAGE_LINK "Visit the OpenTTD site for latest news, FAQs and downloads"
!define MUI_FINISHPAGE_LINK "Visit the OpenTTD site for the latest news, FAQs and downloads"
!define MUI_FINISHPAGE_LINK_LOCATION "${APPURLLINK}"
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\readme.txt"
@@ -131,6 +131,14 @@ Section "!OpenTTD" Section1
SetOutPath "$INSTDIR\scripts\"
File ${PATH_ROOT}bin\scripts\*.*
; Copy some documention files
SetOutPath "$INSTDIR\docs\"
File ${PATH_ROOT}docs\obg_format.txt
File ${PATH_ROOT}docs\obm_format.txt
File ${PATH_ROOT}docs\obs_format.txt
File ${PATH_ROOT}docs\multiplayer.txt
File ${PATH_ROOT}docs\32bpp.txt
; Copy the rest of the stuff
SetOutPath "$INSTDIR\"
@@ -401,6 +409,9 @@ Section "Uninstall"
; Scripts
Delete "$INSTDIR\scripts\*.*"
; Documentation
Delete "$INSTDIR\docs\*.*"
; Base sets for music
Delete "$INSTDIR\gm\orig_win.obm"
Delete "$INSTDIR\gm\no_music.obm"
@@ -413,6 +424,7 @@ Section "Uninstall"
RMDir "$INSTDIR\gm"
RMDir "$INSTDIR\lang"
RMDir "$INSTDIR\scripts"
RMDir "$INSTDIR\docs"
RMDir "$INSTDIR"
SectionEnd
@@ -467,7 +479,7 @@ DosCD:
IfFileExists $CDDRIVE\TRGI.GRF "" NoCD
IfFileExists $CDDRIVE\SAMPLE.CAT hasCD NoCD
NoCD:
MessageBox MB_OK "Setup cannot continue without the Transport Tycoon Deluxe Location!"
MessageBox MB_OK "Setup cannot continue without the Transport Tycoon Deluxe location!"
Abort
hasCD:
FunctionEnd
@@ -495,12 +507,12 @@ Function CheckProcessorArchitecture
IntCmp $R0 64 Win64 0
ClearErrors
IntCmp ${APPBITS} 64 0 Done
MessageBox MB_OKCANCEL|MB_ICONSTOP "You want to install the 64 bits OpenTTD on a 32 bits Operating System. This is not going to work. Please download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
MessageBox MB_OKCANCEL|MB_ICONSTOP "You are trying to install the 64-bit OpenTTD on a 32-bit operating system. This is not going to work. Please download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
GoTo Done
Win64:
ClearErrors
IntCmp ${APPBITS} 64 Done 0
MessageBox MB_OKCANCEL|MB_ICONINFORMATION "You want to install the 32 bits OpenTTD on a 64 bits Operating System. This is not adviced, but will work with reduced capabilities. We suggest that you download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
MessageBox MB_OKCANCEL|MB_ICONINFORMATION "You are trying to install the 32-bit OpenTTD on a 64-bit operating system. This is not advised, but will work with reduced capabilities. We suggest that you download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
GoTo Done
Abort:
Quit
@@ -516,12 +528,12 @@ Function CheckWindowsVersion
StrCmp $R0 "win9x" 0 WinNT
ClearErrors
StrCmp ${APPARCH} "win9x" Done 0
MessageBox MB_OKCANCEL|MB_ICONSTOP "You want to install the Windows 2000, XP and Vista version on Windows 95, 98 or ME. This is will not work. Please download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
MessageBox MB_OKCANCEL|MB_ICONSTOP "You are trying to install the Windows 2000, XP and Vista version on Windows 95, 98 or ME. This is will not work. Please download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
GoTo Done
WinNT:
ClearErrors
StrCmp ${APPARCH} "win9x" 0 Done
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "You want to install the Windows 95, 98 and ME version on Windows 2000, XP or Vista. This is not adviced, but will work with reduced capabilities. We suggest that you download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "You are trying to install the Windows 95, 98 and ME version on Windows 2000, XP or Vista. This is not advised, but will work with reduced capabilities. We suggest that you download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
Abort:
Quit
Done:
@@ -569,7 +581,7 @@ VersionsAreEqual:
ReadRegStr $UninstallString HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "UninstallString"
IfFileExists "$UninstallString" "" FinishCallback
MessageBox MB_YESNO|MB_ICONQUESTION \
"Setup detected ${APPNAMEANDVERSION} on your system. That's the version this program will install.$\n \
"Setup detected ${APPNAMEANDVERSION} on your system. This is the same version that this program will install.$\n \
Are you trying to uninstall it?" \
IDYES DoUninstall IDNO FinishCallback
DoUninstall: ; You have the same version as this installer. This allows you to uninstall.
+1
View File
@@ -39,6 +39,7 @@ Sub UpdateFiles(version)
modified = Mid(version, InStrRev(version, Chr(9)) + 1)
version = Mid(version, 1, InStr(version, Chr(9)) - 1)
Else
version = "1.0.0-beta2"
revision = 0
modified = 1
End If
+4 -8
View File
@@ -1467,6 +1467,10 @@
RelativePath=".\..\src\tgp.h"
>
</File>
<File
RelativePath=".\..\src\tilearea_type.h"
>
</File>
<File
RelativePath=".\..\src\tile_cmd.h"
>
@@ -2635,10 +2639,6 @@
RelativePath=".\..\src\ai\api\ai_bridgelist.hpp"
>
</File>
<File
RelativePath=".\..\src\ai\api\ai_buoylist.hpp"
>
</File>
<File
RelativePath=".\..\src\ai\api\ai_cargo.hpp"
>
@@ -2859,10 +2859,6 @@
RelativePath=".\..\src\ai\api\ai_bridgelist.cpp"
>
</File>
<File
RelativePath=".\..\src\ai\api\ai_buoylist.cpp"
>
</File>
<File
RelativePath=".\..\src\ai\api\ai_cargo.cpp"
>
+4 -8
View File
@@ -1464,6 +1464,10 @@
RelativePath=".\..\src\tgp.h"
>
</File>
<File
RelativePath=".\..\src\tilearea_type.h"
>
</File>
<File
RelativePath=".\..\src\tile_cmd.h"
>
@@ -2632,10 +2636,6 @@
RelativePath=".\..\src\ai\api\ai_bridgelist.hpp"
>
</File>
<File
RelativePath=".\..\src\ai\api\ai_buoylist.hpp"
>
</File>
<File
RelativePath=".\..\src\ai\api\ai_cargo.hpp"
>
@@ -2856,10 +2856,6 @@
RelativePath=".\..\src\ai\api\ai_bridgelist.cpp"
>
</File>
<File
RelativePath=".\..\src\ai\api\ai_buoylist.cpp"
>
</File>
<File
RelativePath=".\..\src\ai\api\ai_cargo.cpp"
>
+3 -3
View File
@@ -1,6 +1,6 @@
OpenTTD README
Last updated: 2009-12-24
Release version: 1.0.0
Last updated: 2010-01-05
Release version: 1.0.0-beta2
------------------------------------------------------------------------
@@ -148,7 +148,7 @@ are:
DOS - Allegro
FreeBSD - SDL
Linux - SDL or Allegro
MacOS X (universal) - Cocoa video and sound drivers (SDL works too, but not 100% and not as a universal binary)
MacOS X (universal) - Cocoa video and sound drivers
MorphOS - SDL
OpenBSD - SDL
OS/2 - SDL
+1 -2
View File
@@ -276,6 +276,7 @@ terraform_gui.h
textbuf_gui.h
texteff.hpp
tgp.h
tilearea_type.h
tile_cmd.h
tile_type.h
tilehighlight_func.h
@@ -596,7 +597,6 @@ ai/api/ai_base.hpp
ai/api/ai_basestation.hpp
ai/api/ai_bridge.hpp
ai/api/ai_bridgelist.hpp
ai/api/ai_buoylist.hpp
ai/api/ai_cargo.hpp
ai/api/ai_cargolist.hpp
ai/api/ai_changelog.hpp
@@ -653,7 +653,6 @@ ai/api/ai_base.cpp
ai/api/ai_basestation.cpp
ai/api/ai_bridge.cpp
ai/api/ai_bridgelist.cpp
ai/api/ai_buoylist.cpp
ai/api/ai_cargo.cpp
ai/api/ai_cargolist.cpp
ai/api/ai_company.cpp
+1 -1
View File
@@ -1,4 +1,4 @@
Squirrel 2.2.3 stable
Squirrel 2.2.4 stable
--------------------------------------------------------
What is in this distribution?
+4
View File
@@ -1,3 +1,7 @@
***version 2.2.4 stable***
-fixed bug in functions with default parameters
***2009-06-30 ***
***version 2.2.3 stable***
-added sq_getfunctioninfo
-added compile time flag SQUSEDOUBLE to use double precision floats
+1 -1
View File
@@ -1,4 +1,4 @@
The programming language SQUIRREL 2.2.3 stable
The programming language SQUIRREL 2.2.4 stable
--------------------------------------------------
The project has been compiled and run on Windows(Windows XP/2000 on Intel x86 Windows XP Pro on AMD x64) and
+2 -2
View File
@@ -8,7 +8,7 @@ endobj
<< /Length 246 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
Gaqd[\IQJ1&-UA:?a4/j=Osr[Jq*pMi=8^1`.4Za_?id24lM2b[+uF7AnR]0Q4ej;k9Tg),:)c*7W;lXW&kJok9tubis9_(_4P/*D/T*8;Q*)>(=mXhjT`"b>?n0P<Pro!b>b;#0GGp)YQMZ:%Nr.,]Ee)267S5JJPh(qWc.2JUaBD$]k#7;O+_Nj2/Q4AiQp[&KcBNMUK-,KPb[[BBjHJC?@,=d"kc#.j8KbXf_i75B.qFL8(7~>
Gaqd[\IQJ1&-UA:?a4/j=Osr[Jq*pMi=8^1`.4Za_?id24lM2b[+uF7AnR]0Q4ej;k9Tg),:)c*7W;lXW&kJok9tubis9_(_4P/*D/T*8;Q*)>(=mXhjT`"b>?n0P<Pro!b>b;#0GGp)YQMZ:%Nr.,]Ee)267S5JJPh(qWc.2JUaBD$]k#7;O+_6b2/Q4AiQp[&KcBNMUK-,KPb[[BBjHJC?@,=d"kc#.j8KbXf_i75B.qGe8(@~>
endstream
endobj
6 0 obj
@@ -23,7 +23,7 @@ endobj
<< /Length 1048 /Filter [ /ASCII85Decode /FlateDecode ]
>>
stream
Gasao966RV&AJ$CE(_tHW'$"nl)EoW-Cl43$+I>J!Q(cIL^7FUIpZW@C?=A3PF7AQ=m^\8qW.Nip#]36"WOi=Z>/KJqc2SMl7_XYcptg:pcB1EJX87NpZol_JI4]qNHZ<g#tfEr^q5&[\1Os6*T\*+$S4b;(S^EE;&kDU.<!Ol:ul;9M/u.(]UrO(=b2RG@)AbU\j3`=N7,WEIE-@P,bP"Qe&UbbUnL4O)"!<XZcft?^&4IGUS.Kfg?Uu?33Z<EqpDPBQWhr>"&?p]Mnle.MPES[cKaYGb!&6k'!()=-').>W,jOO_%3mu-.H5Zrg*7ZCT'<m=n=pG'lHMiP2DfQ^#PUj-ZINhl:+\("E*=WT^ne1;TkUR#LZ3\(Lp:-[?E-_'Pu`YarLRa@g<U@H<dPKEjIaK]#;k\nk?t`Pg"QlHd^[2@R5@pm]E2r]WmVk5mp$j"C=AE$=(l97a"ml!D6uU?\rH05As:8:=lm(IGRa?d;@;=4dZ#HZKEfBraqgl%lNtck>5qf<W@BQ68s^\pLF`[[07LA;_bC(Ggd4$:s=HV:<cjkV95lH6g'eV@?LU%<*m'Z84i[d9o^D3b_;=6k(<g(U(Xo%&2p[Wa+jL..=_S,IqJm6c58c,"/?W+74V-4hCTr[[O@T,"a[p1r_O:pXM>QJd2'fg4jP.uP/AOm9f)Fi8hC97%aAZ?aM\KtR]<jj_oRU73@brD%>9Gs"XcgV-%V@81=bFEAcul?:gNR,7N3+TWTHC;@TY<?%P==RHW1DY%YY%\JY?NBeFFh/jh<InpX5Hc/]O>]Pe7j1];NWPl6@B-o4]oa0%;'OU3=_aJ2%mKF?i!d=n?#rD`fJ8GplF9bD@Bon"3cP(p2tR-ibOaeq:3u`4Uc\WI\d:#Y_LJK$H(rcCq2-d[-:e3-iAcmY!6Kabd@=:<2^7/sU5XW;GI'+)bX^7M2S:<hK&C_U:>eHps3M2#I?[e,4&<4`?tiTG`&_m]>DK9q85sF']rpe[,60WII=9k:?6aVmER%Jp>i2gZgsa2r&:IFNNq]6B.Jh~>
Gasao966RV&AJ$CE(_tHW'$"nl)EoW-Cl43$+I>J!Q(cIL^7FUIpZW@C?=A3PF7AQ=m^\8qW.Nip#]36"WOi=Z>/KJqc2SMl7_XYcptg:pcB1EJX87NpZol_JI4]qNHZ<g#tfEr^q5&[\1Os6*T\*+$S4b;(S^EE;&kDU.<!Old)OK*''G5/GX&n.ZN;(m_1YI4Fb+GZ(o<&iqMsZ*83Zj+ViTFO84/<(0\RI9B:!f]Hhfhn7R?dV[+Be\EF>WipS1sc0=@h[#FpnE(4gB;'M""?S^l0mQ$nOa,Z`%Y8fk5[;!2#(JfeYt8uTA=r@RE?ekgRdZK?dm.bp%\,elE,HH/#^:>i!Ze;^9.$/EZ8601HAV3X2/%]#@B0#jP8CF<7I.+lB;Prf2M`XX1^ose*uj^rLuFbuUBjdCpK.%0sapS>:C`Idfjh-3;oG[i%`Jej(^#eYai'Y'YPNL$hc!gLu4^(Si?IbpSOS??X/qRiF]U>)IYH7nknA^=Sdr67Ja+):!QcCrgVWrD[+Kl.GBn&ZK@CC<%bVIE_/n>7A'TU5a5SXQ_`99iYpL<_I6_B].)W4[(>OHT;RRN+aEQjYDJbm+R/73ub)+`(D9NXbe;;?.*7rltdKS2#J7#"C25MH66F]j!rACf*#6$hSmBr1PNj=FhusU+MHWH_*<t-&5&eRV(c[Q!+ZN*1G8]OGOjr1f\J]LQN+NE`Okf)[Hhp$Vl_69*-\PA?*\hbm;h]Tt918N&E62;U'VT`NW`^**PT.p8Ah<*"!!A"%0ucWT?W>b'dcen"hgQ>)YPD.![O@G>F-*eOMf:k0mcL>c:((7.$:K!Fmh!k^[tQZf])ohKVpNo2(tRQ4lUgh`nN+0Nud-;#j/LXTr:tM0TEB;ZkLS&X[%t"J'$nS3p.8V(XKUE:S\Pg^.<tP7qSYSW;CN>UnD:;"q_-52O;FN$;*SX?PqdKr&YUpkg=#C%q^@Vto(XHJUj[5r8/Igf_UuRQ+;okI`ujX(VB@;ZDPPcWBIM:1mq)"S&MB\(,nMDReMqk`XaD9V\*4~>
endstream
endobj
8 0 obj
+721 -721
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -176,7 +176,7 @@ typedef char SQChar;
#define MAX_CHAR 0xFF
#endif
#define SQUIRREL_VERSION _SC("Squirrel 2.2.3 stable - With custom OpenTTD modifications")
#define SQUIRREL_VERSION _SC("Squirrel 2.2.4 stable - With custom OpenTTD modifications")
#define SQUIRREL_COPYRIGHT _SC("Copyright (C) 2003-2009 Alberto Demichelis")
#define SQUIRREL_AUTHOR _SC("Alberto Demichelis")
+2 -6
View File
@@ -334,12 +334,8 @@ bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQIntege
SQInteger nargs = args;
if (paramssize != nargs) {
SQInteger ndef = func->_ndefaultparams;
if(ndef && nargs < paramssize) {
SQInteger diff = paramssize - nargs;
if (diff > ndef) {
Raise_Error(_SC("wrong number of parameters"));
return false;
}
SQInteger diff;
if(ndef && nargs < paramssize && (diff = paramssize - nargs) <= ndef) {
for(SQInteger n = ndef - diff; n < ndef; n++) {
_stack._vals[stackbase + (nargs++)] = closure->_defaultparams[n];
}
-2
View File
@@ -35,7 +35,6 @@
#include "api/ai_basestation.hpp.sq"
#include "api/ai_bridge.hpp.sq"
#include "api/ai_bridgelist.hpp.sq"
#include "api/ai_buoylist.hpp.sq"
#include "api/ai_cargo.hpp.sq"
#include "api/ai_cargolist.hpp.sq"
#include "api/ai_company.hpp.sq"
@@ -177,7 +176,6 @@ void AIInstance::RegisterAPI()
SQAIBridge_Register(this->engine);
SQAIBridgeList_Register(this->engine);
SQAIBridgeList_Length_Register(this->engine);
SQAIBuoyList_Register(this->engine);
SQAICargo_Register(this->engine);
SQAICargoList_Register(this->engine);
SQAICargoList_IndustryAccepting_Register(this->engine);
+1 -1
View File
@@ -141,7 +141,7 @@ public:
void Sort(SorterType sorter, bool ascending);
/**
* Add one list to an other one.
* Add one list to another one.
* @param list The list that will be added to the caller.
* @post The list to be added ('list') stays unmodified.
* @note All added items keep their value as it was in 'list'.
-21
View File
@@ -1,21 +0,0 @@
/* $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 ai_buoylist.cpp Implementation of AIBuoyList and friends. */
#include "ai_buoylist.hpp"
#include "../../waypoint_base.h"
AIBuoyList::AIBuoyList()
{
Waypoint *wp;
FOR_ALL_WAYPOINTS(wp) {
if (wp->facilities & FACIL_DOCK) this->AddItem(wp->xy);
}
}
-28
View File
@@ -1,28 +0,0 @@
/* $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 ai_buoylist.hpp List all the buoys. */
#ifndef AI_BUOYLIST_HPP
#define AI_BUOYLIST_HPP
#include "ai_abstractlist.hpp"
/**
* Creates a list of buoys.
* @ingroup AIList
*/
class AIBuoyList : public AIAbstractList {
public:
static const char *GetClassName() { return "AIBuoyList"; }
AIBuoyList();
};
#endif /* AI_BUOYLIST_HPP */
-30
View File
@@ -1,30 +0,0 @@
/* $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/>.
*/
/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */
#include "ai_buoylist.hpp"
namespace SQConvert {
/* Allow AIBuoyList to be used as Squirrel parameter */
template <> AIBuoyList *GetParam(ForceType<AIBuoyList *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBuoyList *)instance; }
template <> AIBuoyList &GetParam(ForceType<AIBuoyList &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBuoyList *)instance; }
template <> const AIBuoyList *GetParam(ForceType<const AIBuoyList *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBuoyList *)instance; }
template <> const AIBuoyList &GetParam(ForceType<const AIBuoyList &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBuoyList *)instance; }
template <> int Return<AIBuoyList *>(HSQUIRRELVM vm, AIBuoyList *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIBuoyList", res, NULL, DefSQDestructorCallback<AIBuoyList>); return 1; }
}; // namespace SQConvert
void SQAIBuoyList_Register(Squirrel *engine)
{
DefSQClass <AIBuoyList> SQAIBuoyList("AIBuoyList");
SQAIBuoyList.PreRegister(engine, "AIAbstractList");
SQAIBuoyList.AddConstructor<void (AIBuoyList::*)(), 1>(engine, "x");
SQAIBuoyList.PostRegister(engine);
}
+17 -1
View File
@@ -20,7 +20,7 @@
*
* API additions:
* \li AIBaseStation
* \li AIBuoyList
* \li AIEngine::IsBuildable
* \li AIEventCompanyAskMerger
* \li AIIndustry::GetLastMonthTransportedPercentage
* \li AIOrder::AIOF_GOTO_NEAREST_DEPOT
@@ -33,12 +33,16 @@
* \li AISubsidy::GetDestinationIndex
* \li AITown::GetLastMonthTransportedPercentage
* \li AIVehicleList_Depot
* \li AIWaypoint::WaypointType
* \li AIWaypoint::HasWaypointType
* \li Some error messages to AIWaypoint
*
* API removals:
* \li AIOrder::ChangeOrder, use AIOrder::SetOrderFlags instead
* \li AIRail::RemoveRailStationTileRect, use AIRail::RemoveRailStationTileRectangle instead
* \li AIRail::RemoveRailWaypoint, use AIRail::RemoveRailWaypointTileRectangle instead
* \li AISign::GetMaxSignID, use AISignList instead
* \li AIStation::ERR_STATION_TOO_LARGE, use AIError::ERR_STATION_TOO_SPREAD_OUT instead
* \li AISubsidy::SourceIsTown, use AISubsidy::GetSourceType instead
* \li AISubsidy::GetSource, use AISubsidy::GetSourceIndex instead
* \li AISubsidy::DestinationIsTown, use AISubsidy::GetDestinationType instead
@@ -56,6 +60,8 @@
* AIBaseStation, but can still be used as AIStation.GetConstructionDate
* \li WaypointID was replaced by StationID. All WaypointIDs from previous
* savegames are invalid. Use STATION_INVALID instead of WAYPOINT_INVALID
* \li AIWaypointList constructor now needs a WaypointType similiar to AIStationList,
* it can also handle buoys.
* \li AIVehicleList_Station now also works for waypoints
* \li Stations can be build over rail without signals that is in the right
* direction for the to-be built station. It will also convert the rail if
@@ -81,6 +87,16 @@
* For GetCargoType the first most used cargo type is returned.
* \li AIIndustryType::GetConstructionCost() now returns -1 if the industry is
* neither buildable nor prospectable.
* \li AIEngine::IsValidEngine will now return true if you have at least one
* vehicle of that type in your company, regardless if it's still buildable
* or not. AIEngine::IsBuildable returns only true when you can actually
* build an engine.
* \li AITile::GetCargoProduction will now return the number of producers,
* including houses instead the number of producing tiles. This means that
* also industries that do not have a tile within the radius, but where
* the search bounding box and the industry's bounding box intersect, are
* counted. Previously these industries (and their cargos), although they
* produced cargo for a station at the given location, were not returned.
*
* \b 0.7.5
*
+8
View File
@@ -12,6 +12,7 @@
#include "ai_engine.hpp"
#include "ai_cargo.hpp"
#include "../../company_func.h"
#include "../../company_base.h"
#include "../../strings_func.h"
#include "../../settings_type.h"
#include "../../rail.h"
@@ -20,6 +21,13 @@
#include "table/strings.h"
/* static */ bool AIEngine::IsValidEngine(EngineID engine_id)
{
const Engine *e = ::Engine::GetIfValid(engine_id);
return e != NULL && (HasBit(e->company_avail, _current_company) || ::Company::Get(_current_company)->num_engines[engine_id] > 0);
}
/* static */ bool AIEngine::IsBuildable(EngineID engine_id)
{
const Engine *e = ::Engine::GetIfValid(engine_id);
return e != NULL && HasBit(e->company_avail, _current_company);
+9 -1
View File
@@ -26,12 +26,20 @@ public:
static const char *GetClassName() { return "AIEngine"; }
/**
* Checks whether the given engine type is valid and buildable by you.
* Checks whether the given engine type is valid. An engine is valid if you
* have at least one vehicle of this engine or it's currently buildable.
* @param engine_id The engine to check.
* @return True if and only if the engine type is valid.
*/
static bool IsValidEngine(EngineID engine_id);
/**
* Checks whether the given engine type is buildable by you.
* @param engine_id The engine to check.
* @return True if and only if the engine type is buildable.
*/
static bool IsBuildable(EngineID engine_id);
/**
* Get the name of an engine.
* @param engine_id The engine to get the name of.
+1
View File
@@ -27,6 +27,7 @@ void SQAIEngine_Register(Squirrel *engine)
SQAIEngine.AddConstructor<void (AIEngine::*)(), 1>(engine, "x");
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::IsValidEngine, "IsValidEngine", 2, ".i");
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::IsBuildable, "IsBuildable", 2, ".i");
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::GetName, "GetName", 2, ".i");
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::GetCargoType, "GetCargoType", 2, ".i");
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::CanRefitCargo, "CanRefitCargo", 3, ".ii");
+1
View File
@@ -61,6 +61,7 @@ public:
ERR_CAT_ROAD, //!< Error messages related to building / maintaining roads.
ERR_CAT_ORDER, //!< Error messages related to managing orders.
ERR_CAT_MARINE, //!< Error messages related to building / removing ships, docks and channels.
ERR_CAT_WAYPOINT, //!< Error messages related to building / maintaining waypoints.
/**
* DO NOT USE! The error bitsize determines how many errors can be stored in
+1
View File
@@ -44,6 +44,7 @@ void SQAIError_Register(Squirrel *engine)
SQAIError.DefSQConst(engine, AIError::ERR_CAT_ROAD, "ERR_CAT_ROAD");
SQAIError.DefSQConst(engine, AIError::ERR_CAT_ORDER, "ERR_CAT_ORDER");
SQAIError.DefSQConst(engine, AIError::ERR_CAT_MARINE, "ERR_CAT_MARINE");
SQAIError.DefSQConst(engine, AIError::ERR_CAT_WAYPOINT, "ERR_CAT_WAYPOINT");
SQAIError.DefSQConst(engine, AIError::ERR_CAT_BIT_SIZE, "ERR_CAT_BIT_SIZE");
SQAIError.DefSQConst(engine, AIError::ERR_NONE, "ERR_NONE");
SQAIError.DefSQConst(engine, AIError::ERR_UNKNOWN, "ERR_UNKNOWN");
+1 -1
View File
@@ -114,7 +114,7 @@
/* static */ bool AIGroup::SetAutoReplace(GroupID group_id, EngineID engine_id_old, EngineID engine_id_new)
{
EnforcePrecondition(false, IsValidGroup(group_id) || group_id == GROUP_ALL);
EnforcePrecondition(false, AIEngine::IsValidEngine(engine_id_new));
EnforcePrecondition(false, AIEngine::IsBuildable(engine_id_new));
return AIObject::DoCommand(0, group_id << 16, (engine_id_new << 16) | engine_id_old, CMD_SET_AUTOREPLACE);
}
+1 -1
View File
@@ -149,7 +149,7 @@ public:
* @param engine_id_old The engine id to start replacing.
* @param engine_id_new The engine id to replace with.
* @pre IsValidGroup(group_id) || group_id == GROUP_ALL.
* @pre AIEngine.IsValidEngine(engine_id_new).
* @pre AIEngine.IsBuildable(engine_id_new).
* @note To stop autoreplacing engine_id_old, call StopAutoReplace(group_id, engine_id_old).
*/
static bool SetAutoReplace(GroupID group_id, EngineID engine_id_old, EngineID engine_id_new);
+4 -4
View File
@@ -115,7 +115,7 @@
{
if (!IsValidIndustry(industry_id)) return INVALID_TILE;
return ::Industry::Get(industry_id)->xy;
return ::Industry::Get(industry_id)->location.tile;
}
/* static */ int32 AIIndustry::GetAmountOfStationsAround(IndustryID industry_id)
@@ -124,7 +124,7 @@
Industry *ind = ::Industry::Get(industry_id);
StationList stations;
::FindStationsAroundTiles(ind->xy, ind->width, ind->height, &stations);
::FindStationsAroundTiles(ind->location, &stations);
return (int32)stations.Length();
}
@@ -162,7 +162,7 @@
if (!HasHeliport(industry_id)) return INVALID_TILE;
const Industry *ind = ::Industry::Get(industry_id);
TILE_LOOP(tile_cur, ind->width, ind->height, ind->xy) {
TILE_AREA_LOOP(tile_cur, ind->location) {
if (IsTileType(tile_cur, MP_STATION) && IsOilRig(tile_cur)) {
return tile_cur;
}
@@ -184,7 +184,7 @@
if (!HasDock(industry_id)) return INVALID_TILE;
const Industry *ind = ::Industry::Get(industry_id);
TILE_LOOP(tile_cur, ind->width, ind->height, ind->xy) {
TILE_AREA_LOOP(tile_cur, ind->location) {
if (IsTileType(tile_cur, MP_STATION) && IsOilRig(tile_cur)) {
return tile_cur;
}
+3
View File
@@ -175,6 +175,9 @@ static const Order *ResolveOrder(VehicleID vehicle_id, AIOrder::OrderPosition or
switch (order->GetType()) {
case OT_GOTO_DEPOT: {
/* We don't know where the nearest depot is... (yet) */
if (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) return INVALID_TILE;
if (v->type != VEH_AIRCRAFT) return ::Depot::Get(order->GetDestination())->xy;
/* Aircraft's hangars are referenced by StationID, not DepotID */
const Station *st = ::Station::Get(order->GetDestination());
+1 -1
View File
@@ -67,7 +67,7 @@ public:
/** Stop in the depot instead of only go there for servicing; only for depots. */
AIOF_STOP_IN_DEPOT = 1 << 3,
/** Go to nearest depot. */
AIOF_GOTO_NEAREST_DEPOT = 1 << 4,
AIOF_GOTO_NEAREST_DEPOT = 1 << 8,
/** All flags related to non-stop settings. */
AIOF_NON_STOP_FLAGS = AIOF_NON_STOP_INTERMEDIATE | AIOF_NON_STOP_DESTINATION,
+1 -4
View File
@@ -31,9 +31,6 @@ public:
/** Base for station related errors */
ERR_STATION_BASE = AIError::ERR_CAT_STATION << AIError::ERR_CAT_BIT_SIZE,
/** The station size exceeds the station spread */
ERR_STATION_TOO_LARGE, // [STR_ERROR_STATION_TOO_SPREAD_OUT]
/** The station is build too close to another station, airport or dock */
ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION, // [STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT, STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION, STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK]
@@ -41,7 +38,7 @@ public:
ERR_STATION_TOO_MANY_STATIONS, // [STR_ERROR_TOO_MANY_STATIONS_LOADING, STR_ERROR_TOO_MANY_TRUCK_STOPS, STR_ERROR_TOO_MANY_BUS_STOPS]
/** There are too many stations, airports of docks in a town */
ERR_STATION_TOO_MANY_STATIONS_IN_TOWN, // []
ERR_STATION_TOO_MANY_STATIONS_IN_TOWN, // [STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT]
};
/**
+7 -9
View File
@@ -33,7 +33,6 @@ void SQAIStation_Register(Squirrel *engine)
SQAIStation.AddConstructor<void (AIStation::*)(), 1>(engine, "x");
SQAIStation.DefSQConst(engine, AIStation::ERR_STATION_BASE, "ERR_STATION_BASE");
SQAIStation.DefSQConst(engine, AIStation::ERR_STATION_TOO_LARGE, "ERR_STATION_TOO_LARGE");
SQAIStation.DefSQConst(engine, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION, "ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION");
SQAIStation.DefSQConst(engine, AIStation::ERR_STATION_TOO_MANY_STATIONS, "ERR_STATION_TOO_MANY_STATIONS");
SQAIStation.DefSQConst(engine, AIStation::ERR_STATION_TOO_MANY_STATIONS_IN_TOWN, "ERR_STATION_TOO_MANY_STATIONS_IN_TOWN");
@@ -44,15 +43,14 @@ void SQAIStation_Register(Squirrel *engine)
SQAIStation.DefSQConst(engine, AIStation::STATION_DOCK, "STATION_DOCK");
SQAIStation.DefSQConst(engine, AIStation::STATION_ANY, "STATION_ANY");
AIError::RegisterErrorMap(STR_ERROR_STATION_TOO_SPREAD_OUT, AIStation::ERR_STATION_TOO_LARGE);
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_STATIONS_LOADING, AIStation::ERR_STATION_TOO_MANY_STATIONS);
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_TRUCK_STOPS, AIStation::ERR_STATION_TOO_MANY_STATIONS);
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_BUS_STOPS, AIStation::ERR_STATION_TOO_MANY_STATIONS);
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_STATIONS_LOADING, AIStation::ERR_STATION_TOO_MANY_STATIONS);
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_TRUCK_STOPS, AIStation::ERR_STATION_TOO_MANY_STATIONS);
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_BUS_STOPS, AIStation::ERR_STATION_TOO_MANY_STATIONS);
AIError::RegisterErrorMap(STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT, AIStation::ERR_STATION_TOO_MANY_STATIONS_IN_TOWN);
AIError::RegisterErrorMapString(AIStation::ERR_STATION_TOO_LARGE, "ERR_STATION_TOO_LARGE");
AIError::RegisterErrorMapString(AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION, "ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION");
AIError::RegisterErrorMapString(AIStation::ERR_STATION_TOO_MANY_STATIONS, "ERR_STATION_TOO_MANY_STATIONS");
AIError::RegisterErrorMapString(AIStation::ERR_STATION_TOO_MANY_STATIONS_IN_TOWN, "ERR_STATION_TOO_MANY_STATIONS_IN_TOWN");
+6 -4
View File
@@ -17,6 +17,7 @@
#include "../../road_map.h"
#include "../../water_map.h"
#include "../../clear_map.h"
#include "../../tree_map.h"
#include "../../town.h"
#include "../../landscape.h"
@@ -68,7 +69,8 @@
{
if (!::IsValidTile(tile)) return false;
return ::IsTileType(tile, MP_WATER) && ::IsCoast(tile);
return (::IsTileType(tile, MP_WATER) && ::IsCoast(tile)) ||
(::IsTileType(tile, MP_TREES) && ::GetTreeGround(tile) == TREE_GROUND_SHORE);
}
/* static */ bool AITile::IsStationTile(TileIndex tile)
@@ -110,21 +112,21 @@
{
if (!::IsValidTile(tile)) return false;
return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_ROCKS));
return (::IsTileType(tile, MP_CLEAR) && ::GetRawClearGround(tile) == ::CLEAR_ROCKS);
}
/* static */ bool AITile::IsRoughTile(TileIndex tile)
{
if (!::IsValidTile(tile)) return false;
return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_ROUGH));
return (::IsTileType(tile, MP_CLEAR) && ::GetRawClearGround(tile) == ::CLEAR_ROUGH);
}
/* static */ bool AITile::IsSnowTile(TileIndex tile)
{
if (!::IsValidTile(tile)) return false;
return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_SNOW));
return (::IsTileType(tile, MP_CLEAR) && ::IsSnowTile(tile));
}
/* static */ bool AITile::IsDesertTile(TileIndex tile)
+5 -6
View File
@@ -140,7 +140,8 @@ public:
* @param tile The tile to check.
* @pre AIMap::IsValidTile(tile).
* @return True if and only if the tile is a coast tile.
* @note Building on coast tiles in general is more expensive.
* @note Building on coast tiles in general is more expensive. This is not
* true if there are also trees on the tile, see #HasTreeOnTile.
*/
static bool IsCoastTile(TileIndex tile);
@@ -308,9 +309,8 @@ public:
static int32 GetCargoAcceptance(TileIndex tile, CargoID cargo_type, int width, int height, int radius);
/**
* Checks how many tiles in the radius produces this cargo.
* It creates a radius around the tile, and adds up all tiles that produce
* this cargo.
* Checks how many producers in the radius produces this cargo.
* It creates a radius around the tile, and counts all producer of this cargo.
* @param tile The tile to check on.
* @param cargo_type The cargo to check the production of.
* @param width The width of the station.
@@ -320,8 +320,7 @@ public:
* @pre width > 0.
* @pre height > 0.
* @pre radius >= 0.
* @return The tiles that produce this cargo within radius of the tile.
* @note Town(houses) are not included in the value.
* @return The number of producers that produce this cargo within radius of the tile.
*/
static int32 GetCargoProduction(TileIndex tile, CargoID cargo_type, int width, int height, int radius);
+10 -46
View File
@@ -14,32 +14,13 @@
#include "../../industry.h"
#include "../../station_base.h"
void AITileList::FixRectangleSpan(TileIndex &t1, TileIndex &t2)
{
uint x1 = ::TileX(t1);
uint x2 = ::TileX(t2);
uint y1 = ::TileY(t1);
uint y2 = ::TileY(t2);
if (x1 >= x2) ::Swap(x1, x2);
if (y1 >= y2) ::Swap(y1, y2);
t1 = ::TileXY(x1, y1);
t2 = ::TileXY(x2, y2);
}
void AITileList::AddRectangle(TileIndex t1, TileIndex t2)
{
if (!::IsValidTile(t1)) return;
if (!::IsValidTile(t2)) return;
this->FixRectangleSpan(t1, t2);
uint w = TileX(t2) - TileX(t1) + 1;
uint h = TileY(t2) - TileY(t1) + 1;
TILE_LOOP(t, w, h, t1) this->AddItem(t);
TileArea ta(t1, t2);
TILE_AREA_LOOP(t, ta) this->AddItem(t);
}
void AITileList::AddTile(TileIndex tile)
@@ -54,12 +35,8 @@ void AITileList::RemoveRectangle(TileIndex t1, TileIndex t2)
if (!::IsValidTile(t1)) return;
if (!::IsValidTile(t2)) return;
this->FixRectangleSpan(t1, t2);
uint w = TileX(t2) - TileX(t1) + 1;
uint h = TileY(t2) - TileY(t1) + 1;
TILE_LOOP(t, w, h, t1) this->RemoveItem(t);
TileArea ta(t1, t2);
TILE_AREA_LOOP(t, ta) this->RemoveItem(t);
}
void AITileList::RemoveTile(TileIndex tile)
@@ -86,7 +63,7 @@ AITileList_IndustryAccepting::AITileList_IndustryAccepting(IndustryID industry_i
if (!_settings_game.station.modified_catchment) radius = CA_UNMODIFIED;
TILE_LOOP(cur_tile, i->width + radius * 2, i->height + radius * 2, i->xy - ::TileDiffXY(radius, radius)) {
TILE_LOOP(cur_tile, i->location.w + radius * 2, i->location.h + radius * 2, i->location.tile - ::TileDiffXY(radius, radius)) {
if (!::IsValidTile(cur_tile)) continue;
/* Exclude all tiles that belong to this industry */
if (::IsTileType(cur_tile, MP_INDUSTRY) && ::GetIndustryIndex(cur_tile) == industry_id) continue;
@@ -113,32 +90,19 @@ AITileList_IndustryProducing::AITileList_IndustryProducing(IndustryID industry_i
const Industry *i = ::Industry::Get(industry_id);
/* Check if this industry produces anything */
{
bool cargo_produces = false;
for (byte j = 0; j < lengthof(i->produced_cargo); j++) {
if (i->produced_cargo[j] != CT_INVALID) cargo_produces = true;
}
if (!cargo_produces) return;
bool cargo_produces = false;
for (byte j = 0; j < lengthof(i->produced_cargo); j++) {
if (i->produced_cargo[j] != CT_INVALID) cargo_produces = true;
}
if (!cargo_produces) return;
if (!_settings_game.station.modified_catchment) radius = CA_UNMODIFIED;
TILE_LOOP(cur_tile, i->width + radius * 2, i->height + radius * 2, i->xy - ::TileDiffXY(radius, radius)) {
TILE_LOOP(cur_tile, i->location.w + radius * 2, i->location.h + radius * 2, i->location.tile - ::TileDiffXY(radius, radius)) {
if (!::IsValidTile(cur_tile)) continue;
/* Exclude all tiles that belong to this industry */
if (::IsTileType(cur_tile, MP_INDUSTRY) && ::GetIndustryIndex(cur_tile) == industry_id) continue;
/* Only add the tile if it produces the cargo (a bug in OpenTTD makes this
* inconsitance). */
CargoArray produced = ::GetProductionAroundTiles(cur_tile, 1, 1, radius);
{
bool cargo_produces = false;
for (byte j = 0; j < lengthof(i->produced_cargo); j++) {
if (i->produced_cargo[j] != CT_INVALID && produced[i->produced_cargo[j]] != 0) cargo_produces = true;
}
if (!cargo_produces) continue;
}
this->AddTile(cur_tile);
}
}
-10
View File
@@ -23,16 +23,6 @@ class AITileList : public AIAbstractList {
public:
static const char *GetClassName() { return "AITileList"; }
private:
/**
* Make sure t1.x is smaller than t2.x and t1.y is smaller than t2.y.
* They are swapped to ensure they are after calling this function.
* @param t1 one of the corners of the rectangle.
* @param t2 the other corner of the rectangle.
*/
void FixRectangleSpan(TileIndex &t1, TileIndex &t2);
public:
/**
* Adds the rectangle between tile_from and tile_to to the to-be-evaluated tiles.
* @param tile_from One corner of the tiles to add.
+1 -1
View File
@@ -36,7 +36,7 @@ public:
/** The start tile must slope either North, South, West or East */
ERR_TUNNEL_START_SITE_UNSUITABLE, // [STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL]
/** An other tunnel is in the way */
/** Another tunnel is in the way */
ERR_TUNNEL_ANOTHER_TUNNEL_IN_THE_WAY, // [STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY]
/** Unable to excavate land at the end to create the tunnel's exit */
+1 -1
View File
@@ -64,7 +64,7 @@
/* static */ VehicleID AIVehicle::BuildVehicle(TileIndex depot, EngineID engine_id)
{
EnforcePrecondition(INVALID_VEHICLE, AIEngine::IsValidEngine(engine_id));
EnforcePrecondition(INVALID_VEHICLE, AIEngine::IsBuildable(engine_id));
::VehicleType type = ::Engine::Get(engine_id)->type;
+1 -1
View File
@@ -300,7 +300,7 @@ public:
* @param engine_id The engine to use for this vehicle.
* @pre The tile at depot has a depot that can build the engine and
* is owned by you.
* @pre IsValidEngine(engine_id).
* @pre AIEngine::IsBuildable(engine_id).
* @exception AIVehicle::ERR_VEHICLE_TOO_MANY
* @exception AIVehicle::ERR_VEHICLE_BUILD_DISABLED
* @exception AIVehicle::ERR_VEHICLE_WRONG_DEPOT
+11 -2
View File
@@ -11,18 +11,27 @@
#include "ai_waypoint.hpp"
#include "ai_rail.hpp"
#include "ai_marine.hpp"
#include "../../company_func.h"
#include "../../waypoint_base.h"
/* static */ bool AIWaypoint::IsValidWaypoint(StationID waypoint_id)
{
const Waypoint *wp = ::Waypoint::GetIfValid(waypoint_id);
return wp != NULL && wp->owner == _current_company;
return wp != NULL && (wp->owner == _current_company || wp->owner == OWNER_NONE);
}
/* static */ StationID AIWaypoint::GetWaypointID(TileIndex tile)
{
if (!AIRail::IsRailWaypointTile(tile)) return STATION_INVALID;
if (!AIRail::IsRailWaypointTile(tile) && !AIMarine::IsBuoyTile(tile)) return STATION_INVALID;
return ::GetStationIndex(tile);
}
/* static */ bool AIWaypoint::HasWaypointType(StationID waypoint_id, WaypointType waypoint_type)
{
if (!IsValidWaypoint(waypoint_id)) return false;
if (CountBits(waypoint_type) != 1) return false;
return (::Waypoint::Get(waypoint_id)->facilities & waypoint_type) != 0;
}
+34
View File
@@ -23,6 +23,30 @@ class AIWaypoint : public AIBaseStation {
public:
static const char *GetClassName() { return "AIWaypoint"; }
/**
* Type of waypoints known in the game.
*/
enum WaypointType {
/* Values are important, as they represent the internal state of the game. */
WAYPOINT_RAIL = 0x01, //!< Rail waypoint
WAYPOINT_BUOY = 0x10, //!< Buoy
WAYPOINT_ANY = 0x11, //!< All waypoint types
};
/**
* All waypoint related error messages.
*/
enum ErrorMessages {
/** Base for waypoint related errors */
ERR_WAYPOINT_BASE = AIError::ERR_CAT_WAYPOINT << AIError::ERR_CAT_BIT_SIZE,
/** The waypoint is build too close to another waypoint */
ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT, // [STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT]
/** The waypoint would join more then one existing waypoint together. */
ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS, // [STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING]
};
/**
* Checks whether the given waypoint is valid and owned by you.
* @param waypoint_id The waypoint to check.
@@ -37,6 +61,16 @@ public:
* @return StationID of the waypoint.
*/
static StationID GetWaypointID(TileIndex tile);
/**
* Check if any part of the waypoint contains a waypoint of the type waypoint_type
* @param waypoint_id The waypoint to look at.
* @param waypoint_type The WaypointType to look for.
* @return True if the waypoint has a waypoint part of the type waypoint_type.
*/
static bool HasWaypointType(StationID waypoint_id, WaypointType waypoint_type);
};
DECLARE_ENUM_AS_BIT_SET(AIWaypoint::WaypointType);
#endif /* AI_WAYPOINT_HPP */
+20
View File
@@ -12,6 +12,12 @@
#include "ai_waypoint.hpp"
namespace SQConvert {
/* Allow enums to be used as Squirrel parameters */
template <> AIWaypoint::WaypointType GetParam(ForceType<AIWaypoint::WaypointType>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AIWaypoint::WaypointType)tmp; }
template <> int Return<AIWaypoint::WaypointType>(HSQUIRRELVM vm, AIWaypoint::WaypointType res) { sq_pushinteger(vm, (int32)res); return 1; }
template <> AIWaypoint::ErrorMessages GetParam(ForceType<AIWaypoint::ErrorMessages>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AIWaypoint::ErrorMessages)tmp; }
template <> int Return<AIWaypoint::ErrorMessages>(HSQUIRRELVM vm, AIWaypoint::ErrorMessages res) { sq_pushinteger(vm, (int32)res); return 1; }
/* Allow AIWaypoint to be used as Squirrel parameter */
template <> AIWaypoint *GetParam(ForceType<AIWaypoint *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIWaypoint *)instance; }
template <> AIWaypoint &GetParam(ForceType<AIWaypoint &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIWaypoint *)instance; }
@@ -26,8 +32,22 @@ void SQAIWaypoint_Register(Squirrel *engine)
SQAIWaypoint.PreRegister(engine, "AIBaseStation");
SQAIWaypoint.AddConstructor<void (AIWaypoint::*)(), 1>(engine, "x");
SQAIWaypoint.DefSQConst(engine, AIWaypoint::WAYPOINT_RAIL, "WAYPOINT_RAIL");
SQAIWaypoint.DefSQConst(engine, AIWaypoint::WAYPOINT_BUOY, "WAYPOINT_BUOY");
SQAIWaypoint.DefSQConst(engine, AIWaypoint::WAYPOINT_ANY, "WAYPOINT_ANY");
SQAIWaypoint.DefSQConst(engine, AIWaypoint::ERR_WAYPOINT_BASE, "ERR_WAYPOINT_BASE");
SQAIWaypoint.DefSQConst(engine, AIWaypoint::ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT, "ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT");
SQAIWaypoint.DefSQConst(engine, AIWaypoint::ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS, "ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS");
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT, AIWaypoint::ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT);
AIError::RegisterErrorMap(STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING, AIWaypoint::ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS);
AIError::RegisterErrorMapString(AIWaypoint::ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT, "ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT");
AIError::RegisterErrorMapString(AIWaypoint::ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS, "ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS");
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::IsValidWaypoint, "IsValidWaypoint", 2, ".i");
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::GetWaypointID, "GetWaypointID", 2, ".i");
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::HasWaypointType, "HasWaypointType", 3, ".ii");
SQAIWaypoint.PostRegister(engine);
}
+3 -2
View File
@@ -15,11 +15,12 @@
#include "../../vehicle_base.h"
#include "../../waypoint_base.h"
AIWaypointList::AIWaypointList()
AIWaypointList::AIWaypointList(AIWaypoint::WaypointType waypoint_type)
{
const Waypoint *wp;
FOR_ALL_WAYPOINTS(wp) {
if (wp->facilities & FACIL_TRAIN && wp->owner == _current_company) this->AddItem(wp->index);
if ((wp->facilities & waypoint_type) &&
(wp->owner == _current_company || wp->owner == OWNER_NONE)) this->AddItem(wp->index);
}
}
+5 -1
View File
@@ -13,6 +13,7 @@
#define AI_WAYPOINTLIST_HPP
#include "ai_abstractlist.hpp"
#include "ai_waypoint.hpp"
/**
* Creates a list of waypoints of which you are the owner.
@@ -22,7 +23,10 @@ class AIWaypointList : public AIAbstractList {
public:
static const char *GetClassName() { return "AIWaypointList"; }
AIWaypointList();
/**
* @param waypoint_type The type of waypoint to make a list of waypoints for.
*/
AIWaypointList(AIWaypoint::WaypointType waypoint_type);
};
/**
+1 -1
View File
@@ -24,7 +24,7 @@ void SQAIWaypointList_Register(Squirrel *engine)
{
DefSQClass <AIWaypointList> SQAIWaypointList("AIWaypointList");
SQAIWaypointList.PreRegister(engine, "AIAbstractList");
SQAIWaypointList.AddConstructor<void (AIWaypointList::*)(), 1>(engine, "x");
SQAIWaypointList.AddConstructor<void (AIWaypointList::*)(AIWaypoint::WaypointType waypoint_type), 2>(engine, "xi");
SQAIWaypointList.PostRegister(engine);
}
+4 -2
View File
@@ -137,7 +137,7 @@ static const AirportMovingData _airport_moving_data_town[] = {
};
/* Metropolitan Airport (metropolitan) - 2 runways */
static const AirportMovingData _airport_moving_data_metropolitan[27] = {
static const AirportMovingData _airport_moving_data_metropolitan[28] = {
AMD( 85, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar
AMD( 85, 22, 0, DIR_N ), // 01 Taxi to right outside depot
AMD( 26, 41, AMED_EXACTPOS, DIR_SW), // 02 Terminal 1
@@ -165,6 +165,7 @@ static const AirportMovingData _airport_moving_data_metropolitan[27] = {
AMD( 44, 63, AMED_HELI_RAISE, DIR_N ), // 24 Helicopter takeoff
AMD( 15, 54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Get in position above landing spot helicopter
AMD( 15, 54, AMED_HELI_LOWER, DIR_N ), // 26 Helicopter landing
AMD( 21, 58, AMED_EXACTPOS, DIR_SW), // 27 Transitions after landing to on-ground movement
};
/* International Airport (international) - 2 runways, 6 terminals, dedicated helipod */
@@ -554,7 +555,7 @@ static const AirportFTAbuildup _airport_fta_metropolitan[] = {
{ 15, 0, RUNWAY_IN_block, 16 },
{ 16, 255, RUNWAY_IN_block, 0 }, { 16, ENDLANDING, IN_WAY_block, 17 },
{ 17, 255, RUNWAY_OUT_block, 0 }, { 17, ENDLANDING, IN_WAY_block, 18 },
{ 18, ENDLANDING, IN_WAY_block, 7 },
{ 18, ENDLANDING, IN_WAY_block, 27 },
/* In Air */
{ 19, 0, NOTHING_block, 20 },
{ 20, 0, NOTHING_block, 21 },
@@ -565,6 +566,7 @@ static const AirportFTAbuildup _airport_fta_metropolitan[] = {
{ 24, HELITAKEOFF, NOTHING_block, 0 },
{ 25, HELILANDING, IN_WAY_block, 26 },
{ 26, HELIENDLANDING, IN_WAY_block, 18 },
{ 27, 255, TAXIWAY_BUSY_block, 27 }, { 27, TERM1, TERM1_block, 2 }, { 27, 0, 0, 7 },
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
};
+11 -8
View File
@@ -202,14 +202,6 @@ void Blitter_32bppAnim::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomL
return;
}
if (_screen.width != this->anim_buf_width || _screen.height != this->anim_buf_height) {
/* The size of the screen changed; we can assume we can wipe all data from our buffer */
free(this->anim_buf);
this->anim_buf = CallocT<uint8>(_screen.width * _screen.height);
this->anim_buf_width = _screen.width;
this->anim_buf_height = _screen.height;
}
switch (mode) {
default: NOT_REACHED();
case BM_NORMAL: Draw<BM_NORMAL> (bp, zoom); return;
@@ -448,3 +440,14 @@ Blitter::PaletteAnimation Blitter_32bppAnim::UsePaletteAnimation()
{
return Blitter::PALETTE_ANIMATION_BLITTER;
}
void Blitter_32bppAnim::PostResize()
{
if (_screen.width != this->anim_buf_width || _screen.height != this->anim_buf_height) {
/* The size of the screen changed; we can assume we can wipe all data from our buffer */
free(this->anim_buf);
this->anim_buf = CallocT<uint8>(_screen.width * _screen.height);
this->anim_buf_width = _screen.width;
this->anim_buf_height = _screen.height;
}
}
+1
View File
@@ -42,6 +42,7 @@ public:
/* virtual */ const char *GetName() { return "32bpp-anim"; }
/* virtual */ int GetBytesPerPixel() { return 5; }
/* virtual */ void PostResize();
template <BlitterMode mode> void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
};
+5
View File
@@ -200,6 +200,11 @@ public:
*/
virtual int GetBytesPerPixel() = 0;
/**
* Post resize event
*/
virtual void PostResize() { };
virtual ~Blitter() { }
};
+24 -24
View File
@@ -63,19 +63,14 @@ void DrawHillyLandTile(const TileInfo *ti)
void DrawClearLandFence(const TileInfo *ti)
{
byte z = ti->z;
if (ti->tileh & SLOPE_S) {
z += TILE_HEIGHT;
if (ti->tileh == SLOPE_STEEP_S) z += TILE_HEIGHT;
}
int z = GetSlopeZInCorner(ti->tileh, CORNER_S);
if (GetFenceSW(ti->tile) != 0) {
DrawGroundSpriteAt(_clear_land_fence_sprites[GetFenceSW(ti->tile) - 1] + _fence_mod_by_tileh_sw[ti->tileh], PAL_NONE, ti->x, ti->y, z);
DrawGroundSpriteAt(_clear_land_fence_sprites[GetFenceSW(ti->tile) - 1] + _fence_mod_by_tileh_sw[ti->tileh], PAL_NONE, 0, 0, z);
}
if (GetFenceSE(ti->tile) != 0) {
DrawGroundSpriteAt(_clear_land_fence_sprites[GetFenceSE(ti->tile) - 1] + _fence_mod_by_tileh_se[ti->tileh], PAL_NONE, ti->x, ti->y, z);
DrawGroundSpriteAt(_clear_land_fence_sprites[GetFenceSE(ti->tile) - 1] + _fence_mod_by_tileh_se[ti->tileh], PAL_NONE, 0, 0, z);
}
}
@@ -156,30 +151,35 @@ void TileLoopClearHelper(TileIndex tile)
}
/* convert into snowy tiles */
/** Convert to or from snowy tiles. */
static void TileLoopClearAlps(TileIndex tile)
{
int k = GetTileZ(tile) - GetSnowLine() + TILE_HEIGHT;
if (k < 0) { // well below the snow line
if (!IsClearGround(tile, CLEAR_SNOW)) return;
if (GetClearDensity(tile) == 0) SetClearGroundDensity(tile, CLEAR_GRASS, 3);
if (k < 0) {
/* Below the snow line, do nothing if no snow. */
if (!IsSnowTile(tile)) return;
} else {
if (!IsClearGround(tile, CLEAR_SNOW)) {
SetClearGroundDensity(tile, CLEAR_SNOW, 0);
} else {
uint density = min((uint)k / TILE_HEIGHT, 3);
if (GetClearDensity(tile) < density) {
AddClearDensity(tile, 1);
} else if (GetClearDensity(tile) > density) {
AddClearDensity(tile, -1);
} else {
return;
}
/* At or above the snow line, make snow tile if needed. */
if (!IsSnowTile(tile)) {
MakeSnow(tile);
MarkTileDirtyByTile(tile);
return;
}
}
/* Update snow density. */
uint curent_density = GetClearDensity(tile);
uint req_density = (k < 0) ? 0u : min((uint)k / TILE_HEIGHT, 3);
if (curent_density < req_density) {
AddClearDensity(tile, 1);
} else if (curent_density > req_density) {
AddClearDensity(tile, -1);
} else {
/* Density at the required level. */
if (k >= 0) return;
ClearSnow(tile);
}
MarkTileDirtyByTile(tile);
}
+66 -2
View File
@@ -28,6 +28,30 @@ enum ClearGround {
};
/**
* Test if a tile is covered with snow.
* @param t the tile to check
* @pre IsTileType(t, MP_CLEAR)
* @return whether the tile is covered with snow.
*/
static inline bool IsSnowTile(TileIndex t)
{
assert(IsTileType(t, MP_CLEAR));
return HasBit(_m[t].m3, 4);
}
/**
* Get the type of clear tile but never return CLEAR_SNOW.
* @param t the tile to get the clear ground type of
* @pre IsTileType(t, MP_CLEAR)
* @return the ground type
*/
static inline ClearGround GetRawClearGround(TileIndex t)
{
assert(IsTileType(t, MP_CLEAR));
return (ClearGround)GB(_m[t].m5, 2, 3);
}
/**
* Get the type of clear tile.
* @param t the tile to get the clear ground type of
@@ -36,8 +60,8 @@ enum ClearGround {
*/
static inline ClearGround GetClearGround(TileIndex t)
{
assert(IsTileType(t, MP_CLEAR));
return (ClearGround)GB(_m[t].m5, 2, 3);
if (IsSnowTile(t)) return CLEAR_SNOW;
return GetRawClearGround(t);
}
/**
@@ -76,6 +100,18 @@ static inline void AddClearDensity(TileIndex t, int d)
_m[t].m5 += d;
}
/**
* Set the density of a non-field clear tile.
* @param t the tile to set the density of
* @param d the new density
* @pre IsTileType(t, MP_CLEAR)
*/
static inline void SetClearDensity(TileIndex t, uint d)
{
assert(IsTileType(t, MP_CLEAR));
SB(_m[t].m5, 0, 2, d);
}
/**
* Get the counter used to advance to the next clear density/field type.
@@ -269,4 +305,32 @@ static inline void MakeField(TileIndex t, uint field_type, IndustryID industry)
_me[t].m7 = 0;
}
/**
* Make a snow tile.
* @param t the tile to make snowy
* @pre GetClearGround(t) != CLEAR_SNOW
*/
static inline void MakeSnow(TileIndex t)
{
assert(GetClearGround(t) != CLEAR_SNOW);
SetBit(_m[t].m3, 4);
if (GetClearGround(t) == CLEAR_FIELDS) {
SetClearGroundDensity(t, CLEAR_GRASS, 0);
} else {
SetClearDensity(t, 0);
}
}
/**
* Clear the snow from a tile and return it to it's previous type.
* @param t the tile to clear of snow
* @pre GetClearGround(t) == CLEAR_SNOW
*/
static inline void ClearSnow(TileIndex t)
{
assert(GetClearGround(t) == CLEAR_SNOW);
ClrBit(_m[t].m3, 4);
SetClearDensity(t, 3);
}
#endif /* CLEAR_MAP_H */
+226 -2
View File
@@ -32,6 +32,8 @@
#include "rail.h"
#include "core/pool_func.hpp"
#include "settings_func.h"
#include "vehicle_base.h"
#include "vehicle_func.h"
#include "table/strings.h"
@@ -210,6 +212,12 @@ void SubtractMoneyFromCompanyFract(CompanyID company, CommandCost cst)
if (cost != 0) SubtractMoneyFromAnyCompany(c, CommandCost(cst.GetExpensesType(), cost));
}
/**
* Set the right DParams to get the name of an owner.
* @param owner the owner to get the name of.
* @param tile optional tile to get the right town.
* @pre if tile == 0, then owner can't be OWNER_TOWN.
*/
void GetNameOfOwner(Owner owner, TileIndex tile)
{
SetDParam(2, owner);
@@ -222,6 +230,7 @@ void GetNameOfOwner(Owner owner, TileIndex tile)
SetDParam(1, owner);
}
} else {
assert(tile != 0);
const Town *t = ClosestTownFromTile(tile, UINT_MAX);
SetDParam(0, STR_TOWN_NAME);
@@ -230,16 +239,32 @@ void GetNameOfOwner(Owner owner, TileIndex tile)
}
bool CheckOwnership(Owner owner)
/**
* Check whether the current owner owns something.
* If that isn't the case an appropriate error will be given.
* @param owner the owner of the thing to check.
* @param tile optional tile to get the right town.
* @pre if tile == 0 then the owner can't be OWNER_TOWN.
* @return true iff it's owned by the current company.
*/
bool CheckOwnership(Owner owner, TileIndex tile)
{
assert(owner < OWNER_END);
assert(owner != OWNER_TOWN || tile != 0);
if (owner == _current_company) return true;
_error_message = STR_ERROR_OWNED_BY;
GetNameOfOwner(owner, 0);
GetNameOfOwner(owner, tile);
return false;
}
/**
* Check whether the current owner owns the stuff on
* the given tile. If that isn't the case an
* appropriate error will be given.
* @param tile the tile to check.
* @return true iff it's owned by the current company.
*/
bool CheckTileOwnership(TileIndex tile)
{
Owner owner = GetTileOwner(tile);
@@ -832,3 +857,202 @@ CommandCost CmdCompanyCtrl(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
return CommandCost();
}
/** Change the company manager's face.
* @param tile unused
* @param flags operation to perform
* @param p1 unused
* @param p2 face bitmasked
* @param text unused
* @return the cost of this operation or an error
*/
CommandCost CmdSetCompanyManagerFace(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
{
CompanyManagerFace cmf = (CompanyManagerFace)p2;
if (!IsValidCompanyManagerFace(cmf)) return CMD_ERROR;
if (flags & DC_EXEC) {
Company::Get(_current_company)->face = cmf;
MarkWholeScreenDirty();
}
return CommandCost();
}
/** Change the company's company-colour
* @param tile unused
* @param flags operation to perform
* @param p1 bitstuffed:
* p1 bits 0-7 scheme to set
* p1 bits 8-9 set in use state or first/second colour
* @param p2 new colour for vehicles, property, etc.
* @param text unused
* @return the cost of this operation or an error
*/
CommandCost CmdSetCompanyColour(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
{
if (p2 >= 16) return CMD_ERROR; // max 16 colours
Colours colour = (Colours)p2;
LiveryScheme scheme = (LiveryScheme)GB(p1, 0, 8);
byte state = GB(p1, 8, 2);
if (scheme >= LS_END || state >= 3) return CMD_ERROR;
Company *c = Company::Get(_current_company);
/* Ensure no two companies have the same primary colour */
if (scheme == LS_DEFAULT && state == 0) {
const Company *cc;
FOR_ALL_COMPANIES(cc) {
if (cc != c && cc->colour == colour) return CMD_ERROR;
}
}
if (flags & DC_EXEC) {
switch (state) {
case 0:
c->livery[scheme].colour1 = colour;
/* If setting the first colour of the default scheme, adjust the
* original and cached company colours too. */
if (scheme == LS_DEFAULT) {
_company_colours[_current_company] = colour;
c->colour = colour;
}
break;
case 1:
c->livery[scheme].colour2 = colour;
break;
case 2:
c->livery[scheme].in_use = colour != 0;
/* Now handle setting the default scheme's in_use flag.
* This is different to the other schemes, as it signifies if any
* scheme is active at all. If this flag is not set, then no
* processing of vehicle types occurs at all, and only the default
* colours will be used. */
/* If enabling a scheme, set the default scheme to be in use too */
if (colour != 0) {
c->livery[LS_DEFAULT].in_use = true;
break;
}
/* Else loop through all schemes to see if any are left enabled.
* If not, disable the default scheme too. */
c->livery[LS_DEFAULT].in_use = false;
for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) {
if (c->livery[scheme].in_use) {
c->livery[LS_DEFAULT].in_use = true;
break;
}
}
break;
default:
break;
}
ResetVehicleColourMap();
MarkWholeScreenDirty();
/* Company colour data is indirectly cached. */
Vehicle *v;
FOR_ALL_VEHICLES(v) {
if (v->owner == _current_company) v->InvalidateNewGRFCache();
}
}
return CommandCost();
}
static bool IsUniqueCompanyName(const char *name)
{
const Company *c;
FOR_ALL_COMPANIES(c) {
if (c->name != NULL && strcmp(c->name, name) == 0) return false;
}
return true;
}
/** Change the name of the company.
* @param tile unused
* @param flags operation to perform
* @param p1 unused
* @param p2 unused
* @param text the new name or an empty string when resetting to the default
* @return the cost of this operation or an error
*/
CommandCost CmdRenameCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
{
bool reset = StrEmpty(text);
if (!reset) {
if (strlen(text) >= MAX_LENGTH_COMPANY_NAME_BYTES) return CMD_ERROR;
if (!IsUniqueCompanyName(text)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE);
}
if (flags & DC_EXEC) {
Company *c = Company::Get(_current_company);
free(c->name);
c->name = reset ? NULL : strdup(text);
MarkWholeScreenDirty();
}
return CommandCost();
}
static bool IsUniquePresidentName(const char *name)
{
const Company *c;
FOR_ALL_COMPANIES(c) {
if (c->president_name != NULL && strcmp(c->president_name, name) == 0) return false;
}
return true;
}
/** Change the name of the president.
* @param tile unused
* @param flags operation to perform
* @param p1 unused
* @param p2 unused
* @param text the new name or an empty string when resetting to the default
* @return the cost of this operation or an error
*/
CommandCost CmdRenamePresident(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
{
bool reset = StrEmpty(text);
if (!reset) {
if (strlen(text) >= MAX_LENGTH_PRESIDENT_NAME_BYTES) return CMD_ERROR;
if (!IsUniquePresidentName(text)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE);
}
if (flags & DC_EXEC) {
Company *c = Company::Get(_current_company);
free(c->president_name);
if (reset) {
c->president_name = NULL;
} else {
c->president_name = strdup(text);
if (c->name_1 == STR_SV_UNNAMED && c->name == NULL) {
char buf[80];
snprintf(buf, lengthof(buf), "%s Transport", text);
DoCommand(0, 0, 0, DC_EXEC, CMD_RENAME_COMPANY, buf);
}
}
MarkWholeScreenDirty();
}
return CommandCost();
}
+24 -8
View File
@@ -437,7 +437,13 @@ struct CompanyFinancesWindow : Window {
case CFW_TOGGLE_SIZE: // toggle size
this->small = !this->small;
this->SetupWidgets();
this->ReInit();
if (this->IsShaded()) {
/* Finances window is not resizable, so size hints given during unshading have no effect
* on the changed appearance of the window. */
this->SetShaded(false);
} else {
this->ReInit();
}
break;
case CFW_INCREASE_LOAN: // increase loan
@@ -1584,6 +1590,7 @@ enum CompanyWindowWidgets {
CW_WIDGET_SELECT_RELOCATE, ///< View/hide the 'Relocate HQ' button.
CW_WIDGET_RELOCATE_HQ,
CW_WIDGET_HAS_PASSWORD, ///< Draw a lock when the company has a password
CW_WIDGET_SELECT_MULTIPLAYER, ///< Multiplayer selection panel.
CW_WIDGET_COMPANY_PASSWORD,
CW_WIDGET_COMPANY_JOIN,
@@ -1599,7 +1606,7 @@ static const NWidgetPart _nested_company_widgets[] = {
NWidget(WWT_PANEL, COLOUR_GREY),
NWidget(NWID_HORIZONTAL), SetPIP(4, 6, 4),
NWidget(NWID_VERTICAL), SetPIP(4, 2, 4),
NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_FACE), SetMinimalSize(91, 120), SetFill(1, 0),
NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_FACE), SetMinimalSize(92, 119), SetFill(1, 0),
NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_FACE_TITLE), SetFill(1, 1), SetMinimalTextLines(2, 0),
EndContainer(),
NWidget(NWID_VERTICAL),
@@ -1641,10 +1648,13 @@ static const NWidgetPart _nested_company_widgets[] = {
NWidget(NWID_VERTICAL), SetPIP(4, 2, 4),
NWidget(NWID_SPACER), SetMinimalSize(90, 0), SetFill(0, 1),
/* Multi player buttons. */
NWidget(NWID_SELECTION, INVALID_COLOUR, CW_WIDGET_SELECT_MULTIPLAYER),
NWidget(NWID_SPACER), SetFill(1, 0),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_PASSWORD), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_JOIN), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_EMPTY, COLOUR_GREY, CW_WIDGET_HAS_PASSWORD),
NWidget(NWID_SELECTION, INVALID_COLOUR, CW_WIDGET_SELECT_MULTIPLAYER),
NWidget(NWID_SPACER), SetFill(1, 0),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_PASSWORD), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_JOIN), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP),
EndContainer(),
EndContainer(),
EndContainer(),
EndContainer(),
@@ -1805,6 +1815,12 @@ struct CompanyWindow : Window
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_SHARES_OWNED_BY).width);
}
} break;
#ifdef ENABLE_NETWORK
case CW_WIDGET_HAS_PASSWORD:
*size = maxdim(*size, GetSpriteSize(SPR_LOCK));
break;
#endif /* ENABLE_NETWORK */
}
}
@@ -1871,9 +1887,9 @@ struct CompanyWindow : Window
} break;
#ifdef ENABLE_NETWORK
case CW_WIDGET_COMPANY_PASSWORD:
case CW_WIDGET_HAS_PASSWORD:
if (_networking && NetworkCompanyIsPassworded(c->index)) {
DrawSprite(SPR_LOCK, PAL_NONE, _dynlang.text_dir == TD_RTL ? r.right + 10 : r.left - 10, r.top + 2);
DrawSprite(SPR_LOCK, PAL_NONE, r.left, r.top);
}
break;
#endif /* ENABLE_NETWORK */
+10 -8
View File
@@ -145,7 +145,7 @@ static void IConsoleClearCommand()
static inline void IConsoleResetHistoryPos() {_iconsole_historypos = ICON_HISTORY_SIZE - 1;}
static void IConsoleHistoryAdd(const char *cmd);
static const char *IConsoleHistoryAdd(const char *cmd);
static void IConsoleHistoryNavigate(int direction);
/** Widgets of the console window. */
@@ -279,13 +279,13 @@ struct IConsoleWindow : Window
IConsoleSwitch();
break;
case WKC_RETURN: case WKC_NUM_ENTER:
case WKC_RETURN: case WKC_NUM_ENTER: {
IConsolePrintF(CC_COMMAND, "] %s", _iconsole_cmdline.buf);
IConsoleHistoryAdd(_iconsole_cmdline.buf);
IConsoleCmdExec(_iconsole_cmdline.buf);
const char *cmd = IConsoleHistoryAdd(_iconsole_cmdline.buf);
IConsoleClearCommand();
break;
if (cmd != NULL) IConsoleCmdExec(cmd);
} break;
case WKC_CTRL | WKC_RETURN:
_iconsole_mode = (_iconsole_mode == ICONSOLE_FULL) ? ICONSOLE_OPENED : ICONSOLE_FULL;
@@ -412,14 +412,15 @@ void IConsoleClose() {if (_iconsole_mode == ICONSOLE_OPENED) IConsoleSwitch();}
* Add the entered line into the history so you can look it back
* scroll, etc. Put it to the beginning as it is the latest text
* @param cmd Text to be entered into the 'history'
* @return the command to execute
*/
static void IConsoleHistoryAdd(const char *cmd)
static const char *IConsoleHistoryAdd(const char *cmd)
{
/* Strip all spaces at the begin */
while (IsWhitespace(*cmd)) cmd++;
/* Do not put empty command in history */
if (StrEmpty(cmd)) return;
if (StrEmpty(cmd)) return NULL;
/* Do not put in history if command is same as previous */
if (_iconsole_history[0] == NULL || strcmp(_iconsole_history[0], cmd) != 0) {
@@ -430,6 +431,7 @@ static void IConsoleHistoryAdd(const char *cmd)
/* Reset the history position */
IConsoleResetHistoryPos();
return _iconsole_history[0];
}
/**
+10 -2
View File
@@ -54,7 +54,7 @@ public:
/**
* Remove all items from the list and free allocated memory.
*/
void Reset()
FORCEINLINE void Reset()
{
this->items = 0;
this->capacity = 0;
@@ -76,6 +76,7 @@ public:
/**
* Append an item and return it.
* @return pointer to newly allocated item
*/
FORCEINLINE T *Append()
{
@@ -144,7 +145,8 @@ public:
return this->Find(item) != this->End();
}
/** Removes given item from this map
/**
* Removes given item from this vector
* @param item item to remove
* @note it has to be pointer to item in this map. It is overwritten by the last item.
*/
@@ -223,6 +225,8 @@ public:
*/
FORCEINLINE const T *Get(uint index) const
{
/* Allow access to the 'first invalid' item */
assert(index <= this->items);
return &this->data[index];
}
@@ -234,6 +238,8 @@ public:
*/
FORCEINLINE T *Get(uint index)
{
/* Allow access to the 'first invalid' item */
assert(index <= this->items);
return &this->data[index];
}
@@ -245,6 +251,7 @@ public:
*/
FORCEINLINE const T &operator[](uint index) const
{
assert(index < this->items);
return this->data[index];
}
@@ -256,6 +263,7 @@ public:
*/
FORCEINLINE T &operator[](uint index)
{
assert(index < this->items);
return this->data[index];
}
};
+6 -1
View File
@@ -12,6 +12,7 @@
#include "stdafx.h"
#include "crashlog.h"
#include "gamelog.h"
#include "date_func.h"
#include "map_func.h"
#include "rev.h"
#include "strings_func.h"
@@ -205,7 +206,11 @@ char *CrashLog::FillCrashLog(char *buffer, const char *last) const
{
time_t cur_time = time(NULL);
buffer += seprintf(buffer, last, "*** OpenTTD Crash Report ***\n\n");
buffer += seprintf(buffer, last, "Crash at: %s\n", asctime(gmtime(&cur_time)));
buffer += seprintf(buffer, last, "Crash at: %s", asctime(gmtime(&cur_time)));
YearMonthDay ymd;
ConvertDateToYMD(_date, &ymd);
buffer += seprintf(buffer, last, "In game date: %i-%02i-%02i (%i)\n\n", ymd.year, ymd.month + 1, ymd.day, _date_fract);
buffer = this->LogError(buffer, last, CrashLog::message);
buffer = this->LogOpenTTDVersion(buffer, last);
+1 -1
View File
@@ -72,7 +72,7 @@ const char *GetDebugString();
* Is the correct usage for multiple TIC() / TOC() calls.
*
* TIC() / TOC() creates it's own block, so make sure not the mangle
* it with an other block.
* it with another block.
**/
#define TIC() {\
extern uint64 ottd_rdtsc();\
+7 -7
View File
@@ -401,8 +401,8 @@ static bool DisasterTick_Aircraft(DisasterVehicle *v, uint16 image_override, boo
if (v->current_order.GetDestination() == 2) {
if (GB(v->tick_counter, 0, 2) == 0) {
Industry *i = Industry::Get(v->dest_tile); // Industry destructor calls ReleaseDisastersTargetingIndustry, so this is valid
int x = TileX(i->xy) * TILE_SIZE;
int y = TileY(i->xy) * TILE_SIZE;
int x = TileX(i->location.tile) * TILE_SIZE;
int y = TileY(i->location.tile) * TILE_SIZE;
uint32 r = Random();
CreateEffectVehicleAbove(
@@ -423,7 +423,7 @@ static bool DisasterTick_Aircraft(DisasterVehicle *v, uint16 image_override, boo
SetDParam(0, i->town->index);
AddIndustryNewsItem(news_message, NS_ACCIDENT, i->index); // delete the news, when the industry closes
SndPlayTileFx(SND_12_EXPLOSION, i->xy);
SndPlayTileFx(SND_12_EXPLOSION, i->location.tile);
}
} else if (v->current_order.GetDestination() == 0) {
int x = v->x_pos - (15 * TILE_SIZE);
@@ -742,7 +742,7 @@ static void Disaster_Airplane_Init()
/* Start from the bottom (south side) of the map */
int x = (MapSizeX() + 9) * TILE_SIZE - 1;
int y = TileY(found->xy) * TILE_SIZE + 37;
int y = TileY(found->location.tile) * TILE_SIZE + 37;
InitializeDisasterVehicle(v, x, y, 135, DIR_NE, ST_AIRPLANE);
@@ -772,7 +772,7 @@ static void Disaster_Helicopter_Init()
DisasterVehicle *v = new DisasterVehicle();
int x = -16 * TILE_SIZE;
int y = TileY(found->xy) * TILE_SIZE + 37;
int y = TileY(found->location.tile) * TILE_SIZE + 37;
InitializeDisasterVehicle(v, x, y, 135, DIR_SW, ST_HELICOPTER);
@@ -861,10 +861,10 @@ static void Disaster_CoalMine_Init()
if ((GetIndustrySpec(i->type)->behaviour & INDUSTRYBEH_CAN_SUBSIDENCE) && --index < 0) {
SetDParam(0, i->town->index);
AddNewsItem(STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE,
NS_ACCIDENT, NR_TILE, i->xy + TileDiffXY(1, 1)); // keep the news, even when the mine closes
NS_ACCIDENT, NR_TILE, i->location.tile + TileDiffXY(1, 1)); // keep the news, even when the mine closes
{
TileIndex tile = i->xy;
TileIndex tile = i->location.tile;
TileIndexDiff step = TileOffsByDiagDir((DiagDirection)GB(Random(), 0, 2));
for (uint n = 0; n < 30; n++) {
+1 -1
View File
@@ -19,7 +19,7 @@
static void DrawTile_Dummy(TileInfo *ti)
{
DrawGroundSpriteAt(SPR_SHADOW_CELL, PAL_NONE, ti->x, ti->y, ti->z);
DrawGroundSprite(SPR_SHADOW_CELL, PAL_NONE);
}
+5 -3
View File
@@ -304,7 +304,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
if (c->share_owners[i] == old_owner) {
/* Sell his shares */
CommandCost res = DoCommand(0, c->index, 0, DC_EXEC, CMD_SELL_SHARE_IN_COMPANY);
/* Because we are in a DoCommand, we can't just execute an other one and
/* Because we are in a DoCommand, we can't just execute another one and
* expect the money to be removed. We need to do it ourself! */
SubtractMoneyFromCompany(res);
}
@@ -318,7 +318,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
if (_current_company != INVALID_OWNER) {
/* Sell the shares */
CommandCost res = DoCommand(0, old_owner, 0, DC_EXEC, CMD_SELL_SHARE_IN_COMPANY);
/* Because we are in a DoCommand, we can't just execute an other one and
/* Because we are in a DoCommand, we can't just execute another one and
* expect the money to be removed. We need to do it ourself! */
SubtractMoneyFromCompany(res);
}
@@ -896,7 +896,7 @@ static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint n
/* Check if industry temporarily refuses acceptance */
if (HasBit(indspec->callback_mask, CBM_IND_REFUSE_CARGO)) {
uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO, 0, GetReverseCargoTranslation(cargo_type, indspec->grf_prop.grffile), ind, ind->type, ind->xy);
uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO, 0, GetReverseCargoTranslation(cargo_type, indspec->grf_prop.grffile), ind, ind->type, ind->location.tile);
if (res == 0) continue;
}
@@ -1068,6 +1068,8 @@ Money CargoPayment::PayTransfer(const CargoPacket *cp, uint count)
cp->DaysInTransit(),
this->ct);
profit = profit * _settings_game.economy.feeder_payment_share / 100;
this->visual_profit += profit; // accumulate transfer profits for whole vehicle
return profit; // account for the (virtual) profit already made for the cargo packet
}
+1 -1
View File
@@ -1004,7 +1004,7 @@ const Sprite *GetGlyph(FontSize size, WChar key)
}
new_glyph.sprite = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, AllocateFont);
new_glyph.width = (slot->advance.x >> 6) + (size != FS_NORMAL);
new_glyph.width = slot->advance.x >> 6;
SetGlyphPtr(size, key, &new_glyph);
+1 -1
View File
@@ -26,7 +26,7 @@ void TileLoopClearHelper(TileIndex tile);
bool CheckCompanyHasMoney(CommandCost cost);
void SubtractMoneyFromCompany(CommandCost cost);
void SubtractMoneyFromCompanyFract(CompanyID company, CommandCost cost);
bool CheckOwnership(Owner owner);
bool CheckOwnership(Owner owner, TileIndex tile = 0);
bool CheckTileOwnership(TileIndex tile);
/* misc functions */
+2 -9
View File
@@ -688,6 +688,8 @@ struct GenerateLandscapeWindow : public QueryStringBaseWindow {
case GLAND_TREE_PULLDOWN: _settings_newgame.game_creation.tree_placer = index; break;
case GLAND_SMOOTHNESS_PULLDOWN: _settings_newgame.game_creation.tgen_smoothness = index; break;
case GLAND_VARIETY_PULLDOWN: _settings_newgame.game_creation.variety = index; break;
case GLAND_LANDSCAPE_PULLDOWN: _settings_newgame.game_creation.land_generator = index; break;
case GLAND_HEIGHTMAP_ROTATION_PULLDOWN: _settings_newgame.game_creation.heightmap_rotation = index; break;
case GLAND_TOWN_PULLDOWN:
if ((uint)index == CUSTOM_TOWN_NUMBER_DIFFICULTY) {
@@ -702,15 +704,6 @@ struct GenerateLandscapeWindow : public QueryStringBaseWindow {
IConsoleSetSetting("difficulty.number_industries", index);
break;
case GLAND_LANDSCAPE_PULLDOWN:
/* case GLAND_HEIGHTMAP_PULLDOWN: */
if (mode == GLWP_HEIGHTMAP) {
_settings_newgame.game_creation.heightmap_rotation = index;
} else {
_settings_newgame.game_creation.land_generator = index;
}
break;
case GLAND_TERRAIN_PULLDOWN: {
GameMode old_gm = _game_mode;
_game_mode = GM_MENU;
+1 -1
View File
@@ -1100,7 +1100,7 @@ public:
FOR_ALL_COMPANIES(c) {
SetDParam(0, c->index);
SetDParam(1, c->index);
SetDParam(2, widest_title);
SetDParam(2, _performance_titles[widest_title]);
widest_width = max(widest_width, GetStringBoundingBox(STR_COMPANY_LEAGUE_COMPANY_NAME).width);
}
+23
View File
@@ -62,6 +62,29 @@ struct EndGameHighScoreBaseWindow : Window {
{
delete this;
}
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
{
switch (keycode) {
/* Keys for telling we want to go on */
case WKC_RETURN:
case WKC_ESC:
case WKC_SPACE:
delete this;
return ES_HANDLED;
/* Allow CTRL-Q to work like ALT-F4 in all cases */
case 'Q' | WKC_CTRL:
case 'Q' | WKC_META:
return ES_NOT_HANDLED;
default:
/* We want to handle all keys; we don't want windows in
* the background to open. Especially the ones that do
* locate themselves based on the status-/toolbars. */
return ES_HANDLED;
}
}
};
/** End game window shown at the end of the game */
+3 -4
View File
@@ -22,6 +22,7 @@
#include "tile_type.h"
#include "subsidy_type.h"
#include "industry_map.h"
#include "tilearea_type.h"
typedef Pool<Industry, IndustryID, 64, 64000> IndustryPool;
@@ -33,9 +34,7 @@ extern IndustryPool _industry_pool;
struct Industry : IndustryPool::PoolItem<&_industry_pool> {
typedef PersistentStorageArray<uint32, 16> PersistentStorage;
TileIndex xy; ///< coordinates of the primary tile the industry is built one
byte width;
byte height;
TileArea location; ///< Location of the industry
const Town *town; ///< Nearest town
CargoID produced_cargo[2]; ///< 2 production cargo slots
uint16 produced_cargo_waiting[2]; ///< amount of cargo produced per cargo
@@ -69,7 +68,7 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> {
PersistentStorage psa; ///< Persistent storage for NewGRF industries.
Industry(TileIndex tile = INVALID_TILE) : xy(tile) {}
Industry(TileIndex tile = INVALID_TILE) : location(tile, 0, 0) {}
~Industry();
/**
+21 -38
View File
@@ -142,9 +142,9 @@ Industry::~Industry()
/* Industry can also be destroyed when not fully initialized.
* This means that we do not have to clear tiles either. */
if (this->width == 0) return;
if (this->location.w == 0) return;
TILE_LOOP(tile_cur, this->width, this->height, this->xy) {
TILE_AREA_LOOP(tile_cur, this->location) {
if (IsTileType(tile_cur, MP_INDUSTRY)) {
if (GetIndustryIndex(tile_cur) == this->index) {
/* MakeWaterKeepingClass() can also handle 'land' */
@@ -153,6 +153,8 @@ Industry::~Industry()
/* MakeWaterKeepingClass() doesn't remove animation if the tiles
* become watery, but be on the safe side an always remote it. */
DeleteAnimatedTile(tile_cur);
MarkTileDirtyByTile(tile_cur);
}
} else if (IsTileType(tile_cur, MP_STATION) && IsOilRig(tile_cur)) {
DeleteOilRig(tile_cur);
@@ -161,7 +163,7 @@ Industry::~Industry()
if (GetIndustrySpec(this->type)->behaviour & INDUSTRYBEH_PLANT_FIELDS) {
/* Remove the farmland and convert it to regular tiles over time. */
TILE_LOOP(tile_cur, 42, 42, this->xy - TileDiffXY(21, 21)) {
TILE_LOOP(tile_cur, 42, 42, this->location.tile - TileDiffXY(21, 21)) {
tile_cur = TILE_MASK(tile_cur);
if (IsTileType(tile_cur, MP_CLEAR) && IsClearGround(tile_cur, CLEAR_FIELDS) &&
GetIndustryIndexOfField(tile_cur) == this->index) {
@@ -507,7 +509,7 @@ static void TransportIndustryGoods(TileIndex tile)
const IndustrySpec *indspec = GetIndustrySpec(i->type);
bool moved_cargo = false;
StationFinder stations(i->xy, i->width, i->height);
StationFinder stations(i->location);
for (uint j = 0; j < lengthof(i->produced_cargo_waiting); j++) {
uint cw = min(i->produced_cargo_waiting[j], 255);
@@ -922,16 +924,6 @@ static TrackStatus GetTileTrackStatus_Industry(TileIndex tile, TransportType mod
return 0;
}
static void AddProducedCargo_Industry(TileIndex tile, CargoArray &produced)
{
const Industry *i = Industry::GetByTile(tile);
for (uint j = 0; j < lengthof(i->produced_cargo); j++) {
CargoID cargo = i->produced_cargo[j];
if (cargo != CT_INVALID) produced[cargo]++;
}
}
static void ChangeTileOwner_Industry(TileIndex tile, Owner old_owner, Owner new_owner)
{
/* If the founder merges, the industry was created by the merged company */
@@ -1041,10 +1033,10 @@ static void PlantFarmField(TileIndex tile, IndustryID industry)
void PlantRandomFarmField(const Industry *i)
{
int x = i->width / 2 + Random() % 31 - 16;
int y = i->height / 2 + Random() % 31 - 16;
int x = i->location.w / 2 + Random() % 31 - 16;
int y = i->location.h / 2 + Random() % 31 - 16;
TileIndex tile = TileAddWrap(i->xy, x, y);
TileIndex tile = TileAddWrap(i->location.tile, x, y);
if (tile != INVALID_TILE) PlantFarmField(tile, i->index);
}
@@ -1080,7 +1072,7 @@ static bool SearchLumberMillTrees(TileIndex tile, void *user_data)
*/
static void ChopLumberMillTrees(Industry *i)
{
TileIndex tile = i->xy;
TileIndex tile = i->location.tile;
if (!IsIndustryCompleted(tile)) return; ///< Can't proceed if not completed
@@ -1099,7 +1091,7 @@ static void ProduceIndustryGoods(Industry *i)
if (Chance16R(1, 14, r) && (num = indsp->number_of_sounds) != 0) {
SndPlayTileFx(
(SoundFx)(indsp->random_sounds[((r >> 16) * num) >> 16]),
i->xy);
i->location.tile);
}
}
@@ -1116,7 +1108,7 @@ static void ProduceIndustryGoods(Industry *i)
if ((indbehav & INDUSTRYBEH_PLANT_FIELDS) != 0) {
bool plant;
if (HasBit(indsp->callback_mask, CBM_IND_SPECIAL_EFFECT)) {
plant = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, Random(), 0, i, i->type, i->xy) != 0);
plant = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, Random(), 0, i, i->type, i->location.tile) != 0);
} else {
plant = Chance16(1, 8);
}
@@ -1126,7 +1118,7 @@ static void ProduceIndustryGoods(Industry *i)
if ((indbehav & INDUSTRYBEH_CUT_TREES) != 0) {
bool cut = ((i->counter & 0x1FF) == 0);
if (HasBit(indsp->callback_mask, CBM_IND_SPECIAL_EFFECT)) {
cut = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, 0, 1, i, i->type, i->xy) != 0);
cut = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, 0, 1, i, i->type, i->location.tile) != 0);
}
if (cut) ChopLumberMillTrees(i);
@@ -1497,7 +1489,7 @@ static bool CheckIfFarEnoughFromIndustry(TileIndex tile, int type)
FOR_ALL_INDUSTRIES(i) {
/* Within 14 tiles from another industry is considered close */
bool in_low_distance = DistanceMax(tile, i->xy) <= 14;
bool in_low_distance = DistanceMax(tile, i->location.tile) <= 14;
/* check if an industry that accepts the same goods is nearby */
if (in_low_distance &&
@@ -1539,8 +1531,7 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const Ind
uint32 r;
uint j;
i->xy = tile;
i->width = i->height = 0;
i->location = TileArea(tile, 1, 1);
i->type = type;
IncIndustryTypeCount(type);
@@ -1627,12 +1618,7 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const Ind
TileIndex cur_tile = tile + ToTileIndexDiff(it->ti);
if (it->gfx != GFX_WATERTILE_SPECIALCHECK) {
byte size;
size = it->ti.x;
if (size > i->width) i->width = size;
size = it->ti.y;
if (size > i->height)i->height = size;
i->location.Add(cur_tile);
WaterClass wc = (IsWaterTile(cur_tile) ? GetWaterClass(cur_tile) : WATER_CLASS_INVALID);
@@ -1652,9 +1638,6 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const Ind
}
} while ((++it)->ti.x != -0x80);
i->width++;
i->height++;
if (GetIndustrySpec(i->type)->behaviour & INDUSTRYBEH_PLANT_ON_BUILT) {
for (j = 0; j != 50; j++) PlantRandomFarmField(i);
}
@@ -2029,7 +2012,7 @@ static void CanCargoServiceIndustry(CargoID cargo, Industry *ind, bool *c_accept
if (HasBit(indspec->callback_mask, CBM_IND_REFUSE_CARGO)) {
uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO,
0, GetReverseCargoTranslation(cargo, indspec->grf_prop.grffile),
ind, ind->type, ind->xy);
ind, ind->type, ind->location.tile);
if (res == 0) continue;
}
*c_accepts = true;
@@ -2064,7 +2047,7 @@ static int WhoCanServiceIndustry(Industry *ind)
{
/* Find all stations within reach of the industry */
StationList stations;
FindStationsAroundTiles(ind->xy, ind->width, ind->height, &stations);
FindStationsAroundTiles(ind->location, &stations);
if (stations.Length() == 0) return 0; // No stations found at all => nobody services
@@ -2166,7 +2149,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
bool callback_enabled = HasBit(indspec->callback_mask, monthly ? CBM_IND_MONTHLYPROD_CHANGE : CBM_IND_PRODUCTION_CHANGE);
if (callback_enabled) {
uint16 res = GetIndustryCallback(monthly ? CBID_INDUSTRY_MONTHLYPROD_CHANGE : CBID_INDUSTRY_PRODUCTION_CHANGE, 0, Random(), i, i->type, i->xy);
uint16 res = GetIndustryCallback(monthly ? CBID_INDUSTRY_MONTHLYPROD_CHANGE : CBID_INDUSTRY_PRODUCTION_CHANGE, 0, Random(), i, i->type, i->location.tile);
if (res != CALLBACK_FAILED) { // failed callback means "do nothing"
suppress_message = HasBit(res, 7);
/* Get the custom message if any */
@@ -2341,7 +2324,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
AddNewsItem(str,
ns,
closeit ? NR_TILE : NR_INDUSTRY,
closeit ? i->xy + TileDiffXY(1, 1) : i->index);
closeit ? i->location.tile + TileDiffXY(1, 1) : i->index);
}
}
@@ -2475,7 +2458,7 @@ extern const TileTypeProcs _tile_type_industry_procs = {
AnimateTile_Industry, // animate_tile_proc
TileLoop_Industry, // tile_loop_proc
ChangeTileOwner_Industry, // change_tile_owner_proc
AddProducedCargo_Industry, // add_produced_cargo_proc
NULL, // add_produced_cargo_proc
NULL, // vehicle_enter_tile_proc
GetFoundation_Industry, // get_foundation_proc
TerraformTile_Industry, // terraform_tile_proc
+8 -8
View File
@@ -63,7 +63,7 @@ static void GetCargoSuffix(uint cargo, CargoSuffixType cst, const Industry *ind,
{
suffix[0] = '\0';
if (HasBit(indspec->callback_mask, CBM_IND_CARGO_SUFFIX)) {
uint16 callback = GetIndustryCallback(CBID_INDUSTRY_CARGO_SUFFIX, 0, (cst << 8) | cargo, const_cast<Industry *>(ind), ind_type, (cst != CST_FUND) ? ind->xy : INVALID_TILE);
uint16 callback = GetIndustryCallback(CBID_INDUSTRY_CARGO_SUFFIX, 0, (cst << 8) | cargo, const_cast<Industry *>(ind), ind_type, (cst != CST_FUND) ? ind->location.tile : INVALID_TILE);
if (GB(callback, 0, 8) != 0xFF) {
PrepareTextRefStackUsage(6);
GetString(suffix, GetGRFStringID(indspec->grf_prop.grffile->grfid, 0xD000 + callback), suffix_last);
@@ -580,7 +580,7 @@ public:
this->InitNested(desc, window_number);
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(IVW_VIEWPORT);
nvp->InitializeViewport(this, Industry::Get(window_number)->xy + TileDiffXY(1, 1), ZOOM_LVL_INDUSTRY);
nvp->InitializeViewport(this, Industry::Get(window_number)->location.tile + TileDiffXY(1, 1), ZOOM_LVL_INDUSTRY);
}
virtual void OnPaint()
@@ -674,7 +674,7 @@ public:
/* Get the extra message for the GUI */
if (HasBit(ind->callback_mask, CBM_IND_WINDOW_MORE_TEXT)) {
uint16 callback_res = GetIndustryCallback(CBID_INDUSTRY_WINDOW_MORE_TEXT, 0, 0, i, i->type, i->xy);
uint16 callback_res = GetIndustryCallback(CBID_INDUSTRY_WINDOW_MORE_TEXT, 0, 0, i, i->type, i->location.tile);
if (callback_res != CALLBACK_FAILED) {
StringID message = GetGRFStringID(ind->grf_prop.grffile->grfid, 0xD000 + callback_res);
if (message != STR_NULL && message != STR_UNDEFINED) {
@@ -747,9 +747,9 @@ public:
case IVW_GOTO:
i = Industry::Get(this->window_number);
if (_ctrl_pressed) {
ShowExtraViewPortWindow(i->xy + TileDiffXY(1, 1));
ShowExtraViewPortWindow(i->location.tile + TileDiffXY(1, 1));
} else {
ScrollMainWindowToTile(i->xy + TileDiffXY(1, 1));
ScrollMainWindowToTile(i->location.tile + TileDiffXY(1, 1));
}
break;
}
@@ -992,7 +992,7 @@ protected:
/* Industry name */
SetDParam(p++, i->index);
char cargo_suffix[lengthof(i->produced_cargo)][512];
static char cargo_suffix[lengthof(i->produced_cargo)][512];
GetAllCargoSuffixes(3, CST_DIR, i, i->type, indsp, i->produced_cargo, cargo_suffix);
/* Industry productions */
@@ -1124,9 +1124,9 @@ public:
p = y + this->vscroll.GetPosition();
if (p < this->industries.Length()) {
if (_ctrl_pressed) {
ShowExtraViewPortWindow(this->industries[p]->xy);
ShowExtraViewPortWindow(this->industries[p]->location.tile);
} else {
ScrollMainWindowToTile(this->industries[p]->xy);
ScrollMainWindowToTile(this->industries[p]->location.tile);
}
}
} break;
+2 -2
View File
@@ -338,7 +338,7 @@ Slope GetFoundationSlope(TileIndex tile, uint *z)
}
static bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here)
bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here)
{
uint z;
@@ -355,7 +355,7 @@ static bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here)
}
static bool HasFoundationNE(TileIndex tile, Slope slope_here, uint z_here)
bool HasFoundationNE(TileIndex tile, Slope slope_here, uint z_here)
{
uint z;
+2
View File
@@ -58,6 +58,8 @@ static inline Point RemapCoords2(int x, int y)
uint ApplyFoundationToSlope(Foundation f, Slope *s);
void DrawFoundation(TileInfo *ti, Foundation f);
bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here);
bool HasFoundationNE(TileIndex tile, Slope slope_here, uint z_here);
void DoClearSquare(TileIndex tile);
void RunTileLoop();
+196 -94
View File
@@ -217,6 +217,9 @@ STR_UNITS_VOLUME_LONG_SI :{COMMA} m³
STR_UNITS_FORCE_SI :{COMMA} kN
# Common window strings
STR_LIST_FILTER_OSKTITLE :{BLACK}Sleutel 'n filter string
STR_LIST_FILTER_TOOLTIP :{BLACK}Sleutel in 'n sleutelwoord om die lys by te filter
STR_LIST_FILTER_TITLE :{BLACK}Filter string:
STR_TOOLTIP_SORT_ORDER :{BLACK}Selekteer sorteer orde (afklimende/klimende)
STR_TOOLTIP_SORT_CRITERIAP :{BLACK}Selekteer sorteer maatstaf
@@ -227,11 +230,12 @@ STR_BUTTON_RENAME :{BLACK}Hernoem
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Maak venster toe
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Venster titel - sleep om venster te beweeg
STR_TOOLTIP_SHADE :{BLACK}Skerm venster - Slegs die titelstaaf sal vertoon word
STR_TOOLTIP_STICKY :{BLACK}Merk die venster as ontoemaakbaar met die"Sluit Alle Vensters" sleutel
STR_TOOLTIP_RESIZE :{BLACK}Kliek en sleep om venster te vergroot
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Tokkel groot/klein venster groote
STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rol staaf - rol die lys op/af
STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rol baan - rol die lys op/af
STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rolstaaf - rol die lys op/af
STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rolstaaf - rol die lys op/af
STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Vernietig geboue ens. op 'n vierkant van land
# Query window
@@ -271,6 +275,7 @@ STR_SORT_BY_MODEL :Model
STR_SORT_BY_VALUE :Waarde
STR_SORT_BY_LENGTH :Lengte
STR_SORT_BY_LIFE_TIME :Leeftyd oor
STR_SORT_BY_TIMETABLE_DELAY :Rooster vertraging
STR_SORT_BY_FACILITY :Stasie tipe
STR_SORT_BY_WAITING :Wagtend vrag waarde
STR_SORT_BY_RATING_MAX :Hoogste vrag gradering
@@ -288,7 +293,7 @@ STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pouseer
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Vinnig vooruit die spel
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opsies
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Stoor spel, verlaat spel, verlaat
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Vertoon landkaart, ekstra uitsig of lys van tekens
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Vertoon kaart, ekstra uitsig of lys van tekens
STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Vertoon stad gids
STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Toon subsidieë
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Vertoon lys van maatskappy se stasies
@@ -300,7 +305,7 @@ STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Konsolid
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vertoon lys van maatskappy se treine
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Vertoon lys van maatskappy se pad voertuie
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Vertoon lys van maatskappy se skepe
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Vertoon lys van maatskappy se vliegtuie
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Vertoon lys van maatskappy se vliegtuie. Ctrl+Kliek tokkel die opening van die groep/voertuig lys
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Vergroot die skerm
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Verklein die skerm
STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou spoorweg spoor
@@ -311,6 +316,7 @@ STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Oppe die
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Vertoon klank/musiek venster
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Vertoon laaste boodskap/nuus verslag, vertoon boodskap opsies
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Land gebied informasie
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skakel nutsbalke
# Extra tooltips for the scenario editor toolbar
STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Stoor draaiboek, laai draaiboek, verlaat draaiboek redigeerder, verlaat
@@ -318,7 +324,7 @@ STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD
STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Draaiboek Redigeerder
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Beweeg die begin datum 1 jaar terug
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Beweeg die begin datum 1 jaar voorentoe
STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vertoon landkaart, dorp gids
STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vertoon kaart, dorp gids
STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landskap generasie
STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Dorp generasie
STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Nywerheid generasie
@@ -336,14 +342,14 @@ STR_SCENEDIT_FILE_MENU_QUIT :Verlaat
############ range for SE file menu starts
############ range for settings menu starts
STR_SETTINGS_MENU_GAME_OPTIONS :Speletjie opsies
STR_SETTINGS_MENU_GAME_OPTIONS :Spel opsies
STR_SETTINGS_MENU_DIFFICULTY_SETTINGS :Moelikheid stellings
STR_SETTINGS_MENU_CONFIG_SETTINGS :Gevorderde stellings
STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF stellings
STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Deursigtigheid opsies
STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Dorp name vertoon
STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Stasie name vertoon
STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Wegpunte vertoon
STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Wegwyser name vertoon
STR_SETTINGS_MENU_SIGNS_DISPLAYED :Tekens vertoon
STR_SETTINGS_MENU_FULL_ANIMATION :Volle animasie
STR_SETTINGS_MENU_FULL_DETAIL :Volle besonderhede
@@ -365,6 +371,7 @@ STR_MAP_MENU_SIGN_LIST :Teken lys
############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor
STR_TOWN_MENU_TOWN_DIRECTORY :Dorp gids
############ end of the 'Display map' dropdown
STR_TOWN_MENU_FOUND_TOWN :Stig dorp
############ end of the 'Town' dropdown
############ range for subsidies menu starts
@@ -518,6 +525,7 @@ STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINYFONT}{BLAC
STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Skakel grafiek vir vrag tipe aan/af
STR_GRAPH_CARGO_PAYMENT_CARGO :{TINYFONT}{BLACK}{STRING}
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Vertoon breedvoerige prestasie graderings
# Graph key window
STR_GRAPH_KEY_CAPTION :{WHITE}Sleutel vir maatskappy grafieke
@@ -546,8 +554,8 @@ STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}%
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Voertuie:
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stasies:
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. profyt:
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inkome:
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. inkome:
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inkomste:
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. inkomste:
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Afgelewer:
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Vrag:
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Geld:
@@ -598,7 +606,9 @@ STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Kies 'Ez
STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Kies 'Bestelling 1' (gebruiker-verklaarde) program
STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Kies 'Bestelling 2' (gebruiker-verklaarde) program
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Tokkel musiek lys skommel aan/af
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vertoon liedjie keuse venster
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vertoon musiek snit keuse venster
STR_ERROR_NO_SONGS :{WHITE}'n Musiek stel was gekies wat nie liedere bevat nie. Niks liedere sal gespel word nie
# Playlist window
STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musiek Program Keuse
@@ -637,12 +647,12 @@ STR_SMALLMAP_TYPE_INDUSTRIES :Nywerhede
STR_SMALLMAP_TYPE_ROUTES :Roetes
STR_SMALLMAP_TYPE_VEGETATION :Plantegroei
STR_SMALLMAP_TYPE_OWNERS :Eienaars
STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Toon land hoogtelyne op landkaart
STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Toon voertuie op landkaart
STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Toon nywerhede op landkaart
STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Toon vervoer roetes op landkaart
STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Toon plantegroei op landkaart
STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Toon land eienaars op landkaart
STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Vertoon land hoogtelyne op kaart
STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Vertoon voertuie op kaart
STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Wys nywerhede op kaart
STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Wys vervoer roetes op kaart
STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Wys plantegroei op kaart
STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Wys land eienaars op kaart
STR_SMALLMAP_LEGENDA_ROADS :{TINYFONT}{BLACK}Paaie
STR_SMALLMAP_LEGENDA_RAILROADS :{TINYFONT}{BLACK}Spoorweë
@@ -678,7 +688,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINYFONT}{BLAC
STR_SMALLMAP_LEGENDA_DESERT :{TINYFONT}{BLACK}Woestyn
STR_SMALLMAP_LEGENDA_SNOW :{TINYFONT}{BLACK}Sneeu
STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Tokkel dorp name aan/af op landkaart
STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Tokkel dorp name aan/af op kaart
STR_SMALLMAP_CENTER :{BLACK}Senter die kleinkaart op die huidige posisie
STR_SMALLMAP_INDUSTRY :{TINYFONT}{STRING} ({NUM})
STR_SMALLMAP_TOWN :{TINYFONT}{WHITE}{TOWN}
@@ -686,11 +696,11 @@ STR_SMALLMAP_DISABLE_ALL :{BLACK}Sper all
STR_SMALLMAP_ENABLE_ALL :{BLACK}Ontsper alle
# Status bar messages
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Toon laaste boodskap of nuus verslag
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Wys laaste boodskap of nuus verslag
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
STR_STATUSBAR_PAUSED :{YELLOW}* * STIL * *
STR_STATUSBAR_AUTOSAVE :{RED}OUTOSTOOR
STR_STATUSBAR_SAVING_GAME :{RED}* * SPAAR SPELETJIE * *
STR_STATUSBAR_SAVING_GAME :{RED}* * STOOR SPELETJIE * *
# News message history
STR_MESSAGE_HISTORY :{WHITE}Boodskap Geskidenis
@@ -756,6 +766,7 @@ STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIGFONT}{BLACK
STR_NEWS_MERGER_TAKEOVER_TITLE :{BIGFONT}{BLACK}{STRING} is deur {STRING} oorgevat!
STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENTNAME}{}(Bestuurder)
STR_NEWS_NEW_TOWN :{BLACK}{BIGFONT}{STRING} borg konstruksie van nuwe dorp {TOWN}!
STR_NEWS_INDUSTRY_CONSTRUCTION :{BIGFONT}{BLACK}Nuwe {STRING} onder opbou naby {TOWN}!
STR_NEWS_INDUSTRY_PLANTED :{BIGFONT}{BLACK}Nuwe {STRING} word naby {TOWN} beplant!
@@ -797,6 +808,7 @@ STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE
STR_NEWS_TRAIN_IS_LOST :{WHITE}{VEHICLE} is verlore.
STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} se wins was verlede jaar {CURRENCY}
STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} het gestop omdat 'n herstel opdrag gefaal
STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Automatiese hernuwing het misluk met {VEHICLE}{}{STRING}
STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIGFONT}{BLACK}Nuwe {STRING} nou beskikbaar!
@@ -831,8 +843,8 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Geld een
STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Geld eendheid keuse
############ start of currency region
STR_GAME_OPTIONS_CURRENCY_GBP :Pounds ()
STR_GAME_OPTIONS_CURRENCY_USD :Dollars ($)
STR_GAME_OPTIONS_CURRENCY_GBP :Pond (£)
STR_GAME_OPTIONS_CURRENCY_USD :Dollar ($)
STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€)
STR_GAME_OPTIONS_CURRENCY_YEN :Yen (¥)
STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling (ATS)
@@ -921,17 +933,22 @@ STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Kies die
STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skerm resolusie
STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Kies die skerm resolusie om te gebruik
STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skermskyf formaat
STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Kies die skermskyf formaat om te gebruik
STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skermkiekie formaat
STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Kies die skermkiekie formaat om te gebruik
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis grafiek stel
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies die Basiese grafiek stel om te gebruik
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies die basis grafiek stel om te gebruik
STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} verlore / korrupte ler{P "" s}
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Addisioneel informasie oor die basis grapfieke stel
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Addisionele informasie oor die basis grapfiek stel
STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basiese klank stel
STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Kies die basiese klank stel om te gebruik
STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Addisionele informasie oor die basiese klank stel
STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basis klank stel
STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Kies die basis klank stel om te gebruik
STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Addisionele informasie oor die basis klank stel
STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basis musiek stel
STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Kies die basis musiek stel om te gebruik
STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} korrupte lêer{P "" s}
STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Addisionele informasie oor die basis musiek stel
STR_ERROR_FULLSCREEN_FAILED :{WHITE}Volskerm metode gedop
@@ -971,6 +988,7 @@ STR_DIFFICULTY_LEVEL_HARD :{BLACK}Streng
STR_DIFFICULTY_LEVEL_CUSTOM :{BLACK}Gewoonte
############ range for difficulty levels ends
STR_DIFFICULTY_LEVEL_HIGH_SCORE_BUTTON :{BLACK}Vertoon hooglopendetellings kaart
STR_DIFFICULTY_LEVEL_SAVE :{BLACK}Bewaar
############ range for difficulty settings starts
@@ -999,6 +1017,13 @@ STR_NUM_NORMAL :Normaal
STR_NUM_HIGH :Hoog
STR_NUM_CUSTOM :Bestelling
STR_VARIETY_NONE :Geen
STR_VARIETY_VERY_LOW :Baaie Laag
STR_VARIETY_LOW :Laag
STR_VARIETY_MEDIUM :Middelmatig
STR_VARIETY_HIGH :Hoog
STR_VARIETY_VERY_HIGH :Baaie Hoog
STR_AI_SPEED_VERY_SLOW :Baie Stadig
STR_AI_SPEED_SLOW :Stadig
STR_AI_SPEED_MEDIUM :Gemiddel
@@ -1046,10 +1071,10 @@ STR_CONFIG_SETTING_OFF :Af
STR_CONFIG_SETTING_ON :Aan
STR_CONFIG_SETTING_DISABLED :gestrem
STR_CONFIG_SETTING_VEHICLESPEED :{LTBLUE}Wys voertuig spoed in die standbaan: {ORANGE}{STRING}
STR_CONFIG_SETTING_BUILDONSLOPES :{LTBLUE}Laattoe gebou op skuinstes en kusse: {ORANGE}{STRING}
STR_CONFIG_SETTING_AUTOSLOPE :{LTBLUE}Laattoe terraforming onder geboue, spoore, ens. (autoslope): {ORANGE}{STRING}
STR_CONFIG_SETTING_CATCHMENT :{LTBLUE}Laattoe meer realisties grootte opvanggebied: {ORANGE}{STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE :{LTBLUE}Toelaat verwydering van meer stad-besite paaie, bruge, ens: {ORANGE}{STRING}
STR_CONFIG_SETTING_BUILDONSLOPES :{LTBLUE}Laat gebou op skuinstes en kusse toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_AUTOSLOPE :{LTBLUE}Laat terraforming toe onder geboue, spoore, ens. (autoslope): {ORANGE}{STRING}
STR_CONFIG_SETTING_CATCHMENT :{LTBLUE}Laat meer realisties grootte opvangsgebied toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE :{LTBLUE}Laat verwydering van meer stad-besite paaie, bruge, ens toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_MAMMOTHTRAINS :{LTBLUE}Ontsper gebou van baie lang treine: {ORANGE}{STRING}
STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :{LTBLUE}Trein versnelling model: {ORANGE}{STRING}
STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_ORIGINAL :Oorspronklik
@@ -1061,31 +1086,35 @@ STR_CONFIG_SETTING_IMPROVEDLOAD :{LTBLUE}Gebruik
STR_CONFIG_SETTING_GRADUAL_LOADING :{LTBLUE}Laai voertuie geleidelik: {ORANGE}{STRING}
STR_CONFIG_SETTING_INFLATION :{LTBLUE}Inflasie: {ORANGE}{STRING}
STR_CONFIG_SETTING_SELECTGOODS :{LTBLUE}Aflewer vrag na 'n stasie slegs as daar 'n aanvrag is:: {ORANGE}{STRING}
STR_CONFIG_SETTING_LONGBRIDGES :{LTBLUE}Toelaat opbou van baie lank bruge: {ORANGE}{STRING}
STR_CONFIG_SETTING_GOTODEPOT :{LTBLUE}Laattoe gaan na depot opdrae: {ORANGE}{STRING}
STR_CONFIG_SETTING_LONGBRIDGES :{LTBLUE}Laat bou van baie lank bruë toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_GOTODEPOT :{LTBLUE}Laat vorder-na depot opdrae toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Manual primêre nywerheid konstruksie metode: {ORANGE}{STRING}
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :geen
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :as ander nywerhede
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :vooruitsigting
STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Laattoe vele soortgelyke nywerhede per dorp: {ORANGE}{STRING}
STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Laat meer as een soortgelyke nywerhede per dorp toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Nywerhede van die selfde tipe kan naby aan mekaar gebou word: {ORANGE}{STRING}
STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Toon altyd lang datum in die standbaan: {ORANGE}{STRING}
STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Toon seine op die bestuur kant: {ORANGE}{STRING}
STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Toon finansies venster op die einde van die jaar: {ORANGE}{STRING}
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :{LTBLUE}Nuwe bevele is vooraf 'geen-stop' {ORANGE}{STRING}
STR_CONFIG_SETTING_STOP_LOCATION :{LTBLUE}Nuww trein opdragte stop by verstek by die {ORANGE}{STRING}{LTBLUE} van die platform
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :naby einde
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :middel
STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ver einde
STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :{LTBLUE}Pad voertuig toustaan (met kwantum effekte): {ORANGE}{STRING}
STR_CONFIG_SETTING_AUTOSCROLL :{LTBLUE}Was skerm as muis by die kant is: {ORANGE}{STRING}
STR_CONFIG_SETTING_BRIBE :{LTBLUE}Laattoe die omkooping van plaaslike raad: {ORANGE}{STRING}
STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :{LTBLUE}Laattoe die koop van eksklusief vervoer regte: {ORANGE}{STRING}
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :{LTBLUE}Laattoe die stuur van geld na ander maatskappye: {ORANGE}{STRING}
STR_CONFIG_SETTING_BRIBE :{LTBLUE}Laat omkooping van die plaaslike raad toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :{LTBLUE}Laat die koop van eksklusief vervoer regte toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :{LTBLUE}Laat die stuur van geld na ander maatskappye toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_NONUNIFORM_STATIONS :{LTBLUE}Ongelyk stasies: {ORANGE}{STRING}
STR_CONFIG_SETTING_FREIGHT_TRAINS :{LTBLUE}Gewig vermenivoud vir vrag om swaar treine te simuleer: {ORANGE}{STRING}
STR_CONFIG_SETTING_PLANE_SPEED :{LTBLUE}Vliegtuig spoed faktor: {ORANGE}1 / {STRING}
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :{LTBLUE}Laattoe skyf-deur pad stop op dorp besit paaie: {ORANGE}{STRING}
STR_CONFIG_SETTING_ADJACENT_STATIONS :{LTBLUE}Laattoe gebou van aangrensend stasies: {ORANGE}{STRING}
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :{LTBLUE}Laat deur-ry padhalte op dorp besite paaie toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :{LTBLUE}Laat deur-ry padhalte toe op paaie wat deur ander deelnemers besit word: {ORANGE}{STRING}
STR_CONFIG_SETTING_ADJACENT_STATIONS :{LTBLUE}Laat die gebou van aangrensende stasies toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_DYNAMIC_ENGINES :{LTBLUE}Ontsper veeltallige NewGRF enjin stelle: {ORANGE}{STRING}
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Die verandering van die stelling is nie moontlik nie waneer daar voertuie is.
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :{LTBLUE}Lughawes verval nooit nie: {ORANGE}{STRING}
@@ -1120,6 +1149,7 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :{LTBLUE}Hoogtek
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Teller vooruit
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Vooruit
STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Die hoogte vlak wat 'n plat draaiboek kaart kry: {ORANGE}{STRING}
STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :{LTBLUE}Ontsper terraforming van teëls op die kaart rant: {ORANGE}{STRING}
STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Een of meer teëls op die Noordelike grens is nie leeg nie
STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Een of meer teëls by een van die kante is nie water nie
@@ -1127,7 +1157,7 @@ STR_CONFIG_SETTING_STATION_SPREAD :{LTBLUE}Maks st
STR_CONFIG_SETTING_SERVICEATHELIPAD :{LTBLUE}Versien helikopters by helihawes outomaties: {ORANGE}{STRING}
STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Verbind landereye werktuigbaan na spoor/pad/water/lughawe werktuigbaan: {ORANGE}{STRING}
STR_CONFIG_SETTING_REVERSE_SCROLLING :{LTBLUE}Omkeer rol rigting: {ORANGE}{STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING :{LTBLUE}Versag kykpoort rollees: {ORANGE}{STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING :{LTBLUE}Maak kykpoort beweegings glad: {ORANGE}{STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP :{LTBLUE}Toon 'n meting wanneer jy verskeie bou-gereedskap gebruik: {ORANGE}{STRING}
STR_CONFIG_SETTING_LIVERIES :{LTBLUE}Toon maatskappy lewerye: {ORANGE}{STRING}
STR_CONFIG_SETTING_LIVERIES_NONE :Geen
@@ -1145,6 +1175,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-kliek
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control-kliek
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Af
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :{LTBLUE}Links-kliek kykpoort beweegings: {ORANGE}{STRING}
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :{LTBLUE}Gebruik die {ORANGE}{STRING}{LTBLUE} datum formaat vir gestoorde spel name.
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :lank (31ste Des 2008)
@@ -1163,6 +1194,7 @@ STR_CONFIG_SETTING_LOADING_INDICATORS_ALL :Alle maatskappy
STR_CONFIG_SETTING_TIMETABLE_ALLOW :{LTBLUE}Ontsper timetabling vir voertuie: {ORANGE}{STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :{LTBLUE}Toon rooster in ticks liewer as dae: {ORANGE}{STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :{LTBLUE}Toon aankoms en vertrek in tydroosters: {ORANGE}{STRING}
STR_CONFIG_SETTING_QUICKGOTO :{LTBLUE}Vinnige skepping van voertuig opdragte: {ORANGE}{STRING}
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :{LTBLUE}Verstek spoor tipe (na nuwe spel/spel laai): {ORANGE}{STRING}
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_RAIL :Gewone Spoor
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_ELRAIL :Elektrifiseerde Spoor
@@ -1186,6 +1218,8 @@ STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :{LTBLUE}Sper pa
STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :{LTBLUE}Sper vliegtuie vir rekenaar: {ORANGE}{STRING}
STR_CONFIG_SETTING_AI_BUILDS_SHIPS :{LTBLUE}Sper skepe vir rekenaar: {ORANGE}{STRING}
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :{LTBLUE}Laat AI in multispeler toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_AI_MAX_OPCODES :{LTBLUE}hoeveelheid operasie kodes voordat AI gestaak word: {ORANGE}{STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT :{LTBLUE}Diens pouse is in persente: {ORANGE}{STRING}
STR_CONFIG_SETTING_SERVINT_TRAINS :{LTBLUE}Verstek diens pouse vir treine: {ORANGE}{STRING} dae/%
@@ -1197,16 +1231,17 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Gebrekt
STR_CONFIG_SETTING_SERVINT_SHIPS :{LTBLUE}Verstek diens pouse vir skepe: {ORANGE}{STRING} dae/%
STR_CONFIG_SETTING_SERVINT_SHIPS_DISABLED :{LTBLUE}Verstek diens pouse vir skepe: {ORANGE}strem
STR_CONFIG_SETTING_NOSERVICE :{LTBLUE}Sper diens wanneer komplikasies is na geen gestel: {ORANGE}{STRING}
STR_CONFIG_SETTING_WAGONSPEEDLIMITS :{LTBLUE}Stel wa spoed limite in staak: {ORANGE}{STRING}
STR_CONFIG_SETTING_WAGONSPEEDLIMITS :{LTBLUE}Laat wa spoed beperkings toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_DISABLE_ELRAILS :{LTBLUE}Gestrem elektriese spoore: {ORANGE}{STRING}
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :{LTBLUE}Gekleurde nuus verskyn in: {ORANGE}{STRING}
STR_CONFIG_SETTING_STARTING_YEAR :{LTBLUE}Jaar om te begin: {ORANGE}{STRING}
STR_CONFIG_SETTING_SMOOTH_ECONOMY :{LTBLUE}Ontsper versag ekonomie (meer, kleiner veranderings): {ORANGE}{STRING}
STR_CONFIG_SETTING_ALLOW_SHARES :{LTBLUE}Laattoe deele aankoop van ander maatskappye: {ORANGE}{STRING}
STR_CONFIG_SETTING_ALLOW_SHARES :{LTBLUE}Laat die koop van aandeele van ander maatskappye toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :{LTBLUE}Wanneer sleep, plaas seine elke: {ORANGE}{STRING} teel(e)
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Outomaties bou semaphores voor: {ORANGE}{STRING}
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :{LTBLUE}Stel in staak die sein GUI: {ORANGE}{STRING}
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :{LTBLUE}Sein tipe om te bou by verstek: {ORANGE}{STRING}
STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blok seine
STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Pad seine
STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Een-rigting seine
@@ -1222,8 +1257,16 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 grid
STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 grid
STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :lukraak
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :{LTBLUE}Dorpe toegelaat om paaie te bou: {ORANGE}{STRING}
STR_CONFIG_SETTING_NOISE_LEVEL :{LTBLUE}Laat dorp-beheerede klankvlak vir lughawes toe: {ORANGE}{STRING}
STR_CONFIG_SETTING_TOWN_FOUNDING :{LTBLUE}Stigting van dorpe binne speletjie: {ORANGE}{STRING}
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :verbode
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :toegelaat
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :toegelaat, eie dorp uitleg
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :{LTBLUE}Binne speletjie plasing van bome: {ORANGE}{STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :geen {RED}(breek timmerhout meul)
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Slegs in reënwoude
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :orals
STR_CONFIG_SETTING_TOOLBAR_POS :{LTBLUE}Posisie van hoof werktuigbaan: {ORANGE}{STRING}
STR_CONFIG_SETTING_TOOLBAR_POS_LEFT :Links
@@ -1231,6 +1274,8 @@ STR_CONFIG_SETTING_TOOLBAR_POS_CENTER :Senter
STR_CONFIG_SETTING_TOOLBAR_POS_RIGHT :Regs
STR_CONFIG_SETTING_SNAP_RADIUS :{LTBLUE}Venster slag straal: {ORANGE}{STRING} px
STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :{LTBLUE}Venster slag straal: {ORANGE}strem
STR_CONFIG_SETTING_SOFT_LIMIT :{LTBLUE}Venster sagte beperking (nie taai): {ORANGE}{STRING}
STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :{LTBLUE}Venster sag beperking (nie taai): {ORANGE}ongeaktiveer
STR_CONFIG_SETTING_TOWN_GROWTH :{LTBLUE}Dorp groei spoed: {ORANGE}{STRING}
STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Geen
STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Stadig
@@ -1284,7 +1329,7 @@ STR_INTRO_LOAD_GAME :{BLACK}Laai Spe
STR_INTRO_PLAY_SCENARIO :{BLACK}Speel Draaiboek
STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Speel Hoogtekaart
STR_INTRO_SCENARIO_EDITOR :{BLACK}Draaiboek Redakteur
STR_INTRO_MULTIPLAYER :{BLACK}Veelspeler
STR_INTRO_MULTIPLAYER :{BLACK}Multispeler
STR_INTRO_GAME_OPTIONS :{BLACK}Spel Opsies
STR_INTRO_DIFFICULTY :{BLACK}Moeilikheid ({STRING})
@@ -1299,6 +1344,7 @@ STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Laai 'n
STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}begin 'n nuwe speletjie, gebruikend 'n hoogtekaart as 'n landskap
STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Begin 'n nuwe speletjie, met 'n doelgeboude draaiboek
STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Skep 'n doelgeboude spel wêreld/draaiboek
STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Begin 'n multispeler spel
STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Kies 'matige' landskap styl
STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Kies 'toendra' landskap styl
@@ -1323,7 +1369,7 @@ STR_QUIT_NO :{BLACK}Nee
STR_OSNAME_WINDOWS :Windows
STR_OSNAME_DOS :DOS
STR_OSNAME_UNIX :Unix
STR_OSNAME_OSX :OS X
STR_OSNAME_OSX :OS{NBSP}X
STR_OSNAME_BEOS :BeOS
STR_OSNAME_HAIKU :Haiku
STR_OSNAME_MORPHOS :MorphOS
@@ -1400,7 +1446,7 @@ STR_FACE_MALE_TOOLTIP :{BLACK}Kies man
STR_FACE_FEMALE_BUTTON :{BLACK}Vroulik
STR_FACE_FEMALE_TOOLTIP :{BLACK}Kies vroulik gesige
STR_FACE_NEW_FACE_BUTTON :{BLACK}Nuwe Gesig
STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Opwek lukrake nuwe gesig
STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Genereer nuwe lukrake gesig
STR_FACE_ADVANCED :{BLACK}Voorlopend
STR_FACE_ADVANCED_TOOLTIP :{BLACK}Voorloopend gesig keuse.
STR_FACE_SIMPLE :{BLACK}Eenvoudig
@@ -1462,8 +1508,8 @@ STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/
STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Kliente
STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Kliente oplyn / Kliente maks{}Maatskappye oplyn / Maatskappye maks
STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA}
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Landkaart grote
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Landkaart grote van die speeletjie{}Kliek om volgens area te sorteer
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kaart groote
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Kaart groote van die speeletjie{}Kliek om volgens area te sorteer
STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum
STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Huidigge datum
STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}jare
@@ -1493,11 +1539,11 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Verbind
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Vervris verskaffer
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Vervris die verskaffer inligting
STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Versoek verskaffer
STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Soek bediener
STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Versoek netwerk vir 'n verskaffer
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Byvoeg Bediender
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Voeg bediender by
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Voeg 'n verskaffer tot die lys wat sal altyd wees gemerk vir loopende speletjies.
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Begin verskaffer
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Begin bediener
STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Begin u eie verskaffer
STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Tik in jou naam
@@ -1512,7 +1558,7 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Stel wag
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskerm jou spel met 'n wagwoord as jy wil dit nie publieke toepassing laat wees nie
STR_NETWORK_START_SERVER_SELECT_MAP :{BLACK}Kies 'n kaart
STR_NETWORK_START_SERVER_SELECT_MAP_TOOLTIP :{BLACK}Watter kaart wil jy speel?
STR_NETWORK_START_SERVER_SERVER_RANDOM_GAME :Opwek lukraak nuwe speletjie
STR_NETWORK_START_SERVER_SERVER_RANDOM_GAME :Genereer nuwe lukraake speletjie
STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet
STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (adverteer)
@@ -1528,9 +1574,9 @@ STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Beperk d
STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Taal gepraat:
STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Ander spelers sal weet watter taal op die verskaffer gepraat is
STR_NETWORK_START_SERVER_START_GAME :{BLACK}Begin Speletjie
STR_NETWORK_START_SERVER_START_GAME :{BLACK}Begin Spel
STR_NETWORK_START_SERVER_START_GAME_TOOLTIP :{BLACK}Begin 'n nuwe netwerk spel van 'n lukraak kaart of draaiboek
STR_NETWORK_START_SERVER_LOAD_GAME :{BLACK}Laai Speletjie
STR_NETWORK_START_SERVER_LOAD_GAME :{BLACK}Laai Spel
STR_NETWORK_START_SERVER_LOAD_GAME_TOOLTIP :{BLACK}Hervat 'n vroeër gespaar multispeler speletjie (wees seker om te konnekteer as die korrekte speler)
STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Tik 'n naam in vir die netwerk speeletjie
@@ -1567,7 +1613,12 @@ STR_NETWORK_LANG_SWEDISH :Swedish
STR_NETWORK_LANG_TURKISH :Turkish
STR_NETWORK_LANG_UKRAINIAN :Ukrainian
STR_NETWORK_LANG_AFRIKAANS :Afrikaans
STR_NETWORK_LANG_CROATIAN :Croatian
STR_NETWORK_LANG_CATALAN :Catalan
STR_NETWORK_LANG_ESTONIAN :Estonian
STR_NETWORK_LANG_GALICIAN :Galician
STR_NETWORK_LANG_GREEK :Grieks
STR_NETWORK_LANG_LATVIAN :Latvian
############ End of leave-in-this-order
# Network game lobby
@@ -1606,7 +1657,7 @@ STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) La
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Verwerk Data...
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registreer...
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Haal speletjie informasie...
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Haal spel informasie...
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Haal maatskappy informasie...
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} Klient{P "" e} voor jou
@@ -1619,10 +1670,12 @@ STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Maatskap
# Network company list added strings
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Klient Lys
STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Toeskou
STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nuwe Maatskapy
# Network client list
STR_NETWORK_CLIENTLIST_KICK :Skop
STR_NETWORK_CLIENTLIST_BAN :Verbod
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gee geld
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Praat met almal
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Praat met maatskappy
@@ -1701,10 +1754,18 @@ STR_NETWORK_ERROR_CLIENT_SERVER_FULL :verskaffer vol
# Network related errors
STR_NETWORK_SERVER_MESSAGE :*** {1:STRING}
############ Leave those lines in this order!!
STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Spel stilgehou ({STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spel nog steeds stilgehou ({STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spel nog steeds stilgehou ({STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spel nog steeds stilgehou ({STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spel gaan weer aan ({STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nie genoeg spelers
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :Verbind kliente
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :met die hand
############ End of leave-in-this-order
STR_NETWORK_MESSAGE_CLIENT_LEAVING :verlaat
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} het by die spel aangesluit
STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} het die spel aangesluit (Client #{2:NUM})
STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} het by besigheid #{2:NUM} aangesluit
STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} het aangesluit by die spektators
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} begin 'n nuwe maatskappy (#{2:NUM})
@@ -1716,35 +1777,60 @@ STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE} Die ver
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE} Die verskaffer is besig om te weerbegin...{}Wag asb...
# Content downloading window
STR_CONTENT_TITLE :{WHITE}Inhoud laai af
STR_CONTENT_TYPE_CAPTION :{BLACK}Tipe
STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tipe inhoud
STR_CONTENT_NAME_CAPTION :{BLACK}Naam
STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Naam van die inhoud
STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Kliek op 'n ry am besonderheide te sien{}Kliek op die merkblokkie om dit te kies vir aflaai
STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Selekteer alles
STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk al die inhoud wat afgelaai moet word
STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Selekteer opgraderings
STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Merk alle inhoud wat 'n opgradering is vir bestande inhoud om af te laai word
STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Onselekteer alles
STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk alle inhoud wat nie afgelaai moet word nie
STR_CONTENT_FILTER_TITLE :{BLACK}Merker/naam filter:
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Laai af
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Begin om die geselekteerde inligting af te laai
STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Totale aflaai groote: {WHITE}{BYTES}
STR_CONTENT_DETAIL_TITLE :{SILVER}INHOUD INFORMASIE
STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Jy het nie dit geselekteer om af te laai nie
STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Jy het dit geselekeer om af te laai
STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Heirde afhanklikheid was gekies om afgelaai te wees
STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Jy het hierdie reeds
STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Heirde inhoud is onbekend en kan afgelaai word in OpenTTD
STR_CONTENT_DETAIL_UPDATE :{SILVER}Heirdie is 'n herplasing van 'n bestaande {STRING}
STR_CONTENT_DETAIL_NAME :{SILVER}Naam: {WHITE}{STRING}
STR_CONTENT_DETAIL_VERSION :{SILVER}Weergawe: {WHITE}{STRING}
STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Beskrywing: {WHITE}{STRING}
STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING}
STR_CONTENT_DETAIL_TYPE :{SILVER}Tipe: {WHITE}{STRING}
STR_CONTENT_DETAIL_FILESIZE :{SILVER}Aflaai groote: {WHITE}{BYTES}
STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Geselekteer weens: {WHITE}{STRING}
STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Afhanklikes: {WHITE}{STRING}
STR_CONTENT_DETAIL_TAGS :{SILVER}Merkers: {WHITE}{STRING}
STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD is gebou sonder "zlib" hulp...
STR_CONTENT_NO_ZLIB_SUB :{WHITE}... aflaai van inhoud is nie moentlik nie!
# Order of these is important!
STR_CONTENT_TYPE_BASE_GRAPHICS :Basis grafika
STR_CONTENT_TYPE_NEWGRF :NewGRF
STR_CONTENT_TYPE_AI :AI
STR_CONTENT_TYPE_AI_LIBRARY :AI biblioteek
STR_CONTENT_TYPE_SCENARIO :Draaiboek
STR_CONTENT_TYPE_HEIGHTMAP :Hoogte kaart
STR_CONTENT_TYPE_BASE_SOUNDS :Basiese klanke
STR_CONTENT_TYPE_BASE_MUSIC :Musiek basis
# Content downloading progress window
STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Laai inhoud af...
STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Versoek lêer...
STR_CONTENT_DOWNLOAD_FILE :{WHITE}Nou besig om {STRING} aftelaai ({NUM} of {NUM})
STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Aflaai voltooi
STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} van {BYTES} afgelaai ({NUM} %)
# Content downloading error messages
STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Kon nie na die inhoud diener verbind nie...
STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Aflaai onsuksesvol...
STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... verbinding verloor
STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... lêer nie skryfbaar nie
@@ -1759,6 +1845,7 @@ STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Tokkel d
STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Tokkel deursigtigheid vir boubaardes soos stasies, depots, weypunte en catenary
STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Tokkel deursigtigheid vir brue
STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Tokkel deursigtigheid vir strukture soos vuurtorings en senders, miskien in toekoms vir ooglekkers
STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Tokkel deursigtigheid van kettinglyn. Ctrl+Kliek om te sluit.
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Tokkel deursigtigheid vir laai aanwysers
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Stel voorwerpe onsigbaar inplaas van deursigtig
@@ -1775,6 +1862,8 @@ STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Voorraad
STR_JOIN_STATION_CAPTION :{WHITE}Sluit by stasie aan
STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Bou 'n aparte stasie
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Verbind wegwyser
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bou 'm aparte wegwyser
# Rail construction toolbar
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :{WHITE}Spoorweg Kostruksie
@@ -1785,7 +1874,7 @@ STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :{WHITE}Magneets
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou spoore
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Bou spoorweg spoor met die Outospoor metode
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bou trein skuur (vir die bou en diens van treine)
STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Verdoel spoor na wegpunt
STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Verander spoor na wegwyser. Ctrl laat wegwyser verbinding toe
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bou spoorweg stasie
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Bou spoorweg seinligte
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bou spoorweg brug
@@ -1794,8 +1883,8 @@ STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Tokkel b
STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Verdoel/Opgradeer die spoor tipe
# Rail depot construction window
STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Trein Skuur Orientasie
STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Kies spoorweg skuur orientasie
STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Trein Depot Orientasie
STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Kies spoorweg depot orientasie
# Rail waypoint construction window
STR_WAYPOINT_CAPTION :{WHITE}Wegpunt
@@ -1820,7 +1909,12 @@ STR_STATION_CLASS_WAYP :Wegpunte
# Signal window
STR_BUILD_SIGNAL_CAPTION :{WHITE}Sein seleksie
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Een-rigting pad sein (elektries){}'n Pad sein laat meer as een trein in 'n sein block op die selfde tyd, as die trein 'n pad kan vind na 'n veiligge stop punt. Een-rigting seine kan nie van die agterkant verby gevat word nie.
STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blok Sein (semafoor){}Heirde is die mees basiese tipe sein, wat net een trein in 'n block op 'n tyd toelaat.
STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Ingangs-Sein (semafoor){}Groen so lank as daar een of meer groen uitgang-siene is van enige agtervolgende treinspoorgedeelte is. Anderste is dit rooi.
STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Uitgang-Sein (semafoor){}Gedra dieselfde as 'n blok-sein maar is nodig om die regte kleur op ingangs- & combinasie-voor-seine te laat wys.
STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combinasie-Sein (semafoor){}Die combinasie-sein is net 'n ingang- en uitgang-sein op dieselfde tyd. Die laat jou toe om groot "bome" van voor-seine te bou.
STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Een-rigting pad sein (semafoor){}'n Pad sein laat meer as een trein in 'n sein block op die selfde tyd, as die trein 'n pad kan vind na 'n veiligge stop punt. Een-rigting seine kan nie van die agterkant verby gevat word nie.
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Een-rigting pad sein (elektries){}'n Pad sein laat meer as een trein in 'n sein block op die selfde tyd, as die trein 'n pad kan vind na 'n veiligge stop punt. Een-rigting seine kan nie van die agterkant verby gevat word nie.
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Sein verander{}Wanneer geselekteer is, 'n kliek askei op die sein sal die sein verander na die geselekteerde sein tiepe en waarde, CTRL-kliek sal die bestaande waarde tokkel.
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Sein sleep digtheid
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Verminder sein sleep digtheid
@@ -1863,7 +1957,7 @@ STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Tokkel b
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Tokkel bou/verwyder vir tremweg konstruksie
# Road depot construction window
STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Pad Skuur Oriëntering
STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Pad Depot Oriëntering
STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Kies pad voertuig depot orientasie
STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Trem Depot Orientasie
STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Kies trem voertuig depot orientasie
@@ -1926,13 +2020,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Geraas g
STR_LANDSCAPING_TOOLBAR :{WHITE}Landargitekteur
STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Verlaag 'n hoek van land
STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Verhoog 'n hoek van land
STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Vlakte daal
STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Maak land gelyk
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Koop land vir gebruk in die toekoms
# Tree planting window (last two for SE only)
STR_PLANT_TREE_CAPTION :{WHITE}Boome
STR_PLANT_TREE_TOOLTIP :{BLACK}Kies boom tipe om te beplant
STR_TREES_RANDOM_TYPE :{BLACK}Boome van lukraak tipe
STR_TREES_RANDOM_TYPE :{BLACK}Bome van lukraake tipe
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plaas boome van lukraak tipe
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Lukraak Boome
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Beplant bome wildweg oor landskap
@@ -2044,7 +2138,7 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Treinspoor met
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Trainspoor met kombineer- en rigting aanwysers
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Trainspoor met kombineer- en een-rigting aanwysers
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Trainspoor met rigting- en een-rigting aanwysers
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Spoorweg trein skuur
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Spoorweg trein depot
STR_LAI_ROAD_DESCRIPTION_ROAD :Pad
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Pad met straatligte
@@ -2108,11 +2202,11 @@ STR_LAI_UNMOVABLE_DESCRIPTION_COMPANY_OWNED_LAND :Maatskappy-besi
STR_ABOUT_OPENTTD :{WHITE}Oor OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oorspronklike kopiereg {COPYRIGHT} 1995 Chris Sawyer, Alle regte voorbehou
STR_ABOUT_VERSION :{BLACK}OpenTTD uitgawe {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2009 Die OpenTTD span
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2010 Die OpenTTD span
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Speletjie
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Laai Speletjie
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Spel
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Laai Spel
STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Stoor Draaiboek
STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Laai Draaiboek
STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Laai Hoogtekaart
@@ -2131,9 +2225,9 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Tik 'n n
STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Wêreld generasie
STR_MAPGEN_MAPSIZE :{BLACK}Kaart groote:
STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Hoev. van dorpe
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Hoev. dorpe:
STR_MAPGEN_DATE :{BLACK}Date:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Hoev. van nywerhede
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Hoev. nywerhede:
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Sneeu lyn hoogte:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Beweeg die sneeu lyn een op
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Beweeg die sneeu lyn een af
@@ -2141,12 +2235,13 @@ STR_MAPGEN_RANDOM_SEED :{BLACK}Lukraak
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Kliek om 'n lukraak saad in te voeg
STR_MAPGEN_RANDOM :{BLACK}Lukraake
STR_MAPGEN_RANDOM_HELP :{BLACK}Verander die lukraak saad gebruik vir Terrein Generasie
STR_MAPGEN_LAND_GENERATOR :{BLACK}Daal genereerder:
STR_MAPGEN_LAND_GENERATOR :{BLACK}Land genereerder:
STR_MAPGEN_TREE_PLACER :{BLACK}Boom algoritme:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrein tipe:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Seevlak:
STR_MAPGEN_SMOOTHNESS :{BLACK}Gladheid:
STR_MAPGEN_GENERATE :{WHITE}Opwek
STR_MAPGEN_VARIETY :{BLACK}Verskeidenheid distribusie:
STR_MAPGEN_GENERATE :{WHITE}Genereer
# Strings for map borders at game generation
STR_MAPGEN_BORDER_TYPE :{BLACK}Kaart kante:
@@ -2171,9 +2266,9 @@ STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Verander
# SE Map generation
STR_SE_MAPGEN_CAPTION :{WHITE}Draaiboek tipe
STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Platte daal
STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Opwek 'n plat daal
STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Lukraak daal
STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Plat land
STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Genereer 'n plat terrein
STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Lukraake land
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Hoogte van platte daal:
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Beweeg die hoogte van platte daal een af
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Beweeg die hoogte van platte daal bo een
@@ -2245,6 +2340,7 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING
STR_NEWGRF_ERROR_MSG_WARNING :{RED}Waarskuwing: {SILVER}{STRING}
STR_NEWGRF_ERROR_MSG_ERROR :{RED}Fout: {SILVER}{STRING}
STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fataal: {SILVER}{STRING}
STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}n' Fataale NewGRF fout het gebeur: {}{STRING}
STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} sal nie met die TTDPatch uitgawe rapporteer deur OpenTTD werk nie.
STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} is vir die {STRING} uitgawe van TTD.
STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} is onderwerp om saam met {STRING} gebruik te word
@@ -2261,7 +2357,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Versigtig!
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Jy is besig om veranderings op 'n tans gebruikte speletjie te doen. Dit kan OpenTTD beskadig. {}Is jy heeltemal seker ?
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Jy is opad om veranderings te maak op tans loopende spel. Dit kan OpenTTD lat staak. {}Is jy heeltemal seker ?
STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kan nie lêer voeg: duplikaat GRF ID
STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Gelyke lêer nie gevind nie (versoenbaar GRF gelaai)
@@ -2300,11 +2396,12 @@ STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populasi
STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passasiers verlede maand: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pos verlede maand: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{STRING}{BLACK} vereis
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} vereis in winter
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_LAST_MONTH :{ORANGE}{CARGO}{BLACK} gelewer laas maand
STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Geraaas limit in dorp: {ORANGE}{COMMA}{BLACK} Maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Senter skerm op dorp lokasie
STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Plaaslike raad
STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Toon informasie oor plaaslike raad
STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Vertoon informasie oor plaaslike raad
STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Verander dorp naam
STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Brei uit
@@ -2368,7 +2465,7 @@ STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO}
STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} op roete vanaf {STATION})
STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aanvaar
STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Toon lys van aanvaarde vrag
STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Wys lys van aanvaarde vrag
STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aanvaar: {WHITE}
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Graderings
@@ -2402,7 +2499,7 @@ STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOIN
STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Verander wegpunt name
STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Verander baken naam
STR_EDIT_WAYPOINT_NAME :{WHITE}Redigeer wegpunt naam
STR_EDIT_WAYPOINT_NAME :{WHITE}Redigeer wegwyser naam
# Finances window
STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finansies {BLACK}{COMPANYNUM}
@@ -2415,7 +2512,7 @@ STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Pad Voert
STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Vliegtuig Loopkoste
STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Skip loopkoste
STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Eiendom Onderhoud
STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Trein Inkome
STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Trein Inkomste
STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Pad Voertuig Inkome
STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Vliegtuig Inkome
STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Skip Inkome
@@ -2837,8 +2934,8 @@ STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Wins hie
STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Gebou: {LTBLUE}{NUM}{BLACK} Waarde: {LTBLUE}{CURRENCY}
STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}Geen
STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO}{4:STRING}
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapasiteit: {LTBLUE}{CARGO}{4:STRING} (x{5:NUM})
STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO}{3:STRING}
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapasiteit: {LTBLUE}{CARGO}{3:STRING} (x{4:NUM})
STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO}, {CARGO}{STRING}
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}oordra Krediete: {LTBLUE}{CURRENCY}
@@ -2866,11 +2963,11 @@ STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO}
STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO} van {STATION} (x{NUM})
STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Vrag
STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Toon besonderhede van vrag gedra
STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Wys besonderhede van gedrade vrag
STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Inligting
STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Toon besonderhede van trein voertuie
STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Wys besonderhede van trein voertuie
STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapasiteite
STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Toon kapasiteite van elke voertuig
STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Wys kapasiteite van elke voertuig
STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Totaale Vrag
STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Toon totaale kapasitiet van trein, verdeel by vrag tipe
@@ -3078,7 +3175,7 @@ STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Naam van
STR_AI_DEBUG_RELOAD :{BLACK}Herlaai AI
STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Maak die AI dood, herlaai die skrif en herlaai die AI
STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Daar was n fout met een van die AIs. Rapporteer assblief aan die skrywer met n skermskoot van die AI ontfout venster.
STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Daar was n fout met een van die AIs. Rapporteer assblief aan die skrywer met n skermkiekie van die AI Ontfout Venster.
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Die AI ontfout venster is net beskikbaar vir die dienaar
# AI configuration window
@@ -3087,6 +3184,11 @@ STR_AI_CONFIG_LIST_TOOLTIP :{BLACK}Alle AIs
STR_AI_CONFIG_HUMAN_PLAYER :Mens Speler
STR_AI_CONFIG_RANDOM_AI :Lukraak AI
STR_AI_CONFIG_MOVE_UP :{BLACK}Beweeg op
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Beweeg gekose AI op in die lys
STR_AI_CONFIG_MOVE_DOWN :{BLACK}Beweeg af
STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Beweeg gekose AI af in die lys
STR_AI_CONFIG_CHANGE :{BLACK}Kies AI
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Laai nog 'n AI
STR_AI_CONFIG_CONFIGURE :{BLACK}Konfigureer
@@ -3136,7 +3238,7 @@ STR_ERROR_GAME_SAVE_FAILED :{WHITE}Speletji
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Onbekwaam om lêer te uitvee
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Speletjie Laai Misluk{}{STRING}
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne fout: {STRING}
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Gebreek spaarspeletjie - {STRING}
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Gebreekte gespaarde spel - {STRING}
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spaarspeletjie is gemaak met nuwer uitgawe
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Lêer nie leesbare
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Lêer nie skryfbaar
@@ -3158,7 +3260,7 @@ STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Skaal wa
STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Om die kaart te veel te verstel is nie aanbeveel. Gaan voort met die generasie?
# Screenshot related messages
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skermskoot suksesvol gestoor as '{STRING}'
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skermkiekie suksesvol gestoor as '{STRING}'
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Skermskoot het misluk!
# Error message titles
@@ -3166,14 +3268,14 @@ STR_ERROR_MESSAGE_CAPTION :{YELLOW}Boodska
STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Boodskap van {STRING}
# Generic construction errors
STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Van die landkaart af
STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Te naby aan die kant van die landkaart
STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Van die kaart af
STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Te naby aan die kant van die kaart
STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Nie genoeg kontant nie - benodig {CURRENCY}
STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Gelyk grond benodig
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Land loop in verkeerde rigting
STR_ERROR_CAN_T_DO_THIS :{WHITE}Kan dit nie doen nie....
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Gebou moet eers afgebreek word
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan nie hierdie area skoon maak nie....
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan nie hierdie gebied skoon maak nie....
STR_ERROR_SITE_UNSUITABLE :{WHITE}...ligging ongeskik
STR_ERROR_ALREADY_BUILT :{WHITE}...alreeds gebou
STR_ERROR_OWNED_BY :{WHITE}...besit deur {STRING}
@@ -3200,7 +3302,7 @@ STR_ERROR_ALREADY_LEVELLED :{WHITE}... klaa
STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Maatskappy naam kan nie verander word nie...
STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Bestuurder se naam kan nie verander word nie...
STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}...maksimum toegelaat lening groote is {CURRENCY}
STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}...maksimum toegelaate lening groote is {CURRENCY}
STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kan nie meer geld leen nie...
STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}...geen lening om terug te betaal
STR_ERROR_CURRENCY_REQUIRED :{WHITE}...{CURRENCY} vereis
@@ -3223,14 +3325,14 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}...daar
STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Pad werke in verloop
# Industry related errors
STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan nie nywerhede opwek nie...
STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan nie nywerhede genereer nie...
STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Kan nie {STRING} hier bou nie...
STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Nywerheid tipe kan nie hier gebou word nie...
STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}...te naby aan 'n ander nywerheid
STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}...moet eers 'n dorp bou
STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}...slegs een toegelaat per dorp
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}...kan slegs in dorpe met te minste 1200 mense gebou word
STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan slegs in reenwoud gebiede gebou word
STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan slegs in reënwoud gebiede gebou word
STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan slegs in woestyn gebiede gebou word
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan slegs in dorpe gebou word
STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}...kan net naby aan kant van fkaart geplaas word
@@ -3287,8 +3389,8 @@ STR_ERROR_BUOY_IN_THE_WAY :{WHITE}...baken
STR_ERROR_BUOY_IS_IN_USE :{WHITE}...baken is in gebruik!
# Depot related errors
STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan nie trein skuur hier bou nie...
STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kan nie pad voertuig skuur hier bou nie...
STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan nie trein depot hier bou nie...
STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kan nie pad voertuig depot hier bou nie...
STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Kan nie trem voertuig depot hier bou nie...
STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Skip depot kan nie hier gebou word nie...
+5 -5
View File
@@ -1155,7 +1155,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :عدم استخ
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :{LTBLUE}تصفح بالزر الايسر: {ORANGE}{STRING}
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :{LTBLUE} استخدم {ORANGE}{STRING}{LTBLUE} نمط التاريخ لاسم اللعبة المحفوظة
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :طويل - 31 ديسمبر 2009
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :طويل - 31 ديسمبر 2008
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :قصير - 31 - 12 - 2008
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ايزو 31-12-2008
@@ -2176,7 +2176,7 @@ STR_LAI_UNMOVABLE_DESCRIPTION_COMPANY_OWNED_LAND :ارض مملو
STR_ABOUT_OPENTTD :{WHITE}حول النسخة المفتوحة
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}الحقوق الأصلية {COPYRIGHT} كريس سوير 1995 , جميع الحقوق محفوظة
STR_ABOUT_VERSION :{BLACK}النسخة المفتوحة رقم {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2009 فريق النسخة المفتوحة
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2010 فريق النسخة المفتوحة
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة
@@ -2876,7 +2876,7 @@ STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}تتو
STR_VEHICLE_STATUS_NO_ORDERS :{LTBLUE}لايوجد اوامر وجهات
STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}لا يوجد اوامر وجهات , {VELOCITY}
STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT :{LTBLUE}متوجه ل{WAYPOINT}
STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT :{LTBLUE}متوه ل{WAYPOINT}
STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}متوجه ل {WAYPOINT}, {VELOCITY}
STR_VEHICLE_STATUS_HEADING_FOR_TRAIN_DEPOT :{ORANGE}متوجه لورشة قطارات {TOWN}
@@ -2919,8 +2919,8 @@ STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK} دخل
STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK} الاعتمادية {LTBLUE}{COMMA} % {BLACK} الاعطال منذ اخر صيانة {LTBLUE}{COMMA}
STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK} بني {LTBLUE}{NUM}{BLACK} القيمة {LTBLUE}{CURRENCY}
STR_VEHICLE_INFO_CAPACITY :{BLACK} السعة {LTBLUE}{CARGO}{4:STRING}
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK} السعة {LTBLUE}{CARGO}{4:STRING} (x{5:NUM})
STR_VEHICLE_INFO_CAPACITY :{BLACK} السعة {LTBLUE}{CARGO}{3:STRING}
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK} السعة {LTBLUE}{CARGO}{3:STRING} (x{4:NUM})
STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK} السعة {LTBLUE}{CARGO}, {CARGO}{STRING}
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}مقدار التحويل: {LTBLUE}{CURRENCY}
+4 -4
View File
@@ -1336,7 +1336,7 @@ STR_QUIT_NO :{BLACK}Não
STR_OSNAME_WINDOWS :Windows
STR_OSNAME_DOS :DOS
STR_OSNAME_UNIX :Unix
STR_OSNAME_OSX :OS X
STR_OSNAME_OSX :OS{NBSP}X
STR_OSNAME_BEOS :BeOS
STR_OSNAME_HAIKU :Haiku
STR_OSNAME_MORPHOS :MorphOS
@@ -2167,7 +2167,7 @@ STR_LAI_UNMOVABLE_DESCRIPTION_COMPANY_OWNED_LAND :O terreno é pr
STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD...
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados
STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2009 A equipe do OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2010 A equipe do OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar Jogo
@@ -2906,8 +2906,8 @@ STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros d
STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
STR_VEHICLE_INFO_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}{4:STRING}
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Capacidade: {LTBLUE}{CARGO}{4:STRING} (x{5:NUM})
STR_VEHICLE_INFO_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}{3:STRING}
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Capacidade: {LTBLUE}{CARGO}{3:STRING} (x{4:NUM})
STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}, {CARGO}{STRING}
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transferir Dinheiro: {LTBLUE}{CURRENCY}
+3 -3
View File
@@ -2140,7 +2140,7 @@ STR_LAI_UNMOVABLE_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-2009 The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2010 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Запази играта
@@ -2863,8 +2863,8 @@ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} г
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. скорост: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_CAPACITY :{BLACK}Капацитет: {LTBLUE}{CARGO}{4:STRING}
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Капацитет: {LTBLUE}{CARGO}{4:STRING} (x{5:NUM})
STR_VEHICLE_INFO_CAPACITY :{BLACK}Капацитет: {LTBLUE}{CARGO}{3:STRING}
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Капацитет: {LTBLUE}{CARGO}{3:STRING} (x{4:NUM})
STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Капацитет: {LTBLUE}{CARGO}, {CARGO}{STRING}
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Сума за преместване: {LTBLUE}{CURRENCY}

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