mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-15 02:29:10 +00:00
Compare commits
369 Commits
0.6.0-beta
...
0.6.0-beta
Author | SHA1 | Date | |
---|---|---|---|
8c6bca29ad | |||
|
266dd80f6c | ||
9674ff71de | |||
3907ac518b | |||
e1cc80b01c | |||
|
6e3ae628fc | ||
6bb37edfb6 | |||
|
b64f637c72 | ||
|
cf0e6d4cb4 | ||
5049fbb081 | |||
|
56ed79e448 | ||
|
620695587d | ||
|
8dacca9a71 | ||
|
c4e023bd6e | ||
|
9973b7fb64 | ||
f87b1df566 | |||
3bba6e4abd | |||
9ccce57438 | |||
6bdc8e5fae | |||
034649e7f5 | |||
|
35fd0dfd4e | ||
|
86a4d377b1 | ||
|
35195bb2bc | ||
|
459fd42e1d | ||
6aea2454c8 | |||
926f5d548d | |||
|
8f47b642b6 | ||
|
46a3508f50 | ||
|
202f1046f6 | ||
|
7c14dedeb6 | ||
|
92254bda01 | ||
|
7e74fca7d8 | ||
|
68aaeec3a8 | ||
|
0a92b3366c | ||
|
3764aa5134 | ||
|
62d9bf8d0f | ||
|
4a4be744b6 | ||
|
e41df385d7 | ||
|
93b3a66678 | ||
|
c2f3e0e326 | ||
|
27284db36f | ||
|
f352512c8d | ||
|
ed1e402960 | ||
|
747f57bcec | ||
|
8290a798fc | ||
|
089969e1ca | ||
|
e821b3a9b8 | ||
dda6cab17a | |||
|
c0544563a6 | ||
577b0cc260 | |||
|
1b73417e5f | ||
79b6b9cb66 | |||
|
db9d5a909f | ||
|
1e74834441 | ||
e90cf8509a | |||
|
a47b4631ea | ||
|
767e1cc37e | ||
|
b7993793c8 | ||
9e65157548 | |||
|
a190606f2e | ||
|
e95a85315c | ||
|
73a6525129 | ||
|
f5929d413b | ||
|
ca46154068 | ||
|
0e9e94a94b | ||
|
2b8d1bcb51 | ||
|
169ac7c91d | ||
|
595d9357c3 | ||
|
b4b5c09ff9 | ||
|
6e9b952623 | ||
|
adf1227290 | ||
|
578e833284 | ||
|
0821df8537 | ||
|
0cdf2b525f | ||
a4c14fb442 | |||
|
509b3a3247 | ||
|
c7a8080c3a | ||
|
29125c0e68 | ||
|
a0a225ab02 | ||
a0fda5b969 | |||
b3f304cde3 | |||
06de1215c1 | |||
db0eb9570c | |||
|
38969fe46d | ||
|
d75cccf5d5 | ||
|
6bf44158c5 | ||
|
505951e9fa | ||
|
8b56e7544e | ||
|
291931bf50 | ||
|
16e23a75fe | ||
7394b9d030 | |||
|
13781ec11b | ||
|
ebe03109ad | ||
|
4b7a812e55 | ||
|
058f39fe18 | ||
|
e7173d3ba4 | ||
|
245fccf22d | ||
|
b8f8d0ca51 | ||
|
b4f58ebae4 | ||
|
044ca2bbf6 | ||
|
3e70ee6ed7 | ||
|
a5f99154b7 | ||
|
a40d761d7f | ||
|
fd0f57a794 | ||
|
cedca22c60 | ||
|
ef354e074f | ||
|
65a13a3022 | ||
ac5433a924 | |||
d1c741db4c | |||
|
4164d2488f | ||
|
43c0f7ea8e | ||
|
739b118c6b | ||
859d768bb7 | |||
|
bb81de3c4c | ||
3371d02449 | |||
|
539c635efd | ||
|
81b3652f37 | ||
|
a0ddc43e92 | ||
b7cd791988 | |||
|
fd51465c8b | ||
|
480036254b | ||
|
0d1e4237cf | ||
|
507728f46b | ||
df7327b453 | |||
|
6bb9c474dd | ||
|
c95ff294fb | ||
63e306006b | |||
|
c2bad6d22c | ||
|
23bae896c9 | ||
4d0c443953 | |||
9f6fd72c09 | |||
592e22cc3a | |||
e76f7c9359 | |||
|
f4334301e8 | ||
|
b0b929ce42 | ||
|
42b305661b | ||
|
f19eca0905 | ||
f175e46208 | |||
|
cc2b8b574a | ||
|
1011ac353b | ||
fb6accfcb7 | |||
|
4f0e6ab0ea | ||
|
d8b3526840 | ||
|
9a50fcd281 | ||
|
9e0a93d286 | ||
|
8a768652c8 | ||
|
4e839aacf6 | ||
|
e075cf5500 | ||
|
ad933e1ddb | ||
|
a86921da41 | ||
|
9deab65bae | ||
|
efe831934a | ||
|
d9af979d6a | ||
|
e3301db213 | ||
|
802c949755 | ||
|
221494bd3f | ||
|
cebb86777a | ||
|
a782ab3903 | ||
|
cf9447c15b | ||
|
9343ad44fd | ||
|
8195e57fd4 | ||
|
e2de86f951 | ||
|
731137678c | ||
|
7b9efcea21 | ||
|
2173b03144 | ||
|
bf15bc9c57 | ||
|
30a8c150d0 | ||
|
034150c199 | ||
|
b68f398cac | ||
1bcc1927b1 | |||
|
431c3ce3c1 | ||
|
8a3f6830a3 | ||
|
eb0d50aaff | ||
a187d92d87 | |||
|
8606e70819 | ||
|
c0c9b80db3 | ||
|
918591c05b | ||
|
7860d8d18a | ||
|
e95e887772 | ||
|
94f4217984 | ||
|
5049ff8e8e | ||
f29c748d4c | |||
|
62b3520e51 | ||
|
80daad8d4d | ||
|
3003986e67 | ||
|
c261218cf5 | ||
|
146779b158 | ||
|
23c669fe50 | ||
|
dbfdc5df94 | ||
|
b35611dae3 | ||
|
5e7c8012ec | ||
|
04ef38ec60 | ||
|
2a2aa1d22a | ||
|
b206e50f80 | ||
a528dc89c7 | |||
|
2588879c6d | ||
|
20e9abed47 | ||
|
0ca3977af8 | ||
|
1e51090e74 | ||
|
90973cdcef | ||
|
612ba5c787 | ||
|
f3663fd25c | ||
1d891a8b15 | |||
|
7cf2c83462 | ||
|
fc4f6dcfb1 | ||
7a78a1b51a | |||
|
525409b0fc | ||
67782add11 | |||
|
45b79bc9f1 | ||
|
803a1e2353 | ||
|
6537d13c8a | ||
e0849acc5a | |||
be548ee224 | |||
|
f3ecaf796e | ||
|
a1c543e064 | ||
|
fe9891c8ec | ||
|
ef35cefddc | ||
|
2ef11e0b8b | ||
|
bc1542d483 | ||
|
1608d67030 | ||
|
a2b35067dd | ||
|
caf7e8655c | ||
|
953c3cb6df | ||
|
46589fa827 | ||
1cdee354b4 | |||
|
94aa04948c | ||
|
44f4ebffed | ||
|
be6737a2db | ||
fb8973c64a | |||
|
a736e8500a | ||
|
9c4cb84c03 | ||
|
7cf4f09c26 | ||
|
cda0e9f91c | ||
|
379f89fc7e | ||
b20d220333 | |||
|
02f774793b | ||
|
fdd71514b2 | ||
|
1629699094 | ||
|
c9a9103566 | ||
|
3b2145aafe | ||
|
fde33b5547 | ||
1a9b741e43 | |||
|
d3c7a35d22 | ||
|
abc6e70447 | ||
|
a1b98cda59 | ||
|
a9031cc5f5 | ||
|
0253b1d02a | ||
|
c8ba8d930b | ||
|
c5b81c9382 | ||
|
21eef65e77 | ||
0847def759 | |||
|
7b29dcde3c | ||
97a1cbdfa1 | |||
c6656d6b2f | |||
2fc2188127 | |||
c99eb9e456 | |||
|
d3990083d3 | ||
18431dd9f8 | |||
|
e214e03c28 | ||
|
b329781ab2 | ||
|
6f6708e844 | ||
|
d11aeb118c | ||
eeeeeb9336 | |||
|
e99c34bef4 | ||
|
bbdc5a9314 | ||
|
4991dcecc7 | ||
|
44d085af6c | ||
|
1fc0c0d2dc | ||
|
bd0c853e27 | ||
|
da754951f1 | ||
|
79aa7247c0 | ||
|
5f9a877376 | ||
697b07c99c | |||
9c65bcea7d | |||
|
541247c830 | ||
|
5a7c903770 | ||
|
b5641ae0f2 | ||
|
e40944f8e0 | ||
|
4cb91fa591 | ||
b718cae67d | |||
|
9c16461c29 | ||
|
d6eaf1a11a | ||
|
4a3e135086 | ||
|
0b888ccc00 | ||
9515328962 | |||
|
a31ebdb2be | ||
e35cf20a23 | |||
0f966a316a | |||
ff0891426f | |||
|
983fdb8a4f | ||
da53070a38 | |||
|
3a423a8747 | ||
39f6173401 | |||
|
49d2087d7f | ||
|
b99c83246b | ||
|
7d1e3086b8 | ||
|
96a18d859f | ||
|
59ec5e62ce | ||
30bac58bde | |||
ffec79bbcf | |||
|
9444eb4484 | ||
ca1b3e7b4e | |||
|
0a6425926b | ||
|
f23e71f22f | ||
|
000117aa19 | ||
9ca929c812 | |||
|
ffb9ca164e | ||
|
2c5c97346b | ||
|
3423032dbb | ||
|
90a770250f | ||
|
e91230415d | ||
|
2f6ee3a4a1 | ||
a580c8d059 | |||
4a2f7db99b | |||
|
aa0412e0bc | ||
02c9484ebb | |||
|
1712a8a0e1 | ||
|
730dda867b | ||
14416791af | |||
|
600046f3d7 | ||
b6d0684826 | |||
70025a149d | |||
|
22a7b95c10 | ||
|
1d59439166 | ||
68707808c0 | |||
|
b7f50533c2 | ||
|
0b3db1a92d | ||
307b0e8e7a | |||
ada41b7b3f | |||
|
8d077b16d8 | ||
ac0fa7f69f | |||
|
822242f411 | ||
35135222b5 | |||
|
17c9ea9ca3 | ||
6d3aa07a24 | |||
d80e04d6f6 | |||
|
44a4ff835d | ||
ad54075acc | |||
c313676c66 | |||
|
c74cf439fa | ||
|
35f3421842 | ||
|
c579bffed2 | ||
|
978a7ca56a | ||
|
4f31704e2e | ||
|
f37174f0e2 | ||
a9c71ce375 | |||
68fc3b35da | |||
f788298209 | |||
|
f5d72cc84c | ||
|
08c01e64b8 | ||
|
3d61a1adc5 | ||
|
f658b79e15 | ||
|
69c18efdca | ||
4d9a9bf6ff | |||
bc438a3033 | |||
|
c8178d43c1 | ||
|
ac7bc24b0e | ||
69cb009075 | |||
330ec8bdd6 | |||
abac83795d | |||
019ffe29b8 | |||
|
692fbb3c05 | ||
|
5659cbe6fe | ||
|
beb1b07f5f | ||
|
2817e5425b | ||
|
7a66d5e21d | ||
|
77a20eae43 | ||
|
9556623281 | ||
|
40a7ace4fa |
11
.gitignore
vendored
Normal file
11
.gitignore
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
Makefile*
|
||||
bin/*
|
||||
!bin/data/chars.grf
|
||||
!bin/data/openttdd.grf
|
||||
!bin/data/openttdw.grf
|
||||
!bin/data/opntitle.grf
|
||||
!bin/scenario/README
|
||||
!bin/scripts*
|
||||
config.*
|
||||
objs/*
|
||||
src/rev.cpp
|
@@ -36,7 +36,7 @@ RES := $(shell mkdir -p $(BIN_DIR)/lang )
|
||||
|
||||
all: table/strings.h $(LANGS)
|
||||
|
||||
strgen.o: $(SRC_DIR)/strgen/strgen.cpp endian_host.h
|
||||
strgen.o: $(SRC_DIR)/strgen/strgen.cpp endian_host.h $(SRC_DIR)/table/control_codes.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
@@ -44,13 +44,17 @@ string.o: $(SRC_DIR)/string.cpp endian_host.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h
|
||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSTRGEN -c -o $@ $<
|
||||
|
||||
lang/english.txt: $(LANG_DIR)/english.txt
|
||||
$(Q)mkdir -p lang
|
||||
$(Q)cp $(LANG_DIR)/english.txt lang/english.txt
|
||||
|
||||
$(STRGEN): string.o strgen.o
|
||||
$(STRGEN): alloc_func.o string.o strgen.o
|
||||
$(E) '$(STAGE) Compiling and Linking $@'
|
||||
$(Q)$(CXX_BUILD) string.o strgen.o -o $@
|
||||
$(Q)$(CXX_BUILD) $^ -o $@
|
||||
|
||||
table/strings.h: lang/english.txt $(STRGEN)
|
||||
$(E) '$(STAGE) Generating $@'
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
165
changelog.txt
165
changelog.txt
@@ -1,3 +1,168 @@
|
||||
0.6.0-beta5 (2008-03-04)
|
||||
------------------------------------------------------------------------
|
||||
-Feature: Vehicle variable FE bit 8 (r12331) [FS#1812]
|
||||
-Feature: Vehicle variable FE bit 5 and 6 (r12330)
|
||||
-Feature: Support loading full range of 0xD0xx NewGRF strings which includes 0xD000 to 0xD3FF (r12316)
|
||||
-Feature: Ability to change aircraft speed factor, from so called 'realistic' (matching other vehicles) (1/1) to original TTD speed (1/4) (r12293, r12294)
|
||||
-Fix: Don't pause/unpause the game when showing load/save windows when the game is paused due to missing GRFs (r12336) [FS#1733]
|
||||
-Fix: Disallow building level crossings over one-way roads as this allowed competitors to remove the one-way state (r12329) [FS#1819]
|
||||
-Fix: Wrong Y pillar specified for girder with arch bridge (r12328)
|
||||
-Fix: Vehicles could be sorted in a wrong order when a vehicle name changed - cached name was not invalidated (r12324)
|
||||
-Fix: Vehicle sorting by name was broken, it was comparing two the same strings (when caching was not used) (r12323) [FS#1821]
|
||||
-Fix: Endian issue when saving/loading group owner (r12322)
|
||||
-Change: Update readme about where openttd looks for files (r12321)
|
||||
-Fix: Wrong transparency options could be saved after toggling all (r12320) [FS#1817]
|
||||
-Fix: Map string IDs that are embedded from other strings (r12317) [FS#1815]
|
||||
-Fix: Include prop 25 data for all train parts, not just those that carry cargo (r12314)
|
||||
-Fix: YAPF and NTP did not apply penalty for uphill tracks on steep slopes (r12313)
|
||||
-Fix: Restore timetable from backupped orders and add group ID to the backup (r12296) [FS#1549]
|
||||
-Fix: Do not draw trees nor lamps between tram tracks (r12290) [FS#1807]
|
||||
-Fix: [Win32] Don't create save dir on install (r12269)
|
||||
-Fix: Autoreplace did not update vehicle index for timetable window (r12261) [FS#1805]
|
||||
-Fix: GetProductionAroundTiles() may fail if only the second production slot exists (r12258)
|
||||
-Fix: Removing the Broken FollowTrack_t (pathfinding) fixed related functions (r12252) [FS#1801]
|
||||
-Fix: Town variables 0x9E to 0xAD (company ratings) returned wrong values (r12247)
|
||||
-Fix: Proper usage of Clamp() (r12246)
|
||||
-Fix: Typo resulting in no players are given the engine preview offer (r12244)
|
||||
-Fix: Mac OSX bundle display name should be 'OpenTTD' (r12234) [FS#1798]
|
||||
-Fix: [NewGRF] Support using any base price for rail and road vehicles' running cost, show running cost of wagons if available (r12209)
|
||||
-Fix: When loading a savegame fails, don't start creating a new game, just go straight back to the intro screen (r12202)
|
||||
-Fix: Force AI to build rail or road instead of bridges if possible, so it doesn't build bridges everywhere (r12200)
|
||||
-Fix: "Transparent buildings" now only toggles buildings, so show tick when buildings are transparent [FS#1789] (r12198)
|
||||
-Fix: Show correct last year profit when the train had negative income [FS#1788] (r12197)
|
||||
-Fix: There can be oil rigs at map borders, do not set water class for them [FS#1787] (r12195)
|
||||
-Fix: Clamp various town variables to 16bit prior to returning the value (r12192)
|
||||
-Fix: Do not start overtaking if the RV reaches wrong-way one-way-road in the next tiles (r12191)
|
||||
-Fix: YAPF always shows 0ms PF time in debug for debug level 2 [FS#1786] (r12190)
|
||||
-Fix: Assert when trying to play tile sound at NW border of map (placing buyos, leveling land) [FS#1784] (r12186)
|
||||
-Fix: Wrong operator priority, hopefully harmless (r12185)
|
||||
-Fix: Take into account possible loan when AI is deciding which bridge to build, so it won't build wooden bridges everytime (r12184)
|
||||
|
||||
0.6.0-beta4 (2008-02-18)
|
||||
------------------------------------------------------------------------
|
||||
-Feature: Allow buttons to resize in NewGRF settings window (r12172)
|
||||
-Feature: Change colour of autorail and autoroad selection when Ctrl is pressed (r12167)
|
||||
-Feature: Separate catenary transparency settings from building transparency settings (r12103)
|
||||
-Feature: Allow locking individual transparency settings so they will not be changed by pressing 'x' (r12102)
|
||||
-Feature: Add some missing VarAction2 variables (r12124)
|
||||
-Feature: Make snow appear on rail tiles dependant on track height, not on height of the lowest part of the tile (r12098)
|
||||
-Feature[newGRF]: Specify the purchase, rail and road description of a bridge (r12069)
|
||||
-Feature[newGRF]: Add support for var 12, Variational Action 2 (r12045)
|
||||
-Feature: Allow trees on shore (r12029)
|
||||
-Feature: Invisible trees are now separate from the building concept (r12022)
|
||||
-Feature: Add support for passenger engine designation for AI-use, NewGRF property 0x08 for trains (r12019)
|
||||
-Feature: Show all cargo sources (en-route from) in the station view cargo waiting list instead of just one (r11990)
|
||||
-Feature[newGRF]: Resizable industry view window on callback 3A (r11987)
|
||||
-Feature[newGRF]: Implement var 8F(random bits) during callback 28 [FS#1697] (r11985)
|
||||
-Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size (r11961)
|
||||
-Feature: Make use of new sprites added by Action5 type 0D (r11947)
|
||||
-Feature: Allow building bridge heads on more slopes (r11937)
|
||||
-Feature[newGRF]: Add support for Rivers. Rivers can currently only be placed with-in the scenario editor (r11926,r11938,r11949,r12071)
|
||||
-Feature: Generate.vbs script to allow project files generation for users unable to run generate bash script (r12123)
|
||||
-Feature: Sort the strings in languages dropdown (r11886)
|
||||
-Codechange: Drop MSVC 2003 support (r11979)
|
||||
-Fix: Test purchase list loading/loaded sprites instead of unconditionally returning a possibly non-existant sprite (r12180)
|
||||
-Fix: Return correct bridge price for AI when DC_QUERY_COST is set [FS#609] (r12171)
|
||||
-Fix: When drag&drop mode was cancelled by keyboard input, depot/group window wasn't updated [FS#337] (r12166)
|
||||
-Fix: Buffer overflow when drawing scrolling news [FS#1652, FS#1773] (r12165)
|
||||
-Fix: If a train is 'stopping' when entering a depot, do not let it leave again [FS#1705] (r12163)
|
||||
-Fix: Towns shouldn't build over houses owned by another town [FS#1757] (r12162)
|
||||
-Fix: Towns will no longer build houses > 1x1 there where should be road (with 2x2, 3x3 grid town layouts) (r12161)
|
||||
-Fix: Remove the arbitrary limit of 64 waypoints per town [FS#1744] (r12160)
|
||||
-Fix: Chance16I was now biased towards zero - round to nearest now (r12156)
|
||||
-Fix: Adjust aircraft slowing algorithm (r12144)
|
||||
-Fix: Callback 0x3D always gets a cargobit in var 0x18, independent of grf version [FS#1766] (r12142)
|
||||
-Fix: Do not allow adding tram to rail-road crossing when there is a vehicle on it (r12138)
|
||||
-Fix: Show cargo capacity for articulated vehicles correctly in the purchase list. Multiple cargo types can also now been shown [FS#1769] (r12137)
|
||||
-Fix: With mammoth trains disabled, maximum train length was limited to 9 (r12131)
|
||||
-Fix: Use tile index 0 for planes in the air, so it cannot have an invalid tile index [FS#1745] (r12109)
|
||||
-Fix: X/Y axis swap for station tiles in GetNearbyTile() was wrong way around [FS#1753]( r12108)
|
||||
-Fix: Loading older savegames fixes (r12096,r12097)
|
||||
-Fix: When a company bankrupts, remove drive-through road stops, ship depots and buoys too. Update owners of water and road [FS#1703] (r12095)
|
||||
-Fix: Do not set station owner for buoys when merging company (r12093)
|
||||
-Fix: Keep production level within delimited boundaries, while using var result 0D/0E and than multiplying/dividing it [FS#1755] (r12092)
|
||||
-Fix: Assert when loading savegame with wrong tiletype at south map borders (r12088)
|
||||
-Fix: Check overrides only for industries when mapping newgrf entities to 'real' entities [FS#1747] (r12086)
|
||||
-Fix: Update waypoint signs when changing language (r12080)
|
||||
-Fix: Use search paths when opening console scripts (r12079)
|
||||
-Fix: When reusing a renamed deleted waypoint, keep the new name (r12076)
|
||||
-Fix: Make docks at sea flood neighboured tiles (r12072)
|
||||
-Fix: Possible deadlock when there are no houses available to build at given tile (r12062)
|
||||
-Fix: Houses with zero probability could be built (r12062)
|
||||
-Fix: Do not clear tiles when the town won't be able to build any buildings anyway (r12060)
|
||||
-Fix: Allow building 2x2 building on slopes if not explicitly forbidden (r12060)
|
||||
-Fix: It was possible to build 2x1 and 1x2 buildings on slopes even if it was not allowed (r12060)
|
||||
-Fix: Teach NPF where road vehicles and trams can reverse (r12058)
|
||||
-Fix: Ships can drive through opponents' ship depots (r12058)
|
||||
-Fix: Slowdown train when approaching 90deg turn when 90deg turns are forbidden (r12057)
|
||||
-Fix: Enable YAPF to start searching inside a wormhole [FS#1704] (r12056)
|
||||
-Fix: Another way to fix AI trying to build road through depots (r12055)
|
||||
-Fix: The cargo translation table was loaded at the right time, but all the other global variables were now loaded too early [FS#1737] (r12052)
|
||||
-Fix: Random_func broke for desync debug (r12050)
|
||||
-Fix: Memset on multibyte array with wrong byte count (r12049)
|
||||
-Fix: Crash when centering on a vehicle (aircraft) that is outside of the map [FS#1741] (r12044)
|
||||
-Fix: Allow building transmitters and lighthouses on tree tiles [FS#1736] (r12043)
|
||||
-Fix: Reimplement how rivers and canals are stored in the map, allowing the sea/river/canal status to also be
|
||||
stored for buoys, docks, locks and depots. All these are now allowed on rivers and removal of them will revert to the
|
||||
original water type [FS#1676] (r12042)
|
||||
-Fix: Change ownership of or remove statues when merging/bankrupting companies (r12038)
|
||||
-Fix: For station tiles, only get road types for road stops (r12036)
|
||||
-Fix: Teach YAPF where trams can reverse, and where not [FS#1702] (r12035)
|
||||
-Fix: Do not show train speed as zero after loading paused game (r12033)
|
||||
-Fix: When removing a statue, remove town statue flag for the statue owner, not current player (r12032)
|
||||
-Fix: Prevent towns from removing or claiming ownership of player owned tiles when growing [FS#1689,FS#1719] (r12031)
|
||||
-Fix: In one case trees could spread under bridges (r12024)
|
||||
-Fix: Put a better suited text in the quit-dialog [FS#1690] (r12023)
|
||||
-Fix: Restore initial intent on the invisible tree while transparent building patch setting [FS#1721] (r12018)
|
||||
-Fix: When you have more than 9 network interfaces you'll enter the wonderfull world of overflows (r12017)
|
||||
-Fix: Better work on strings in regard to gender [FS#1716] (r12015)
|
||||
-Fix: Lighthouses and transmitters were never supposed to be build on a slope (r12014)
|
||||
-Fix: When modifying watered tiles, mark neighboured canals and rivers dirty in more cases (r12013)
|
||||
-Fix: Enable TownRatingTestMode during cost estimation with 'shift'-key (r12012)
|
||||
-Fix: Do not consider one-corner-raised-shores to be watered tiles from all sides [FS#1701] (r12011)
|
||||
-Fix: Avoid loading sample.cat if it 'looks' incorrect, and avoid later null pointer dereferences by moving volume lookup deeper [FS#1707] (r12009)
|
||||
-Fix: Possible reading from an invalid pointer [FS#1717] (r12005)
|
||||
-Fix: When skipping Action 11 or 12, also skip belonging sprites (r12001)
|
||||
-Fix: Do entrance-slope-check for every tile of railstations (r11999)
|
||||
-Fix: Possible remote assert by setting bit 6 of p1 for CMD_REMOVE_ROAD [FS#1692] (r11998)
|
||||
-Fix: Update train statusbar when stopping from zero speed [FS#1706] (r11996)
|
||||
-Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long (r11993)
|
||||
-Fix: When building two rail stations close to each other (with control) so they looked like one long track trains would see them as one (r11992)
|
||||
-Fix: Resize autoreplace window to fit purchase information text if it is too large (r11989)
|
||||
-Fix: Build system ignored changes to table/control_codes.h which require strgen to be rebuilt (r11986)
|
||||
-Fix: Also draw corner shores under rail tracks (r11984)
|
||||
-Revert(r8738): Now we have shores in corners. No need to remove them from TTDP games (r11982)
|
||||
-Fix: Use unicode glyph mapping to fix up missing/shuffled sprites in original data files instead of shuffling or skipping sprites directly [FS#1698] (r11981)
|
||||
-Fix: Industries using results 0D/0E on callback cb29/35 were a bit too eager to close down (r11976)
|
||||
-Fix: Shore and sea tiles under bridges were converted to canals in old savegames [FS#1684] (r11974)
|
||||
-Fix: Use grass tiles for corner shores, if shores got replaced by ActionA [FS#1683] (r11973)
|
||||
-Fix: Old AI shouldn't build fast planes with a small airport in orders(r11972)
|
||||
-Fix: MP_ROAD can have railbits too - OPF searching over rail of diffen t owner behind crossing (r11967)
|
||||
-Fix: OPF was searching through depots and normal road stops [FS#1403, FS#1506] (r11966)
|
||||
-Fix: Tropic zone data was returned incorrectly [FS#1685] (r11964)
|
||||
-Fix: NewAI couldn't build any road vehicles when there were any tram grfs loaded (r11958)
|
||||
-Fix: Disallow building locks and docks on rapids [FS#1675] (r11956)
|
||||
-Fix: Do not allow modifying roadbits when other roadtypes would need different foundation (r11953)
|
||||
-Fix: Loading of very old savegames was broken (r11951)
|
||||
-Fix: Slope detection of bridge ramps.Helps YAPF and Trolly (r11946)
|
||||
-Fix: FileExists() failed for non latin paths (win32) (r11945)
|
||||
-Fix: Allow building drive-through road/tram stops at road/tram track that has no owner (r11944)
|
||||
-Fix: 'BRIDGE_TOO_LOW_FOR_TERRAIN'-check was wrong for steep slopes (r11936)
|
||||
-Fix[autoreplace]: Single to dualhead locomotive replacefailed when player had enough money to replace and refit one but not enough to refit the last one as well [FS#1624] (r11929)
|
||||
-Fix[autoreplace]: Autoreplace could refit train engines to the wrong cargo type if the old engine had no cargo capacity and the new one had (r11928)
|
||||
-Fix: Loading old, pre savegame version 2, savegames (r11925)
|
||||
-Fix: AI was reading wrong tile slope while building road bridge (r11917)
|
||||
-Fix: set correctly crossing state after train reversal, train leaving crossing, train crash (r11900)
|
||||
-Fix: Segmentation faults/wrong frees due uninitialized memory in the AI [FS#1658] (r11887)
|
||||
-Fix: Assert when trying to remove rail from a house or industry tile [FS#1663,FS#1665-6-7-8,FS#1680,FS#1686-7-8 FS#1715 FS#1742 FS#1771 FS#1776](r11883)
|
||||
-Fix: Crash in MP in vehicle group window if the currently selected group is deleted by another player (r11878)
|
||||
-Fix: Another way to crash competitors' train in a station (r11877)
|
||||
-Fix: Automatically sending aircraft to depot for autoreplace/renew is now triggered by the correct conditions (r11875)
|
||||
-Fix: EngineHasReplacementForPlayer() didn't look in ALL_GROUP (r11872)
|
||||
-Fix: Do not update signals after each tile when building/removing a large block of track/signals/station [FS#1074] (r11871)
|
||||
-Fix: Slow down train when approaching tile we can't enter in more cases (r11870)
|
||||
-Fix: Do not make crossing red when we can't enter it in any case (r11870)
|
||||
|
||||
0.6.0-beta3 (2008-01-16)
|
||||
------------------------------------------------------------------------
|
||||
-Feature: Replaced fixed size custom name array. Names are now attached to their object directly and there is no limit to the amount of names (r11822)
|
||||
|
@@ -5,7 +5,7 @@ log() {
|
||||
}
|
||||
|
||||
set_default() {
|
||||
released_version=""
|
||||
released_version="0.6.0-beta5"
|
||||
|
||||
ignore_extra_parameters="0"
|
||||
# We set all kinds of defaults for params. Later on the user can override
|
||||
@@ -635,7 +635,7 @@ check_params() {
|
||||
distcc="$with_distcc"
|
||||
fi
|
||||
if [ "$with_distcc" != "0" ]; then
|
||||
res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 0-6`"
|
||||
res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 1-6`"
|
||||
if [ "$res" != "distcc" ]; then
|
||||
distcc=""
|
||||
log 1 "checking distcc... no"
|
||||
@@ -664,7 +664,7 @@ check_params() {
|
||||
ccache="$with_ccache"
|
||||
fi
|
||||
if [ "$with_ccache" != "0" ]; then
|
||||
res="`$ccache --version 2>/dev/null | head -n 1 | cut -b 0-6`"
|
||||
res="`$ccache --version 2>/dev/null | head -n 1 | cut -b 1-6`"
|
||||
if [ "$res" != "ccache" ]; then
|
||||
ccache=""
|
||||
log 1 "checking ccache... no"
|
||||
|
@@ -6,11 +6,11 @@ PLEASE READ THE ENTIRE DOCUMENT BEFORE DOING ANY ACTUAL CHANGES!!
|
||||
|
||||
SUPPORTED MSVC COMPILERS
|
||||
------------------------
|
||||
OpenTTD includes projects for MSVC 2003.NET and MSVC 2005.NET. Both will
|
||||
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, you are therefore
|
||||
strongly encouraged to either upgrade to MSVC 2005 Express (free) or use GCC.
|
||||
MSVC 2002 probably works as well, but it has not been tested.
|
||||
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.
|
||||
|
||||
|
||||
1) REQUIRED FILES
|
||||
@@ -74,20 +74,6 @@ NOTE: make sure that the directory for the DirectX SDK is the first one in the
|
||||
list, above all others, otherwise compilation will most likely fail!!
|
||||
|
||||
|
||||
2.3) DEBUGGING - WORKING DIRECTORY (MSVC 2003 ONLY!)
|
||||
----------------------------------------------------
|
||||
The very first time you check out and compile OpenTTD with Visual Studio 2003, running
|
||||
the binary will complain about missing files. You need to go into and change a setting
|
||||
|
||||
OpenTTD > Project > Properties > Configuration (All Configurations) > ...
|
||||
Configuration Properties > Debugging >
|
||||
|
||||
* Working Directory: ..\bin
|
||||
|
||||
VS 2005 works out of the box because Microsoft allowed a user to supply a humanly-
|
||||
readable defaults file (openttd_vs80.vcproj.user), whereas 2003 is braindead.
|
||||
|
||||
|
||||
3) TTD GRAPHICS FILES
|
||||
---------------------
|
||||
Copy the following files from Transport Tycoon Deluxe to the bin/data folder
|
||||
@@ -102,12 +88,12 @@ Copy the following files from Transport Tycoon Deluxe to the bin/data folder
|
||||
|
||||
4) COMPILING
|
||||
------------
|
||||
Open trunk/openttd[_vs80].sln
|
||||
Open trunk/openttd_vs[89]0.sln
|
||||
Set the build mode to 'Release' in
|
||||
Build > Configuration manager > Active solution configuration > select "Release"
|
||||
Compile...
|
||||
|
||||
If everything works well the binary should be in trunk/objs/[Win32]/Release/openttd.exe
|
||||
If everything works well the binary should be in trunk/objs/Win[32|64]/Release/openttd.exe
|
||||
|
||||
|
||||
5) EDITING, CHANGING SOURCE CODE
|
||||
@@ -126,4 +112,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/index.php/MicrosoftVisualCExpress
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,7 @@
|
||||
<title>OpenTTD Landscape Internals - #2</title>
|
||||
<style type="text/css">
|
||||
span.abuse { font-family: "Courier New", Courier, mono; background-color: rgb(255, 58, 31); }
|
||||
span.option{ font-family: "Courier New", Courier, mono; background-color: rgb(255,255, 30); }
|
||||
span.free { font-family: "Courier New", Courier, mono; background-color: rgb(30, 178, 54); }
|
||||
span.used { font-family: "Courier New", Courier, mono; }
|
||||
td.bits { white-space: nowrap; text-align: center; font-family: "Courier New", Courier, mono; }
|
||||
@@ -22,7 +23,8 @@ the array so you can quickly see what is used and what is not.
|
||||
<ul>
|
||||
<li><span style="font-weight: bold;"><span class="free">O</span></span> - bit is free</li>
|
||||
<li><span style="font-weight: bold;"><span class="used">X</span></span> - bit is used</li>
|
||||
<li><span style="font-weight: bold;"><span class="abuse"> </span></span> - bit of attribute is abused for different purposes</li>
|
||||
<li><span style="font-weight: bold;"><span class="abuse"> </span></span> - bit of attribute is abused for different purposes, i.e. other bits define the actual meaning.</li>
|
||||
<li><span style="font-weight: bold;"><span class="option">~</span></span> - bit is accessed, but does not really have a meaning (e.g. owner of clear land is always OWNER_NONE)</li>
|
||||
</ul>
|
||||
<p>
|
||||
<ul>
|
||||
@@ -64,7 +66,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td rowspan="2">0</td>
|
||||
<td class="caption">ground</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<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">XXXX XX<span class="free">OO</span></td>
|
||||
@@ -75,23 +77,34 @@ the array so you can quickly see what is used and what is not.
|
||||
<tr>
|
||||
<td class="caption">farmland</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<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">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOO</span>X XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=3>1</td>
|
||||
<td rowspan=4>1</td>
|
||||
<td class="caption">rail</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="option">~~~</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO</span> <span class="option">~~</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">rail with signals</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO O</span>XXX <span class="free">O</span>XXX</td>
|
||||
<td class="bits">XXXX <span class="option">~~</span>XX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
@@ -100,9 +113,9 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO</span> <span class="option">~~</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits">XX<span class="free">OO O</span>XXX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
@@ -111,9 +124,9 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> <span class="option">~~</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits">XX<span class="free">OO O</span>XXX</td>
|
||||
<td class="bits">XX<span class="free">OO OOO</span>X</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
@@ -121,7 +134,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td rowspan=3>2</td>
|
||||
<td class="caption">road</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="option">~~~</span>X XXXX</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
@@ -134,11 +147,11 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX <span class="option">~~</span>XX</td>
|
||||
<td class="bits"><span class="free">O</span>XXX XXXX</td>
|
||||
<td class="bits">XX<span class="free">OO</span> XXXX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">road depot</td>
|
||||
@@ -147,7 +160,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits">X<span class="free">OOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">XX<span class="free">OO</span> XXXX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits">XXX<span class="free">O OOOO</span></td>
|
||||
</tr>
|
||||
@@ -157,45 +170,122 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits">XX<span class="free">O</span>X XXXX</td>
|
||||
<td class="bits">XX<span class="free">O</span><span class="option">~ ~~</span>XX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XX<span class="abuse">XX XXXX</span></td>
|
||||
<td class="bits"><span class="abuse">XXXX XX</span>XX</td>
|
||||
<td class="bits"><span class="abuse">X</span>XX<span class="abuse">X XXX</span>X</td>
|
||||
<td class="bits">XXX<span class="abuse">X XXXX</span></td>
|
||||
<td class="bits"><span class="abuse">XXXX X</span>XXX</td>
|
||||
<td class="bits">XXXX <span class="abuse">XXXX</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4</td>
|
||||
<td class="caption">trees</td>
|
||||
<td class="bits">XXXX XXXX</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">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>
|
||||
<td class="bits"><span class="free">OOOO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>5</td>
|
||||
<td class="caption">station</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td rowspan=6>5</td>
|
||||
<td class="caption">rail station</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="option">~~~</span>X XXXX</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits">XXXX <span class="option">~~</span>XX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">road stop</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO O</span>XXX</td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="option">~~~~ ~</span>XXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>6</td>
|
||||
<td class="caption">water</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="caption">dock</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OO</span>XX</td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="option">~~~~ ~</span>XXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">airport</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">buoy</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OO</span>XX</td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">oilrig</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=3>6</td>
|
||||
<td class="caption">sea, shore</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="option">~~~</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">X<span class="option">~~</span>X XXXX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">canal, river</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OO</span>XX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">shipdepot</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
@@ -203,7 +293,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td>8</td>
|
||||
<td class="caption">industry</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="abuse">X</span><span class="free">OO</span><span class="abuse">X
|
||||
<td class="bits">X<span class="free">OOO</span> <span class="abuse">
|
||||
XXXX</span></td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
@@ -216,35 +306,45 @@ the array so you can quickly see what is used and what is not.
|
||||
<td rowspan=2>9</td>
|
||||
<td class="caption">tunnel entrance</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="option">~~~</span>X XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> <span class="option">~</span><span class="abuse">XXX</span></td>
|
||||
<td class="bits">X<span class="free">OOO OOOO</span></td>
|
||||
<td class="bits">X<span class="free">OOO</span> XXXX</td>
|
||||
<td class="bits">X<span class="free">OOO</span> <span class="option">~</span>XXX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>bridge ramp</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span> <span class="abuse">XXXX</span>
|
||||
<span class="free">OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span> XXXX <span class="free">OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO</span> <span class="option">~</span><span class="abuse">XXX</span></td>
|
||||
<td class="bits">X<span class="free">OOO OOOO</span></td>
|
||||
<td class="bits">X<span class="free">OOO</span> XXXX</td>
|
||||
<td class="bits">X<span class="free">OOO</span> <span class="option">~</span>XXX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>A</td>
|
||||
<td rowspan=2>A</td>
|
||||
<td class="caption">unmovables</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="option">~~~</span>X XXXX</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">OOOO OOOO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">X<span class="option">~~</span>X XXXX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="caption">company statue</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
</tr>
|
||||
|
@@ -11,18 +11,18 @@ by the number below on http://bugs.openttd.org.
|
||||
If the bug report is closed, it has been fixed, which then can be verified
|
||||
in the latest SVN version of /trunk.
|
||||
|
||||
Bugs for 0.6.0-beta3
|
||||
Bugs for 0.6.0-beta5
|
||||
------------------------------------------------------------------------
|
||||
URL: http://bugs.openttd.org
|
||||
|
||||
- 1624 Autoreplace refit fails -> crash
|
||||
- 1549 Timetable + group ID are not backed up with orders
|
||||
- 1762 Strange Autoreplace behaviour
|
||||
- 1711 Gravel and Clay have no worth
|
||||
- 1693 Removing road does not reset owner
|
||||
- 1495 Long vehicles block multistop station
|
||||
- 1487 Ending_year is never written to
|
||||
- 1473 Train not going to available platform
|
||||
- 1404 Spinner widget interprets one click as many
|
||||
- 1264 Autoreplace for multiple NewGRF DMU sets fails
|
||||
- 1140 [OSX] Not smooth moving map with touchpad
|
||||
- 1074 Large slowdown when building tracks
|
||||
- 1072 Text overflows in several windows
|
||||
- 119 Clipping problems with vehicles on slopes
|
||||
|
@@ -1,8 +1,14 @@
|
||||
openttd (0.6~svn) unstable; urgency=low
|
||||
openttd (0.6.0~beta5) unstable; urgency=low
|
||||
|
||||
* Unreleased SVN version. Versioned to allow normal upgrades to released versions.
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Mon, 26 Feb 2007 21:07:05 +0100
|
||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Mon, 04 Mar 2008 18:06:31 +0100
|
||||
|
||||
openttd (0.6.0~beta4-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Mon, 18 Feb 2008 20:09:29 +0100
|
||||
|
||||
openttd (0.6.0~beta3-1) unstable; urgency=low
|
||||
|
||||
|
@@ -19,7 +19,7 @@ echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Open Transport Tycoon</string>
|
||||
<string>OpenTTD</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>openttd</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
|
@@ -1,9 +1,9 @@
|
||||
!define APPNAME "OpenTTD" ; Define application name
|
||||
!define APPVERSION "0.6.0" ; Define application version
|
||||
!define INSTALLERVERSION 41 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
|
||||
!define INSTALLERVERSION 43 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
|
||||
|
||||
!define APPURLLINK "http://www.openttd.org"
|
||||
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}-beta3"
|
||||
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}-beta5"
|
||||
!define APPVERSIONINTERNAL "${APPVERSION}.0" ; Needs to be of the format X.X.X.X
|
||||
|
||||
!define MUI_ICON "..\..\..\media\openttd.ico"
|
||||
@@ -97,8 +97,6 @@ Section "!OpenTTD" Section1
|
||||
; Overwrite files by default, but don't complain on failure
|
||||
SetOverwrite try
|
||||
|
||||
; Make savegame folder
|
||||
SetOutPath "$INSTDIR\save"
|
||||
; Define root variable relative to installer
|
||||
!define PATH_ROOT "..\..\..\"
|
||||
|
||||
|
2
projects/determineversion.vbs
Normal file → Executable file
2
projects/determineversion.vbs
Normal file → Executable file
@@ -194,7 +194,7 @@ Function IsCachedVersion(version)
|
||||
End Function
|
||||
|
||||
Dim version
|
||||
version = DetermineSVNVersion
|
||||
version = "0.6.0-beta5"
|
||||
If Not (IsCachedVersion(version) And FSO.FileExists("../src/rev.cpp") And FSO.FileExists("../src/ottdres.rc")) Then
|
||||
UpdateFiles version
|
||||
End If
|
||||
|
@@ -25,13 +25,6 @@ fi
|
||||
# langs_vs80.vcproj is for MSVC 2005
|
||||
# strgen_vs80.vcproj is for MSVC 2005
|
||||
|
||||
# openttd.sln is for MSVC 2003
|
||||
# openttd.vcproj is for MSVC 2003
|
||||
# langs.vcproj is for MSVC 2003
|
||||
# strgen.vcproj is for MSVC 2003
|
||||
|
||||
# openttd.tgt is for WatCom
|
||||
|
||||
|
||||
|
||||
# First, collect the list of Windows files
|
||||
@@ -110,7 +103,7 @@ load_main_data() {
|
||||
|
||||
print " <Filter";
|
||||
print " Name=\\""$0"\\"";
|
||||
print " Filter=\\"\\">";
|
||||
print " >";
|
||||
}
|
||||
|
||||
next;
|
||||
@@ -121,7 +114,8 @@ load_main_data() {
|
||||
gsub(" ", "", $0);
|
||||
gsub("/", "\\\\", $0);
|
||||
print " <File";
|
||||
print " RelativePath=\\".\\\\'$file_prefix'"$0"\\">";
|
||||
print " RelativePath=\\".\\\\'$file_prefix'"$0"\\"";
|
||||
print " >";
|
||||
print " </File>";
|
||||
}
|
||||
}
|
||||
@@ -138,15 +132,18 @@ load_lang_data() {
|
||||
i=`basename $i | sed s/.txt$//g`
|
||||
RES="$RES
|
||||
<File
|
||||
RelativePath=\"..\\src\\lang\\"$i".txt\">
|
||||
RelativePath=\"..\\src\\lang\\"$i".txt\"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name=\"Debug|Win32\">
|
||||
Name=\"Debug|Win32\"
|
||||
>
|
||||
<Tool
|
||||
Name=\"VCCustomBuildTool\"
|
||||
Description=\"Generating "$i" language file\"
|
||||
CommandLine=\"..\\objs\\strgen\\strgen.exe -s ..\\src\\lang -d ..\\bin\\lang "\$(InputPath)"
\"
|
||||
AdditionalDependencies=\"\"
|
||||
Outputs=\"..\\bin\\lang\\"$i".lng\"/>
|
||||
Outputs=\"..\\bin\\lang\\"$i".lng\"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>"
|
||||
done
|
||||
@@ -165,22 +162,7 @@ generate() {
|
||||
}
|
||||
' > "$ROOT_DIR/projects/$2"
|
||||
|
||||
# The files-list
|
||||
echo "$1" | awk -v type="$3" '
|
||||
/
/ {
|
||||
if (type == "msvc2003") gsub("
", "\n", $0);
|
||||
}
|
||||
/Filter="">/ {
|
||||
if (type == "msvc2005") gsub("Filter=\"\">", ">", $0);
|
||||
}
|
||||
/"\/>/ {
|
||||
if (type == "msvc2005") gsub("/>", "\n" substr($0, 1, index($0, $1) - 2) "/>", $0);
|
||||
}
|
||||
/">/ {
|
||||
if (type == "msvc2005") gsub(">", "\n" substr($0, 1, index($0, $1) - 1) ">", $0);
|
||||
}
|
||||
{ print $0 }
|
||||
' >> "$ROOT_DIR/projects/$2"
|
||||
echo "$1" >> "$ROOT_DIR/projects/$2"
|
||||
|
||||
# Everything below the !!FILES!! marker
|
||||
cat "$ROOT_DIR/projects/$2".in | tr '\r' '\n' | awk '
|
||||
@@ -199,9 +181,7 @@ safety_check "$ROOT_DIR/source.list"
|
||||
load_main_data "$ROOT_DIR/source.list" openttd
|
||||
load_lang_data "$ROOT_DIR/src/lang/*.txt" lang
|
||||
|
||||
generate "$openttd" "openttd.vcproj" "msvc2003"
|
||||
generate "$openttd" "openttd_vs80.vcproj" "msvc2005"
|
||||
generate "$openttd" "openttd_vs90.vcproj" "msvc2005"
|
||||
generate "$lang" "langs.vcproj" "msvc2003"
|
||||
generate "$lang" "langs_vs80.vcproj" "msvc2005"
|
||||
generate "$lang" "langs_vs90.vcproj" "msvc2005"
|
||||
generate "$openttd" "openttd_vs80.vcproj"
|
||||
generate "$openttd" "openttd_vs90.vcproj"
|
||||
generate "$lang" "langs_vs80.vcproj"
|
||||
generate "$lang" "langs_vs90.vcproj"
|
||||
|
183
projects/generate.vbs
Executable file
183
projects/generate.vbs
Executable file
@@ -0,0 +1,183 @@
|
||||
Option Explicit
|
||||
|
||||
Dim FSO
|
||||
Set FSO = CreateObject("Scripting.FileSystemObject")
|
||||
|
||||
' openttd_vs90.sln is for MSVC 2008
|
||||
' openttd_vs90.vcproj is for MSVC 2008
|
||||
' langs_vs90.vcproj is for MSVC 2008
|
||||
' strgen_vs90.vcproj is for MSVC 2008
|
||||
|
||||
' openttd_vs80.sln is for MSVC 2005
|
||||
' openttd_vs80.vcproj is for MSVC 2005
|
||||
' langs_vs80.vcproj is for MSVC 2005
|
||||
' strgen_vs80.vcproj is for MSVC 2005
|
||||
|
||||
Sub safety_check(filename)
|
||||
Dim file, line, regexp, list
|
||||
|
||||
' Define regexp
|
||||
Set regexp = New RegExp
|
||||
regexp.Pattern = "#|ottdres.rc|win32.cpp|win32_v.cpp"
|
||||
regexp.Global = True
|
||||
|
||||
' We use a dictionary to check duplicates
|
||||
Set list = CreateObject("Scripting.Dictionary")
|
||||
|
||||
Set file = FSO.OpenTextFile(filename, 1, 0, 0)
|
||||
While Not file.AtEndOfStream
|
||||
line = Replace(file.ReadLine, Chr(9), "") ' Remove tabs
|
||||
If Len(line) > 0 And Not regexp.Test(line) Then
|
||||
line = FSO.GetFileName(line)
|
||||
if list.Exists(line) Then
|
||||
WScript.Echo " !! ERROR !!" _
|
||||
& vbCrLf & "" _
|
||||
& vbCrLf & "The filename '" & line & "' is already used in this project." _
|
||||
& vbCrLf & "Because MSVC uses one single directory for all object files, it" _
|
||||
& vbCrLf & "cannot handle filenames with the same name inside the same project." _
|
||||
& vbCrLf & "Please rename either one of the file and try generating again." _
|
||||
& vbCrLf & "" _
|
||||
& vbCrLf & " !! ERROR !!"
|
||||
WScript.Quit(1)
|
||||
End If
|
||||
list.Add line, line
|
||||
End If
|
||||
Wend
|
||||
file.Close
|
||||
End Sub
|
||||
|
||||
Function load_main_data(filename)
|
||||
Dim res, file, line, deep, skip, first_time
|
||||
res = ""
|
||||
' Read the source.list and process it
|
||||
Set file = FSO.OpenTextFile(filename, 1, 0, 0)
|
||||
While Not file.AtEndOfStream
|
||||
line = Replace(file.ReadLine, Chr(9), "") ' Remove tabs
|
||||
If Len(line) > 0 Then
|
||||
Select Case Split(line, " ")(0)
|
||||
Case "#end"
|
||||
If deep = skip Then skip = skip - 1
|
||||
deep = deep - 1
|
||||
Case "#else"
|
||||
If deep = skip Then
|
||||
skip = skip - 1
|
||||
ElseIf deep - 1 = skip Then
|
||||
skip = skip + 1
|
||||
End If
|
||||
Case "#if"
|
||||
line = Replace(line, "#if ", "")
|
||||
If deep = skip And ( _
|
||||
line = "SDL" Or _
|
||||
line = "PNG" Or _
|
||||
line = "WIN32" Or _
|
||||
line = "MSVC" Or _
|
||||
line = "DIRECTMUSIC" Or _
|
||||
line = "NO_THREADS" _
|
||||
) Then skip = skip + 1
|
||||
deep = deep + 1
|
||||
Case "#"
|
||||
if deep = skip Then
|
||||
line = Replace(line, "# ", "")
|
||||
if first_time <> 0 Then
|
||||
res = res & " </Filter>" & vbCrLf
|
||||
Else
|
||||
first_time = 1
|
||||
End If
|
||||
res = res & _
|
||||
" <Filter" & vbCrLf & _
|
||||
" Name=" & Chr(34) & line & Chr(34) & vbCrLf & _
|
||||
" >" & vbCrLf
|
||||
End If
|
||||
Case Else
|
||||
If deep = skip Then
|
||||
line = Replace(line, "/" ,"\")
|
||||
res = res & _
|
||||
" <File" & vbCrLf & _
|
||||
" RelativePath=" & Chr(34) & ".\..\src\" & line & Chr(34) & vbCrLf & _
|
||||
" >" & vbCrLf & _
|
||||
" </File>" & vbCrLf
|
||||
End If
|
||||
End Select
|
||||
End If
|
||||
Wend
|
||||
res = res & " </Filter>"
|
||||
file.Close()
|
||||
load_main_data = res
|
||||
End Function
|
||||
|
||||
Function load_lang_data(dir)
|
||||
Dim res, folder, file
|
||||
res = ""
|
||||
Set folder = FSO.GetFolder(dir)
|
||||
For Each file In folder.Files
|
||||
file = FSO.GetFileName(file)
|
||||
If FSO.GetExtensionName(file) = "txt" Then
|
||||
file = Left(file, Len(file) - 4)
|
||||
res = res _
|
||||
& vbCrLf & " <File" _
|
||||
& vbCrLf & " RelativePath=" & Chr(34) & "..\src\lang\" & file & ".txt" & Chr(34) _
|
||||
& vbCrLf & " >" _
|
||||
& vbCrLf & " <FileConfiguration" _
|
||||
& vbCrLf & " Name=" & Chr(34) & "Debug|Win32" & Chr(34) _
|
||||
& vbCrLf & " >" _
|
||||
& vbCrLf & " <Tool" _
|
||||
& vbCrLf & " Name=" & Chr(34) & "VCCustomBuildTool" & Chr(34) _
|
||||
& vbCrLf & " Description=" & Chr(34) & "Generating " & file & " language file" & Chr(34) _
|
||||
& vbCrLf & " CommandLine=" & Chr(34) & "..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
" & Chr(34) _
|
||||
& vbCrLf & " AdditionalDependencies=" & Chr(34) & Chr(34) _
|
||||
& vbCrLf & " Outputs=" & Chr(34) & "..\bin\lang\" & file & ".lng" & Chr(34) _
|
||||
& vbCrLf & " />" _
|
||||
& vbCrLf & " </FileConfiguration>" _
|
||||
& vbCrLf & " </File>"
|
||||
End If
|
||||
Next
|
||||
load_lang_data = res
|
||||
End Function
|
||||
|
||||
Sub generate(data, dest)
|
||||
Dim srcfile, destfile, line
|
||||
WScript.Echo "Generating " & FSO.GetFileName(dest) & "..."
|
||||
Set srcfile = FSO.OpenTextFile(dest & ".in", 1, 0, 0)
|
||||
Set destfile = FSO.CreateTextFile(dest, -1, 0)
|
||||
|
||||
' Everything above the !!FILES!! marker
|
||||
line = srcfile.ReadLine()
|
||||
While line <> "!!FILES!!"
|
||||
If len(line) > 0 Then destfile.WriteLine(line)
|
||||
line = srcfile.ReadLine()
|
||||
Wend
|
||||
|
||||
' Our generated content
|
||||
destfile.WriteLine(data)
|
||||
|
||||
' Everything below the !!FILES!! marker
|
||||
While Not srcfile.AtEndOfStream
|
||||
line = srcfile.ReadLine()
|
||||
If len(line) > 0 Then destfile.WriteLine(line)
|
||||
Wend
|
||||
srcfile.Close()
|
||||
destfile.Close()
|
||||
End Sub
|
||||
|
||||
Dim ROOT_DIR
|
||||
ROOT_DIR = FSO.GetFolder("..").Path
|
||||
If Not FSO.FileExists(ROOT_DIR & "/source.list") Then
|
||||
ROOT_DIR = FSO.GetFolder(".").Path
|
||||
End If
|
||||
If Not FSO.FileExists(ROOT_DIR & "/source.list") Then
|
||||
WScript.Echo "Can't find source.list, needed in order to make this run." _
|
||||
& vbCrLf & "Please go to either the project dir, or the root dir of a clean SVN checkout."
|
||||
WScript.Quit(1)
|
||||
End If
|
||||
|
||||
safety_check ROOT_DIR & "/source.list"
|
||||
|
||||
Dim openttd
|
||||
openttd = load_main_data(ROOT_DIR &"/source.list")
|
||||
generate openttd, ROOT_DIR & "/projects/openttd_vs80.vcproj"
|
||||
generate openttd, ROOT_DIR & "/projects/openttd_vs90.vcproj"
|
||||
|
||||
Dim lang
|
||||
lang = load_lang_data(ROOT_DIR & "/src/lang")
|
||||
generate lang, ROOT_DIR & "/projects/langs_vs80.vcproj"
|
||||
generate lang, ROOT_DIR & "/projects/langs_vs90.vcproj"
|
@@ -1,538 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="langs"
|
||||
ProjectGUID="{0F066B23-18DF-4284-8265-F4A5E7E3B966}"
|
||||
RootNamespace="langs"
|
||||
SccProjectName=""
|
||||
SccLocalPath=""
|
||||
Keyword="MakeFileProj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\bin\lang\"
|
||||
IntermediateDirectory="..\objs\langs\"
|
||||
ConfigurationType="10"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName="./langs.tlb"
|
||||
HeaderFileName=""/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
Description="Generating strings.h"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\objs\langs\table"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
|
||||
<File
|
||||
RelativePath="..\src\lang\afrikaans.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating afrikaans language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\afrikaans.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\brazilian_portuguese.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating brazilian_portuguese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\brazilian_portuguese.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\bulgarian.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating bulgarian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\bulgarian.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\catalan.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating catalan language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\catalan.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\croatian.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating croatian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\croatian.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\czech.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating czech language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\czech.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\danish.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating danish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\danish.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\dutch.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating dutch language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\dutch.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\english.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating english language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\english.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\english_US.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating english_US language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\english_US.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\esperanto.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating esperanto language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\esperanto.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\estonian.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating estonian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\estonian.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\finnish.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating finnish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\finnish.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\french.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating french language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\french.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\galician.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating galician language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\galician.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\german.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating german language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\german.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\hungarian.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating hungarian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\hungarian.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\icelandic.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating icelandic language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\icelandic.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\italian.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating italian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\italian.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\japanese.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating japanese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\japanese.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\korean.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating korean language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\korean.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\lithuanian.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating lithuanian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\lithuanian.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\norwegian_bokmal.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating norwegian_bokmal language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\norwegian_bokmal.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\norwegian_nynorsk.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating norwegian_nynorsk language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\norwegian_nynorsk.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\origveh.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating origveh language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\origveh.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\piglatin.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating piglatin language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\piglatin.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\polish.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating polish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\polish.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\portuguese.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating portuguese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\portuguese.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\romanian.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating romanian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\romanian.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\russian.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating russian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\russian.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\simplified_chinese.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating simplified_chinese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\simplified_chinese.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\slovak.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating slovak language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\slovak.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\slovenian.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating slovenian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\slovenian.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\spanish.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating spanish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\spanish.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\swedish.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating swedish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\swedish.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\traditional_chinese.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating traditional_chinese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\traditional_chinese.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\turkish.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating turkish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\turkish.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\ukrainian.txt">
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating ukrainian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
|
||||
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\ukrainian.lng"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
@@ -1,44 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="langs"
|
||||
ProjectGUID="{0F066B23-18DF-4284-8265-F4A5E7E3B966}"
|
||||
RootNamespace="langs"
|
||||
SccProjectName=""
|
||||
SccLocalPath=""
|
||||
Keyword="MakeFileProj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\bin\lang\"
|
||||
IntermediateDirectory="..\objs\langs\"
|
||||
ConfigurationType="10"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE">
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName="./langs.tlb"
|
||||
HeaderFileName=""/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
Description="Generating strings.h"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\objs\langs\table"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
!!FILES!!
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
@@ -1,43 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openttd", "openttd.vcproj", "{668328A0-B40E-4CDB-BD72-D0064424414A}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0F066B23-18DF-4284-8265-F4A5E7E3B966} = {0F066B23-18DF-4284-8265-F4A5E7E3B966}
|
||||
{A133A442-BD0A-4ADE-B117-AD7545E4BDD1} = {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strgen", "strgen.vcproj", "{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "langs", "langs.vcproj", "{0F066B23-18DF-4284-8265-F4A5E7E3B966}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{A133A442-BD0A-4ADE-B117-AD7545E4BDD1} = {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{668328A0-B40E-4CDB-BD72-D0064424414A}.Debug.ActiveCfg = Debug|Win32
|
||||
{668328A0-B40E-4CDB-BD72-D0064424414A}.Debug.Build.0 = Debug|Win32
|
||||
{668328A0-B40E-4CDB-BD72-D0064424414A}.Release.ActiveCfg = Release|Win32
|
||||
{668328A0-B40E-4CDB-BD72-D0064424414A}.Release.Build.0 = Release|Win32
|
||||
{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Debug.ActiveCfg = Release|Win32
|
||||
{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Debug.Build.0 = Release|Win32
|
||||
{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Release.ActiveCfg = Release|Win32
|
||||
{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}.Release.Build.0 = Release|Win32
|
||||
{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Debug.ActiveCfg = Debug|Win32
|
||||
{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Debug.Build.0 = Debug|Win32
|
||||
{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release.ActiveCfg = Debug|Win32
|
||||
{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release.Build.0 = Debug|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(DPCodeReviewSolutionGUID) = preSolution
|
||||
DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
2667
projects/openttd.tgt
2667
projects/openttd.tgt
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,177 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="openttd"
|
||||
RootNamespace="openttd"
|
||||
SccProjectName=""
|
||||
SccLocalPath="">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\objs\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="..\objs\$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="TRUE">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="3"
|
||||
GlobalOptimizations="TRUE"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="TRUE"
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="TRUE"
|
||||
OptimizeForProcessor="1"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
StringPooling="TRUE"
|
||||
ExceptionHandling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
StructMemberAlignment="3"
|
||||
BufferSecurityCheck="FALSE"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
DefaultCharIsUnsigned="TRUE"
|
||||
UsePrecompiledHeader="0"
|
||||
PrecompiledHeaderThrough=""
|
||||
PrecompiledHeaderFile=""
|
||||
AssemblerOutput="2"
|
||||
AssemblerListingLocation="$(IntDir)/"
|
||||
ObjectFile="$(IntDir)/"
|
||||
ProgramDataBaseFileName="$(IntDir)/$(TargetName).pdb"
|
||||
BrowseInformation="1"
|
||||
BrowseInformationFile="$(IntDir)/"
|
||||
WarningLevel="3"
|
||||
WarnAsError="TRUE"
|
||||
SuppressStartupBanner="TRUE"
|
||||
DebugInformationFormat="3"
|
||||
CallingConvention="1"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
IgnoreDefaultLibraryNames=""
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
OptimizeForWindows98="1"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\Release/openttd.tlb"
|
||||
HeaderFileName=""/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
Description="Determining version number"
|
||||
CommandLine=""$(InputDir)/determineversion.vbs""/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1053"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\objs\$(PlatformName)\$(ConfigurationName)\"
|
||||
IntermediateDirectory="..\objs\$(PlatformName)\$(ConfigurationName)\"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE"
|
||||
CharacterSet="1">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
AssemblerListingLocation="$(IntDir)/"
|
||||
ObjectFile="$(IntDir)/"
|
||||
ProgramDataBaseFileName="$(IntDir)/$(TargetName).pdb"
|
||||
WarningLevel="3"
|
||||
WarnAsError="TRUE"
|
||||
SuppressStartupBanner="TRUE"
|
||||
Detect64BitPortabilityProblems="FALSE"
|
||||
DebugInformationFormat="4"
|
||||
CallingConvention="1"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="unicows.lib winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
|
||||
LinkIncremental="0"
|
||||
SuppressStartupBanner="TRUE"
|
||||
IgnoreDefaultLibraryNames="LIBCMT.lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\Debug/openttd.tlb"
|
||||
HeaderFileName=""/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
Description="Determining version number"
|
||||
CommandLine=""$(InputDir)/determineversion.vbs""/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1053"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
!!FILES!!
|
||||
<File
|
||||
RelativePath=".\..\media\mainicon.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\media\openttd.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\readme.txt">
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
@@ -61,7 +61,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -272,7 +272,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -455,6 +455,10 @@
|
||||
RelativePath=".\..\src\airport.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\alloc_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\articulated_vehicles.cpp"
|
||||
>
|
||||
@@ -467,6 +471,10 @@
|
||||
RelativePath=".\..\src\aystar.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\bitmath_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\bmp.cpp"
|
||||
>
|
||||
@@ -495,14 +503,6 @@
|
||||
RelativePath=".\..\src\console_cmds.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\bitmath_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\random_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\currency.cpp"
|
||||
>
|
||||
@@ -527,6 +527,10 @@
|
||||
RelativePath=".\..\src\driver.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\economy.cpp"
|
||||
>
|
||||
@@ -667,6 +671,10 @@
|
||||
RelativePath=".\..\src\rail.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\random_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\rev.cpp"
|
||||
>
|
||||
@@ -751,10 +759,6 @@
|
||||
RelativePath=".\..\src\widget.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\win32.cpp"
|
||||
>
|
||||
@@ -779,10 +783,30 @@
|
||||
RelativePath=".\..\src\airport_movement.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\alloc_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\articulated_vehicles.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\autoreplace_base.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\autoreplace_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\autoreplace_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\autoreplace_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\autoslope.h"
|
||||
>
|
||||
@@ -791,10 +815,26 @@
|
||||
RelativePath=".\..\src\aystar.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\bitmath_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\bmp.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\bridge.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\callback_table.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\cargo_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\cargopacket.h"
|
||||
>
|
||||
@@ -804,31 +844,31 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\command.h"
|
||||
RelativePath=".\..\src\cmd_helper.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\command_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\command_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\console.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\bitmath_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\math_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\random_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\currency.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\date.h"
|
||||
RelativePath=".\..\src\date_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\date_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -844,7 +884,11 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\direction.h"
|
||||
RelativePath=".\..\src\direction_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\direction_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -856,13 +900,33 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\economy.h"
|
||||
RelativePath=".\..\src\widgets\dropdown_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\economy_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\economy_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\endian_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\engine.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\enum_type.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\fileio.h"
|
||||
>
|
||||
@@ -884,7 +948,15 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\gfx.h"
|
||||
RelativePath=".\..\src\core\geometry_type.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\gfx_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\gfx_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -895,6 +967,10 @@
|
||||
RelativePath=".\..\src\group.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\group_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\gui.h"
|
||||
>
|
||||
@@ -907,6 +983,10 @@
|
||||
RelativePath=".\..\src\industry.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\industry_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\landscape.h"
|
||||
>
|
||||
@@ -916,7 +996,7 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\map.h"
|
||||
RelativePath=".\..\src\core\math_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -951,6 +1031,10 @@
|
||||
RelativePath=".\..\src\network\network_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\network\network_internal.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\network\network_server.h"
|
||||
>
|
||||
@@ -987,6 +1071,10 @@
|
||||
RelativePath=".\..\src\newgrf_engine.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\newgrf_generic.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\newgrf_house.h"
|
||||
>
|
||||
@@ -1055,18 +1143,38 @@
|
||||
RelativePath=".\..\src\openttd.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\order.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\overflowsafe_type.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\pathfind.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\player.h"
|
||||
RelativePath=".\..\src\player_base.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\player_face.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\player_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\player_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\player_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\queue.h"
|
||||
>
|
||||
@@ -1075,10 +1183,42 @@
|
||||
RelativePath=".\..\src\rail.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\rail_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\rail_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\random_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\road_cmd.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\road_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\road_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\road_internal.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\road_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\roadveh.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\saveload.h"
|
||||
>
|
||||
@@ -1096,11 +1236,19 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\settings.h"
|
||||
RelativePath=".\..\src\settings_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\signs.h"
|
||||
RelativePath=".\..\src\settings_internal.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\settings_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ship.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1108,11 +1256,23 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\slope.h"
|
||||
RelativePath=".\..\src\signs.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\sound.h"
|
||||
RelativePath=".\..\src\slope_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\slope_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\sound_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\sound_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1136,7 +1296,27 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\string.h"
|
||||
RelativePath=".\..\src\string_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\string_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\strings_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\strings_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\terraform_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\textbuf_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1152,7 +1332,11 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tile.h"
|
||||
RelativePath=".\..\src\tile_cmd.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tile_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1163,6 +1347,18 @@
|
||||
RelativePath=".\..\src\town.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\town_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\track_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\track_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\train.h"
|
||||
>
|
||||
@@ -1175,12 +1371,24 @@
|
||||
RelativePath=".\..\src\transparency_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tunnelbridge.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\unmovable.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\variables.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\vehicle.h"
|
||||
RelativePath=".\..\src\vehicle_base.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\vehicle_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1188,7 +1396,7 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\viewport.h"
|
||||
RelativePath=".\..\src\vehicle_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1208,23 +1416,23 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\window.h"
|
||||
RelativePath=".\..\src\window_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown.h"
|
||||
RelativePath=".\..\src\window_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown_type.h"
|
||||
RelativePath=".\..\src\window_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown_func.h"
|
||||
RelativePath=".\..\src\zoom_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\zoom.hpp"
|
||||
RelativePath=".\..\src\zoom_type.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
@@ -1524,7 +1732,7 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\table\roadveh.h"
|
||||
RelativePath=".\..\src\table\roadveh_movement.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1743,6 +1951,10 @@
|
||||
RelativePath=".\..\src\newgrf_engine.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\newgrf_generic.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\newgrf_house.cpp"
|
||||
>
|
||||
@@ -1819,6 +2031,10 @@
|
||||
RelativePath=".\..\src\station_map.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tile_map.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\town_map.h"
|
||||
>
|
||||
@@ -1959,10 +2175,6 @@
|
||||
<Filter
|
||||
Name="YAPF"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\follow_track.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\follow_track.hpp"
|
||||
>
|
||||
@@ -1987,10 +2199,6 @@
|
||||
RelativePath=".\..\src\yapf\yapf_base.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\yapf_common.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\yapf_common.hpp"
|
||||
>
|
||||
|
@@ -61,7 +61,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -272,7 +272,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
|
@@ -62,7 +62,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -270,7 +270,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -452,6 +452,10 @@
|
||||
RelativePath=".\..\src\airport.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\alloc_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\articulated_vehicles.cpp"
|
||||
>
|
||||
@@ -464,6 +468,10 @@
|
||||
RelativePath=".\..\src\aystar.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\bitmath_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\bmp.cpp"
|
||||
>
|
||||
@@ -492,14 +500,6 @@
|
||||
RelativePath=".\..\src\console_cmds.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\bitmath_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\random_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\currency.cpp"
|
||||
>
|
||||
@@ -524,6 +524,10 @@
|
||||
RelativePath=".\..\src\driver.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\economy.cpp"
|
||||
>
|
||||
@@ -664,6 +668,10 @@
|
||||
RelativePath=".\..\src\rail.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\random_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\rev.cpp"
|
||||
>
|
||||
@@ -748,10 +756,6 @@
|
||||
RelativePath=".\..\src\widget.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\win32.cpp"
|
||||
>
|
||||
@@ -776,10 +780,30 @@
|
||||
RelativePath=".\..\src\airport_movement.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\alloc_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\articulated_vehicles.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\autoreplace_base.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\autoreplace_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\autoreplace_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\autoreplace_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\autoslope.h"
|
||||
>
|
||||
@@ -788,10 +812,26 @@
|
||||
RelativePath=".\..\src\aystar.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\bitmath_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\bmp.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\bridge.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\callback_table.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\cargo_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\cargopacket.h"
|
||||
>
|
||||
@@ -801,31 +841,31 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\command.h"
|
||||
RelativePath=".\..\src\cmd_helper.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\command_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\command_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\console.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\bitmath_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\math_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\random_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\currency.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\date.h"
|
||||
RelativePath=".\..\src\date_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\date_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -841,7 +881,11 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\direction.h"
|
||||
RelativePath=".\..\src\direction_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\direction_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -853,13 +897,33 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\economy.h"
|
||||
RelativePath=".\..\src\widgets\dropdown_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\economy_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\economy_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\endian_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\engine.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\enum_type.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\fileio.h"
|
||||
>
|
||||
@@ -881,7 +945,15 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\gfx.h"
|
||||
RelativePath=".\..\src\core\geometry_type.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\gfx_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\gfx_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -892,6 +964,10 @@
|
||||
RelativePath=".\..\src\group.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\group_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\gui.h"
|
||||
>
|
||||
@@ -904,6 +980,10 @@
|
||||
RelativePath=".\..\src\industry.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\industry_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\landscape.h"
|
||||
>
|
||||
@@ -913,7 +993,7 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\map.h"
|
||||
RelativePath=".\..\src\core\math_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -948,6 +1028,10 @@
|
||||
RelativePath=".\..\src\network\network_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\network\network_internal.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\network\network_server.h"
|
||||
>
|
||||
@@ -984,6 +1068,10 @@
|
||||
RelativePath=".\..\src\newgrf_engine.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\newgrf_generic.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\newgrf_house.h"
|
||||
>
|
||||
@@ -1052,18 +1140,38 @@
|
||||
RelativePath=".\..\src\openttd.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\order.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\overflowsafe_type.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\pathfind.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\player.h"
|
||||
RelativePath=".\..\src\player_base.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\player_face.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\player_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\player_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\player_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\queue.h"
|
||||
>
|
||||
@@ -1072,10 +1180,42 @@
|
||||
RelativePath=".\..\src\rail.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\rail_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\rail_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\core\random_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\road_cmd.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\road_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\road_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\road_internal.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\road_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\roadveh.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\saveload.h"
|
||||
>
|
||||
@@ -1093,11 +1233,19 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\settings.h"
|
||||
RelativePath=".\..\src\settings_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\signs.h"
|
||||
RelativePath=".\..\src\settings_internal.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\settings_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ship.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1105,11 +1253,23 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\slope.h"
|
||||
RelativePath=".\..\src\signs.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\sound.h"
|
||||
RelativePath=".\..\src\slope_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\slope_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\sound_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\sound_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1133,7 +1293,27 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\string.h"
|
||||
RelativePath=".\..\src\string_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\string_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\strings_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\strings_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\terraform_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\textbuf_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1149,7 +1329,11 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tile.h"
|
||||
RelativePath=".\..\src\tile_cmd.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tile_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1160,6 +1344,18 @@
|
||||
RelativePath=".\..\src\town.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\town_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\track_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\track_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\train.h"
|
||||
>
|
||||
@@ -1172,12 +1368,24 @@
|
||||
RelativePath=".\..\src\transparency_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tunnelbridge.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\unmovable.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\variables.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\vehicle.h"
|
||||
RelativePath=".\..\src\vehicle_base.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\vehicle_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1185,7 +1393,7 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\viewport.h"
|
||||
RelativePath=".\..\src\vehicle_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1205,23 +1413,23 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\window.h"
|
||||
RelativePath=".\..\src\window_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown.h"
|
||||
RelativePath=".\..\src\window_gui.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown_type.h"
|
||||
RelativePath=".\..\src\window_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widgets\dropdown_func.h"
|
||||
RelativePath=".\..\src\zoom_func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\zoom.hpp"
|
||||
RelativePath=".\..\src\zoom_type.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
@@ -1521,7 +1729,7 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\table\roadveh.h"
|
||||
RelativePath=".\..\src\table\roadveh_movement.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@@ -1740,6 +1948,10 @@
|
||||
RelativePath=".\..\src\newgrf_engine.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\newgrf_generic.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\newgrf_house.cpp"
|
||||
>
|
||||
@@ -1816,6 +2028,10 @@
|
||||
RelativePath=".\..\src\station_map.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tile_map.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\town_map.h"
|
||||
>
|
||||
@@ -1956,10 +2172,6 @@
|
||||
<Filter
|
||||
Name="YAPF"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\follow_track.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\follow_track.hpp"
|
||||
>
|
||||
@@ -1984,10 +2196,6 @@
|
||||
RelativePath=".\..\src\yapf\yapf_base.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\yapf_common.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\yapf_common.hpp"
|
||||
>
|
||||
|
@@ -62,7 +62,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -270,7 +270,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
|
@@ -1,101 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="strgen"
|
||||
RootNamespace="strgen"
|
||||
SccProjectName=""
|
||||
SccLocalPath="">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\objs\strgen\"
|
||||
IntermediateDirectory="..\objs\strgen\"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
GlobalOptimizations="TRUE"
|
||||
FavorSizeOrSpeed="2"
|
||||
PreprocessorDefinitions="STRGEN;WIN32;NDEBUG;_CONSOLE"
|
||||
BasicRuntimeChecks="0"
|
||||
RuntimeLibrary="5"
|
||||
PrecompiledHeaderFile=""
|
||||
AssemblerOutput="2"
|
||||
AssemblerListingLocation="$(IntDir)"
|
||||
ObjectFile="$(IntDir)"
|
||||
ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
|
||||
WarningLevel="3"
|
||||
WarnAsError="TRUE"
|
||||
SuppressStartupBanner="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
OutputFile="$(IntDir)\strgen.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(IntDir)\strgen.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\Debug/strgen.tlb"
|
||||
HeaderFileName=""/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1053"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
|
||||
<File
|
||||
RelativePath="..\src\strgen\strgen.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\string.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath="..\src\macros.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\stdafx.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\string.h">
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
@@ -112,6 +112,10 @@
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\core\alloc_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\strgen\strgen.cpp"
|
||||
>
|
||||
@@ -122,7 +126,19 @@
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath="..\src\macros.h"
|
||||
RelativePath="..\src\core\alloc_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\table\control_codes.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\debug.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\core\endian_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
|
@@ -112,6 +112,10 @@
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\src\core\alloc_func.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\strgen\strgen.cpp"
|
||||
>
|
||||
@@ -122,7 +126,19 @@
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath="..\src\macros.h"
|
||||
RelativePath="..\src\core\alloc_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\table\control_codes.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\debug.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\core\endian_func.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
|
113
readme.txt
113
readme.txt
@@ -1,6 +1,6 @@
|
||||
OpenTTD README
|
||||
Last updated: 2008-01-16
|
||||
Release version: 0.6.0-beta3
|
||||
Last updated: 2008-03-04
|
||||
Release version: 0.6.0-beta5
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -11,6 +11,9 @@ Table of Contents:
|
||||
* 2.1 Reporting Bugs
|
||||
3.0) Supported Platforms
|
||||
4.0) Installing and running OpenTTD
|
||||
* 4.1 (Required) 3rd party files
|
||||
* 4.2 OpenTTD directories
|
||||
* 4.3 Portable Installations (External Media)
|
||||
5.0) OpenTTD features
|
||||
6.0) Configuration File
|
||||
7.0) Compiling
|
||||
@@ -88,25 +91,100 @@ archive which you have to extract to a directory where you want OpenTTD to
|
||||
be installed, or you have downloaded an installer, which will automatically
|
||||
extract OpenTTD in the given directory.
|
||||
|
||||
Before you run OpenTTD, you need to put the game's datafiles into the data/
|
||||
subdirectory. You need the following files from the original version
|
||||
of TTD as OpenTTD makes use of the original TTD artwork. The Windows
|
||||
installer optionally can copy these files from your Transport Tycoon Deluxe
|
||||
CD-ROM.
|
||||
OpenTTD looks in multiple locations to find the required data files (described
|
||||
in section 4.2). Installing any 3rd party files into a "shared" location has
|
||||
the advantage that you only need to do this step once, rather than copying the
|
||||
data files into all OpenTTD versions you have.
|
||||
Savegames, screenshots, etc are saved relative to the config file (openttd.cfg)
|
||||
currently being used. This means that if you use a config file in one of the
|
||||
shared directories, savegames will reside in the save/ directory next to the
|
||||
openttd.cfg file there.
|
||||
If you want savegames and screenshots in the directory where the OpenTTD binary
|
||||
resides, simply have your config file in that location. But if you remove this
|
||||
config file, savegames will still be in this directory (see notes in section 4.2)
|
||||
|
||||
4.1) (Required) 3rd party files:
|
||||
---- ---------------------------
|
||||
|
||||
Before you run OpenTTD, you need to put the game's datafiles into a data/
|
||||
directory which can be located in various places addressed in the following
|
||||
section.
|
||||
As OpenTTD makes use of the original TTD artwork you will need the files listed
|
||||
below, which you can find on a Transport Tycoon Deluxe CD-ROM.
|
||||
The Windows installer optionally can copy these files from that CD-ROM.
|
||||
|
||||
List of the required files:
|
||||
sample.cat
|
||||
trg1r.grf
|
||||
trgcr.grf
|
||||
trghr.grf
|
||||
trgir.grf
|
||||
trgtr.grf
|
||||
- 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.
|
||||
Alternatively you can use the TTD GRF files from the DOS version:
|
||||
- TRG1.GRF
|
||||
- TRGC.GRF
|
||||
- TRGH.GRF
|
||||
- TRGI.GRF
|
||||
- TRGT.GRF
|
||||
|
||||
If you want music you need to copy the gm/ folder from Windows TTD into your
|
||||
OpenTTD folder, not your data folder.
|
||||
If you want the TTD music, copy the gm/ folder from the Windows version
|
||||
of TTD to your OpenTTD folder (not your data folder - also explained in
|
||||
the following sections).
|
||||
|
||||
Do NOT copy files included with OpenTTD into "shared" directories (explained in
|
||||
the following sections) as sooner or later you will run into graphical glitches
|
||||
when using other versions of the game.
|
||||
|
||||
4.2) OpenTTD directories
|
||||
---- -------------------------------
|
||||
|
||||
The TTD artwork files listed in the section 4.1 "(Required) 3rd party files"
|
||||
can be placed in a few different locations:
|
||||
1. The current working directory (from where you started OpenTTD)
|
||||
2. Your personal directory
|
||||
Windows: C:\Documents and Settings\<username>\My Documents\OpenTTD
|
||||
Mac OSX: ~/Documents/OpenTTD
|
||||
Linux: ~/.openttd
|
||||
3. The shared directory
|
||||
Windows: C:\Documents and Settings\All Users\Documents\OpenTTD
|
||||
Mac OSX: /Library/Application Support/OpenTTD
|
||||
Linux: not available
|
||||
4. The binary directory (where the OpenTTD executable is)
|
||||
Windows: C:\Program Files\OpenTTD
|
||||
Linux: /usr/games
|
||||
5. The installation directory (Linux only)
|
||||
Linux: /usr/share/games/openttd
|
||||
6. The application bundle (Mac OSX only)
|
||||
It includes the OTTD files (grf+lng) and it will work as long as they aren't touched
|
||||
|
||||
Notes:
|
||||
- Linux in the previous list means .deb, but most paths should be similar for others.
|
||||
- The previous search order is also used for newgrfs and openttd.cfg.
|
||||
- If openttd.cfg is not found, then it will be created using the 2, 4, 1, 3, 5 order.
|
||||
- Savegames will be relative to the config file only if there is no save/
|
||||
directory in paths with higher priority than the config file path, but
|
||||
autosaves and screenshots will always be relative to the config file.
|
||||
|
||||
The prefered setup:
|
||||
Place 3rd party files in shared directory (or in personal directory if you don't
|
||||
have write access on shared directory) and have your openttd.cfg config file in
|
||||
personal directory (where the game will then also place savegames and screenshots).
|
||||
|
||||
|
||||
4.3) Portable Installations (External Media):
|
||||
---- ----------------------------------------
|
||||
|
||||
You can install OpenTTD on external media so you can take it with you, i.e.
|
||||
using a USB key, or a USB HDD, etc.
|
||||
Create a directory where you shall store the game in (i.e. OpenTTD/).
|
||||
Copy the binary (OpenTTD.exe, OpenTTD.app, openttd, etc), data/ and your
|
||||
openttd.cfg to this directory.
|
||||
You can copy binaries for any operating system into this directory, which will
|
||||
allow you to play the game on nearly any computer you can attach the external
|
||||
media to.
|
||||
As always - additional grf files are stored in the data/ dir (for details,
|
||||
again, see section 4.1).
|
||||
|
||||
|
||||
5.0) OpenTTD features:
|
||||
@@ -285,6 +363,7 @@ The OpenTTD team (in alphabetical order):
|
||||
Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles
|
||||
Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework
|
||||
Loïc Guilloux (glx) - General coding
|
||||
Christoph Elsenhans (frosch) - General coding
|
||||
Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)
|
||||
Jonathan Coome (Maedhros) - High priest of the newGRF Temple
|
||||
Attila Bán (MiHaMiX) - WebTranslator, Nightlies, Wiki and bugtracker host
|
||||
|
110
source.list
110
source.list
@@ -1,8 +1,10 @@
|
||||
# Source Files
|
||||
airport.cpp
|
||||
core/alloc_func.cpp
|
||||
articulated_vehicles.cpp
|
||||
autoreplace_cmd.cpp
|
||||
aystar.cpp
|
||||
core/bitmath_func.cpp
|
||||
bmp.cpp
|
||||
callback_table.cpp
|
||||
cargopacket.cpp
|
||||
@@ -10,14 +12,13 @@ cargotype.cpp
|
||||
command.cpp
|
||||
console.cpp
|
||||
console_cmds.cpp
|
||||
core/bitmath_func.cpp
|
||||
core/random_func.cpp
|
||||
currency.cpp
|
||||
date.cpp
|
||||
debug.cpp
|
||||
dedicated.cpp
|
||||
depot.cpp
|
||||
driver.cpp
|
||||
widgets/dropdown.cpp
|
||||
economy.cpp
|
||||
elrail.cpp
|
||||
engine.cpp
|
||||
@@ -58,6 +59,7 @@ pathfind.cpp
|
||||
players.cpp
|
||||
queue.cpp
|
||||
rail.cpp
|
||||
core/random_func.cpp
|
||||
rev.cpp
|
||||
road.cpp
|
||||
saveload.cpp
|
||||
@@ -93,7 +95,6 @@ vehicle.cpp
|
||||
viewport.cpp
|
||||
waypoint.cpp
|
||||
widget.cpp
|
||||
widgets/dropdown.cpp
|
||||
#if WIN32
|
||||
win32.cpp
|
||||
#end
|
||||
@@ -103,41 +104,60 @@ window.cpp
|
||||
aircraft.h
|
||||
airport.h
|
||||
airport_movement.h
|
||||
core/alloc_func.hpp
|
||||
articulated_vehicles.h
|
||||
autoreplace_base.h
|
||||
autoreplace_func.h
|
||||
autoreplace_gui.h
|
||||
autoreplace_type.h
|
||||
autoslope.h
|
||||
aystar.h
|
||||
core/bitmath_func.hpp
|
||||
bmp.h
|
||||
bridge.h
|
||||
callback_table.h
|
||||
cargo_type.h
|
||||
cargopacket.h
|
||||
cargotype.h
|
||||
command.h
|
||||
cmd_helper.h
|
||||
command_func.h
|
||||
command_type.h
|
||||
console.h
|
||||
core/bitmath_func.hpp
|
||||
core/math_func.hpp
|
||||
core/random_func.hpp
|
||||
currency.h
|
||||
date.h
|
||||
date_func.h
|
||||
date_type.h
|
||||
debug.h
|
||||
video/dedicated_v.h
|
||||
depot.h
|
||||
direction.h
|
||||
direction_func.h
|
||||
direction_type.h
|
||||
music/dmusic.h
|
||||
driver.h
|
||||
economy.h
|
||||
widgets/dropdown_func.h
|
||||
widgets/dropdown_type.h
|
||||
economy_func.h
|
||||
economy_type.h
|
||||
core/endian_func.hpp
|
||||
engine.h
|
||||
core/enum_type.hpp
|
||||
fileio.h
|
||||
fios.h
|
||||
fontcache.h
|
||||
functions.h
|
||||
genworld.h
|
||||
gfx.h
|
||||
core/geometry_type.hpp
|
||||
gfx_func.h
|
||||
gfx_type.h
|
||||
gfxinit.h
|
||||
group.h
|
||||
group_gui.h
|
||||
gui.h
|
||||
heightmap.h
|
||||
industry.h
|
||||
industry_type.h
|
||||
landscape.h
|
||||
livery.h
|
||||
map.h
|
||||
core/math_func.hpp
|
||||
md5.h
|
||||
mixer.h
|
||||
music.h
|
||||
@@ -146,6 +166,7 @@ network/network_client.h
|
||||
network/network_data.h
|
||||
network/network_gamelist.h
|
||||
network/network_gui.h
|
||||
network/network_internal.h
|
||||
network/network_server.h
|
||||
network/network_udp.h
|
||||
newgrf.h
|
||||
@@ -155,6 +176,7 @@ newgrf_cargo.h
|
||||
newgrf_commons.h
|
||||
newgrf_config.h
|
||||
newgrf_engine.h
|
||||
newgrf_generic.h
|
||||
newgrf_house.h
|
||||
newgrf_industries.h
|
||||
newgrf_industrytiles.h
|
||||
@@ -172,49 +194,79 @@ sound/null_s.h
|
||||
video/null_v.h
|
||||
oldpool.h
|
||||
openttd.h
|
||||
order.h
|
||||
core/overflowsafe_type.hpp
|
||||
pathfind.h
|
||||
player.h
|
||||
player_base.h
|
||||
player_face.h
|
||||
player_func.h
|
||||
player_gui.h
|
||||
player_type.h
|
||||
queue.h
|
||||
rail.h
|
||||
rail_gui.h
|
||||
rail_type.h
|
||||
core/random_func.hpp
|
||||
road_cmd.h
|
||||
road_func.h
|
||||
road_gui.h
|
||||
road_internal.h
|
||||
road_type.h
|
||||
roadveh.h
|
||||
saveload.h
|
||||
screenshot.h
|
||||
sound/sdl_s.h
|
||||
video/sdl_v.h
|
||||
settings.h
|
||||
signs.h
|
||||
settings_func.h
|
||||
settings_internal.h
|
||||
settings_type.h
|
||||
ship.h
|
||||
signal_func.h
|
||||
slope.h
|
||||
sound.h
|
||||
signs.h
|
||||
slope_func.h
|
||||
slope_type.h
|
||||
sound_func.h
|
||||
sound_type.h
|
||||
sprite.h
|
||||
spritecache.h
|
||||
station.h
|
||||
station_gui.h
|
||||
stdafx.h
|
||||
string.h
|
||||
string_func.h
|
||||
string_type.h
|
||||
strings_func.h
|
||||
strings_type.h
|
||||
terraform_gui.h
|
||||
textbuf_gui.h
|
||||
texteff.hpp
|
||||
tgp.h
|
||||
thread.h
|
||||
tile.h
|
||||
tile_cmd.h
|
||||
tile_type.h
|
||||
timetable.h
|
||||
town.h
|
||||
town_type.h
|
||||
track_func.h
|
||||
track_type.h
|
||||
train.h
|
||||
transparency.h
|
||||
transparency_gui.h
|
||||
tunnelbridge.h
|
||||
unmovable.h
|
||||
variables.h
|
||||
vehicle.h
|
||||
vehicle_base.h
|
||||
vehicle_func.h
|
||||
vehicle_gui.h
|
||||
viewport.h
|
||||
vehicle_type.h
|
||||
waypoint.h
|
||||
music/win32_m.h
|
||||
sound/win32_s.h
|
||||
video/win32_v.h
|
||||
window.h
|
||||
widgets/dropdown.h
|
||||
widgets/dropdown_type.h
|
||||
widgets/dropdown_func.h
|
||||
zoom.hpp
|
||||
window_func.h
|
||||
window_gui.h
|
||||
window_type.h
|
||||
zoom_func.h
|
||||
zoom_type.h
|
||||
|
||||
# GUI Source Code
|
||||
aircraft_gui.cpp
|
||||
@@ -292,7 +344,7 @@ table/landscape_sprite.h
|
||||
table/namegen.h
|
||||
table/palettes.h
|
||||
table/road_land.h
|
||||
table/roadveh.h
|
||||
table/roadveh_movement.h
|
||||
table/sprites.h
|
||||
table/station_land.h
|
||||
../objs/langs/table/strings.h
|
||||
@@ -354,6 +406,7 @@ newgrf_cargo.cpp
|
||||
newgrf_commons.cpp
|
||||
newgrf_config.cpp
|
||||
newgrf_engine.cpp
|
||||
newgrf_generic.cpp
|
||||
newgrf_house.cpp
|
||||
newgrf_industries.cpp
|
||||
newgrf_industrytiles.cpp
|
||||
@@ -374,6 +427,7 @@ rail_map.h
|
||||
road_map.cpp
|
||||
road_map.h
|
||||
station_map.h
|
||||
tile_map.h
|
||||
town_map.h
|
||||
tree_map.h
|
||||
tunnel_map.cpp
|
||||
@@ -412,14 +466,12 @@ network/core/udp.cpp
|
||||
network/core/udp.h
|
||||
|
||||
# YAPF
|
||||
yapf/follow_track.cpp
|
||||
yapf/follow_track.hpp
|
||||
yapf/nodelist.hpp
|
||||
yapf/track_dir.hpp
|
||||
yapf/yapf.h
|
||||
yapf/yapf.hpp
|
||||
yapf/yapf_base.hpp
|
||||
yapf/yapf_common.cpp
|
||||
yapf/yapf_common.hpp
|
||||
yapf/yapf_costbase.hpp
|
||||
yapf/yapf_costcache.hpp
|
||||
|
@@ -10,6 +10,7 @@
|
||||
#include "../player_base.h"
|
||||
#include "ai.h"
|
||||
#include "default/default.h"
|
||||
#include "../signal_func.h"
|
||||
|
||||
AIStruct _ai;
|
||||
AIPlayer _ai_player[MAX_PLAYERS];
|
||||
@@ -159,6 +160,9 @@ static void AI_RunTick(PlayerID player)
|
||||
AiDoGameLoop(p);
|
||||
_is_old_ai_player = false;
|
||||
}
|
||||
|
||||
/* AI could change some track, so update signals */
|
||||
UpdateSignalsInBuffer();
|
||||
}
|
||||
|
||||
|
||||
|
@@ -31,6 +31,7 @@
|
||||
#include "../../player_base.h"
|
||||
#include "../../settings_type.h"
|
||||
#include "default.h"
|
||||
#include "../../tunnelbridge.h"
|
||||
|
||||
#include "../../table/ai_rail.h"
|
||||
|
||||
@@ -68,10 +69,9 @@ enum {
|
||||
};
|
||||
|
||||
|
||||
static TrackBits GetRailTrackStatus(TileIndex tile)
|
||||
static inline TrackBits GetRailTrackStatus(TileIndex tile)
|
||||
{
|
||||
uint32 r = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0);
|
||||
return (TrackBits)(byte) (r | r >> 8);
|
||||
return TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0));
|
||||
}
|
||||
|
||||
|
||||
@@ -111,8 +111,8 @@ static void AiStateVehLoop(Player *p)
|
||||
|
||||
/* not profitable? */
|
||||
if (v->age >= 730 &&
|
||||
v->profit_last_year < _price.station_value * 5 &&
|
||||
v->profit_this_year < _price.station_value * 5) {
|
||||
v->profit_last_year < _price.station_value * 5 * 256 &&
|
||||
v->profit_this_year < _price.station_value * 5 * 256) {
|
||||
_players_ai[p->index].state_counter = 0;
|
||||
_players_ai[p->index].state = AIS_SELL_VEHICLE;
|
||||
_players_ai[p->index].cur_veh = v;
|
||||
@@ -139,10 +139,9 @@ static EngineID AiChooseTrainToBuild(RailType railtype, Money money, byte flag,
|
||||
{
|
||||
EngineID best_veh_index = INVALID_ENGINE;
|
||||
byte best_veh_score = 0;
|
||||
CommandCost ret;
|
||||
EngineID i;
|
||||
|
||||
for (i = 0; i < NUM_TRAIN_ENGINES; i++) {
|
||||
FOR_ALL_ENGINEIDS_OF_TYPE(i, VEH_TRAIN) {
|
||||
const RailVehicleInfo *rvi = RailVehInfo(i);
|
||||
const Engine* e = GetEngine(i);
|
||||
|
||||
@@ -154,7 +153,10 @@ static EngineID AiChooseTrainToBuild(RailType railtype, Money money, byte flag,
|
||||
continue;
|
||||
}
|
||||
|
||||
ret = DoCommand(tile, i, 0, 0, CMD_BUILD_RAIL_VEHICLE);
|
||||
/* Don't choose an engine designated for passenger use for freight. */
|
||||
if (rvi->ai_passenger_only != 0 && flag == 1) continue;
|
||||
|
||||
CommandCost ret = DoCommand(tile, i, 0, 0, CMD_BUILD_RAIL_VEHICLE);
|
||||
if (CmdSucceeded(ret) && ret.GetCost() <= money && rvi->ai_rank >= best_veh_score) {
|
||||
best_veh_score = rvi->ai_rank;
|
||||
best_veh_index = i;
|
||||
@@ -168,14 +170,11 @@ static EngineID AiChooseRoadVehToBuild(CargoID cargo, Money money, TileIndex til
|
||||
{
|
||||
EngineID best_veh_index = INVALID_ENGINE;
|
||||
int32 best_veh_rating = 0;
|
||||
EngineID i = ROAD_ENGINES_INDEX;
|
||||
EngineID end = i + NUM_ROAD_ENGINES;
|
||||
EngineID i;
|
||||
|
||||
for (; i != end; i++) {
|
||||
FOR_ALL_ENGINEIDS_OF_TYPE(i, VEH_ROAD) {
|
||||
const RoadVehicleInfo *rvi = RoadVehInfo(i);
|
||||
const Engine* e = GetEngine(i);
|
||||
int32 rating;
|
||||
CommandCost ret;
|
||||
|
||||
if (!HasBit(e->player_avail, _current_player) || e->reliability < 0x8A3D) {
|
||||
continue;
|
||||
@@ -185,10 +184,10 @@ static EngineID AiChooseRoadVehToBuild(CargoID cargo, Money money, TileIndex til
|
||||
if (rvi->cargo_type != cargo && !CanRefitTo(i, cargo)) continue;
|
||||
|
||||
/* Rate and compare the engine by speed & capacity */
|
||||
rating = rvi->max_speed * rvi->capacity;
|
||||
int rating = rvi->max_speed * rvi->capacity;
|
||||
if (rating <= best_veh_rating) continue;
|
||||
|
||||
ret = DoCommand(tile, i, 0, 0, CMD_BUILD_ROAD_VEH);
|
||||
CommandCost ret = DoCommand(tile, i, 0, 0, CMD_BUILD_ROAD_VEH);
|
||||
if (CmdFailed(ret)) continue;
|
||||
|
||||
/* Add the cost of refitting */
|
||||
@@ -202,23 +201,28 @@ static EngineID AiChooseRoadVehToBuild(CargoID cargo, Money money, TileIndex til
|
||||
return best_veh_index;
|
||||
}
|
||||
|
||||
static EngineID AiChooseAircraftToBuild(Money money, byte flag)
|
||||
/**
|
||||
* Choose aircraft to build.
|
||||
* @param money current AI money
|
||||
* @param forbidden forbidden flags - AIR_HELI = 0 (always allowed), AIR_CTOL = 1 (bit 0), AIR_FAST = 2 (bit 1)
|
||||
* @return EngineID of aircraft to build
|
||||
*/
|
||||
static EngineID AiChooseAircraftToBuild(Money money, byte forbidden)
|
||||
{
|
||||
EngineID best_veh_index = INVALID_ENGINE;
|
||||
Money best_veh_cost = 0;
|
||||
EngineID i;
|
||||
|
||||
for (i = AIRCRAFT_ENGINES_INDEX; i != AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; i++) {
|
||||
FOR_ALL_ENGINEIDS_OF_TYPE(i, VEH_AIRCRAFT) {
|
||||
const Engine* e = GetEngine(i);
|
||||
CommandCost ret;
|
||||
|
||||
if (!HasBit(e->player_avail, _current_player) || e->reliability < 0x8A3D) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((AircraftVehInfo(i)->subtype & AIR_CTOL) != flag) continue;
|
||||
if ((AircraftVehInfo(i)->subtype & forbidden) != 0) continue;
|
||||
|
||||
ret = DoCommand(0, i, 0, DC_QUERY_COST, CMD_BUILD_AIRCRAFT);
|
||||
CommandCost ret = DoCommand(0, i, 0, DC_QUERY_COST, CMD_BUILD_AIRCRAFT);
|
||||
if (CmdSucceeded(ret) && ret.GetCost() <= money && ret.GetCost() >= best_veh_cost) {
|
||||
best_veh_cost = ret.GetCost();
|
||||
best_veh_index = i;
|
||||
@@ -253,8 +257,24 @@ static EngineID AiChooseRoadVehToReplaceWith(const Player* p, const Vehicle* v)
|
||||
static EngineID AiChooseAircraftToReplaceWith(const Player* p, const Vehicle* v)
|
||||
{
|
||||
Money avail_money = p->player_money + v->value;
|
||||
|
||||
/* determine forbidden aircraft bits */
|
||||
byte forbidden = 0;
|
||||
const Order *o;
|
||||
|
||||
FOR_VEHICLE_ORDERS(v, o) {
|
||||
if (!o->IsValid()) continue;
|
||||
if (!IsValidStationID(o->dest)) continue;
|
||||
const Station *st = GetStation(o->dest);
|
||||
if (!(st->facilities & FACIL_AIRPORT)) continue;
|
||||
|
||||
AirportFTAClass::Flags flags = st->Airport()->flags;
|
||||
if (!(flags & AirportFTAClass::AIRPLANES)) forbidden |= AIR_CTOL | AIR_FAST; // no planes for heliports / oil rigs
|
||||
if (flags & AirportFTAClass::SHORT_STRIP) forbidden |= AIR_FAST; // no fast planes for small airports
|
||||
}
|
||||
|
||||
return AiChooseAircraftToBuild(
|
||||
avail_money, AircraftVehInfo(v->engine_type)->subtype & AIR_CTOL
|
||||
avail_money, forbidden
|
||||
);
|
||||
}
|
||||
|
||||
@@ -297,9 +317,9 @@ static void AiHandleGotoDepot(Player *p, int cmd)
|
||||
|
||||
static void AiRestoreVehicleOrders(Vehicle *v, BackuppedOrders *bak)
|
||||
{
|
||||
uint i;
|
||||
if (bak->order == NULL) return;
|
||||
|
||||
for (i = 0; bak->order[i].type != OT_NOTHING; i++) {
|
||||
for (uint i = 0; bak->order[i].type != OT_NOTHING; i++) {
|
||||
if (!DoCommandP(0, v->index + (i << 16), PackOrder(&bak->order[i]), NULL, CMD_INSERT_ORDER | CMD_NO_TEST_IF_IN_NETWORK))
|
||||
break;
|
||||
}
|
||||
@@ -338,7 +358,7 @@ static void AiHandleReplaceTrain(Player *p)
|
||||
static void AiHandleReplaceRoadVeh(Player *p)
|
||||
{
|
||||
const Vehicle* v = _players_ai[p->index].cur_veh;
|
||||
BackuppedOrders orderbak[1];
|
||||
BackuppedOrders orderbak;
|
||||
EngineID veh;
|
||||
|
||||
if (!v->IsStoppedInDepot()) {
|
||||
@@ -350,14 +370,14 @@ static void AiHandleReplaceRoadVeh(Player *p)
|
||||
if (veh != INVALID_ENGINE) {
|
||||
TileIndex tile;
|
||||
|
||||
BackupVehicleOrders(v, orderbak);
|
||||
BackupVehicleOrders(v, &orderbak);
|
||||
tile = v->tile;
|
||||
|
||||
if (CmdSucceeded(DoCommand(0, v->index, 0, DC_EXEC, CMD_SELL_ROAD_VEH)) &&
|
||||
CmdSucceeded(DoCommand(tile, veh, 0, DC_EXEC, CMD_BUILD_ROAD_VEH))) {
|
||||
VehicleID veh = _new_vehicle_id;
|
||||
|
||||
AiRestoreVehicleOrders(GetVehicle(veh), orderbak);
|
||||
AiRestoreVehicleOrders(GetVehicle(veh), &orderbak);
|
||||
DoCommand(0, veh, 0, DC_EXEC, CMD_START_STOP_ROADVEH);
|
||||
DoCommand(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_SERVICE_INT);
|
||||
}
|
||||
@@ -367,7 +387,7 @@ static void AiHandleReplaceRoadVeh(Player *p)
|
||||
static void AiHandleReplaceAircraft(Player *p)
|
||||
{
|
||||
const Vehicle* v = _players_ai[p->index].cur_veh;
|
||||
BackuppedOrders orderbak[1];
|
||||
BackuppedOrders orderbak;
|
||||
EngineID veh;
|
||||
|
||||
if (!v->IsStoppedInDepot()) {
|
||||
@@ -379,13 +399,13 @@ static void AiHandleReplaceAircraft(Player *p)
|
||||
if (veh != INVALID_ENGINE) {
|
||||
TileIndex tile;
|
||||
|
||||
BackupVehicleOrders(v, orderbak);
|
||||
BackupVehicleOrders(v, &orderbak);
|
||||
tile = v->tile;
|
||||
|
||||
if (CmdSucceeded(DoCommand(0, v->index, 0, DC_EXEC, CMD_SELL_AIRCRAFT)) &&
|
||||
CmdSucceeded(DoCommand(tile, veh, 0, DC_EXEC, CMD_BUILD_AIRCRAFT))) {
|
||||
VehicleID veh = _new_vehicle_id;
|
||||
AiRestoreVehicleOrders(GetVehicle(veh), orderbak);
|
||||
AiRestoreVehicleOrders(GetVehicle(veh), &orderbak);
|
||||
DoCommand(0, veh, 0, DC_EXEC, CMD_START_STOP_AIRCRAFT);
|
||||
|
||||
DoCommand(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_SERVICE_INT);
|
||||
@@ -1369,7 +1389,7 @@ static void AiWantPassengerAircraftRoute(Player *p)
|
||||
/* Get aircraft that would be bought for this route
|
||||
* (probably, as conditions may change before the route is fully built,
|
||||
* like running out of money and having to select different aircraft, etc ...) */
|
||||
EngineID veh = AiChooseAircraftToBuild(p->player_money, _players_ai[p->index].build_kind != 0 ? 0 : AIR_CTOL);
|
||||
EngineID veh = AiChooseAircraftToBuild(p->player_money, _players_ai[p->index].build_kind != 0 ? AIR_CTOL : 0);
|
||||
|
||||
/* No aircraft buildable mean no aircraft route */
|
||||
if (veh == INVALID_ENGINE) return;
|
||||
@@ -1583,7 +1603,7 @@ static void AiStateWantNewRoute(Player *p)
|
||||
|
||||
static bool AiCheckTrackResources(TileIndex tile, const AiDefaultBlockData *p, byte cargo)
|
||||
{
|
||||
uint rad = (_patches.modified_catchment) ? CA_TRAIN : 4;
|
||||
uint rad = (_patches.modified_catchment) ? CA_TRAIN : CA_UNMODIFIED;
|
||||
|
||||
for (; p->mode != 4; p++) {
|
||||
AcceptedCargo values;
|
||||
@@ -1881,7 +1901,7 @@ struct AiRailPathFindData {
|
||||
bool flag;
|
||||
};
|
||||
|
||||
static bool AiEnumFollowTrack(TileIndex tile, AiRailPathFindData *a, int track, uint length, byte *state)
|
||||
static bool AiEnumFollowTrack(TileIndex tile, AiRailPathFindData *a, int track, uint length)
|
||||
{
|
||||
if (a->flag) return true;
|
||||
|
||||
@@ -1903,7 +1923,7 @@ static bool AiDoFollowTrack(const Player* p)
|
||||
arpfd.tile2 = _players_ai[p->index].cur_tile_a;
|
||||
arpfd.flag = false;
|
||||
arpfd.count = 0;
|
||||
FollowTrack(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(_players_ai[p->index].cur_dir_a), 0x2000 | TRANSPORT_RAIL, 0, ReverseDiagDir(_players_ai[p->index].cur_dir_a),
|
||||
FollowTrack(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(_players_ai[p->index].cur_dir_a), TRANSPORT_RAIL, 0, ReverseDiagDir(_players_ai[p->index].cur_dir_a),
|
||||
(TPFEnumProc*)AiEnumFollowTrack, NULL, &arpfd);
|
||||
return arpfd.count > 8;
|
||||
}
|
||||
@@ -2177,26 +2197,55 @@ static void AiBuildRailConstruct(Player *p)
|
||||
_players_ai[p->index].cur_tile_a += TileOffsByDiagDir(_players_ai[p->index].cur_dir_a);
|
||||
|
||||
if (arf.best_ptr[0] & 0x80) {
|
||||
int i;
|
||||
int32 bridge_len = GetBridgeLength(arf.bridge_end_tile, _players_ai[p->index].cur_tile_a);
|
||||
TileIndex t1 = _players_ai[p->index].cur_tile_a;
|
||||
TileIndex t2 = arf.bridge_end_tile;
|
||||
|
||||
/* Figure out which (rail)bridge type to build
|
||||
* start with best bridge, then go down to worse and worse bridges
|
||||
* unnecessary to check for worst bridge (i=0), since AI will always build
|
||||
* that. AI is so fucked up that fixing this small thing will probably not
|
||||
* solve a thing
|
||||
*/
|
||||
for (i = MAX_BRIDGES - 1; i != 0; i--) {
|
||||
if (CheckBridge_Stuff(i, bridge_len)) {
|
||||
CommandCost cost = DoCommand(arf.bridge_end_tile, _players_ai[p->index].cur_tile_a, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO, CMD_BUILD_BRIDGE);
|
||||
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 5)) break;
|
||||
int32 bridge_len = GetTunnelBridgeLength(t1, t2);
|
||||
|
||||
DiagDirection dir = (TileX(t1) == TileX(t2) ? DIAGDIR_SE : DIAGDIR_SW);
|
||||
Track track = AxisToTrack(DiagDirToAxis(dir));
|
||||
|
||||
if (t2 < t1) dir = ReverseDiagDir(dir);
|
||||
|
||||
/* try to build a long rail instead of bridge... */
|
||||
bool fail = false;
|
||||
CommandCost cost;
|
||||
TileIndex t = t1;
|
||||
|
||||
/* try to build one rail on each tile - can't use CMD_BUILD_RAILROAD_TRACK now, it can build one part of track without failing */
|
||||
do {
|
||||
cost = DoCommand(t, _players_ai[p->index].railtype_to_use, track, DC_AUTO | DC_NO_WATER, CMD_BUILD_SINGLE_RAIL);
|
||||
/* do not allow building over existing track */
|
||||
if (CmdFailed(cost) || IsTileType(t, MP_RAILWAY)) {
|
||||
fail = true;
|
||||
break;
|
||||
}
|
||||
t += TileOffsByDiagDir(dir);
|
||||
} while (t != t2);
|
||||
|
||||
/* can we build long track? */
|
||||
if (!fail) cost = DoCommand(t1, t2, _players_ai[p->index].railtype_to_use | (track << 4), DC_AUTO | DC_NO_WATER, CMD_BUILD_RAILROAD_TRACK);
|
||||
|
||||
if (!fail && CmdSucceeded(cost) && cost.GetCost() <= p->player_money) {
|
||||
DoCommand(t1, t2, _players_ai[p->index].railtype_to_use | (track << 4), DC_AUTO | DC_NO_WATER | DC_EXEC, CMD_BUILD_RAILROAD_TRACK);
|
||||
} else {
|
||||
|
||||
/* Figure out which (rail)bridge type to build
|
||||
* start with best bridge, then go down to worse and worse bridges
|
||||
* unnecessary to check for worst bridge (i=0), since AI will always build that. */
|
||||
int i;
|
||||
for (i = MAX_BRIDGES - 1; i != 0; i--) {
|
||||
if (CheckBridge_Stuff(i, bridge_len)) {
|
||||
CommandCost cost = DoCommand(t1, t2, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO, CMD_BUILD_BRIDGE);
|
||||
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 1) && cost.GetCost() < ((p->player_money + _economy.max_loan - p->current_loan) >> 5)) break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Build it */
|
||||
DoCommand(t1, t2, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
|
||||
}
|
||||
|
||||
// Build it
|
||||
DoCommand(arf.bridge_end_tile, _players_ai[p->index].cur_tile_a, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
|
||||
|
||||
_players_ai[p->index].cur_tile_a = arf.bridge_end_tile;
|
||||
_players_ai[p->index].cur_tile_a = t2;
|
||||
_players_ai[p->index].state_counter = 0;
|
||||
} else if (arf.best_ptr[0] & 0x40) {
|
||||
// tunnel
|
||||
@@ -2233,7 +2282,7 @@ static bool AiRemoveTileAndGoForward(Player *p)
|
||||
return false;
|
||||
_players_ai[p->index].cur_tile_a = TILE_MASK(_build_tunnel_endtile - TileOffsByDiagDir(_players_ai[p->index].cur_dir_a));
|
||||
return true;
|
||||
} else {
|
||||
} else { // IsBridge(tile)
|
||||
// Check if the bridge points in the right direction.
|
||||
// This is not really needed the first place AiRemoveTileAndGoForward is called.
|
||||
if (DiagDirToAxis(GetTunnelBridgeDirection(tile)) != (_players_ai[p->index].cur_dir_a & 1)) return false;
|
||||
@@ -2618,8 +2667,7 @@ static CommandCost AiDoBuildDefaultRoadBlock(TileIndex tile, const AiDefaultBloc
|
||||
_cleared_town = NULL;
|
||||
|
||||
if (p->mode == 2) {
|
||||
if (IsTileType(c, MP_ROAD) &&
|
||||
GetRoadTileType(c) == ROAD_TILE_NORMAL &&
|
||||
if (IsNormalRoadTile(c) &&
|
||||
(GetRoadBits(c, ROADTYPE_ROAD) & p->attr) != 0) {
|
||||
roadflag |= 2;
|
||||
|
||||
@@ -2661,7 +2709,7 @@ clear_town_stuff:;
|
||||
|
||||
if (GetTileSlope(c, NULL) != SLOPE_FLAT) return CMD_ERROR;
|
||||
|
||||
if (!IsTileType(c, MP_ROAD) || GetRoadTileType(c) != ROAD_TILE_NORMAL) {
|
||||
if (!IsNormalRoadTile(c)) {
|
||||
ret = DoCommand(c, 0, 0, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_LANDSCAPE_CLEAR);
|
||||
if (CmdFailed(ret)) return CMD_ERROR;
|
||||
}
|
||||
@@ -2829,14 +2877,14 @@ static bool AiCheckRoadPathBetter(AiRoadFinder *arf, const byte *p)
|
||||
}
|
||||
|
||||
|
||||
static bool AiEnumFollowRoad(TileIndex tile, AiRoadEnum *a, int track, uint length, byte *state)
|
||||
static bool AiEnumFollowRoad(TileIndex tile, AiRoadEnum *a, int track, uint length)
|
||||
{
|
||||
uint dist = DistanceManhattan(tile, a->dest);
|
||||
|
||||
if (dist <= a->best_dist) {
|
||||
TileIndex tile2 = TILE_MASK(tile + TileOffsByDiagDir(_dir_by_track[track]));
|
||||
|
||||
if (IsTileType(tile2, MP_ROAD) && GetRoadTileType(tile2) == ROAD_TILE_NORMAL) {
|
||||
if (IsNormalRoadTile(tile2)) {
|
||||
a->best_dist = dist;
|
||||
a->best_tile = tile;
|
||||
a->best_track = track;
|
||||
@@ -2864,14 +2912,14 @@ static bool AiCheckRoadFinished(Player *p)
|
||||
tile = TILE_MASK(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(dir));
|
||||
|
||||
if (IsRoadStopTile(tile) || IsTileDepotType(tile, TRANSPORT_ROAD)) return false;
|
||||
bits = GetTileTrackStatus(tile, TRANSPORT_ROAD, ROADTYPES_ROAD) & _ai_road_table_and[dir];
|
||||
bits = TrackStatusToTrackdirBits(GetTileTrackStatus(tile, TRANSPORT_ROAD, ROADTYPES_ROAD)) & _ai_road_table_and[dir];
|
||||
if (bits == 0) return false;
|
||||
|
||||
are.best_dist = (uint)-1;
|
||||
|
||||
uint i;
|
||||
FOR_EACH_SET_BIT(i, bits) {
|
||||
FollowTrack(tile, 0x3000 | TRANSPORT_ROAD, ROADTYPES_ROAD, (DiagDirection)_dir_by_track[i], (TPFEnumProc*)AiEnumFollowRoad, NULL, &are);
|
||||
FollowTrack(tile, 0x1000 | TRANSPORT_ROAD, ROADTYPES_ROAD, (DiagDirection)_dir_by_track[i], (TPFEnumProc*)AiEnumFollowRoad, NULL, &are);
|
||||
}
|
||||
|
||||
if (DistanceManhattan(tile, are.dest) <= are.best_dist) return false;
|
||||
@@ -2918,7 +2966,7 @@ static inline void AiCheckBuildRoadBridgeHere(AiRoadFinder *arf, TileIndex tile,
|
||||
tile_new = TILE_MASK(tile_new + TileOffsByDiagDir(dir2));
|
||||
type = GetTileType(tile_new);
|
||||
|
||||
if (type == MP_CLEAR || type == MP_TREES || GetTileSlope(tile, NULL) != SLOPE_FLAT) {
|
||||
if (type == MP_CLEAR || type == MP_TREES || GetTileSlope(tile_new, NULL) != SLOPE_FLAT) {
|
||||
// Allow a bridge if either we have a tile that's water, rail or street,
|
||||
// or if we found an up tile.
|
||||
if (!flag) return;
|
||||
@@ -3067,26 +3115,36 @@ do_some_terraform:
|
||||
tile = TILE_MASK(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(_players_ai[p->index].cur_dir_a));
|
||||
|
||||
if (arf.best_ptr[0] & 0x80) {
|
||||
int i;
|
||||
int32 bridge_len;
|
||||
_players_ai[p->index].cur_tile_a = arf.bridge_end_tile;
|
||||
bridge_len = GetBridgeLength(tile, _players_ai[p->index].cur_tile_a); // tile
|
||||
TileIndex t1 = tile;
|
||||
TileIndex t2 = arf.bridge_end_tile;
|
||||
|
||||
/* Figure out what (road)bridge type to build
|
||||
* start with best bridge, then go down to worse and worse bridges
|
||||
* unnecessary to check for worse bridge (i=0), since AI will always build that.
|
||||
*AI is so fucked up that fixing this small thing will probably not solve a thing
|
||||
*/
|
||||
for (i = 10; i != 0; i--) {
|
||||
if (CheckBridge_Stuff(i, bridge_len)) {
|
||||
CommandCost cost = DoCommand(tile, _players_ai[p->index].cur_tile_a, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO, CMD_BUILD_BRIDGE);
|
||||
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 5)) break;
|
||||
int32 bridge_len = GetTunnelBridgeLength(t1, t2);
|
||||
|
||||
Axis axis = (TileX(t1) == TileX(t2) ? AXIS_Y : AXIS_X);
|
||||
|
||||
/* try to build a long road instead of bridge - CMD_BUILD_LONG_ROAD has to fail if it couldn't build at least one piece! */
|
||||
CommandCost cost = DoCommand(t2, t1, (t2 < t1 ? 1 : 2) | (axis << 2) | (ROADTYPE_ROAD << 3), DC_AUTO | DC_NO_WATER, CMD_BUILD_LONG_ROAD);
|
||||
|
||||
if (CmdSucceeded(cost) && cost.GetCost() <= p->player_money) {
|
||||
DoCommand(t2, t1, (t2 < t1 ? 1 : 2) | (axis << 2) | (ROADTYPE_ROAD << 3), DC_AUTO | DC_EXEC | DC_NO_WATER, CMD_BUILD_LONG_ROAD);
|
||||
} else {
|
||||
int i;
|
||||
|
||||
/* Figure out what (road)bridge type to build
|
||||
* start with best bridge, then go down to worse and worse bridges
|
||||
* unnecessary to check for worse bridge (i=0), since AI will always build that */
|
||||
for (i = MAX_BRIDGES - 1; i != 0; i--) {
|
||||
if (CheckBridge_Stuff(i, bridge_len)) {
|
||||
CommandCost cost = DoCommand(t1, t2, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO, CMD_BUILD_BRIDGE);
|
||||
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 1) && cost.GetCost() < ((p->player_money + _economy.max_loan - p->current_loan) >> 5)) break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Build it */
|
||||
DoCommand(t1, t2, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
|
||||
}
|
||||
|
||||
// Build it
|
||||
DoCommand(tile, _players_ai[p->index].cur_tile_a, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
|
||||
|
||||
_players_ai[p->index].cur_tile_a = t2;
|
||||
_players_ai[p->index].state_counter = 0;
|
||||
} else if (arf.best_ptr[0] & 0x40) {
|
||||
// tunnel
|
||||
@@ -3389,7 +3447,7 @@ static bool AiCheckAirportResources(TileIndex tile, const AiDefaultBlockData *p,
|
||||
const AirportFTAClass* airport = GetAirport(p->attr);
|
||||
uint w = airport->size_x;
|
||||
uint h = airport->size_y;
|
||||
uint rad = _patches.modified_catchment ? airport->catchment : 4;
|
||||
uint rad = _patches.modified_catchment ? airport->catchment : (uint)CA_UNMODIFIED;
|
||||
|
||||
if (cargo & 0x80) {
|
||||
GetProductionAroundTiles(values, tile2, w, h, rad);
|
||||
@@ -3508,7 +3566,20 @@ static void AiStateBuildAircraftVehicles(Player *p)
|
||||
|
||||
tile = TILE_ADD(_players_ai[p->index].src.use_tile, ToTileIndexDiff(ptr->tileoffs));
|
||||
|
||||
veh = AiChooseAircraftToBuild(p->player_money, _players_ai[p->index].build_kind != 0 ? 0 : AIR_CTOL);
|
||||
/* determine forbidden aircraft bits */
|
||||
byte forbidden = 0;
|
||||
for (i = 0; _players_ai[p->index].order_list_blocks[i] != 0xFF; i++) {
|
||||
const AiBuildRec *aib = (&_players_ai[p->index].src) + _players_ai[p->index].order_list_blocks[i];
|
||||
const Station *st = GetStationByTile(aib->use_tile);
|
||||
|
||||
if (st == NULL || !(st->facilities & FACIL_AIRPORT)) continue;
|
||||
|
||||
AirportFTAClass::Flags flags = st->Airport()->flags;
|
||||
if (!(flags & AirportFTAClass::AIRPLANES)) forbidden |= AIR_CTOL | AIR_FAST; // no planes for heliports / oil rigs
|
||||
if (flags & AirportFTAClass::SHORT_STRIP) forbidden |= AIR_FAST; // no fast planes for small airports
|
||||
}
|
||||
|
||||
veh = AiChooseAircraftToBuild(p->player_money, forbidden);
|
||||
if (veh == INVALID_ENGINE) return;
|
||||
|
||||
/* XXX - Have the AI pick the hangar terminal in an airport. Eg get airport-type
|
||||
@@ -3706,7 +3777,7 @@ pos_3:
|
||||
|
||||
if (IsLevelCrossing(tile)) goto is_rail_crossing;
|
||||
|
||||
if (GetRoadTileType(tile) == ROAD_TILE_DEPOT) {
|
||||
if (IsRoadDepot(tile)) {
|
||||
DiagDirection dir;
|
||||
TileIndex t;
|
||||
|
||||
|
@@ -15,6 +15,8 @@
|
||||
#include "../../player_base.h"
|
||||
#include "../../player_func.h"
|
||||
#include "../ai.h"
|
||||
#include "../../tunnelbridge.h"
|
||||
|
||||
|
||||
// Build HQ
|
||||
// Params:
|
||||
@@ -58,7 +60,7 @@ CommandCost AiNew_Build_Bridge(Player *p, TileIndex tile_a, TileIndex tile_b, by
|
||||
int bridge_type, bridge_len, type, type2;
|
||||
|
||||
// Find a good bridgetype (the best money can buy)
|
||||
bridge_len = GetBridgeLength(tile_a, tile_b);
|
||||
bridge_len = GetTunnelBridgeLength(tile_a, tile_b);
|
||||
type = type2 = 0;
|
||||
for (bridge_type = MAX_BRIDGES-1; bridge_type >= 0; bridge_type--) {
|
||||
if (CheckBridge_Stuff(bridge_type, bridge_len)) {
|
||||
@@ -234,30 +236,29 @@ EngineID AiNew_PickVehicle(Player *p)
|
||||
} else {
|
||||
EngineID best_veh_index = INVALID_ENGINE;
|
||||
int32 best_veh_rating = 0;
|
||||
EngineID start = ROAD_ENGINES_INDEX;
|
||||
EngineID end = ROAD_ENGINES_INDEX + NUM_ROAD_ENGINES;
|
||||
EngineID i;
|
||||
|
||||
/* Loop through all road vehicles */
|
||||
for (i = start; i != end; i++) {
|
||||
FOR_ALL_ENGINEIDS_OF_TYPE(i, VEH_ROAD) {
|
||||
const RoadVehicleInfo *rvi = RoadVehInfo(i);
|
||||
const Engine* e = GetEngine(i);
|
||||
int32 rating;
|
||||
CommandCost ret;
|
||||
|
||||
/* Skip vehicles which can't take our cargo type */
|
||||
if (rvi->cargo_type != _players_ainew[p->index].cargo && !CanRefitTo(i, _players_ainew[p->index].cargo)) continue;
|
||||
|
||||
/* Skip trams */
|
||||
if (HasBit(EngInfo(i)->misc_flags, EF_ROAD_TRAM)) continue;
|
||||
|
||||
// Is it availiable?
|
||||
// Also, check if the reliability of the vehicle is above the AI_VEHICLE_MIN_RELIABILTY
|
||||
if (!HasBit(e->player_avail, _current_player) || e->reliability * 100 < AI_VEHICLE_MIN_RELIABILTY << 16) continue;
|
||||
|
||||
/* Rate and compare the engine by speed & capacity */
|
||||
rating = rvi->max_speed * rvi->capacity;
|
||||
int rating = rvi->max_speed * rvi->capacity;
|
||||
if (rating <= best_veh_rating) continue;
|
||||
|
||||
// Can we build it?
|
||||
ret = AI_DoCommand(0, i, 0, DC_QUERY_COST, CMD_BUILD_ROAD_VEH);
|
||||
CommandCost ret = AI_DoCommand(0, i, 0, DC_QUERY_COST, CMD_BUILD_ROAD_VEH);
|
||||
if (CmdFailed(ret)) continue;
|
||||
|
||||
best_veh_rating = rating;
|
||||
|
@@ -14,6 +14,7 @@
|
||||
#include "../../variables.h"
|
||||
#include "../../player_base.h"
|
||||
#include "../../player_func.h"
|
||||
#include "../../tunnelbridge.h"
|
||||
|
||||
|
||||
#define TEST_STATION_NO_DIR 0xFF
|
||||
@@ -320,7 +321,7 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
|
||||
new_tile += TileOffsByDiagDir(dir);
|
||||
|
||||
// Precheck, is the length allowed?
|
||||
if (!CheckBridge_Stuff(0, GetBridgeLength(tile, new_tile))) break;
|
||||
if (!CheckBridge_Stuff(0, GetTunnelBridgeLength(tile, new_tile))) break;
|
||||
|
||||
// Check if we hit the station-tile.. we don't like that!
|
||||
if (TILES_BETWEEN(new_tile, PathFinderInfo->end_tile_tl, PathFinderInfo->end_tile_br)) break;
|
||||
@@ -340,14 +341,11 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
|
||||
// Next, check for tunnels!
|
||||
// Tunnels can only be built on slopes corresponding to the direction
|
||||
// For now, we check both sides for this tile.. terraforming gives fuzzy result
|
||||
if ((dir == DIAGDIR_NE && tileh == SLOPE_NE) ||
|
||||
(dir == DIAGDIR_SE && tileh == SLOPE_SE) ||
|
||||
(dir == DIAGDIR_SW && tileh == SLOPE_SW) ||
|
||||
(dir == DIAGDIR_NW && tileh == SLOPE_NW)) {
|
||||
if (tileh == InclinedSlope(dir)) {
|
||||
// Now simply check if a tunnel can be build
|
||||
ret = AI_DoCommand(tile, (PathFinderInfo->rail_or_road?0:0x200), 0, DC_AUTO, CMD_BUILD_TUNNEL);
|
||||
tileh = GetTileSlope(_build_tunnel_endtile, NULL);
|
||||
if (CmdSucceeded(ret) && (tileh == SLOPE_SW || tileh == SLOPE_SE || tileh == SLOPE_NW || tileh == SLOPE_NE)) {
|
||||
if (CmdSucceeded(ret) && IsInclinedSlope(tileh)) {
|
||||
aystar->neighbours[aystar->num_neighbours].tile = _build_tunnel_endtile;
|
||||
aystar->neighbours[aystar->num_neighbours].user_data[0] = AI_PATHFINDER_FLAG_TUNNEL + (dir << 8);
|
||||
aystar->neighbours[aystar->num_neighbours++].direction = 0;
|
||||
@@ -359,10 +357,6 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
|
||||
|
||||
extern Foundation GetRailFoundation(Slope tileh, TrackBits bits); // XXX function declaration in .c
|
||||
extern Foundation GetRoadFoundation(Slope tileh, RoadBits bits); // XXX function declaration in .c
|
||||
extern Foundation GetBridgeFoundation(Slope tileh, Axis); // XXX function declaration in .c
|
||||
enum BridgeFoundation {
|
||||
BRIDGE_NO_FOUNDATION = 1 << 0 | 1 << 3 | 1 << 6 | 1 << 9 | 1 << 12,
|
||||
};
|
||||
|
||||
// The most important function: it calculates the g-value
|
||||
static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current, OpenListNode *parent)
|
||||
@@ -405,8 +399,7 @@ static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current,
|
||||
if (parent->path.node.user_data[0] == 0 && current->user_data[0] == 0) {
|
||||
if (PathFinderInfo->rail_or_road) {
|
||||
Foundation f = GetRailFoundation(parent_tileh, (TrackBits)(1 << AiNew_GetRailDirection(parent->path.parent->node.tile, parent->path.node.tile, current->tile)));
|
||||
// Maybe is BRIDGE_NO_FOUNDATION a bit strange here, but it contains just the right information..
|
||||
if (IsInclinedFoundation(f) || (!IsFoundation(f) && HasBit(BRIDGE_NO_FOUNDATION, parent_tileh))) {
|
||||
if (IsInclinedFoundation(f) || (!IsFoundation(f) && IsInclinedSlope(parent_tileh))) {
|
||||
res += AI_PATHFINDER_TILE_GOES_UP_PENALTY;
|
||||
} else {
|
||||
res += AI_PATHFINDER_FOUNDATION_PENALTY;
|
||||
@@ -414,7 +407,7 @@ static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current,
|
||||
} else {
|
||||
if (!IsRoad(parent->path.node.tile) || !IsTileType(parent->path.node.tile, MP_TUNNELBRIDGE)) {
|
||||
Foundation f = GetRoadFoundation(parent_tileh, (RoadBits)AiNew_GetRoadDirection(parent->path.parent->node.tile, parent->path.node.tile, current->tile));
|
||||
if (IsInclinedFoundation(f) || (!IsFoundation(f) && HasBit(BRIDGE_NO_FOUNDATION, parent_tileh))) {
|
||||
if (IsInclinedFoundation(f) || (!IsFoundation(f) && IsInclinedSlope(parent_tileh))) {
|
||||
res += AI_PATHFINDER_TILE_GOES_UP_PENALTY;
|
||||
} else {
|
||||
res += AI_PATHFINDER_FOUNDATION_PENALTY;
|
||||
@@ -429,29 +422,19 @@ static int32 AyStar_AiPathFinder_CalculateG(AyStar *aystar, AyStarNode *current,
|
||||
int r;
|
||||
// Tunnels are very expensive when build on long routes..
|
||||
// Ironicly, we are using BridgeCode here ;)
|
||||
r = AI_PATHFINDER_TUNNEL_PENALTY * GetBridgeLength(current->tile, parent->path.node.tile);
|
||||
r = AI_PATHFINDER_TUNNEL_PENALTY * GetTunnelBridgeLength(current->tile, parent->path.node.tile);
|
||||
res += r + (r >> 8);
|
||||
}
|
||||
|
||||
// Are we part of a bridge?
|
||||
if ((AI_PATHFINDER_FLAG_BRIDGE & current->user_data[0]) != 0) {
|
||||
// That means for every length a penalty
|
||||
res += AI_PATHFINDER_BRIDGE_PENALTY * GetBridgeLength(current->tile, parent->path.node.tile);
|
||||
res += AI_PATHFINDER_BRIDGE_PENALTY * GetTunnelBridgeLength(current->tile, parent->path.node.tile);
|
||||
// Check if we are going up or down, first for the starting point
|
||||
// In user_data[0] is at the 8th bit the direction
|
||||
if (!HasBit(BRIDGE_NO_FOUNDATION, parent_tileh)) {
|
||||
if (IsLeveledFoundation(GetBridgeFoundation(parent_tileh, (Axis)((current->user_data[0] >> 8) & 1)))) {
|
||||
res += AI_PATHFINDER_BRIDGE_GOES_UP_PENALTY;
|
||||
}
|
||||
}
|
||||
if (!HasBridgeFlatRamp(parent_tileh, (Axis)((current->user_data[0] >> 8) & 1))) res += AI_PATHFINDER_BRIDGE_GOES_UP_PENALTY;
|
||||
// Second for the end point
|
||||
if (!HasBit(BRIDGE_NO_FOUNDATION, tileh)) {
|
||||
if (IsLeveledFoundation(GetBridgeFoundation(tileh, (Axis)((current->user_data[0] >> 8) & 1)))) {
|
||||
res += AI_PATHFINDER_BRIDGE_GOES_UP_PENALTY;
|
||||
}
|
||||
}
|
||||
if (parent_tileh == SLOPE_FLAT) res += AI_PATHFINDER_BRIDGE_GOES_UP_PENALTY;
|
||||
if (tileh == SLOPE_FLAT) res += AI_PATHFINDER_BRIDGE_GOES_UP_PENALTY;
|
||||
if (!HasBridgeFlatRamp(tileh, (Axis)((current->user_data[0] >> 8) & 1))) res += AI_PATHFINDER_BRIDGE_GOES_UP_PENALTY;
|
||||
}
|
||||
|
||||
// To prevent the AI from taking the fastest way in tiles, but not the fastest way
|
||||
|
@@ -801,8 +801,7 @@ static void AiNew_State_FindDepot(Player *p)
|
||||
for (j = DIAGDIR_BEGIN; j < DIAGDIR_END; j++) {
|
||||
TileIndex t = tile + TileOffsByDiagDir(j);
|
||||
|
||||
if (IsTileType(t, MP_ROAD) &&
|
||||
GetRoadTileType(t) == ROAD_TILE_DEPOT &&
|
||||
if (IsRoadDepotTile(t) &&
|
||||
IsTileOwner(t, _current_player) &&
|
||||
GetRoadDepotDirection(t) == ReverseDiagDir(j)) {
|
||||
_players_ainew[p->index].depot_tile = t;
|
||||
@@ -1102,7 +1101,7 @@ static void AiNew_State_BuildDepot(Player *p)
|
||||
CommandCost res;
|
||||
assert(_players_ainew[p->index].state == AI_STATE_BUILD_DEPOT);
|
||||
|
||||
if (IsTileType(_players_ainew[p->index].depot_tile, MP_ROAD) && GetRoadTileType(_players_ainew[p->index].depot_tile) == ROAD_TILE_DEPOT) {
|
||||
if (IsRoadDepotTile(_players_ainew[p->index].depot_tile)) {
|
||||
if (IsTileOwner(_players_ainew[p->index].depot_tile, _current_player)) {
|
||||
// The depot is already built
|
||||
_players_ainew[p->index].state = AI_STATE_BUILD_VEHICLE;
|
||||
@@ -1252,7 +1251,7 @@ static void AiNew_CheckVehicle(Player *p, Vehicle *v)
|
||||
if (v->age > 360) {
|
||||
// If both years together are not more than AI_MINIMUM_ROUTE_PROFIT,
|
||||
// it is not worth the line I guess...
|
||||
if (v->profit_last_year + v->profit_this_year < AI_MINIMUM_ROUTE_PROFIT ||
|
||||
if (v->profit_last_year + v->profit_this_year < (Money)256 * AI_MINIMUM_ROUTE_PROFIT ||
|
||||
(v->reliability * 100 >> 16) < 40) {
|
||||
// There is a possibility that the route is fucked up...
|
||||
if (v->cargo.DaysInTransit() > AI_VEHICLE_LOST_DAYS) {
|
||||
|
@@ -124,6 +124,7 @@ struct Aircraft : public Vehicle {
|
||||
Money GetRunningCost() const { return AircraftVehInfo(this->engine_type)->running_cost * _price.aircraft_running; }
|
||||
bool IsInDepot() const { return (this->vehstatus & VS_HIDDEN) != 0 && IsHangarTile(this->tile); }
|
||||
void Tick();
|
||||
void OnNewDay();
|
||||
};
|
||||
|
||||
#endif /* AIRCRAFT_H */
|
||||
|
@@ -321,6 +321,8 @@ CommandCost CmdBuildAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
u->z_pos = GetSlopeZ(x, y);
|
||||
v->z_pos = u->z_pos + 1;
|
||||
|
||||
v->running_ticks = 0;
|
||||
|
||||
// u->delta_x = u->delta_y = 0;
|
||||
|
||||
v->vehstatus = VS_HIDDEN | VS_STOPPED | VS_DEFPAL;
|
||||
@@ -537,7 +539,7 @@ CommandCost CmdStartStopAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32
|
||||
|
||||
v->vehstatus ^= VS_STOPPED;
|
||||
v->cur_speed = 0;
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
|
||||
InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
|
||||
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
|
||||
}
|
||||
@@ -576,7 +578,7 @@ CommandCost CmdSendAircraftToHangar(TileIndex tile, uint32 flags, uint32 p1, uin
|
||||
if (flags & DC_EXEC) {
|
||||
ClrBit(v->current_order.flags, OF_PART_OF_ORDERS);
|
||||
ToggleBit(v->current_order.flags, OF_HALT_IN_DEPOT);
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
|
||||
}
|
||||
return CommandCost();
|
||||
}
|
||||
@@ -586,7 +588,7 @@ CommandCost CmdSendAircraftToHangar(TileIndex tile, uint32 flags, uint32 p1, uin
|
||||
if (v->current_order.flags & OFB_UNLOAD) v->cur_order_index++;
|
||||
v->current_order.type = OT_DUMMY;
|
||||
v->current_order.flags = 0;
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
|
||||
}
|
||||
} else {
|
||||
bool next_airport_has_hangar = true;
|
||||
@@ -610,7 +612,7 @@ CommandCost CmdSendAircraftToHangar(TileIndex tile, uint32 flags, uint32 p1, uin
|
||||
if (!(p2 & DEPOT_SERVICE)) SetBit(v->current_order.flags, OF_HALT_IN_DEPOT);
|
||||
v->current_order.refit_cargo = CT_INVALID;
|
||||
v->current_order.dest = next_airport_index;
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
|
||||
if (v->u.air.state == FLYING && !next_airport_has_hangar) {
|
||||
/* The aircraft is now heading for a different hangar than the next in the orders */
|
||||
AircraftNextAirportPos_and_Order(v);
|
||||
@@ -715,35 +717,36 @@ static void CheckIfAircraftNeedsService(Vehicle *v)
|
||||
// v->u.air.targetairport = st->index;
|
||||
v->current_order.type = OT_GOTO_DEPOT;
|
||||
v->current_order.flags = OFB_NON_STOP;
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
|
||||
} else if (v->current_order.type == OT_GOTO_DEPOT) {
|
||||
v->current_order.type = OT_DUMMY;
|
||||
v->current_order.flags = 0;
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
|
||||
}
|
||||
}
|
||||
|
||||
void OnNewDay_Aircraft(Vehicle *v)
|
||||
void Aircraft::OnNewDay()
|
||||
{
|
||||
if (!IsNormalAircraft(v)) return;
|
||||
if (!IsNormalAircraft(this)) return;
|
||||
|
||||
if ((++v->day_counter & 7) == 0) DecreaseVehicleValue(v);
|
||||
if ((++this->day_counter & 7) == 0) DecreaseVehicleValue(this);
|
||||
|
||||
CheckOrders(v);
|
||||
CheckOrders(this);
|
||||
|
||||
CheckVehicleBreakdown(v);
|
||||
AgeVehicle(v);
|
||||
CheckIfAircraftNeedsService(v);
|
||||
CheckVehicleBreakdown(this);
|
||||
AgeVehicle(this);
|
||||
CheckIfAircraftNeedsService(this);
|
||||
|
||||
if (v->vehstatus & VS_STOPPED) return;
|
||||
if (this->running_ticks == 0) return;
|
||||
|
||||
CommandCost cost = CommandCost(EXPENSES_AIRCRAFT_RUN, GetVehicleProperty(v, 0x0E, AircraftVehInfo(v->engine_type)->running_cost) * _price.aircraft_running / 364);
|
||||
CommandCost cost(EXPENSES_AIRCRAFT_RUN, GetVehicleProperty(this, 0x0E, AircraftVehInfo(this->engine_type)->running_cost) * _price.aircraft_running * this->running_ticks / (364 * DAY_TICKS));
|
||||
|
||||
v->profit_this_year -= cost.GetCost() >> 8;
|
||||
this->profit_this_year -= cost.GetCost();
|
||||
this->running_ticks = 0;
|
||||
|
||||
SubtractMoneyFromPlayerFract(v->owner, cost);
|
||||
SubtractMoneyFromPlayerFract(this->owner, cost);
|
||||
|
||||
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
|
||||
InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
|
||||
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
|
||||
}
|
||||
|
||||
@@ -921,6 +924,10 @@ static int UpdateAircraftSpeed(Vehicle *v, uint speed_limit = SPEED_LIMIT_NONE,
|
||||
uint spd = v->acceleration * 16;
|
||||
byte t;
|
||||
|
||||
/* Adjust speed limits by plane speed factor to prevent taxiing
|
||||
* and take-off speeds being too low. */
|
||||
speed_limit *= _patches.plane_speed;
|
||||
|
||||
if (v->u.air.cached_max_speed < speed_limit) {
|
||||
if (v->cur_speed < speed_limit) hard_limit = false;
|
||||
speed_limit = v->u.air.cached_max_speed;
|
||||
@@ -930,7 +937,15 @@ static int UpdateAircraftSpeed(Vehicle *v, uint speed_limit = SPEED_LIMIT_NONE,
|
||||
|
||||
v->subspeed = (t=v->subspeed) + (byte)spd;
|
||||
|
||||
if (!hard_limit && v->cur_speed > speed_limit) speed_limit = v->cur_speed - (v->cur_speed / 48);
|
||||
/* Aircraft's current speed is used twice so that very fast planes are
|
||||
* forced to slow down rapidly in the short distance needed. The magic
|
||||
* value 16384 was determined to give similar results to the old speed/48
|
||||
* method at slower speeds. This also results in less reduction at slow
|
||||
* speeds to that aircraft do not get to taxi speed straight after
|
||||
* touchdown. */
|
||||
if (!hard_limit && v->cur_speed > speed_limit) {
|
||||
speed_limit = v->cur_speed - max(1, ((v->cur_speed * v->cur_speed) / 16384) / _patches.plane_speed);
|
||||
}
|
||||
|
||||
spd = min(v->cur_speed + (spd >> 8) + (v->subspeed < t), speed_limit);
|
||||
|
||||
@@ -941,9 +956,12 @@ static int UpdateAircraftSpeed(Vehicle *v, uint speed_limit = SPEED_LIMIT_NONE,
|
||||
if (spd != v->cur_speed) {
|
||||
v->cur_speed = spd;
|
||||
if (_patches.vehicle_speed)
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR);
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
|
||||
}
|
||||
|
||||
/* Adjust distance moved by plane speed setting */
|
||||
if (_patches.plane_speed > 1) spd /= _patches.plane_speed;
|
||||
|
||||
if (!(v->direction & 1)) spd = spd * 3 / 4;
|
||||
|
||||
spd += v->progress;
|
||||
@@ -1194,7 +1212,7 @@ static bool AircraftController(Vehicle *v)
|
||||
|
||||
v->tile = gp.new_tile;
|
||||
/* If vehicle is in the air, use tile coordinate 0. */
|
||||
// if (amd->flag & (AMED_TAKEOFF | AMED_SLOWTURN | AMED_LAND)) v->tile = 0;
|
||||
if (amd->flag & (AMED_TAKEOFF | AMED_SLOWTURN | AMED_LAND)) v->tile = 0;
|
||||
|
||||
/* Adjust Z for land or takeoff? */
|
||||
uint z = v->z_pos;
|
||||
@@ -1288,8 +1306,7 @@ static void HandleCrashedAircraft(Vehicle *v)
|
||||
CLRBITS(st->airport_flags, RUNWAY_IN_OUT_block); // commuter airport
|
||||
CLRBITS(st->airport_flags, RUNWAY_IN2_block); // intercontinental
|
||||
|
||||
BeginVehicleMove(v);
|
||||
EndVehicleMove(v);
|
||||
MarkSingleVehicleDirty(v);
|
||||
|
||||
DoDeleteAircraft(v);
|
||||
}
|
||||
@@ -1417,7 +1434,7 @@ void Aircraft::MarkDirty()
|
||||
{
|
||||
this->cur_image = this->GetImage(this->direction);
|
||||
if (this->subtype == AIR_HELICOPTER) this->Next()->Next()->cur_image = GetRotorImage(this);
|
||||
MarkAllViewportsDirty(this->left_coord, this->top_coord, this->right_coord + 1, this->bottom_coord + 1);
|
||||
MarkSingleVehicleDirty(this);
|
||||
}
|
||||
|
||||
static void CrashAirplane(Vehicle *v)
|
||||
@@ -1549,6 +1566,45 @@ static void AircraftLeaveHangar(Vehicle *v)
|
||||
InvalidateWindowClasses(WC_AIRCRAFT_LIST);
|
||||
}
|
||||
|
||||
/** Checks if an aircraft should head towards a hangar because it needs replacement
|
||||
* @param *v the vehicle to test
|
||||
* @return true if the aircraft should head towards a hangar
|
||||
*/
|
||||
static inline bool CheckSendAircraftToHangarForReplacement(const Vehicle *v)
|
||||
{
|
||||
EngineID new_engine;
|
||||
Player *p = GetPlayer(v->owner);
|
||||
|
||||
if (VehicleHasDepotOrders(v)) return false; // The aircraft will end up in the hangar eventually on it's own
|
||||
|
||||
new_engine = EngineReplacementForPlayer(p, v->engine_type, v->group_id);
|
||||
|
||||
if (new_engine == INVALID_ENGINE) {
|
||||
/* There is no autoreplace assigned to this EngineID so we will set it to renew to the same type if needed */
|
||||
new_engine = v->engine_type;
|
||||
|
||||
if (!v->NeedsAutorenewing(p)) {
|
||||
/* No need to replace the aircraft */
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!HasBit(GetEngine(new_engine)->player_avail, v->owner)) {
|
||||
/* Engine is not buildable anymore */
|
||||
return false;
|
||||
}
|
||||
|
||||
if (p->player_money < (p->engine_renew_money + (2 * DoCommand(0, new_engine, 0, DC_QUERY_COST, CMD_BUILD_AIRCRAFT).GetCost()))) {
|
||||
/* We lack enough money to request the replacement right away.
|
||||
* We want 2*(the price of the new vehicle) and not looking at the value of the vehicle we are going to sell.
|
||||
* The reason is that we don't want to send a whole lot of vehicles to the hangars when we only have enough money to replace a single one.
|
||||
* Remember this happens in the background so the user can't stop this. */
|
||||
return false;
|
||||
}
|
||||
|
||||
/* We found no reason NOT to send the aircraft to a hangar so we will send it there at once */
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////// AIRCRAFT MOVEMENT SCHEME ////////////////////////////////
|
||||
@@ -1677,22 +1733,16 @@ static void AircraftEventHandler_EndTakeOff(Vehicle *v, const AirportFTAClass *a
|
||||
|
||||
static void AircraftEventHandler_HeliTakeOff(Vehicle *v, const AirportFTAClass *apc)
|
||||
{
|
||||
const Player* p = GetPlayer(v->owner);
|
||||
v->u.air.state = FLYING;
|
||||
v->UpdateDeltaXY(INVALID_DIR);
|
||||
|
||||
/* get the next position to go to, differs per airport */
|
||||
AircraftNextAirportPos_and_Order(v);
|
||||
|
||||
/* check if the aircraft needs to be replaced or renewed and send it to a hangar if needed
|
||||
* unless it is due for renewal but the engine is no longer available */
|
||||
if (v->owner == _local_player && (
|
||||
EngineHasReplacementForPlayer(p, v->engine_type, v->group_id) ||
|
||||
((p->engine_renew && v->age - v->max_age > p->engine_renew_months * 30) &&
|
||||
HasBit(GetEngine(v->engine_type)->player_avail, _local_player))
|
||||
)) {
|
||||
_current_player = _local_player;
|
||||
DoCommandP(v->tile, v->index, DEPOT_SERVICE | DEPOT_LOCATE_HANGAR, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR);
|
||||
/* Send the helicopter to a hangar if needed for replacement */
|
||||
if (CheckSendAircraftToHangarForReplacement(v)) {
|
||||
_current_player = v->owner;
|
||||
DoCommand(v->tile, v->index, DEPOT_SERVICE | DEPOT_LOCATE_HANGAR, DC_EXEC, CMD_SEND_AIRCRAFT_TO_HANGAR);
|
||||
_current_player = OWNER_NONE;
|
||||
}
|
||||
}
|
||||
@@ -1742,16 +1792,10 @@ static void AircraftEventHandler_Landing(Vehicle *v, const AirportFTAClass *apc)
|
||||
AircraftLandAirplane(v); // maybe crash airplane
|
||||
|
||||
/* check if the aircraft needs to be replaced or renewed and send it to a hangar if needed */
|
||||
if (v->current_order.type != OT_GOTO_DEPOT && v->owner == _local_player) {
|
||||
/* only the vehicle owner needs to calculate the rest (locally) */
|
||||
const Player* p = GetPlayer(v->owner);
|
||||
if (EngineHasReplacementForPlayer(p, v->engine_type, v->group_id) ||
|
||||
(p->engine_renew && v->age - v->max_age > (p->engine_renew_months * 30))) {
|
||||
/* send the aircraft to the hangar at next airport */
|
||||
_current_player = _local_player;
|
||||
DoCommandP(v->tile, v->index, DEPOT_SERVICE, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR);
|
||||
_current_player = OWNER_NONE;
|
||||
}
|
||||
if (CheckSendAircraftToHangarForReplacement(v)) {
|
||||
_current_player = v->owner;
|
||||
DoCommand(v->tile, v->index, DEPOT_SERVICE, DC_EXEC, CMD_SEND_AIRCRAFT_TO_HANGAR);
|
||||
_current_player = OWNER_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2120,6 +2164,8 @@ void Aircraft::Tick()
|
||||
{
|
||||
if (!IsNormalAircraft(this)) return;
|
||||
|
||||
if (!(this->vehstatus & VS_STOPPED)) this->running_ticks++;
|
||||
|
||||
if (this->subtype == AIR_HELICOPTER) HelicopterTickHandler(this);
|
||||
|
||||
AgeAircraftCargo(this);
|
||||
|
@@ -179,14 +179,19 @@ static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)
|
||||
airport = GetAirport(_selected_airport_type);
|
||||
SetTileSelectSize(airport->size_x, airport->size_y);
|
||||
|
||||
int rad = _patches.modified_catchment ? airport->catchment : 4;
|
||||
int rad = _patches.modified_catchment ? airport->catchment : (uint)CA_UNMODIFIED;
|
||||
|
||||
if (_station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
|
||||
|
||||
DrawWindowWidgets(w);
|
||||
// strings such as 'Size' and 'Coverage Area'
|
||||
// 'Coverage Area'
|
||||
DrawStationCoverageAreaText(2, 206, SCT_ALL, rad);
|
||||
int text_end = DrawStationCoverageAreaText(2, 206, SCT_ALL, rad) + 4;
|
||||
if (text_end > w->widget[6].bottom) {
|
||||
SetWindowDirty(w);
|
||||
ResizeWindowForWidget(w, 6, 0, text_end - w->widget[6].bottom);
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@@ -34,6 +34,42 @@ uint CountArticulatedParts(EngineID engine_type, bool purchase_window)
|
||||
return i - 1;
|
||||
}
|
||||
|
||||
|
||||
uint16 *GetCapacityOfArticulatedParts(EngineID engine, VehicleType type)
|
||||
{
|
||||
static uint16 capacity[NUM_CARGO];
|
||||
memset(capacity, 0, sizeof(capacity));
|
||||
|
||||
if (type == VEH_TRAIN) {
|
||||
const RailVehicleInfo *rvi = RailVehInfo(engine);
|
||||
capacity[rvi->cargo_type] = rvi->capacity;
|
||||
if (rvi->railveh_type == RAILVEH_MULTIHEAD) capacity[rvi->cargo_type] += rvi->capacity;
|
||||
} else if (type == VEH_ROAD) {
|
||||
const RoadVehicleInfo *rvi = RoadVehInfo(engine);
|
||||
capacity[rvi->cargo_type] = rvi->capacity;
|
||||
}
|
||||
|
||||
if (!HasBit(EngInfo(engine)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return capacity;
|
||||
|
||||
for (uint i = 1; i < MAX_UVALUE(EngineID); i++) {
|
||||
uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine, NULL);
|
||||
if (callback == CALLBACK_FAILED || callback == 0xFF) break;
|
||||
|
||||
EngineID artic_engine = GetFirstEngineOfType(type) + GB(callback, 0, 7);
|
||||
|
||||
if (type == VEH_TRAIN) {
|
||||
const RailVehicleInfo *rvi = RailVehInfo(artic_engine);
|
||||
capacity[rvi->cargo_type] += GetEngineProperty(artic_engine, 0x14, rvi->capacity);
|
||||
} else if (type == VEH_ROAD) {
|
||||
const RoadVehicleInfo *rvi = RoadVehInfo(artic_engine);
|
||||
capacity[rvi->cargo_type] += GetEngineProperty(artic_engine, 0x0F, rvi->capacity);
|
||||
}
|
||||
}
|
||||
|
||||
return capacity;
|
||||
}
|
||||
|
||||
|
||||
void AddArticulatedParts(Vehicle **vl, VehicleType type)
|
||||
{
|
||||
const Vehicle *v = vl[0];
|
||||
|
@@ -8,6 +8,7 @@
|
||||
#include "vehicle_type.h"
|
||||
|
||||
uint CountArticulatedParts(EngineID engine_type, bool purchase_window);
|
||||
uint16 *GetCapacityOfArticulatedParts(EngineID engine, VehicleType type);
|
||||
void AddArticulatedParts(Vehicle **vl, VehicleType type);
|
||||
|
||||
#endif /* ARTICULATED_VEHICLES_H */
|
||||
|
@@ -21,9 +21,11 @@
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
#include "autoreplace_func.h"
|
||||
#include "articulated_vehicles.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
|
||||
|
||||
/*
|
||||
* move the cargo from one engine to another if possible
|
||||
*/
|
||||
@@ -93,7 +95,7 @@ static CargoID GetNewCargoTypeForReplace(Vehicle *v, EngineID engine_type)
|
||||
|
||||
if (new_cargo_type == CT_INVALID) return CT_NO_REFIT; // Don't try to refit an engine with no cargo capacity
|
||||
|
||||
if (v->cargo_type == new_cargo_type || CanRefitTo(engine_type, v->cargo_type)) {
|
||||
if (v->cargo_cap != 0 && (v->cargo_type == new_cargo_type || CanRefitTo(engine_type, v->cargo_type))) {
|
||||
if (VerifyAutoreplaceRefitForOrders(v, engine_type)) {
|
||||
return v->cargo_type == new_cargo_type ? (CargoID)CT_NO_REFIT : v->cargo_type;
|
||||
} else {
|
||||
@@ -175,7 +177,10 @@ static CommandCost ReplaceVehicle(Vehicle **w, byte flags, Money total_cost)
|
||||
if (replacement_cargo_type != CT_NO_REFIT) {
|
||||
/* add refit cost */
|
||||
CommandCost refit_cost = GetRefitCost(new_engine_type);
|
||||
if (old_v->type == VEH_TRAIN && IsMultiheaded(old_v)) refit_cost.AddCost(refit_cost); // pay for both ends
|
||||
if (old_v->type == VEH_TRAIN && RailVehInfo(new_engine_type)->railveh_type == RAILVEH_MULTIHEAD) {
|
||||
/* Since it's a dualheaded engine we have to pay once more because the rear end is being refitted too. */
|
||||
refit_cost.AddCost(refit_cost);
|
||||
}
|
||||
cost.AddCost(refit_cost);
|
||||
}
|
||||
|
||||
@@ -211,7 +216,7 @@ static CommandCost ReplaceVehicle(Vehicle **w, byte flags, Money total_cost)
|
||||
DoCommand(0, (front->index << 16) | new_v->index, 1, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
|
||||
} else {
|
||||
// copy/clone the orders
|
||||
DoCommand(0, (old_v->index << 16) | new_v->index, IsOrderListShared(old_v) ? CO_SHARE : CO_COPY, DC_EXEC, CMD_CLONE_ORDER);
|
||||
DoCommand(0, (old_v->index << 16) | new_v->index, old_v->IsOrderListShared() ? CO_SHARE : CO_COPY, DC_EXEC, CMD_CLONE_ORDER);
|
||||
new_v->cur_order_index = old_v->cur_order_index;
|
||||
ChangeVehicleViewWindow(old_v, new_v);
|
||||
new_v->profit_this_year = old_v->profit_this_year;
|
||||
@@ -338,8 +343,7 @@ CommandCost MaybeReplaceVehicle(Vehicle *v, bool check, bool display_costs)
|
||||
}
|
||||
|
||||
// check if the vehicle should be replaced
|
||||
if (!p->engine_renew ||
|
||||
w->age - w->max_age < (p->engine_renew_months * 30) || // replace if engine is too old
|
||||
if (!w->NeedsAutorenewing(p) || // replace if engine is too old
|
||||
w->max_age == 0) { // rail cars got a max age of 0
|
||||
/* If the vehicle belongs to a group, check if the group is protected from the global autoreplace.
|
||||
If not, chek if an global auto remplacement is defined */
|
||||
|
@@ -36,6 +36,24 @@ static const StringID _rail_types_list[] = {
|
||||
INVALID_STRING_ID
|
||||
};
|
||||
|
||||
enum ReplaceVehicleWindowWidgets {
|
||||
RVW_WIDGET_LEFT_DETAILS = 3,
|
||||
RVW_WIDGET_START_REPLACE,
|
||||
RVW_WIDGET_INFO_TAB,
|
||||
RVW_WIDGET_STOP_REPLACE,
|
||||
RVW_WIDGET_LEFT_MATRIX,
|
||||
RVW_WIDGET_LEFT_SCROLLBAR,
|
||||
RVW_WIDGET_RIGHT_MATRIX,
|
||||
RVW_WIDGET_RIGHT_SCROLLBAR,
|
||||
RVW_WIDGET_RIGHT_DETAILS,
|
||||
|
||||
RVW_WIDGET_TRAIN_ENGINEWAGON_TOGGLE,
|
||||
RVW_WIDGET_TRAIN_FLUFF_LEFT,
|
||||
RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN,
|
||||
RVW_WIDGET_TRAIN_FLUFF_RIGHT,
|
||||
RVW_WIDGET_TRAIN_WAGONREMOVE_TOGGLE,
|
||||
};
|
||||
|
||||
static int CDECL TrainEngineNumberSorter(const void *a, const void *b)
|
||||
{
|
||||
const EngineID va = *(const EngineID*)a;
|
||||
@@ -62,7 +80,7 @@ void InitializeVehiclesGuiList()
|
||||
void InvalidateAutoreplaceWindow(EngineID e, GroupID id_g)
|
||||
{
|
||||
Player *p = GetPlayer(_local_player);
|
||||
byte type = GetEngine(e)->type;
|
||||
VehicleType type = GetEngine(e)->type;
|
||||
uint num_engines = GetGroupNumEngines(_local_player, id_g, e);
|
||||
|
||||
if (num_engines == 0 || p->num_engines[e] == 0) {
|
||||
@@ -157,7 +175,7 @@ static void GenerateReplaceVehList(Window *w, bool draw_left)
|
||||
{
|
||||
EngineID e;
|
||||
EngineID selected_engine = INVALID_ENGINE;
|
||||
byte type = w->window_number;
|
||||
VehicleType type = (VehicleType)w->window_number;
|
||||
byte i = draw_left ? 0 : 1;
|
||||
|
||||
EngineList *list = &WP(w, replaceveh_d).list[i];
|
||||
@@ -264,7 +282,7 @@ static void ReplaceVehicleWndProc(Window *w, WindowEvent *e)
|
||||
* Either list is empty
|
||||
* or The selected replacement engine has a replacement (to prevent loops)
|
||||
* or The right list (new replacement) has the existing replacement vehicle selected */
|
||||
w->SetWidgetDisabledState(4,
|
||||
w->SetWidgetDisabledState(RVW_WIDGET_START_REPLACE,
|
||||
selected_id[0] == INVALID_ENGINE ||
|
||||
selected_id[1] == INVALID_ENGINE ||
|
||||
EngineReplacementForPlayer(p, selected_id[1], selected_group) != INVALID_ENGINE ||
|
||||
@@ -273,7 +291,7 @@ static void ReplaceVehicleWndProc(Window *w, WindowEvent *e)
|
||||
/* Disable the "Stop Replacing" button if:
|
||||
* The left list (existing vehicle) is empty
|
||||
* or The selected vehicle has no replacement set up */
|
||||
w->SetWidgetDisabledState(6,
|
||||
w->SetWidgetDisabledState(RVW_WIDGET_STOP_REPLACE,
|
||||
selected_id[0] == INVALID_ENGINE ||
|
||||
!EngineHasReplacementForPlayer(p, selected_id[0], selected_group));
|
||||
|
||||
@@ -288,18 +306,18 @@ static void ReplaceVehicleWndProc(Window *w, WindowEvent *e)
|
||||
SetDParam(2, WP(w, replaceveh_d).wagon_btnstate ? STR_ENGINES : STR_WAGONS);
|
||||
|
||||
/* sets the colour of that art thing */
|
||||
w->widget[13].color = _player_colors[_local_player];
|
||||
w->widget[16].color = _player_colors[_local_player];
|
||||
w->widget[RVW_WIDGET_TRAIN_FLUFF_LEFT].color = _player_colors[_local_player];
|
||||
w->widget[RVW_WIDGET_TRAIN_FLUFF_RIGHT].color = _player_colors[_local_player];
|
||||
}
|
||||
|
||||
if (w->window_number == VEH_TRAIN) {
|
||||
/* Show the selected railtype in the pulldown menu */
|
||||
RailType railtype = _railtype_selected_in_replace_gui;
|
||||
w->widget[RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN].data = _rail_types_list[railtype];
|
||||
}
|
||||
|
||||
DrawWindowWidgets(w);
|
||||
|
||||
if (w->window_number == VEH_TRAIN) {
|
||||
/* Draw the selected railtype in the pulldown menu */
|
||||
RailType railtype = _railtype_selected_in_replace_gui;
|
||||
DrawString(157, w->widget[14].top + 1, _rail_types_list[railtype], TC_BLACK);
|
||||
}
|
||||
|
||||
/* sets up the string for the vehicle that is being replaced to */
|
||||
if (selected_id[0] != INVALID_ENGINE) {
|
||||
if (!EngineHasReplacementForPlayer(p, selected_id[0], selected_group)) {
|
||||
@@ -312,22 +330,28 @@ static void ReplaceVehicleWndProc(Window *w, WindowEvent *e)
|
||||
SetDParam(0, STR_NOT_REPLACING_VEHICLE_SELECTED);
|
||||
}
|
||||
|
||||
DrawString(145, w->widget[5].top + 1, STR_02BD, TC_BLACK);
|
||||
DrawString(145, w->widget[RVW_WIDGET_INFO_TAB].top + 1, STR_02BD, TC_BLACK);
|
||||
|
||||
/* Draw the lists */
|
||||
for(byte i = 0; i < 2; i++) {
|
||||
uint16 x = i == 0 ? 2 : 230; // at what X offset
|
||||
uint widget = (i == 0) ? RVW_WIDGET_LEFT_MATRIX : RVW_WIDGET_RIGHT_MATRIX;
|
||||
EngineList list = WP(w, replaceveh_d).list[i]; // which list to draw
|
||||
EngineID start = i == 0 ? w->vscroll.pos : w->vscroll2.pos; // what is the offset for the start (scrolling)
|
||||
EngineID end = min((i == 0 ? w->vscroll.cap : w->vscroll2.cap) + start, EngList_Count(&list));
|
||||
|
||||
/* Do the actual drawing */
|
||||
DrawEngineList((VehicleType)w->window_number, x, 15, list, start, end, WP(w, replaceveh_d).sel_engine[i], i == 0, selected_group);
|
||||
DrawEngineList((VehicleType)w->window_number, w->widget[widget].left + 2, w->widget[widget].top + 1, list, start, end, WP(w, replaceveh_d).sel_engine[i], i == 0, selected_group);
|
||||
|
||||
/* Also draw the details if an engine is selected */
|
||||
if (WP(w, replaceveh_d).sel_engine[i] != INVALID_ENGINE) {
|
||||
const Widget *wi = &w->widget[i == 0 ? 3 : 11];
|
||||
DrawVehiclePurchaseInfo(wi->left + 2, wi->top + 1, wi->right - wi->left - 2, WP(w, replaceveh_d).sel_engine[i]);
|
||||
const Widget *wi = &w->widget[i == 0 ? RVW_WIDGET_LEFT_DETAILS : RVW_WIDGET_RIGHT_DETAILS];
|
||||
int text_end = DrawVehiclePurchaseInfo(wi->left + 2, wi->top + 1, wi->right - wi->left - 2, WP(w, replaceveh_d).sel_engine[i]);
|
||||
|
||||
if (text_end > wi->bottom) {
|
||||
SetWindowDirty(w);
|
||||
ResizeWindowForWidget(w, i == 0 ? RVW_WIDGET_LEFT_DETAILS : RVW_WIDGET_RIGHT_DETAILS, 0, text_end - wi->bottom);
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -335,39 +359,38 @@ static void ReplaceVehicleWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
case WE_CLICK: {
|
||||
switch (e->we.click.widget) {
|
||||
case 12:
|
||||
case RVW_WIDGET_TRAIN_ENGINEWAGON_TOGGLE:
|
||||
WP(w, replaceveh_d).wagon_btnstate = !(WP(w, replaceveh_d).wagon_btnstate);
|
||||
WP(w, replaceveh_d).update_left = true;
|
||||
WP(w, replaceveh_d).init_lists = true;
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
|
||||
case 14:
|
||||
case 15: /* Railtype selection dropdown menu */
|
||||
ShowDropDownMenu(w, _rail_types_list, _railtype_selected_in_replace_gui, 15, 0, ~GetPlayer(_local_player)->avail_railtypes);
|
||||
case RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN: /* Railtype selection dropdown menu */
|
||||
ShowDropDownMenu(w, _rail_types_list, _railtype_selected_in_replace_gui, RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN, 0, ~GetPlayer(_local_player)->avail_railtypes);
|
||||
break;
|
||||
|
||||
case 17: /* toggle renew_keep_length */
|
||||
case RVW_WIDGET_TRAIN_WAGONREMOVE_TOGGLE: /* toggle renew_keep_length */
|
||||
DoCommandP(0, 5, GetPlayer(_local_player)->renew_keep_length ? 0 : 1, NULL, CMD_SET_AUTOREPLACE);
|
||||
break;
|
||||
|
||||
case 4: { /* Start replacing */
|
||||
case RVW_WIDGET_START_REPLACE: { /* Start replacing */
|
||||
EngineID veh_from = WP(w, replaceveh_d).sel_engine[0];
|
||||
EngineID veh_to = WP(w, replaceveh_d).sel_engine[1];
|
||||
DoCommandP(0, 3 + (WP(w, replaceveh_d).sel_group << 16) , veh_from + (veh_to << 16), NULL, CMD_SET_AUTOREPLACE);
|
||||
} break;
|
||||
|
||||
case 6: { /* Stop replacing */
|
||||
case RVW_WIDGET_STOP_REPLACE: { /* Stop replacing */
|
||||
EngineID veh_from = WP(w, replaceveh_d).sel_engine[0];
|
||||
DoCommandP(0, 3 + (WP(w, replaceveh_d).sel_group << 16), veh_from + (INVALID_ENGINE << 16), NULL, CMD_SET_AUTOREPLACE);
|
||||
} break;
|
||||
|
||||
case 7:
|
||||
case 9: {
|
||||
case RVW_WIDGET_LEFT_MATRIX:
|
||||
case RVW_WIDGET_RIGHT_MATRIX: {
|
||||
uint i = (e->we.click.pt.y - 14) / w->resize.step_height;
|
||||
uint16 click_scroll_pos = e->we.click.widget == 7 ? w->vscroll.pos : w->vscroll2.pos;
|
||||
uint16 click_scroll_cap = e->we.click.widget == 7 ? w->vscroll.cap : w->vscroll2.cap;
|
||||
byte click_side = e->we.click.widget == 7 ? 0 : 1;
|
||||
uint16 click_scroll_pos = e->we.click.widget == RVW_WIDGET_LEFT_MATRIX ? w->vscroll.pos : w->vscroll2.pos;
|
||||
uint16 click_scroll_cap = e->we.click.widget == RVW_WIDGET_LEFT_MATRIX ? w->vscroll.cap : w->vscroll2.cap;
|
||||
byte click_side = e->we.click.widget == RVW_WIDGET_LEFT_MATRIX ? 0 : 1;
|
||||
uint16 engine_count = EngList_Count(&WP(w, replaceveh_d).list[click_side]);
|
||||
|
||||
if (i < click_scroll_cap) {
|
||||
@@ -405,8 +428,8 @@ static void ReplaceVehicleWndProc(Window *w, WindowEvent *e)
|
||||
w->vscroll.cap += e->we.sizing.diff.y / (int)w->resize.step_height;
|
||||
w->vscroll2.cap += e->we.sizing.diff.y / (int)w->resize.step_height;
|
||||
|
||||
w->widget[7].data = (w->vscroll.cap << 8) + 1;
|
||||
w->widget[9].data = (w->vscroll2.cap << 8) + 1;
|
||||
w->widget[RVW_WIDGET_LEFT_MATRIX].data = (w->vscroll.cap << 8) + 1;
|
||||
w->widget[RVW_WIDGET_RIGHT_MATRIX].data = (w->vscroll2.cap << 8) + 1;
|
||||
break;
|
||||
|
||||
case WE_INVALIDATE_DATA:
|
||||
@@ -438,8 +461,7 @@ static const Widget _replace_rail_vehicle_widgets[] = {
|
||||
// train specific stuff
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 138, 228, 239, STR_REPLACE_ENGINE_WAGON_SELECT, STR_REPLACE_ENGINE_WAGON_SELECT_HELP}, // widget 12
|
||||
{ WWT_PANEL, RESIZE_TB, 14, 139, 153, 240, 251, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_TB, 14, 154, 277, 240, 251, 0x0, STR_REPLACE_HELP_RAILTYPE},
|
||||
{ WWT_TEXTBTN, RESIZE_TB, 14, 278, 289, 240, 251, STR_0225, STR_REPLACE_HELP_RAILTYPE},
|
||||
{ WWT_DROPDOWN, RESIZE_TB, 14, 154, 289, 240, 251, 0x0, STR_REPLACE_HELP_RAILTYPE},
|
||||
{ WWT_PANEL, RESIZE_TB, 14, 290, 305, 240, 251, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 317, 455, 228, 239, STR_REPLACE_REMOVE_WAGON, STR_REPLACE_REMOVE_WAGON_HELP},
|
||||
// end of train specific stuff
|
||||
@@ -506,38 +528,6 @@ static const WindowDesc _replace_ship_aircraft_vehicle_desc = {
|
||||
};
|
||||
|
||||
|
||||
void ShowReplaceVehicleWindow(VehicleType vehicletype)
|
||||
{
|
||||
Window *w;
|
||||
|
||||
DeleteWindowById(WC_REPLACE_VEHICLE, vehicletype);
|
||||
|
||||
switch (vehicletype) {
|
||||
case VEH_TRAIN:
|
||||
w = AllocateWindowDescFront(&_replace_rail_vehicle_desc, vehicletype);
|
||||
w->vscroll.cap = 8;
|
||||
w->resize.step_height = 14;
|
||||
WP(w, replaceveh_d).wagon_btnstate = true;
|
||||
break;
|
||||
case VEH_ROAD:
|
||||
w = AllocateWindowDescFront(&_replace_road_vehicle_desc, vehicletype);
|
||||
w->vscroll.cap = 8;
|
||||
w->resize.step_height = 14;
|
||||
break;
|
||||
case VEH_SHIP:
|
||||
case VEH_AIRCRAFT:
|
||||
w = AllocateWindowDescFront(&_replace_ship_aircraft_vehicle_desc, vehicletype);
|
||||
w->vscroll.cap = 4;
|
||||
w->resize.step_height = 24;
|
||||
break;
|
||||
default: return;
|
||||
}
|
||||
|
||||
w->caption_color = _local_player;
|
||||
w->vscroll2.cap = w->vscroll.cap; // these two are always the same
|
||||
WP(w, replaceveh_d).sel_group = DEFAULT_GROUP;
|
||||
}
|
||||
|
||||
void ShowReplaceGroupVehicleWindow(GroupID id_g, VehicleType vehicletype)
|
||||
{
|
||||
Window *w;
|
||||
|
@@ -13,7 +13,6 @@
|
||||
*/
|
||||
void AddRemoveEngineFromAutoreplaceAndBuildWindows(VehicleType type);
|
||||
void InvalidateAutoreplaceWindow(EngineID e, GroupID id_g);
|
||||
void ShowReplaceVehicleWindow(VehicleType vehicletype);
|
||||
void ShowReplaceGroupVehicleWindow(GroupID group, VehicleType veh);
|
||||
|
||||
#endif /* AUTOREPLACE_GUI_H */
|
||||
|
36
src/bridge.h
36
src/bridge.h
@@ -13,27 +13,30 @@ enum {
|
||||
MAX_BRIDGES = 13
|
||||
};
|
||||
|
||||
typedef uint BridgeType;
|
||||
|
||||
/** Struct containing information about a single bridge type
|
||||
*/
|
||||
struct Bridge {
|
||||
Year avail_year; ///< the year in which the bridge becomes available
|
||||
byte min_length; ///< the minimum length of the bridge (not counting start and end tile)
|
||||
byte max_length; ///< the maximum length of the bridge (not counting start and end tile)
|
||||
uint16 price; ///< the relative price of the bridge
|
||||
uint16 speed; ///< maximum travel speed
|
||||
SpriteID sprite; ///< the sprite which is used in the GUI
|
||||
SpriteID pal; ///< the palette which is used in the GUI
|
||||
StringID material; ///< the string that contains the bridge description
|
||||
PalSpriteID **sprite_table; ///< table of sprites for drawing the bridge
|
||||
byte flags; ///< bit 0 set: disable drawing of far pillars.
|
||||
struct BridgeSpec {
|
||||
Year avail_year; ///< the year where it becomes available
|
||||
byte min_length; ///< the minimum length (not counting start and end tile)
|
||||
byte max_length; ///< the maximum length (not counting start and end tile)
|
||||
uint16 price; ///< the price multiplier
|
||||
uint16 speed; ///< maximum travel speed
|
||||
SpriteID sprite; ///< the sprite which is used in the GUI
|
||||
SpriteID pal; ///< the palette which is used in the GUI
|
||||
StringID material; ///< the string that contains the bridge description
|
||||
StringID transport_name[2]; ///< description of the bridge, when built for road or rail
|
||||
PalSpriteID **sprite_table; ///< table of sprites for drawing the bridge
|
||||
byte flags; ///< bit 0 set: disable drawing of far pillars.
|
||||
};
|
||||
|
||||
extern const Bridge orig_bridge[MAX_BRIDGES];
|
||||
extern Bridge _bridge[MAX_BRIDGES];
|
||||
extern BridgeSpec _bridge[MAX_BRIDGES];
|
||||
|
||||
Foundation GetBridgeFoundation(Slope tileh, Axis axis);
|
||||
bool HasBridgeFlatRamp(Slope tileh, Axis axis);
|
||||
|
||||
static inline const Bridge *GetBridge(uint i)
|
||||
static inline const BridgeSpec *GetBridgeSpec(BridgeType i)
|
||||
{
|
||||
assert(i < lengthof(_bridge));
|
||||
return &_bridge[i];
|
||||
@@ -41,8 +44,9 @@ static inline const Bridge *GetBridge(uint i)
|
||||
|
||||
void DrawBridgeMiddle(const TileInfo *ti);
|
||||
|
||||
bool CheckBridge_Stuff(byte bridge_type, uint bridge_len);
|
||||
uint32 GetBridgeLength(TileIndex begin, TileIndex end);
|
||||
bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len);
|
||||
int CalcBridgeLenCostFactor(int x);
|
||||
|
||||
void ResetBridges();
|
||||
|
||||
#endif /* BRIDGE_H */
|
||||
|
@@ -16,6 +16,7 @@
|
||||
#include "map_func.h"
|
||||
#include "viewport_func.h"
|
||||
#include "gfx_func.h"
|
||||
#include "tunnelbridge.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
|
||||
@@ -24,8 +25,8 @@ static struct BridgeData {
|
||||
uint count;
|
||||
TileIndex start_tile;
|
||||
TileIndex end_tile;
|
||||
uint8 type;
|
||||
uint8 indexes[MAX_BRIDGES];
|
||||
uint32 type; ///< Data type for the bridge. Bit 16,15 = transport type, 14..8 = road/rail pieces, 7..0 = type of bridge
|
||||
BridgeType indexes[MAX_BRIDGES];
|
||||
Money costs[MAX_BRIDGES];
|
||||
|
||||
BridgeData()
|
||||
@@ -43,7 +44,7 @@ static void BuildBridge(Window *w, int i)
|
||||
{
|
||||
DeleteWindow(w);
|
||||
DoCommandP(_bridgedata.end_tile, _bridgedata.start_tile,
|
||||
_bridgedata.indexes[i] | (_bridgedata.type << 8), CcBuildBridge,
|
||||
_bridgedata.type | _bridgedata.indexes[i], CcBuildBridge,
|
||||
CMD_BUILD_BRIDGE | CMD_MSG(STR_5015_CAN_T_BUILD_BRIDGE_HERE));
|
||||
}
|
||||
|
||||
@@ -78,7 +79,7 @@ static void BuildBridgeWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
uint y = 15;
|
||||
for (uint i = 0; (i < w->vscroll.cap) && ((i + w->vscroll.pos) < _bridgedata.count); i++) {
|
||||
const Bridge *b = &_bridge[_bridgedata.indexes[i + w->vscroll.pos]];
|
||||
const BridgeSpec *b = GetBridgeSpec(_bridgedata.indexes[i + w->vscroll.pos]);
|
||||
|
||||
SetDParam(2, _bridgedata.costs[i + w->vscroll.pos]);
|
||||
SetDParam(1, b->speed * 10 / 16);
|
||||
@@ -142,38 +143,18 @@ static const WindowDesc _build_bridge_desc = {
|
||||
BuildBridgeWndProc
|
||||
};
|
||||
|
||||
/* Widget definition for the road bridge selection window */
|
||||
static const Widget _build_road_bridge_widgets[] = {
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BBSW_CLOSEBOX
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 199, 0, 13, STR_1803_SELECT_ROAD_BRIDGE, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BBSW_CAPTION
|
||||
{ WWT_MATRIX, RESIZE_BOTTOM, 7, 0, 187, 14, 101, 0x401, STR_101F_BRIDGE_SELECTION_CLICK}, // BBSW_BRIDGE_LIST
|
||||
{ WWT_SCROLLBAR, RESIZE_BOTTOM, 7, 188, 199, 14, 89, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // BBSW_SCROLLBAR
|
||||
{ WWT_RESIZEBOX, RESIZE_TB, 7, 188, 199, 90, 101, 0x0, STR_RESIZE_BUTTON}, // BBSW_RESIZEBOX
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
/* Window definition for the road bridge selection window */
|
||||
static const WindowDesc _build_road_bridge_desc = {
|
||||
WDP_AUTO, WDP_AUTO, 200, 102, 200, 102,
|
||||
WC_BUILD_BRIDGE, WC_BUILD_TOOLBAR,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE,
|
||||
_build_road_bridge_widgets,
|
||||
BuildBridgeWndProc
|
||||
};
|
||||
|
||||
|
||||
void ShowBuildBridgeWindow(TileIndex start, TileIndex end, byte bridge_type)
|
||||
void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transport_type, byte bridge_type)
|
||||
{
|
||||
DeleteWindowById(WC_BUILD_BRIDGE, 0);
|
||||
|
||||
_bridgedata.type = bridge_type;
|
||||
_bridgedata.type = (transport_type << 15) | (bridge_type << 8); //prepare the parameter for use only once
|
||||
_bridgedata.start_tile = start;
|
||||
_bridgedata.end_tile = end;
|
||||
|
||||
/* only query bridge building possibility once, result is the same for all bridges!
|
||||
* returns CMD_ERROR on failure, and price on success */
|
||||
StringID errmsg = INVALID_STRING_ID;
|
||||
CommandCost ret = DoCommand(end, start, (bridge_type << 8), DC_AUTO | DC_QUERY_COST, CMD_BUILD_BRIDGE);
|
||||
CommandCost ret = DoCommand(end, start, _bridgedata.type, DC_AUTO | DC_QUERY_COST, CMD_BUILD_BRIDGE);
|
||||
|
||||
uint8 j = 0;
|
||||
if (CmdFailed(ret)) {
|
||||
@@ -182,19 +163,19 @@ void ShowBuildBridgeWindow(TileIndex start, TileIndex end, byte bridge_type)
|
||||
/* check which bridges can be built
|
||||
* get absolute bridge length
|
||||
* length of the middle parts of the bridge */
|
||||
const uint bridge_len = GetBridgeLength(start, end);
|
||||
const uint bridge_len = GetTunnelBridgeLength(start, end);
|
||||
/* total length of bridge */
|
||||
const uint tot_bridgedata_len = CalcBridgeLenCostFactor(bridge_len + 2);
|
||||
|
||||
/* loop for all bridgetypes */
|
||||
for (bridge_type = 0; bridge_type != MAX_BRIDGES; bridge_type++) {
|
||||
if (CheckBridge_Stuff(bridge_type, bridge_len)) {
|
||||
for (BridgeType brd_type = 0; brd_type != MAX_BRIDGES; brd_type++) {
|
||||
if (CheckBridge_Stuff(brd_type, bridge_len)) {
|
||||
/* bridge is accepted, add to list */
|
||||
const Bridge *b = &_bridge[bridge_type];
|
||||
const BridgeSpec *b = GetBridgeSpec(brd_type);
|
||||
/* Add to terraforming & bulldozing costs the cost of the
|
||||
* bridge itself (not computed with DC_QUERY_COST) */
|
||||
_bridgedata.costs[j] = ret.GetCost() + (((int64)tot_bridgedata_len * _price.build_bridge * b->price) >> 8);
|
||||
_bridgedata.indexes[j] = bridge_type;
|
||||
_bridgedata.indexes[j] = brd_type;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
@@ -203,7 +184,9 @@ void ShowBuildBridgeWindow(TileIndex start, TileIndex end, byte bridge_type)
|
||||
}
|
||||
|
||||
if (j != 0) {
|
||||
AllocateWindowDesc((_bridgedata.type & 0x80) ? &_build_road_bridge_desc : &_build_bridge_desc);
|
||||
Window *w = AllocateWindowDesc(&_build_bridge_desc);
|
||||
/* Change the data, or the caption of the gui. Set it to road or rail, accordingly */
|
||||
w->widget[BBSW_CAPTION].data = (transport_type == TRANSPORT_ROAD) ? STR_1803_SELECT_ROAD_BRIDGE : STR_100D_SELECT_RAIL_BRIDGE;
|
||||
} else {
|
||||
ShowErrorMessage(errmsg, STR_5015_CAN_T_BUILD_BRIDGE_HERE, TileX(end) * TILE_SIZE, TileY(end) * TILE_SIZE);
|
||||
}
|
||||
|
@@ -8,6 +8,7 @@
|
||||
#include "direction_func.h"
|
||||
#include "rail_type.h"
|
||||
#include "road_map.h"
|
||||
#include "bridge.h"
|
||||
|
||||
|
||||
/**
|
||||
@@ -67,7 +68,7 @@ static inline bool IsBridgeAbove(TileIndex t)
|
||||
* @pre IsBridgeTile(t)
|
||||
* @return The bridge type
|
||||
*/
|
||||
static inline uint GetBridgeType(TileIndex t)
|
||||
static inline BridgeType GetBridgeType(TileIndex t)
|
||||
{
|
||||
assert(IsBridgeTile(t));
|
||||
return GB(_m[t].m2, 4, 4);
|
||||
@@ -163,7 +164,7 @@ static inline void SetBridgeMiddle(TileIndex t, Axis a)
|
||||
* @param rt the road or rail type
|
||||
* @note this function should not be called directly.
|
||||
*/
|
||||
static inline void MakeBridgeRamp(TileIndex t, Owner o, uint bridgetype, DiagDirection d, TransportType tt, uint rt)
|
||||
static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, TransportType tt, uint rt)
|
||||
{
|
||||
SetTileType(t, MP_TUNNELBRIDGE);
|
||||
SetTileOwner(t, o);
|
||||
@@ -181,7 +182,7 @@ static inline void MakeBridgeRamp(TileIndex t, Owner o, uint bridgetype, DiagDir
|
||||
* @param d the direction this ramp must be facing
|
||||
* @param r the road type of the bridge
|
||||
*/
|
||||
static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, uint bridgetype, DiagDirection d, RoadTypes r)
|
||||
static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, RoadTypes r)
|
||||
{
|
||||
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_ROAD, r);
|
||||
}
|
||||
@@ -194,7 +195,7 @@ static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, uint bridgetype, Dia
|
||||
* @param d the direction this ramp must be facing
|
||||
* @param r the rail type of the bridge
|
||||
*/
|
||||
static inline void MakeRailBridgeRamp(TileIndex t, Owner o, uint bridgetype, DiagDirection d, RailType r)
|
||||
static inline void MakeRailBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, RailType r)
|
||||
{
|
||||
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_RAIL, r);
|
||||
}
|
||||
|
@@ -55,7 +55,6 @@ enum BuildVehicleWidgets {
|
||||
BUILD_VEHICLE_WIDGET_CLOSEBOX = 0,
|
||||
BUILD_VEHICLE_WIDGET_CAPTION,
|
||||
BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING,
|
||||
BUILD_VEHICLE_WIDGET_SORT_TEXT,
|
||||
BUILD_VEHICLE_WIDGET_SORT_DROPDOWN,
|
||||
BUILD_VEHICLE_WIDGET_LIST,
|
||||
BUILD_VEHICLE_WIDGET_SCROLLBAR,
|
||||
@@ -70,8 +69,7 @@ static const Widget _build_vehicle_widgets[] = {
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW },
|
||||
{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 239, 0, 13, 0x0, STR_018C_WINDOW_TITLE_DRAG_THIS },
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 80, 14, 25, STR_SORT_BY, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PANEL, RESIZE_RIGHT, 14, 81, 227, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_TEXTBTN, RESIZE_LR, 14, 228, 239, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_DROPDOWN, RESIZE_RIGHT, 14, 81, 239, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_MATRIX, RESIZE_RB, 14, 0, 227, 26, 39, 0x101, STR_NULL },
|
||||
{ WWT_SCROLLBAR, RESIZE_LRB, 14, 228, 239, 26, 39, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST },
|
||||
{ WWT_PANEL, RESIZE_RTB, 14, 0, 239, 40, 161, 0x0, STR_NULL },
|
||||
@@ -83,9 +81,11 @@ static const Widget _build_vehicle_widgets[] = {
|
||||
};
|
||||
|
||||
/* Setup widget strings to fit the different types of vehicles */
|
||||
static void SetupWindowStrings(Window *w, byte type)
|
||||
static void SetupWindowStrings(Window *w, VehicleType type)
|
||||
{
|
||||
switch (type) {
|
||||
default: NOT_REACHED();
|
||||
|
||||
case VEH_TRAIN:
|
||||
w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data = STR_JUST_STRING;
|
||||
w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips = STR_8843_TRAIN_VEHICLE_SELECTION;
|
||||
@@ -94,6 +94,7 @@ static void SetupWindowStrings(Window *w, byte type)
|
||||
w->widget[BUILD_VEHICLE_WIDGET_RENAME].data = STR_8820_RENAME;
|
||||
w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_8845_RENAME_TRAIN_VEHICLE_TYPE;
|
||||
break;
|
||||
|
||||
case VEH_ROAD:
|
||||
w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data = STR_9006_NEW_ROAD_VEHICLES;
|
||||
w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips = STR_9026_ROAD_VEHICLE_SELECTION;
|
||||
@@ -102,6 +103,7 @@ static void SetupWindowStrings(Window *w, byte type)
|
||||
w->widget[BUILD_VEHICLE_WIDGET_RENAME].data = STR_9034_RENAME;
|
||||
w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_9035_RENAME_ROAD_VEHICLE_TYPE;
|
||||
break;
|
||||
|
||||
case VEH_SHIP:
|
||||
w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data = STR_9808_NEW_SHIPS;
|
||||
w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips = STR_9825_SHIP_SELECTION_LIST_CLICK;
|
||||
@@ -110,6 +112,7 @@ static void SetupWindowStrings(Window *w, byte type)
|
||||
w->widget[BUILD_VEHICLE_WIDGET_RENAME].data = STR_9836_RENAME;
|
||||
w->widget[BUILD_VEHICLE_WIDGET_RENAME].tooltips = STR_9837_RENAME_SHIP_TYPE;
|
||||
break;
|
||||
|
||||
case VEH_AIRCRAFT:
|
||||
w->widget[BUILD_VEHICLE_WIDGET_CAPTION].data = STR_A005_NEW_AIRCRAFT;
|
||||
w->widget[BUILD_VEHICLE_WIDGET_LIST].tooltips = STR_A025_AIRCRAFT_SELECTION_LIST;
|
||||
@@ -227,8 +230,8 @@ static int CDECL TrainEngineRunningCostSorter(const void *a, const void *b)
|
||||
const RailVehicleInfo *rvi_a = RailVehInfo(*(const EngineID*)a);
|
||||
const RailVehicleInfo *rvi_b = RailVehInfo(*(const EngineID*)b);
|
||||
|
||||
Money va = rvi_a->running_cost_base * _price.running_rail[rvi_a->running_cost_class] * (rvi_a->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
|
||||
Money vb = rvi_b->running_cost_base * _price.running_rail[rvi_b->running_cost_class] * (rvi_b->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
|
||||
Money va = rvi_a->running_cost * GetPriceByIndex(rvi_a->running_cost_class) * (rvi_a->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
|
||||
Money vb = rvi_b->running_cost * GetPriceByIndex(rvi_b->running_cost_class) * (rvi_b->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
|
||||
int r = ClampToI32(va - vb);
|
||||
|
||||
return _internal_sort_order ? -r : r;
|
||||
@@ -245,8 +248,8 @@ static int CDECL TrainEnginePowerVsRunningCostSorter(const void *a, const void *
|
||||
* Because of this, the return value have to be reversed as well and we return b - a instead of a - b.
|
||||
* Another thing is that both power and running costs should be doubled for multiheaded engines.
|
||||
* Since it would be multipling with 2 in both numerator and denumerator, it will even themselves out and we skip checking for multiheaded. */
|
||||
Money va = (rvi_a->running_cost_base * _price.running_rail[rvi_a->running_cost_class]) / max(1U, (uint)rvi_a->power);
|
||||
Money vb = (rvi_b->running_cost_base * _price.running_rail[rvi_b->running_cost_class]) / max(1U, (uint)rvi_b->power);
|
||||
Money va = (rvi_a->running_cost * GetPriceByIndex(rvi_a->running_cost_class)) / max(1U, (uint)rvi_a->power);
|
||||
Money vb = (rvi_b->running_cost * GetPriceByIndex(rvi_b->running_cost_class)) / max(1U, (uint)rvi_b->power);
|
||||
int r = ClampToI32(vb - va);
|
||||
|
||||
return _internal_sort_order ? -r : r;
|
||||
@@ -309,9 +312,12 @@ static int CDECL RoadVehEngineSpeedSorter(const void *a, const void *b)
|
||||
|
||||
static int CDECL RoadVehEngineRunningCostSorter(const void *a, const void *b)
|
||||
{
|
||||
const int va = RoadVehInfo(*(const EngineID*)a)->running_cost;
|
||||
const int vb = RoadVehInfo(*(const EngineID*)b)->running_cost;
|
||||
const int r = va - vb;
|
||||
const RoadVehicleInfo *rvi_a = RoadVehInfo(*(const EngineID*)a);
|
||||
const RoadVehicleInfo *rvi_b = RoadVehInfo(*(const EngineID*)b);
|
||||
|
||||
Money va = rvi_a->running_cost * GetPriceByIndex(rvi_a->running_cost_class);
|
||||
Money vb = rvi_b->running_cost * GetPriceByIndex(rvi_b->running_cost_class);
|
||||
int r = ClampToI32(va - vb);
|
||||
|
||||
if (r == 0) {
|
||||
/* Use EngineID to sort instead since we want consistent sorting */
|
||||
@@ -527,6 +533,26 @@ static const StringID _sort_listing[][11] = {{
|
||||
INVALID_STRING_ID
|
||||
}};
|
||||
|
||||
static int DrawCargoCapacityInfo(int x, int y, EngineID engine, VehicleType type, bool refittable)
|
||||
{
|
||||
uint16 *cap = GetCapacityOfArticulatedParts(engine, type);
|
||||
|
||||
for (uint c = 0; c < NUM_CARGO; c++) {
|
||||
if (cap[c] == 0) continue;
|
||||
|
||||
SetDParam(0, c);
|
||||
SetDParam(1, cap[c]);
|
||||
SetDParam(2, refittable ? STR_9842_REFITTABLE : STR_EMPTY);
|
||||
DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, TC_FROMSTRING);
|
||||
y += 10;
|
||||
|
||||
/* Only show as refittable once */
|
||||
refittable = false;
|
||||
}
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
/* Draw rail wagon specific details */
|
||||
static int DrawRailWagonPurchaseInfo(int x, int y, EngineID engine_number, const RailVehicleInfo *rvi)
|
||||
{
|
||||
@@ -551,6 +577,14 @@ static int DrawRailWagonPurchaseInfo(int x, int y, EngineID engine_number, const
|
||||
y += 10;
|
||||
}
|
||||
}
|
||||
|
||||
/* Running cost */
|
||||
if (rvi->running_cost_class != 0xFF) {
|
||||
SetDParam(0, GetEngineProperty(engine_number, 0x0D, rvi->running_cost) * GetPriceByIndex(rvi->running_cost_class) >> 8);
|
||||
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
|
||||
y += 10;
|
||||
}
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
@@ -580,9 +614,11 @@ static int DrawRailEnginePurchaseInfo(int x, int y, EngineID engine_number, cons
|
||||
}
|
||||
|
||||
/* Running cost */
|
||||
SetDParam(0, (GetEngineProperty(engine_number, 0x0D, rvi->running_cost_base) * _price.running_rail[rvi->running_cost_class] >> 8) << multihead);
|
||||
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
|
||||
y += 10;
|
||||
if (rvi->running_cost_class != 0xFF) {
|
||||
SetDParam(0, (GetEngineProperty(engine_number, 0x0D, rvi->running_cost) * GetPriceByIndex(rvi->running_cost_class) >> 8) << multihead);
|
||||
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
|
||||
y += 10;
|
||||
}
|
||||
|
||||
/* Powered wagons power - Powered wagons extra weight */
|
||||
if (rvi->pow_wag_power != 0) {
|
||||
@@ -607,18 +643,12 @@ static int DrawRoadVehPurchaseInfo(int x, int y, EngineID engine_number, const R
|
||||
y += 10;
|
||||
|
||||
/* Running cost */
|
||||
SetDParam(0, rvi->running_cost * _price.roadveh_running >> 8);
|
||||
SetDParam(0, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8);
|
||||
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
|
||||
y += 10;
|
||||
|
||||
/* Cargo type + capacity */
|
||||
SetDParam(0, rvi->cargo_type);
|
||||
SetDParam(1, GetEngineProperty(engine_number, 0x0F, rvi->capacity));
|
||||
SetDParam(2, refittable ? STR_9842_REFITTABLE : STR_EMPTY);
|
||||
DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, TC_FROMSTRING);
|
||||
y += 10;
|
||||
|
||||
return y;
|
||||
return DrawCargoCapacityInfo(x, y, engine_number, VEH_ROAD, refittable);
|
||||
}
|
||||
|
||||
/* Draw ship specific details */
|
||||
@@ -709,20 +739,18 @@ int DrawVehiclePurchaseInfo(int x, int y, uint w, EngineID engine_number)
|
||||
}
|
||||
|
||||
/* Cargo type + capacity, or N/A */
|
||||
if (rvi->capacity == 0) {
|
||||
int new_y = DrawCargoCapacityInfo(x, y, engine_number, VEH_TRAIN, refitable);
|
||||
|
||||
if (new_y == y) {
|
||||
SetDParam(0, CT_INVALID);
|
||||
SetDParam(2, STR_EMPTY);
|
||||
DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, TC_FROMSTRING);
|
||||
y += 10;
|
||||
} else {
|
||||
int multihead = (rvi->railveh_type == RAILVEH_MULTIHEAD ? 1 : 0);
|
||||
|
||||
SetDParam(0, rvi->cargo_type);
|
||||
SetDParam(1, (capacity * (CountArticulatedParts(engine_number, true) + 1)) << multihead);
|
||||
SetDParam(2, refitable ? STR_9842_REFITTABLE : STR_EMPTY);
|
||||
y = new_y;
|
||||
}
|
||||
DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, TC_FROMSTRING);
|
||||
y += 10;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VEH_ROAD:
|
||||
y = DrawRoadVehPurchaseInfo(x, y, engine_number, RoadVehInfo(engine_number));
|
||||
refitable = true;
|
||||
@@ -775,7 +803,8 @@ static void GenerateBuildTrainList(Window *w)
|
||||
* Also check to see if the previously selected engine is still available,
|
||||
* and if not, reset selection to INVALID_ENGINE. This could be the case
|
||||
* when engines become obsolete and are removed */
|
||||
for (EngineID eid = 0; eid < NUM_TRAIN_ENGINES; eid++) {
|
||||
EngineID eid;
|
||||
FOR_ALL_ENGINEIDS_OF_TYPE(eid, VEH_TRAIN) {
|
||||
const RailVehicleInfo *rvi = RailVehInfo(eid);
|
||||
|
||||
if (bv->filter.railtype != RAILTYPE_END && !HasPowerOnRail(rvi->railtype, bv->filter.railtype)) continue;
|
||||
@@ -813,7 +842,8 @@ static void GenerateBuildRoadVehList(Window *w)
|
||||
|
||||
EngList_RemoveAll(&bv->eng_list);
|
||||
|
||||
for (EngineID eid = ROAD_ENGINES_INDEX; eid < ROAD_ENGINES_INDEX + NUM_ROAD_ENGINES; eid++) {
|
||||
EngineID eid;
|
||||
FOR_ALL_ENGINEIDS_OF_TYPE(eid, VEH_ROAD) {
|
||||
if (!IsEngineBuildable(eid, VEH_ROAD, _local_player)) continue;
|
||||
if (!HasBit(bv->filter.roadtypes, HasBit(EngInfo(eid)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD)) continue;
|
||||
EngList_Add(&bv->eng_list, eid);
|
||||
@@ -831,7 +861,8 @@ static void GenerateBuildShipList(Window *w)
|
||||
|
||||
EngList_RemoveAll(&bv->eng_list);
|
||||
|
||||
for (EngineID eid = SHIP_ENGINES_INDEX; eid < SHIP_ENGINES_INDEX + NUM_SHIP_ENGINES; eid++) {
|
||||
EngineID eid;
|
||||
FOR_ALL_ENGINEIDS_OF_TYPE(eid, VEH_SHIP) {
|
||||
if (!IsEngineBuildable(eid, VEH_SHIP, _local_player)) continue;
|
||||
EngList_Add(&bv->eng_list, eid);
|
||||
|
||||
@@ -852,7 +883,8 @@ static void GenerateBuildAircraftList(Window *w)
|
||||
* Also check to see if the previously selected plane is still available,
|
||||
* and if not, reset selection to INVALID_ENGINE. This could be the case
|
||||
* when planes become obsolete and are removed */
|
||||
for (EngineID eid = AIRCRAFT_ENGINES_INDEX; eid < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; eid++) {
|
||||
EngineID eid;
|
||||
FOR_ALL_ENGINEIDS_OF_TYPE(eid, VEH_AIRCRAFT) {
|
||||
if (!IsEngineBuildable(eid, VEH_AIRCRAFT, _local_player)) continue;
|
||||
/* First VEH_END window_numbers are fake to allow a window open for all different types at once */
|
||||
if (w->window_number > VEH_END && !CanAircraftUseStation(eid, w->window_number)) continue;
|
||||
@@ -888,7 +920,7 @@ static void GenerateBuildList(Window *w)
|
||||
EngList_Sort(&bv->eng_list, _sorter[bv->vehicle_type][bv->sort_criteria]);
|
||||
}
|
||||
|
||||
static void DrawVehicleEngine(byte type, int x, int y, EngineID engine, SpriteID pal)
|
||||
static void DrawVehicleEngine(VehicleType type, int x, int y, EngineID engine, SpriteID pal)
|
||||
{
|
||||
switch (type) {
|
||||
case VEH_TRAIN: DrawTrainEngine( x, y, engine, pal); break;
|
||||
@@ -956,23 +988,6 @@ void DrawEngineList(VehicleType type, int x, int y, const EngineList eng_list, u
|
||||
}
|
||||
}
|
||||
|
||||
static void ExpandPurchaseInfoWidget(Window *w, int expand_by)
|
||||
{
|
||||
Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL];
|
||||
|
||||
SetWindowDirty(w);
|
||||
wi->bottom += expand_by;
|
||||
|
||||
for (uint i = BUILD_VEHICLE_WIDGET_BUILD; i < BUILD_VEHICLE_WIDGET_END; i++) {
|
||||
wi = &w->widget[i];
|
||||
wi->top += expand_by;
|
||||
wi->bottom += expand_by;
|
||||
}
|
||||
|
||||
w->height += expand_by;
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
|
||||
static void DrawBuildVehicleWindow(Window *w)
|
||||
{
|
||||
const buildvehicle_d *bv = &WP(w, buildvehicle_d);
|
||||
@@ -982,19 +997,26 @@ static void DrawBuildVehicleWindow(Window *w)
|
||||
|
||||
SetVScrollCount(w, EngList_Count(&bv->eng_list));
|
||||
SetDParam(0, bv->filter.railtype + STR_881C_NEW_RAIL_VEHICLES); // This should only affect rail vehicles
|
||||
|
||||
/* Set text of sort by dropdown */
|
||||
w->widget[BUILD_VEHICLE_WIDGET_SORT_DROPDOWN].data = _sort_listing[bv->vehicle_type][bv->sort_criteria];
|
||||
|
||||
DrawWindowWidgets(w);
|
||||
|
||||
DrawEngineList(bv->vehicle_type, 2, 27, bv->eng_list, w->vscroll.pos, max, bv->sel_engine, false, DEFAULT_GROUP);
|
||||
DrawEngineList(bv->vehicle_type, w->widget[BUILD_VEHICLE_WIDGET_LIST].left + 2, w->widget[BUILD_VEHICLE_WIDGET_LIST].top + 1, bv->eng_list, w->vscroll.pos, max, bv->sel_engine, false, DEFAULT_GROUP);
|
||||
|
||||
if (bv->sel_engine != INVALID_ENGINE) {
|
||||
const Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL];
|
||||
int text_end = DrawVehiclePurchaseInfo(2, wi->top + 1, wi->right - wi->left - 2, bv->sel_engine);
|
||||
|
||||
if (text_end > wi->bottom) ExpandPurchaseInfoWidget(w, text_end - wi->bottom);
|
||||
if (text_end > wi->bottom) {
|
||||
SetWindowDirty(w);
|
||||
ResizeWindowForWidget(w, BUILD_VEHICLE_WIDGET_PANEL, 0, text_end - wi->bottom);
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
}
|
||||
|
||||
DrawString(85, 15, _sort_listing[bv->vehicle_type][bv->sort_criteria], TC_BLACK);
|
||||
DoDrawString(bv->descending_sort_order ? DOWNARROW : UPARROW, 69, 15, TC_BLACK);
|
||||
DrawSortButtonState(w, BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING, bv->descending_sort_order ? SBS_DOWN : SBS_UP);
|
||||
}
|
||||
|
||||
static void BuildVehicleClickEvent(Window *w, WindowEvent *e)
|
||||
@@ -1010,14 +1032,14 @@ static void BuildVehicleClickEvent(Window *w, WindowEvent *e)
|
||||
break;
|
||||
|
||||
case BUILD_VEHICLE_WIDGET_LIST: {
|
||||
uint i = (e->we.click.pt.y - 26) / GetVehicleListHeight(bv->vehicle_type) + w->vscroll.pos;
|
||||
uint i = (e->we.click.pt.y - w->widget[BUILD_VEHICLE_WIDGET_LIST].top) / GetVehicleListHeight(bv->vehicle_type) + w->vscroll.pos;
|
||||
uint num_items = EngList_Count(&bv->eng_list);
|
||||
bv->sel_engine = (i < num_items) ? bv->eng_list[i] : INVALID_ENGINE;
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
}
|
||||
|
||||
case BUILD_VEHICLE_WIDGET_SORT_TEXT: case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: // Select sorting criteria dropdown menu
|
||||
case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN: // Select sorting criteria dropdown menu
|
||||
ShowDropDownMenu(w, _sort_listing[bv->vehicle_type], bv->sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0);
|
||||
break;
|
||||
|
||||
|
@@ -37,7 +37,7 @@ CargoPacket::~CargoPacket()
|
||||
this->count = 0;
|
||||
}
|
||||
|
||||
bool CargoPacket::SameSource(CargoPacket *cp)
|
||||
bool CargoPacket::SameSource(const CargoPacket *cp) const
|
||||
{
|
||||
return this->source_xy == cp->source_xy && this->days_in_transit == cp->days_in_transit && this->paid_for == cp->paid_for;
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/* $Id$ */
|
||||
|
||||
/** @file cargotype.h */
|
||||
/** @file cargopacket.h */
|
||||
|
||||
#ifndef CARGOPACKET_H
|
||||
#define CARGOPACKET_H
|
||||
@@ -53,7 +53,7 @@ struct CargoPacket : PoolItem<CargoPacket, CargoPacketID, &_CargoPacket_pool> {
|
||||
* @param cp the cargo packet to compare to
|
||||
* @return true if and only if days_in_transit and source_xy are equal
|
||||
*/
|
||||
bool SameSource(CargoPacket *cp);
|
||||
bool SameSource(const CargoPacket *cp) const;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -315,7 +315,7 @@ static void ClickTile_Clear(TileIndex tile)
|
||||
/* not used */
|
||||
}
|
||||
|
||||
static uint32 GetTileTrackStatus_Clear(TileIndex tile, TransportType mode, uint sub_mode)
|
||||
static TrackStatus GetTileTrackStatus_Clear(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
262
src/command.cpp
262
src/command.cpp
@@ -20,6 +20,7 @@
|
||||
#include "debug.h"
|
||||
#include "player_func.h"
|
||||
#include "player_base.h"
|
||||
#include "signal_func.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
|
||||
@@ -208,160 +209,145 @@ DEF_COMMAND(CmdAutofillTimetable);
|
||||
* as the value from the CMD_* enums.
|
||||
*/
|
||||
static const Command _command_proc_table[] = {
|
||||
{CmdBuildRailroadTrack, CMD_AUTO}, /* 0, CMD_BUILD_RAILROAD_TRACK */
|
||||
{CmdRemoveRailroadTrack, CMD_AUTO}, /* 1, CMD_REMOVE_RAILROAD_TRACK */
|
||||
{CmdBuildSingleRail, CMD_AUTO}, /* 2, CMD_BUILD_SINGLE_RAIL */
|
||||
{CmdRemoveSingleRail, CMD_AUTO}, /* 3, CMD_REMOVE_SINGLE_RAIL */
|
||||
{CmdLandscapeClear, 0}, /* 4, CMD_LANDSCAPE_CLEAR */
|
||||
{CmdBuildBridge, CMD_AUTO}, /* 5, CMD_BUILD_BRIDGE */
|
||||
{CmdBuildRailroadStation, CMD_AUTO}, /* 6, CMD_BUILD_RAILROAD_STATION */
|
||||
{CmdBuildTrainDepot, CMD_AUTO}, /* 7, CMD_BUILD_TRAIN_DEPOT */
|
||||
{CmdBuildSingleSignal, CMD_AUTO}, /* 8, CMD_BUILD_SIGNALS */
|
||||
{CmdRemoveSingleSignal, CMD_AUTO}, /* 9, CMD_REMOVE_SIGNALS */
|
||||
{CmdTerraformLand, CMD_AUTO}, /* 10, CMD_TERRAFORM_LAND */
|
||||
{CmdPurchaseLandArea, CMD_AUTO}, /* 11, CMD_PURCHASE_LAND_AREA */
|
||||
{CmdSellLandArea, 0}, /* 12, CMD_SELL_LAND_AREA */
|
||||
{CmdBuildTunnel, CMD_AUTO}, /* 13, CMD_BUILD_TUNNEL */
|
||||
{CmdRemoveFromRailroadStation, 0}, /* 14, CMD_REMOVE_FROM_RAILROAD_STATION */
|
||||
{CmdConvertRail, 0}, /* 15, CMD_CONVERT_RAILD */
|
||||
{CmdBuildTrainWaypoint, 0}, /* 16, CMD_BUILD_TRAIN_WAYPOINT */
|
||||
{CmdRenameWaypoint, 0}, /* 17, CMD_RENAME_WAYPOINT */
|
||||
{CmdRemoveTrainWaypoint, 0}, /* 18, CMD_REMOVE_TRAIN_WAYPOINT */
|
||||
{NULL, 0}, /* 19, unused */
|
||||
{NULL, 0}, /* 20, unused */
|
||||
{CmdBuildRoadStop, CMD_AUTO}, /* 21, CMD_BUILD_ROAD_STOP */
|
||||
{CmdRemoveRoadStop, 0}, /* 22, CMD_REMOVE_ROAD_STOP */
|
||||
{CmdBuildLongRoad, CMD_AUTO}, /* 23, CMD_BUILD_LONG_ROAD */
|
||||
{CmdRemoveLongRoad, CMD_AUTO}, /* 24, CMD_REMOVE_LONG_ROAD */
|
||||
{CmdBuildRoad, 0}, /* 25, CMD_BUILD_ROAD */
|
||||
{CmdRemoveRoad, 0}, /* 26, CMD_REMOVE_ROAD */
|
||||
{CmdBuildRoadDepot, CMD_AUTO}, /* 27, CMD_BUILD_ROAD_DEPOT */
|
||||
{NULL, 0}, /* 28, unused */
|
||||
{CmdBuildAirport, CMD_AUTO}, /* 29, CMD_BUILD_AIRPORT */
|
||||
{CmdBuildDock, CMD_AUTO}, /* 30, CMD_BUILD_DOCK */
|
||||
{CmdBuildShipDepot, CMD_AUTO}, /* 31, CMD_BUILD_SHIP_DEPOT */
|
||||
{CmdBuildBuoy, CMD_AUTO}, /* 32, CMD_BUILD_BUOY */
|
||||
{CmdPlantTree, CMD_AUTO}, /* 33, CMD_PLANT_TREE */
|
||||
{CmdBuildRailVehicle, 0}, /* 34, CMD_BUILD_RAIL_VEHICLE */
|
||||
{CmdMoveRailVehicle, 0}, /* 35, CMD_MOVE_RAIL_VEHICLE */
|
||||
{CmdStartStopTrain, 0}, /* 36, CMD_START_STOP_TRAIN */
|
||||
{NULL, 0}, /* 37, unused */
|
||||
{CmdSellRailWagon, 0}, /* 38, CMD_SELL_RAIL_WAGON */
|
||||
{CmdSendTrainToDepot, 0}, /* 39, CMD_SEND_TRAIN_TO_DEPOT */
|
||||
{CmdForceTrainProceed, 0}, /* 40, CMD_FORCE_TRAIN_PROCEED */
|
||||
{CmdReverseTrainDirection, 0}, /* 41, CMD_REVERSE_TRAIN_DIRECTION */
|
||||
{CmdBuildRailroadTrack, CMD_AUTO}, /* CMD_BUILD_RAILROAD_TRACK */
|
||||
{CmdRemoveRailroadTrack, CMD_AUTO}, /* CMD_REMOVE_RAILROAD_TRACK */
|
||||
{CmdBuildSingleRail, CMD_AUTO}, /* CMD_BUILD_SINGLE_RAIL */
|
||||
{CmdRemoveSingleRail, CMD_AUTO}, /* CMD_REMOVE_SINGLE_RAIL */
|
||||
{CmdLandscapeClear, 0}, /* CMD_LANDSCAPE_CLEAR */
|
||||
{CmdBuildBridge, CMD_AUTO}, /* CMD_BUILD_BRIDGE */
|
||||
{CmdBuildRailroadStation, CMD_AUTO}, /* CMD_BUILD_RAILROAD_STATION */
|
||||
{CmdBuildTrainDepot, CMD_AUTO}, /* CMD_BUILD_TRAIN_DEPOT */
|
||||
{CmdBuildSingleSignal, CMD_AUTO}, /* CMD_BUILD_SIGNALS */
|
||||
{CmdRemoveSingleSignal, CMD_AUTO}, /* CMD_REMOVE_SIGNALS */
|
||||
{CmdTerraformLand, CMD_AUTO}, /* CMD_TERRAFORM_LAND */
|
||||
{CmdPurchaseLandArea, CMD_AUTO}, /* CMD_PURCHASE_LAND_AREA */
|
||||
{CmdSellLandArea, 0}, /* CMD_SELL_LAND_AREA */
|
||||
{CmdBuildTunnel, CMD_AUTO}, /* CMD_BUILD_TUNNEL */
|
||||
{CmdRemoveFromRailroadStation, 0}, /* CMD_REMOVE_FROM_RAILROAD_STATION */
|
||||
{CmdConvertRail, 0}, /* CMD_CONVERT_RAILD */
|
||||
{CmdBuildTrainWaypoint, 0}, /* CMD_BUILD_TRAIN_WAYPOINT */
|
||||
{CmdRenameWaypoint, 0}, /* CMD_RENAME_WAYPOINT */
|
||||
{CmdRemoveTrainWaypoint, 0}, /* CMD_REMOVE_TRAIN_WAYPOINT */
|
||||
|
||||
{CmdModifyOrder, 0}, /* 42, CMD_MODIFY_ORDER */
|
||||
{CmdSkipToOrder, 0}, /* 43, CMD_SKIP_TO_ORDER */
|
||||
{CmdDeleteOrder, 0}, /* 44, CMD_DELETE_ORDER */
|
||||
{CmdInsertOrder, 0}, /* 45, CMD_INSERT_ORDER */
|
||||
{CmdBuildRoadStop, CMD_AUTO}, /* CMD_BUILD_ROAD_STOP */
|
||||
{CmdRemoveRoadStop, 0}, /* CMD_REMOVE_ROAD_STOP */
|
||||
{CmdBuildLongRoad, CMD_AUTO}, /* CMD_BUILD_LONG_ROAD */
|
||||
{CmdRemoveLongRoad, CMD_AUTO}, /* CMD_REMOVE_LONG_ROAD */
|
||||
{CmdBuildRoad, 0}, /* CMD_BUILD_ROAD */
|
||||
{CmdRemoveRoad, 0}, /* CMD_REMOVE_ROAD */
|
||||
{CmdBuildRoadDepot, CMD_AUTO}, /* CMD_BUILD_ROAD_DEPOT */
|
||||
|
||||
{CmdChangeServiceInt, 0}, /* 46, CMD_CHANGE_SERVICE_INT */
|
||||
{CmdBuildAirport, CMD_AUTO}, /* CMD_BUILD_AIRPORT */
|
||||
{CmdBuildDock, CMD_AUTO}, /* CMD_BUILD_DOCK */
|
||||
{CmdBuildShipDepot, CMD_AUTO}, /* CMD_BUILD_SHIP_DEPOT */
|
||||
{CmdBuildBuoy, CMD_AUTO}, /* CMD_BUILD_BUOY */
|
||||
{CmdPlantTree, CMD_AUTO}, /* CMD_PLANT_TREE */
|
||||
{CmdBuildRailVehicle, 0}, /* CMD_BUILD_RAIL_VEHICLE */
|
||||
{CmdMoveRailVehicle, 0}, /* CMD_MOVE_RAIL_VEHICLE */
|
||||
{CmdStartStopTrain, 0}, /* CMD_START_STOP_TRAIN */
|
||||
|
||||
{CmdBuildIndustry, 0}, /* 47, CMD_BUILD_INDUSTRY */
|
||||
{CmdBuildCompanyHQ, CMD_AUTO}, /* 48, CMD_BUILD_COMPANY_HQ */
|
||||
{CmdSetPlayerFace, 0}, /* 49, CMD_SET_PLAYER_FACE */
|
||||
{CmdSetPlayerColor, 0}, /* 50, CMD_SET_PLAYER_COLOR */
|
||||
{CmdSellRailWagon, 0}, /* CMD_SELL_RAIL_WAGON */
|
||||
{CmdSendTrainToDepot, 0}, /* CMD_SEND_TRAIN_TO_DEPOT */
|
||||
{CmdForceTrainProceed, 0}, /* CMD_FORCE_TRAIN_PROCEED */
|
||||
{CmdReverseTrainDirection, 0}, /* CMD_REVERSE_TRAIN_DIRECTION */
|
||||
|
||||
{CmdIncreaseLoan, 0}, /* 51, CMD_INCREASE_LOAN */
|
||||
{CmdDecreaseLoan, 0}, /* 52, CMD_DECREASE_LOAN */
|
||||
{CmdModifyOrder, 0}, /* CMD_MODIFY_ORDER */
|
||||
{CmdSkipToOrder, 0}, /* CMD_SKIP_TO_ORDER */
|
||||
{CmdDeleteOrder, 0}, /* CMD_DELETE_ORDER */
|
||||
{CmdInsertOrder, 0}, /* CMD_INSERT_ORDER */
|
||||
|
||||
{CmdWantEnginePreview, 0}, /* 53, CMD_WANT_ENGINE_PREVIEW */
|
||||
{CmdChangeServiceInt, 0}, /* CMD_CHANGE_SERVICE_INT */
|
||||
|
||||
{CmdNameVehicle, 0}, /* 54, CMD_NAME_VEHICLE */
|
||||
{CmdRenameEngine, 0}, /* 55, CMD_RENAME_ENGINE */
|
||||
{CmdBuildIndustry, 0}, /* CMD_BUILD_INDUSTRY */
|
||||
{CmdBuildCompanyHQ, CMD_AUTO}, /* CMD_BUILD_COMPANY_HQ */
|
||||
{CmdSetPlayerFace, 0}, /* CMD_SET_PLAYER_FACE */
|
||||
{CmdSetPlayerColor, 0}, /* CMD_SET_PLAYER_COLOR */
|
||||
|
||||
{CmdChangeCompanyName, 0}, /* 56, CMD_CHANGE_COMPANY_NAME */
|
||||
{CmdChangePresidentName, 0}, /* 57, CMD_CHANGE_PRESIDENT_NAME */
|
||||
{CmdIncreaseLoan, 0}, /* CMD_INCREASE_LOAN */
|
||||
{CmdDecreaseLoan, 0}, /* CMD_DECREASE_LOAN */
|
||||
|
||||
{CmdRenameStation, 0}, /* 58, CMD_RENAME_STATION */
|
||||
{CmdWantEnginePreview, 0}, /* CMD_WANT_ENGINE_PREVIEW */
|
||||
|
||||
{CmdSellAircraft, 0}, /* 59, CMD_SELL_AIRCRAFT */
|
||||
{CmdStartStopAircraft, 0}, /* 60, CMD_START_STOP_AIRCRAFT */
|
||||
{CmdNameVehicle, 0}, /* CMD_NAME_VEHICLE */
|
||||
{CmdRenameEngine, 0}, /* CMD_RENAME_ENGINE */
|
||||
|
||||
{CmdBuildAircraft, 0}, /* 61, CMD_BUILD_AIRCRAFT */
|
||||
{CmdSendAircraftToHangar, 0}, /* 62, CMD_SEND_AIRCRAFT_TO_HANGAR */
|
||||
{NULL, 0}, /* 63, unused */
|
||||
{CmdRefitAircraft, 0}, /* 64, CMD_REFIT_AIRCRAFT */
|
||||
{CmdChangeCompanyName, 0}, /* CMD_CHANGE_COMPANY_NAME */
|
||||
{CmdChangePresidentName, 0}, /* CMD_CHANGE_PRESIDENT_NAME */
|
||||
|
||||
{CmdPlaceSign, 0}, /* 65, CMD_PLACE_SIGN */
|
||||
{CmdRenameSign, 0}, /* 66, CMD_RENAME_SIGN */
|
||||
{CmdRenameStation, 0}, /* CMD_RENAME_STATION */
|
||||
|
||||
{CmdBuildRoadVeh, 0}, /* 67, CMD_BUILD_ROAD_VEH */
|
||||
{CmdStartStopRoadVeh, 0}, /* 68, CMD_START_STOP_ROADVEH */
|
||||
{CmdSellRoadVeh, 0}, /* 69, CMD_SELL_ROAD_VEH */
|
||||
{CmdSendRoadVehToDepot, 0}, /* 70, CMD_SEND_ROADVEH_TO_DEPOT */
|
||||
{CmdTurnRoadVeh, 0}, /* 71, CMD_TURN_ROADVEH */
|
||||
{CmdRefitRoadVeh, 0}, /* 72, CMD_REFIT_ROAD_VEH */
|
||||
{CmdSellAircraft, 0}, /* CMD_SELL_AIRCRAFT */
|
||||
{CmdStartStopAircraft, 0}, /* CMD_START_STOP_AIRCRAFT */
|
||||
|
||||
{CmdPause, CMD_SERVER}, /* 73, CMD_PAUSE */
|
||||
{CmdBuildAircraft, 0}, /* CMD_BUILD_AIRCRAFT */
|
||||
{CmdSendAircraftToHangar, 0}, /* CMD_SEND_AIRCRAFT_TO_HANGAR */
|
||||
{CmdRefitAircraft, 0}, /* CMD_REFIT_AIRCRAFT */
|
||||
|
||||
{CmdBuyShareInCompany, 0}, /* 74, CMD_BUY_SHARE_IN_COMPANY */
|
||||
{CmdSellShareInCompany, 0}, /* 75, CMD_SELL_SHARE_IN_COMPANY */
|
||||
{CmdBuyCompany, 0}, /* 76, CMD_BUY_COMANY */
|
||||
{CmdPlaceSign, 0}, /* CMD_PLACE_SIGN */
|
||||
{CmdRenameSign, 0}, /* CMD_RENAME_SIGN */
|
||||
|
||||
{CmdBuildTown, CMD_OFFLINE}, /* 77, CMD_BUILD_TOWN */
|
||||
{NULL, 0}, /* 78, unused */
|
||||
{NULL, 0}, /* 79, unused */
|
||||
{CmdRenameTown, CMD_SERVER}, /* 80, CMD_RENAME_TOWN */
|
||||
{CmdDoTownAction, 0}, /* 81, CMD_DO_TOWN_ACTION */
|
||||
{CmdBuildRoadVeh, 0}, /* CMD_BUILD_ROAD_VEH */
|
||||
{CmdStartStopRoadVeh, 0}, /* CMD_START_STOP_ROADVEH */
|
||||
{CmdSellRoadVeh, 0}, /* CMD_SELL_ROAD_VEH */
|
||||
{CmdSendRoadVehToDepot, 0}, /* CMD_SEND_ROADVEH_TO_DEPOT */
|
||||
{CmdTurnRoadVeh, 0}, /* CMD_TURN_ROADVEH */
|
||||
{CmdRefitRoadVeh, 0}, /* CMD_REFIT_ROAD_VEH */
|
||||
|
||||
{CmdSetRoadDriveSide, CMD_SERVER}, /* 82, CMD_SET_ROAD_DRIVE_SIDE */
|
||||
{NULL, 0}, /* 83, unused */
|
||||
{NULL, 0}, /* 84, unused */
|
||||
{CmdChangeDifficultyLevel, CMD_SERVER}, /* 85, CMD_CHANGE_DIFFICULTY_LEVEL */
|
||||
{CmdPause, CMD_SERVER}, /* CMD_PAUSE */
|
||||
|
||||
{CmdStartStopShip, 0}, /* 86, CMD_START_STOP_SHIP */
|
||||
{CmdSellShip, 0}, /* 87, CMD_SELL_SHIP */
|
||||
{CmdBuildShip, 0}, /* 88, CMD_BUILD_SHIP */
|
||||
{CmdSendShipToDepot, 0}, /* 89, CMD_SEND_SHIP_TO_DEPOT */
|
||||
{NULL, 0}, /* 90, unused */
|
||||
{CmdRefitShip, 0}, /* 91, CMD_REFIT_SHIP */
|
||||
{CmdBuyShareInCompany, 0}, /* CMD_BUY_SHARE_IN_COMPANY */
|
||||
{CmdSellShareInCompany, 0}, /* CMD_SELL_SHARE_IN_COMPANY */
|
||||
{CmdBuyCompany, 0}, /* CMD_BUY_COMANY */
|
||||
|
||||
{NULL, 0}, /* 92, unused */
|
||||
{NULL, 0}, /* 93, unused */
|
||||
{NULL, 0}, /* 94, unused */
|
||||
{NULL, 0}, /* 95, unused */
|
||||
{NULL, 0}, /* 96, unused */
|
||||
{NULL, 0}, /* 97, unused */
|
||||
{CmdBuildTown, CMD_OFFLINE}, /* CMD_BUILD_TOWN */
|
||||
{CmdRenameTown, CMD_SERVER}, /* CMD_RENAME_TOWN */
|
||||
{CmdDoTownAction, 0}, /* CMD_DO_TOWN_ACTION */
|
||||
|
||||
{CmdOrderRefit, 0}, /* 98, CMD_ORDER_REFIT */
|
||||
{CmdCloneOrder, 0}, /* 99, CMD_CLONE_ORDER */
|
||||
{CmdSetRoadDriveSide, CMD_SERVER}, /* CMD_SET_ROAD_DRIVE_SIDE */
|
||||
{CmdChangeDifficultyLevel, CMD_SERVER}, /* CMD_CHANGE_DIFFICULTY_LEVEL */
|
||||
|
||||
{CmdClearArea, 0}, /* 100, CMD_CLEAR_AREA */
|
||||
{NULL, 0}, /* 101, unused */
|
||||
{CmdStartStopShip, 0}, /* CMD_START_STOP_SHIP */
|
||||
{CmdSellShip, 0}, /* CMD_SELL_SHIP */
|
||||
{CmdBuildShip, 0}, /* CMD_BUILD_SHIP */
|
||||
{CmdSendShipToDepot, 0}, /* CMD_SEND_SHIP_TO_DEPOT */
|
||||
{CmdRefitShip, 0}, /* CMD_REFIT_SHIP */
|
||||
|
||||
{CmdMoneyCheat, CMD_OFFLINE}, /* 102, CMD_MONEY_CHEAT */
|
||||
{CmdBuildCanal, CMD_AUTO}, /* 103, CMD_BUILD_CANAL */
|
||||
{CmdPlayerCtrl, 0}, /* 104, CMD_PLAYER_CTRL */
|
||||
{CmdOrderRefit, 0}, /* CMD_ORDER_REFIT */
|
||||
{CmdCloneOrder, 0}, /* CMD_CLONE_ORDER */
|
||||
|
||||
{CmdLevelLand, CMD_AUTO}, /* 105, CMD_LEVEL_LAND */
|
||||
{CmdClearArea, 0}, /* CMD_CLEAR_AREA */
|
||||
|
||||
{CmdRefitRailVehicle, 0}, /* 106, CMD_REFIT_RAIL_VEHICLE */
|
||||
{CmdRestoreOrderIndex, 0}, /* 107, CMD_RESTORE_ORDER_INDEX */
|
||||
{CmdBuildLock, CMD_AUTO}, /* 108, CMD_BUILD_LOCK */
|
||||
{NULL, 0}, /* 109, unused */
|
||||
{CmdBuildSignalTrack, CMD_AUTO}, /* 110, CMD_BUILD_SIGNAL_TRACK */
|
||||
{CmdRemoveSignalTrack, CMD_AUTO}, /* 111, CMD_REMOVE_SIGNAL_TRACK */
|
||||
{NULL, 0}, /* 112, unused */
|
||||
{CmdGiveMoney, 0}, /* 113, CMD_GIVE_MONEY */
|
||||
{CmdChangePatchSetting, CMD_SERVER}, /* 114, CMD_CHANGE_PATCH_SETTING */
|
||||
{CmdSetAutoReplace, 0}, /* 115, CMD_SET_AUTOREPLACE */
|
||||
{CmdCloneVehicle, 0}, /* 116, CMD_CLONE_VEHICLE */
|
||||
{CmdMassStartStopVehicle, 0}, /* 117, CMD_MASS_START_STOP */
|
||||
{CmdDepotSellAllVehicles, 0}, /* 118, CMD_DEPOT_SELL_ALL_VEHICLES */
|
||||
{CmdDepotMassAutoReplace, 0}, /* 119, CMD_DEPOT_MASS_AUTOREPLACE */
|
||||
{CmdCreateGroup, 0}, /* 120, CMD_CREATE_GROUP */
|
||||
{CmdDeleteGroup, 0}, /* 121, CMD_DELETE_GROUP */
|
||||
{CmdRenameGroup, 0}, /* 122, CMD_RENAME_GROUP */
|
||||
{CmdAddVehicleGroup, 0}, /* 123, CMD_ADD_VEHICLE_GROUP */
|
||||
{CmdAddSharedVehicleGroup, 0}, /* 124, CMD_ADD_SHARE_VEHICLE_GROUP */
|
||||
{CmdRemoveAllVehiclesGroup, 0}, /* 125, CMD_REMOVE_ALL_VEHICLES_GROUP */
|
||||
{CmdSetGroupReplaceProtection, 0}, /* 126, CMD_SET_GROUP_REPLACE_PROTECTION */
|
||||
{CmdMoveOrder, 0}, /* 127, CMD_MOVE_ORDER */
|
||||
{CmdChangeTimetable, 0}, /* 128, CMD_CHANGE_TIMETABLE */
|
||||
{CmdSetVehicleOnTime, 0}, /* 129, CMD_SET_VEHICLE_ON_TIME */
|
||||
{CmdAutofillTimetable, 0}, /* 130, CMD_AUTOFILL_TIMETABLE */
|
||||
{CmdMoneyCheat, CMD_OFFLINE}, /* CMD_MONEY_CHEAT */
|
||||
{CmdBuildCanal, CMD_AUTO}, /* CMD_BUILD_CANAL */
|
||||
{CmdPlayerCtrl, 0}, /* CMD_PLAYER_CTRL */
|
||||
|
||||
{CmdLevelLand, CMD_AUTO}, /* CMD_LEVEL_LAND */
|
||||
|
||||
{CmdRefitRailVehicle, 0}, /* CMD_REFIT_RAIL_VEHICLE */
|
||||
{CmdRestoreOrderIndex, 0}, /* CMD_RESTORE_ORDER_INDEX */
|
||||
{CmdBuildLock, CMD_AUTO}, /* CMD_BUILD_LOCK */
|
||||
|
||||
{CmdBuildSignalTrack, CMD_AUTO}, /* CMD_BUILD_SIGNAL_TRACK */
|
||||
{CmdRemoveSignalTrack, CMD_AUTO}, /* CMD_REMOVE_SIGNAL_TRACK */
|
||||
|
||||
{CmdGiveMoney, 0}, /* CMD_GIVE_MONEY */
|
||||
{CmdChangePatchSetting, CMD_SERVER}, /* CMD_CHANGE_PATCH_SETTING */
|
||||
{CmdSetAutoReplace, 0}, /* CMD_SET_AUTOREPLACE */
|
||||
{CmdCloneVehicle, 0}, /* CMD_CLONE_VEHICLE */
|
||||
{CmdMassStartStopVehicle, 0}, /* CMD_MASS_START_STOP */
|
||||
{CmdDepotSellAllVehicles, 0}, /* CMD_DEPOT_SELL_ALL_VEHICLES */
|
||||
{CmdDepotMassAutoReplace, 0}, /* CMD_DEPOT_MASS_AUTOREPLACE */
|
||||
{CmdCreateGroup, 0}, /* CMD_CREATE_GROUP */
|
||||
{CmdDeleteGroup, 0}, /* CMD_DELETE_GROUP */
|
||||
{CmdRenameGroup, 0}, /* CMD_RENAME_GROUP */
|
||||
{CmdAddVehicleGroup, 0}, /* CMD_ADD_VEHICLE_GROUP */
|
||||
{CmdAddSharedVehicleGroup, 0}, /* CMD_ADD_SHARE_VEHICLE_GROUP */
|
||||
{CmdRemoveAllVehiclesGroup, 0}, /* CMD_REMOVE_ALL_VEHICLES_GROUP */
|
||||
{CmdSetGroupReplaceProtection, 0}, /* CMD_SET_GROUP_REPLACE_PROTECTION */
|
||||
{CmdMoveOrder, 0}, /* CMD_MOVE_ORDER */
|
||||
{CmdChangeTimetable, 0}, /* CMD_CHANGE_TIMETABLE */
|
||||
{CmdSetVehicleOnTime, 0}, /* CMD_SET_VEHICLE_ON_TIME */
|
||||
{CmdAutofillTimetable, 0}, /* CMD_AUTOFILL_TIMETABLE */
|
||||
};
|
||||
|
||||
/*!
|
||||
@@ -413,7 +399,7 @@ CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32
|
||||
CommandProc *proc;
|
||||
|
||||
/* Do not even think about executing out-of-bounds tile-commands */
|
||||
if (tile >= MapSize() || IsTileType(tile, MP_VOID)) {
|
||||
if (!IsValidTile(tile)) {
|
||||
_cmd_text = NULL;
|
||||
return CMD_ERROR;
|
||||
}
|
||||
@@ -425,7 +411,7 @@ CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32
|
||||
_docommand_recursive++;
|
||||
|
||||
/* only execute the test call if it's toplevel, or we're not execing. */
|
||||
if (_docommand_recursive == 1 || !(flags & DC_EXEC) || (flags & DC_FORCETEST) ) {
|
||||
if (_docommand_recursive == 1 || !(flags & DC_EXEC) ) {
|
||||
SetTownRatingTestMode(true);
|
||||
res = proc(tile, flags & ~DC_EXEC, p1, p2);
|
||||
SetTownRatingTestMode(false);
|
||||
@@ -436,6 +422,7 @@ CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32
|
||||
|
||||
if (_docommand_recursive == 1 &&
|
||||
!(flags & DC_QUERY_COST) &&
|
||||
!(flags & DC_BANKRUPT) &&
|
||||
res.GetCost() != 0 &&
|
||||
!CheckPlayerHasMoney(res)) {
|
||||
goto error;
|
||||
@@ -460,7 +447,7 @@ error:
|
||||
}
|
||||
|
||||
/* if toplevel, subtract the money. */
|
||||
if (--_docommand_recursive == 0) {
|
||||
if (--_docommand_recursive == 0 && !(flags & DC_BANKRUPT)) {
|
||||
SubtractMoneyFromPlayer(res);
|
||||
/* XXX - Old AI hack which doesn't use DoCommandDP; update last build coord of player */
|
||||
if (tile != 0 && IsValidPlayer(_current_player)) {
|
||||
@@ -512,7 +499,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
|
||||
int y = TileY(tile) * TILE_SIZE;
|
||||
|
||||
/* Do not even think about executing out-of-bounds tile-commands */
|
||||
if (tile >= MapSize() || IsTileType(tile, MP_VOID)) {
|
||||
if (!IsValidTile(tile)) {
|
||||
_cmd_text = NULL;
|
||||
return false;
|
||||
}
|
||||
@@ -571,7 +558,9 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
|
||||
!(cmd & (CMD_NETWORK_COMMAND | CMD_SHOW_NO_ERROR)) &&
|
||||
(cmd & 0xFF) != CMD_PAUSE) {
|
||||
/* estimate the cost. */
|
||||
SetTownRatingTestMode(true);
|
||||
res = proc(tile, flags, p1, p2);
|
||||
SetTownRatingTestMode(false);
|
||||
if (CmdFailed(res)) {
|
||||
res.SetGlobalErrorMessage();
|
||||
ShowErrorMessage(_error_message, error_part1, x, y);
|
||||
@@ -642,6 +631,9 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
|
||||
|
||||
SubtractMoneyFromPlayer(res2);
|
||||
|
||||
/* update signals if needed */
|
||||
UpdateSignalsInBuffer();
|
||||
|
||||
if (IsLocalPlayer() && _game_mode != GM_EDITOR) {
|
||||
if (res2.GetCost() != 0 && tile != 0) ShowCostOrIncomeAnimation(x, y, GetSlopeZ(x, y), res2.GetCost());
|
||||
if (_additional_cash_required != 0) {
|
||||
|
@@ -106,156 +106,156 @@ public:
|
||||
* @see _command_proc_table
|
||||
*/
|
||||
enum {
|
||||
CMD_BUILD_RAILROAD_TRACK = 0, ///< build a rail track
|
||||
CMD_REMOVE_RAILROAD_TRACK = 1, ///< remove a rail track
|
||||
CMD_BUILD_SINGLE_RAIL = 2, ///< build a single rail track
|
||||
CMD_REMOVE_SINGLE_RAIL = 3, ///< remove a single rail track
|
||||
CMD_LANDSCAPE_CLEAR = 4, ///< demolish a tile
|
||||
CMD_BUILD_BRIDGE = 5, ///< build a bridge
|
||||
CMD_BUILD_RAILROAD_STATION = 6, ///< build a railroad station
|
||||
CMD_BUILD_TRAIN_DEPOT = 7, ///< build a train depot
|
||||
CMD_BUILD_SIGNALS = 8, ///< build a signal
|
||||
CMD_REMOVE_SIGNALS = 9, ///< remove a signal
|
||||
CMD_TERRAFORM_LAND = 10, ///< terraform a tile
|
||||
CMD_PURCHASE_LAND_AREA = 11, ///< purchase a tile
|
||||
CMD_SELL_LAND_AREA = 12, ///< sell a bought tile before
|
||||
CMD_BUILD_TUNNEL = 13, ///< build a tunnel
|
||||
CMD_BUILD_RAILROAD_TRACK, ///< build a rail track
|
||||
CMD_REMOVE_RAILROAD_TRACK, ///< remove a rail track
|
||||
CMD_BUILD_SINGLE_RAIL, ///< build a single rail track
|
||||
CMD_REMOVE_SINGLE_RAIL, ///< remove a single rail track
|
||||
CMD_LANDSCAPE_CLEAR, ///< demolish a tile
|
||||
CMD_BUILD_BRIDGE, ///< build a bridge
|
||||
CMD_BUILD_RAILROAD_STATION, ///< build a railroad station
|
||||
CMD_BUILD_TRAIN_DEPOT, ///< build a train depot
|
||||
CMD_BUILD_SIGNALS, ///< build a signal
|
||||
CMD_REMOVE_SIGNALS, ///< remove a signal
|
||||
CMD_TERRAFORM_LAND, ///< terraform a tile
|
||||
CMD_PURCHASE_LAND_AREA, ///< purchase a tile
|
||||
CMD_SELL_LAND_AREA, ///< sell a bought tile before
|
||||
CMD_BUILD_TUNNEL, ///< build a tunnel
|
||||
|
||||
CMD_REMOVE_FROM_RAILROAD_STATION = 14, ///< remove a tile station
|
||||
CMD_CONVERT_RAIL = 15, ///< convert a rail type
|
||||
CMD_REMOVE_FROM_RAILROAD_STATION, ///< remove a tile station
|
||||
CMD_CONVERT_RAIL, ///< convert a rail type
|
||||
|
||||
CMD_BUILD_TRAIN_WAYPOINT = 16, ///< build a waypoint
|
||||
CMD_RENAME_WAYPOINT = 17, ///< rename a waypoint
|
||||
CMD_REMOVE_TRAIN_WAYPOINT = 18, ///< remove a waypoint
|
||||
CMD_BUILD_TRAIN_WAYPOINT, ///< build a waypoint
|
||||
CMD_RENAME_WAYPOINT, ///< rename a waypoint
|
||||
CMD_REMOVE_TRAIN_WAYPOINT, ///< remove a waypoint
|
||||
|
||||
CMD_BUILD_ROAD_STOP = 21, ///< build a road stop
|
||||
CMD_REMOVE_ROAD_STOP = 22, ///< remove a road stop
|
||||
CMD_BUILD_LONG_ROAD = 23, ///< build a complete road (not a "half" one)
|
||||
CMD_REMOVE_LONG_ROAD = 24, ///< remove a complete road (not a "half" one)
|
||||
CMD_BUILD_ROAD = 25, ///< build a "half" road
|
||||
CMD_REMOVE_ROAD = 26, ///< remove a "half" road
|
||||
CMD_BUILD_ROAD_DEPOT = 27, ///< build a road depot
|
||||
CMD_BUILD_ROAD_STOP, ///< build a road stop
|
||||
CMD_REMOVE_ROAD_STOP, ///< remove a road stop
|
||||
CMD_BUILD_LONG_ROAD, ///< build a complete road (not a "half" one)
|
||||
CMD_REMOVE_LONG_ROAD, ///< remove a complete road (not a "half" one)
|
||||
CMD_BUILD_ROAD, ///< build a "half" road
|
||||
CMD_REMOVE_ROAD, ///< remove a "half" road
|
||||
CMD_BUILD_ROAD_DEPOT, ///< build a road depot
|
||||
|
||||
CMD_BUILD_AIRPORT = 29, ///< build an airport
|
||||
CMD_BUILD_AIRPORT, ///< build an airport
|
||||
|
||||
CMD_BUILD_DOCK = 30, ///< build a dock
|
||||
CMD_BUILD_DOCK, ///< build a dock
|
||||
|
||||
CMD_BUILD_SHIP_DEPOT = 31, ///< build a ship depot
|
||||
CMD_BUILD_BUOY = 32, ///< build a buoy
|
||||
CMD_BUILD_SHIP_DEPOT, ///< build a ship depot
|
||||
CMD_BUILD_BUOY, ///< build a buoy
|
||||
|
||||
CMD_PLANT_TREE = 33, ///< plant a tree
|
||||
CMD_PLANT_TREE, ///< plant a tree
|
||||
|
||||
CMD_BUILD_RAIL_VEHICLE = 34, ///< build a rail vehicle
|
||||
CMD_MOVE_RAIL_VEHICLE = 35, ///< move a rail vehicle (in the depot)
|
||||
CMD_BUILD_RAIL_VEHICLE, ///< build a rail vehicle
|
||||
CMD_MOVE_RAIL_VEHICLE, ///< move a rail vehicle (in the depot)
|
||||
|
||||
CMD_START_STOP_TRAIN = 36, ///< start or stop a train
|
||||
CMD_START_STOP_TRAIN, ///< start or stop a train
|
||||
|
||||
CMD_SELL_RAIL_WAGON = 38, ///< sell a rail wagon
|
||||
CMD_SELL_RAIL_WAGON, ///< sell a rail wagon
|
||||
|
||||
CMD_SEND_TRAIN_TO_DEPOT = 39, ///< send a train to a depot
|
||||
CMD_FORCE_TRAIN_PROCEED = 40, ///< proceed a train to pass a red signal
|
||||
CMD_REVERSE_TRAIN_DIRECTION = 41, ///< turn a train around
|
||||
CMD_SEND_TRAIN_TO_DEPOT, ///< send a train to a depot
|
||||
CMD_FORCE_TRAIN_PROCEED, ///< proceed a train to pass a red signal
|
||||
CMD_REVERSE_TRAIN_DIRECTION, ///< turn a train around
|
||||
|
||||
CMD_MODIFY_ORDER = 42, ///< modify an order (like set full-load)
|
||||
CMD_SKIP_TO_ORDER = 43, ///< skip an order to the next of specific one
|
||||
CMD_DELETE_ORDER = 44, ///< delete an order
|
||||
CMD_INSERT_ORDER = 45, ///< insert a new order
|
||||
CMD_MODIFY_ORDER, ///< modify an order (like set full-load)
|
||||
CMD_SKIP_TO_ORDER, ///< skip an order to the next of specific one
|
||||
CMD_DELETE_ORDER, ///< delete an order
|
||||
CMD_INSERT_ORDER, ///< insert a new order
|
||||
|
||||
CMD_CHANGE_SERVICE_INT = 46, ///< change the server interval of a vehicle
|
||||
CMD_CHANGE_SERVICE_INT, ///< change the server interval of a vehicle
|
||||
|
||||
CMD_BUILD_INDUSTRY = 47, ///< build a new industry
|
||||
CMD_BUILD_INDUSTRY, ///< build a new industry
|
||||
|
||||
CMD_BUILD_COMPANY_HQ = 48, ///< build the company headquarter
|
||||
CMD_SET_PLAYER_FACE = 49, ///< set the face of the player/company
|
||||
CMD_SET_PLAYER_COLOR = 50, ///< set the color of the player/company
|
||||
CMD_BUILD_COMPANY_HQ, ///< build the company headquarter
|
||||
CMD_SET_PLAYER_FACE, ///< set the face of the player/company
|
||||
CMD_SET_PLAYER_COLOR, ///< set the color of the player/company
|
||||
|
||||
CMD_INCREASE_LOAN = 51, ///< increase the loan from the bank
|
||||
CMD_DECREASE_LOAN = 52, ///< decrease the loan from the bank
|
||||
CMD_INCREASE_LOAN, ///< increase the loan from the bank
|
||||
CMD_DECREASE_LOAN, ///< decrease the loan from the bank
|
||||
|
||||
CMD_WANT_ENGINE_PREVIEW = 53, ///< confirm the preview of an engine
|
||||
CMD_WANT_ENGINE_PREVIEW, ///< confirm the preview of an engine
|
||||
|
||||
CMD_NAME_VEHICLE = 54, ///< rename a whole vehicle
|
||||
CMD_RENAME_ENGINE = 55, ///< rename a engine (in the engine list)
|
||||
CMD_CHANGE_COMPANY_NAME = 56, ///< change the company name
|
||||
CMD_CHANGE_PRESIDENT_NAME = 57, ///< change the president name
|
||||
CMD_RENAME_STATION = 58, ///< rename a station
|
||||
CMD_NAME_VEHICLE, ///< rename a whole vehicle
|
||||
CMD_RENAME_ENGINE, ///< rename a engine (in the engine list)
|
||||
CMD_CHANGE_COMPANY_NAME, ///< change the company name
|
||||
CMD_CHANGE_PRESIDENT_NAME, ///< change the president name
|
||||
CMD_RENAME_STATION, ///< rename a station
|
||||
|
||||
CMD_SELL_AIRCRAFT = 59, ///< sell an aircraft
|
||||
CMD_START_STOP_AIRCRAFT = 60, ///< start/stop an aircraft
|
||||
CMD_BUILD_AIRCRAFT = 61, ///< build an aircraft
|
||||
CMD_SEND_AIRCRAFT_TO_HANGAR = 62, ///< send an aircraft to a hanger
|
||||
CMD_REFIT_AIRCRAFT = 64, ///< refit the cargo space of an aircraft
|
||||
CMD_SELL_AIRCRAFT, ///< sell an aircraft
|
||||
CMD_START_STOP_AIRCRAFT, ///< start/stop an aircraft
|
||||
CMD_BUILD_AIRCRAFT, ///< build an aircraft
|
||||
CMD_SEND_AIRCRAFT_TO_HANGAR, ///< send an aircraft to a hanger
|
||||
CMD_REFIT_AIRCRAFT, ///< refit the cargo space of an aircraft
|
||||
|
||||
CMD_PLACE_SIGN = 65, ///< place a sign
|
||||
CMD_RENAME_SIGN = 66, ///< rename a sign
|
||||
CMD_PLACE_SIGN, ///< place a sign
|
||||
CMD_RENAME_SIGN, ///< rename a sign
|
||||
|
||||
CMD_BUILD_ROAD_VEH = 67, ///< build a road vehicle
|
||||
CMD_START_STOP_ROADVEH = 68, ///< start/stop a road vehicle
|
||||
CMD_SELL_ROAD_VEH = 69, ///< sell a road vehicle
|
||||
CMD_SEND_ROADVEH_TO_DEPOT = 70, ///< send a road vehicle to the depot
|
||||
CMD_TURN_ROADVEH = 71, ///< turn a road vehicle around
|
||||
CMD_REFIT_ROAD_VEH = 72, ///< refit the cargo space of a road vehicle
|
||||
CMD_BUILD_ROAD_VEH, ///< build a road vehicle
|
||||
CMD_START_STOP_ROADVEH, ///< start/stop a road vehicle
|
||||
CMD_SELL_ROAD_VEH, ///< sell a road vehicle
|
||||
CMD_SEND_ROADVEH_TO_DEPOT, ///< send a road vehicle to the depot
|
||||
CMD_TURN_ROADVEH, ///< turn a road vehicle around
|
||||
CMD_REFIT_ROAD_VEH, ///< refit the cargo space of a road vehicle
|
||||
|
||||
CMD_PAUSE = 73, ///< pause the game
|
||||
CMD_PAUSE, ///< pause the game
|
||||
|
||||
CMD_BUY_SHARE_IN_COMPANY = 74, ///< buy a share from a company
|
||||
CMD_SELL_SHARE_IN_COMPANY = 75, ///< sell a share from a company
|
||||
CMD_BUY_COMPANY = 76, ///< buy a company which is bankrupt
|
||||
CMD_BUY_SHARE_IN_COMPANY, ///< buy a share from a company
|
||||
CMD_SELL_SHARE_IN_COMPANY, ///< sell a share from a company
|
||||
CMD_BUY_COMPANY, ///< buy a company which is bankrupt
|
||||
|
||||
CMD_BUILD_TOWN = 77, ///< build a town
|
||||
CMD_BUILD_TOWN, ///< build a town
|
||||
|
||||
CMD_RENAME_TOWN = 80, ///< rename a town
|
||||
CMD_DO_TOWN_ACTION = 81, ///< do a action from the town detail window (like advertises or bribe)
|
||||
CMD_RENAME_TOWN, ///< rename a town
|
||||
CMD_DO_TOWN_ACTION, ///< do a action from the town detail window (like advertises or bribe)
|
||||
|
||||
CMD_SET_ROAD_DRIVE_SIDE = 82, ///< set the side where the road vehicles drive
|
||||
CMD_SET_ROAD_DRIVE_SIDE, ///< set the side where the road vehicles drive
|
||||
|
||||
CMD_CHANGE_DIFFICULTY_LEVEL = 85, ///< change the difficult of a game (each setting for it own)
|
||||
CMD_CHANGE_DIFFICULTY_LEVEL, ///< change the difficult of a game (each setting for it own)
|
||||
|
||||
CMD_START_STOP_SHIP = 86, ///< start/stop a ship
|
||||
CMD_SELL_SHIP = 87, ///< sell a ship
|
||||
CMD_BUILD_SHIP = 88, ///< build a new ship
|
||||
CMD_SEND_SHIP_TO_DEPOT = 89, ///< send a ship to a depot
|
||||
CMD_REFIT_SHIP = 91, ///< refit the cargo space of a ship
|
||||
CMD_START_STOP_SHIP, ///< start/stop a ship
|
||||
CMD_SELL_SHIP, ///< sell a ship
|
||||
CMD_BUILD_SHIP, ///< build a new ship
|
||||
CMD_SEND_SHIP_TO_DEPOT, ///< send a ship to a depot
|
||||
CMD_REFIT_SHIP, ///< refit the cargo space of a ship
|
||||
|
||||
CMD_ORDER_REFIT = 98, ///< change the refit informaction of an order (for "goto depot" )
|
||||
CMD_CLONE_ORDER = 99, ///< clone (and share) an order
|
||||
CMD_CLEAR_AREA = 100, ///< clear an area
|
||||
CMD_ORDER_REFIT, ///< change the refit informaction of an order (for "goto depot" )
|
||||
CMD_CLONE_ORDER, ///< clone (and share) an order
|
||||
CMD_CLEAR_AREA, ///< clear an area
|
||||
|
||||
CMD_MONEY_CHEAT = 102, ///< do the money cheat
|
||||
CMD_BUILD_CANAL = 103, ///< build a canal
|
||||
CMD_MONEY_CHEAT, ///< do the money cheat
|
||||
CMD_BUILD_CANAL, ///< build a canal
|
||||
|
||||
CMD_PLAYER_CTRL = 104, ///< used in multiplayer to create a new player etc.
|
||||
CMD_LEVEL_LAND = 105, ///< level land
|
||||
CMD_PLAYER_CTRL, ///< used in multiplayer to create a new player etc.
|
||||
CMD_LEVEL_LAND, ///< level land
|
||||
|
||||
CMD_REFIT_RAIL_VEHICLE = 106, ///< refit the cargo space of a train
|
||||
CMD_RESTORE_ORDER_INDEX = 107, ///< restore vehicle order-index and service interval
|
||||
CMD_BUILD_LOCK = 108, ///< build a lock
|
||||
CMD_REFIT_RAIL_VEHICLE, ///< refit the cargo space of a train
|
||||
CMD_RESTORE_ORDER_INDEX, ///< restore vehicle order-index and service interval
|
||||
CMD_BUILD_LOCK, ///< build a lock
|
||||
|
||||
CMD_BUILD_SIGNAL_TRACK = 110, ///< add signals along a track (by dragging)
|
||||
CMD_REMOVE_SIGNAL_TRACK = 111, ///< remove signals along a track (by dragging)
|
||||
CMD_BUILD_SIGNAL_TRACK, ///< add signals along a track (by dragging)
|
||||
CMD_REMOVE_SIGNAL_TRACK, ///< remove signals along a track (by dragging)
|
||||
|
||||
CMD_GIVE_MONEY = 113, ///< give money to an other player
|
||||
CMD_CHANGE_PATCH_SETTING = 114, ///< change a patch setting
|
||||
CMD_GIVE_MONEY, ///< give money to an other player
|
||||
CMD_CHANGE_PATCH_SETTING, ///< change a patch setting
|
||||
|
||||
CMD_SET_AUTOREPLACE = 115, ///< set an autoreplace entry
|
||||
CMD_SET_AUTOREPLACE, ///< set an autoreplace entry
|
||||
|
||||
CMD_CLONE_VEHICLE = 116, ///< clone a vehicle
|
||||
CMD_MASS_START_STOP = 117, ///< start/stop all vehicles (in a depot)
|
||||
CMD_DEPOT_SELL_ALL_VEHICLES = 118, ///< sell all vehicles which are in a given depot
|
||||
CMD_DEPOT_MASS_AUTOREPLACE = 119, ///< force the autoreplace to take action in a given depot
|
||||
CMD_CLONE_VEHICLE, ///< clone a vehicle
|
||||
CMD_MASS_START_STOP, ///< start/stop all vehicles (in a depot)
|
||||
CMD_DEPOT_SELL_ALL_VEHICLES, ///< sell all vehicles which are in a given depot
|
||||
CMD_DEPOT_MASS_AUTOREPLACE, ///< force the autoreplace to take action in a given depot
|
||||
|
||||
CMD_CREATE_GROUP = 120, ///< create a new group
|
||||
CMD_DELETE_GROUP = 121, ///< delete a group
|
||||
CMD_RENAME_GROUP = 122, ///< rename a group
|
||||
CMD_ADD_VEHICLE_GROUP = 123, ///< add a vehicle to a group
|
||||
CMD_ADD_SHARED_VEHICLE_GROUP = 124, ///< add all other shared vehicles to a group which are missing
|
||||
CMD_REMOVE_ALL_VEHICLES_GROUP = 125, ///< remove all vehicles from a group
|
||||
CMD_SET_GROUP_REPLACE_PROTECTION = 126, ///< set the autoreplace-protection for a group
|
||||
CMD_CREATE_GROUP, ///< create a new group
|
||||
CMD_DELETE_GROUP, ///< delete a group
|
||||
CMD_RENAME_GROUP, ///< rename a group
|
||||
CMD_ADD_VEHICLE_GROUP, ///< add a vehicle to a group
|
||||
CMD_ADD_SHARED_VEHICLE_GROUP, ///< add all other shared vehicles to a group which are missing
|
||||
CMD_REMOVE_ALL_VEHICLES_GROUP, ///< remove all vehicles from a group
|
||||
CMD_SET_GROUP_REPLACE_PROTECTION, ///< set the autoreplace-protection for a group
|
||||
|
||||
CMD_MOVE_ORDER = 127, ///< move an order
|
||||
CMD_CHANGE_TIMETABLE = 128, ///< change the timetable for a vehicle
|
||||
CMD_SET_VEHICLE_ON_TIME = 129, ///< set the vehicle on time feature (timetable)
|
||||
CMD_AUTOFILL_TIMETABLE = 130, ///< autofill the timetable
|
||||
CMD_MOVE_ORDER, ///< move an order
|
||||
CMD_CHANGE_TIMETABLE, ///< change the timetable for a vehicle
|
||||
CMD_SET_VEHICLE_ON_TIME, ///< set the vehicle on time feature (timetable)
|
||||
CMD_AUTOFILL_TIMETABLE, ///< autofill the timetable
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -271,7 +271,7 @@ enum {
|
||||
DC_NO_RAIL_OVERLAP = 0x10, ///< don't allow overlap of rails (used in buildrail)
|
||||
DC_AI_BUILDING = 0x20, ///< special building rules for AI
|
||||
DC_NO_TOWN_RATING = 0x40, ///< town rating does not disallow you from building
|
||||
DC_FORCETEST = 0x80, ///< force test too.
|
||||
DC_BANKRUPT = 0x80, ///< company bankrupts, skip money check, skip vehicle on tile check in some cases
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -810,7 +810,7 @@ DEF_CONSOLE_CMD(ConExec)
|
||||
|
||||
if (argc < 2) return false;
|
||||
|
||||
_script_file = fopen(argv[1], "r");
|
||||
_script_file = FioFOpenFile(argv[1], "r", BASE_DIR);
|
||||
|
||||
if (_script_file == NULL) {
|
||||
if (argc == 2 || atoi(argv[2]) != 0) IConsoleError("script file not found");
|
||||
@@ -834,7 +834,7 @@ DEF_CONSOLE_CMD(ConExec)
|
||||
IConsoleError("Encountered errror while trying to read from script file");
|
||||
|
||||
_script_running = false;
|
||||
fclose(_script_file);
|
||||
FioFCloseFile(_script_file);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
24
src/core/alloc_func.cpp
Normal file
24
src/core/alloc_func.cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
/* $Id$ */
|
||||
|
||||
/** @file alloc_func.cpp functions to 'handle' memory allocation errors */
|
||||
|
||||
#include "../stdafx.h"
|
||||
#include "alloc_func.hpp"
|
||||
|
||||
/**
|
||||
* Function to exit with an error message after malloc() or calloc() have failed
|
||||
* @param size number of bytes we tried to allocate
|
||||
*/
|
||||
void MallocError(size_t size)
|
||||
{
|
||||
error("Out of memory. Cannot allocate %i bytes", size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to exit with an error message after realloc() have failed
|
||||
* @param size number of bytes we tried to allocate
|
||||
*/
|
||||
void ReallocError(size_t size)
|
||||
{
|
||||
error("Out of memory. Cannot reallocate %i bytes", size);
|
||||
}
|
@@ -5,6 +5,15 @@
|
||||
#ifndef ALLOC_FUNC_HPP
|
||||
#define ALLOC_FUNC_HPP
|
||||
|
||||
/**
|
||||
* Functions to exit badly with an error message.
|
||||
* It has to be linked so the error messages are not
|
||||
* duplicated in each object file making the final
|
||||
* binary needlessly large.
|
||||
*/
|
||||
void MallocError(size_t size);
|
||||
void ReallocError(size_t size);
|
||||
|
||||
/**
|
||||
* Simplified allocation function that allocates the specified number of
|
||||
* elements of the given type. It also explicitly casts it to the requested
|
||||
@@ -25,7 +34,7 @@ template <typename T> FORCEINLINE T* MallocT(size_t num_elements)
|
||||
if (num_elements == 0) return NULL;
|
||||
|
||||
T *t_ptr = (T*)malloc(num_elements * sizeof(T));
|
||||
if (t_ptr == NULL) error("Out of memory. Cannot allocate %i bytes", num_elements * sizeof(T));
|
||||
if (t_ptr == NULL) MallocError(num_elements * sizeof(T));
|
||||
return t_ptr;
|
||||
}
|
||||
|
||||
@@ -49,7 +58,7 @@ template <typename T> FORCEINLINE T* CallocT(size_t num_elements)
|
||||
if (num_elements == 0) return NULL;
|
||||
|
||||
T *t_ptr = (T*)calloc(num_elements, sizeof(T));
|
||||
if (t_ptr == NULL) error("Out of memory. Cannot allocate %i bytes", num_elements * sizeof(T));
|
||||
if (t_ptr == NULL) MallocError(num_elements * sizeof(T));
|
||||
return t_ptr;
|
||||
}
|
||||
|
||||
@@ -77,8 +86,39 @@ template <typename T> FORCEINLINE T* ReallocT(T *t_ptr, size_t num_elements)
|
||||
}
|
||||
|
||||
t_ptr = (T*)realloc(t_ptr, num_elements * sizeof(T));
|
||||
if (t_ptr == NULL) error("Out of memory. Cannot reallocate %i bytes", num_elements * sizeof(T));
|
||||
if (t_ptr == NULL) ReallocError(num_elements * sizeof(T));
|
||||
return t_ptr;
|
||||
}
|
||||
|
||||
/**
|
||||
* A small 'wrapper' for allocations that can be done on most OSes on the
|
||||
* stack, but are just too large to fit in the stack on devices with a small
|
||||
* stack such as the NDS.
|
||||
* So when it is possible a stack allocation is made, otherwise a heap
|
||||
* allocation is made and this is freed once the struct goes out of scope.
|
||||
* @param T the type to make the allocation for
|
||||
* @param length the amount of items to allocate
|
||||
*/
|
||||
template <typename T, size_t length>
|
||||
struct SmallStackSafeStackAlloc {
|
||||
#if !defined(__NDS__)
|
||||
/** Storing the data on the stack */
|
||||
T data[length];
|
||||
#else
|
||||
/** Storing it on the heap */
|
||||
T *data;
|
||||
|
||||
/** Allocating the memory */
|
||||
SmallStackSafeStackAlloc() : data(MallocT<T>(length)) {}
|
||||
/** And freeing when it goes out of scope */
|
||||
~SmallStackSafeStackAlloc() { free(data); }
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Gets a pointer to the data stored in this wrapper.
|
||||
* @return the pointer.
|
||||
*/
|
||||
operator T* () { return data; }
|
||||
};
|
||||
|
||||
#endif /* ALLOC_FUNC_HPP */
|
||||
|
@@ -168,6 +168,18 @@ static inline int32 ClampToI32(const int64 a)
|
||||
return (int32)a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reduce an usigned 64-bit int to an unsigned 16-bit one
|
||||
*
|
||||
* @param a The 64-bit value to clamp
|
||||
* @return The 64-bit value reduced to a 16-bit value
|
||||
* @see ClampU(uint, uint, uint)
|
||||
*/
|
||||
static inline uint16 ClampToU16(const uint64 a)
|
||||
{
|
||||
return min(a, 0xFFFF);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the (absolute) difference between two (scalar) variables
|
||||
*
|
||||
|
@@ -6,20 +6,26 @@
|
||||
#include "random_func.hpp"
|
||||
#include "bitmath_func.hpp"
|
||||
|
||||
uint32 _random_seeds[2][2];
|
||||
Randomizer _random, _interactive_random;
|
||||
|
||||
uint32 InteractiveRandom()
|
||||
uint32 Randomizer::Next()
|
||||
{
|
||||
const uint32 s = _random_seeds[1][0];
|
||||
const uint32 t = _random_seeds[1][1];
|
||||
const uint32 s = this->state[0];
|
||||
const uint32 t = this->state[1];
|
||||
|
||||
_random_seeds[1][0] = s + ROR(t ^ 0x1234567F, 7) + 1;
|
||||
return _random_seeds[1][1] = ROR(s, 3) - 1;
|
||||
this->state[0] = s + ROR(t ^ 0x1234567F, 7) + 1;
|
||||
return this->state[1] = ROR(s, 3) - 1;
|
||||
}
|
||||
|
||||
uint InteractiveRandomRange(uint max)
|
||||
uint32 Randomizer::Next(uint16 max)
|
||||
{
|
||||
return GB(InteractiveRandom(), 0, 16) * max >> 16;
|
||||
return GB(this->Next(), 0, 16) * max >> 16;
|
||||
}
|
||||
|
||||
void Randomizer::SetSeed(uint32 seed)
|
||||
{
|
||||
this->state[0] = seed;
|
||||
this->state[1] = seed;
|
||||
}
|
||||
|
||||
#ifdef MERSENNE_TWISTER
|
||||
@@ -119,28 +125,24 @@ uint32 Random()
|
||||
#else /* MERSENNE_TWISTER */
|
||||
void SetRandomSeed(uint32 seed)
|
||||
{
|
||||
_random_seeds[0][0] = seed;
|
||||
_random_seeds[0][1] = seed;
|
||||
_random_seeds[1][0] = seed * 0x1234567;
|
||||
_random_seeds[1][1] = _random_seeds[1][0];
|
||||
_random.SetSeed(seed);
|
||||
_interactive_random.SetSeed(seed * 0x1234567);
|
||||
}
|
||||
|
||||
#ifdef RANDOM_DEBUG
|
||||
#include "../network/network_data.h"
|
||||
#include "../variables.h" /* _frame_counter */
|
||||
#include "../player_func.h"
|
||||
|
||||
uint32 DoRandom(int line, const char *file)
|
||||
{
|
||||
if (_networking && (DEREF_CLIENT(0)->status != STATUS_INACTIVE || !_network_server))
|
||||
if (_networking && (DEREF_CLIENT(0)->status != STATUS_INACTIVE || !_network_server)) {
|
||||
printf("Random [%d/%d] %s:%d\n",_frame_counter, (byte)_current_player, file, line);
|
||||
#else /* RANDOM_DEBUG */
|
||||
uint32 Random()
|
||||
{
|
||||
#endif /* RANDOM_DEBUG */
|
||||
const uint32 s = _random_seeds[0][0];
|
||||
const uint32 t = _random_seeds[0][1];
|
||||
}
|
||||
|
||||
_random_seeds[0][0] = s + ROR(t ^ 0x1234567F, 7) + 1;
|
||||
return _random_seeds[0][1] = ROR(s, 3) - 1;
|
||||
return _random.Next();
|
||||
}
|
||||
#endif /* RANDOM_DEBUG */
|
||||
#endif /* MERSENNE_TWISTER */
|
||||
|
||||
#if defined(RANDOM_DEBUG) && !defined(MERSENNE_TWISTER)
|
||||
@@ -148,9 +150,4 @@ uint DoRandomRange(uint max, int line, const char *file)
|
||||
{
|
||||
return GB(DoRandom(line, file), 0, 16) * max >> 16;
|
||||
}
|
||||
#else /* RANDOM_DEBUG & !MERSENNE_TWISTER */
|
||||
uint RandomRange(uint max)
|
||||
{
|
||||
return GB(Random(), 0, 16) * max >> 16;
|
||||
}
|
||||
#endif /* RANDOM_DEBUG & !MERSENNE_TWISTER */
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/* $Id$ */
|
||||
|
||||
/** @file random_func.h */
|
||||
/** @file random_func.hpp */
|
||||
|
||||
#ifndef RANDOM_FUNC_HPP
|
||||
#define RANDOM_FUNC_HPP
|
||||
@@ -27,6 +27,35 @@
|
||||
// Doesn't work with network yet.
|
||||
// #define MERSENNE_TWISTER
|
||||
|
||||
/**
|
||||
* Structure to encapsulate the pseudo random number generators.
|
||||
*/
|
||||
struct Randomizer {
|
||||
/** The state of the randomizer */
|
||||
uint32 state[2];
|
||||
|
||||
/**
|
||||
* Generate the next pseudo random number
|
||||
* @return the random number
|
||||
*/
|
||||
uint32 Next();
|
||||
|
||||
/**
|
||||
* Generate the next pseudo random number scaled to max
|
||||
* @param max the maximum value of the returned random number
|
||||
* @return the random number
|
||||
*/
|
||||
uint32 Next(uint16 max);
|
||||
|
||||
/**
|
||||
* (Re)set the state of the random number generator.
|
||||
* @param seed the new state
|
||||
*/
|
||||
void SetSeed(uint32 seed);
|
||||
};
|
||||
extern Randomizer _random; ///< Random used in the game state calculations
|
||||
extern Randomizer _interactive_random; ///< Random used every else where is does not (directly) influence the game state
|
||||
|
||||
void SetRandomSeed(uint32 seed);
|
||||
#ifdef RANDOM_DEBUG
|
||||
#define Random() DoRandom(__LINE__, __FILE__)
|
||||
@@ -34,12 +63,12 @@ void SetRandomSeed(uint32 seed);
|
||||
#define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
|
||||
uint DoRandomRange(uint max, int line, const char *file);
|
||||
#else
|
||||
uint32 Random();
|
||||
uint RandomRange(uint max);
|
||||
static inline uint32 Random() { return _random.Next(); }
|
||||
static inline uint32 RandomRange(uint16 max) { return _random.Next(max); }
|
||||
#endif
|
||||
|
||||
uint32 InteractiveRandom(); // Used for random sequences that are not the same on the other end of the multiplayer link
|
||||
uint InteractiveRandomRange(uint max);
|
||||
static inline uint32 InteractiveRandom() { return _interactive_random.Next(); }
|
||||
static inline uint32 InteractiveRandomRange(uint16 max) { return _interactive_random.Next(max); }
|
||||
|
||||
/**
|
||||
* Checks if a given randomize-number is below a given probability.
|
||||
@@ -59,7 +88,7 @@ uint InteractiveRandomRange(uint max);
|
||||
static inline bool Chance16I(const uint a, const uint b, const uint32 r)
|
||||
{
|
||||
assert(b != 0);
|
||||
return (uint16)r < (uint16)((a << 16) / b);
|
||||
return (uint16)r < (uint16)(((a << 16) + b / 2) / b);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -100,6 +129,4 @@ static inline bool Chance16R(const uint a, const uint b, uint32 &r)
|
||||
return Chance16I(a, b, r);
|
||||
}
|
||||
|
||||
extern uint32 _random_seeds[2][2];
|
||||
|
||||
#endif /* RANDOM_FUNC_HPP */
|
||||
|
20
src/date.cpp
20
src/date.cpp
@@ -165,24 +165,6 @@ Date ConvertYMDToDate(Year year, Month month, Day day)
|
||||
|
||||
/** Functions used by the IncreaseDate function */
|
||||
|
||||
extern void OnNewDay_Train(Vehicle *v);
|
||||
extern void OnNewDay_RoadVeh(Vehicle *v);
|
||||
extern void OnNewDay_Aircraft(Vehicle *v);
|
||||
extern void OnNewDay_Ship(Vehicle *v);
|
||||
static void OnNewDay_EffectVehicle(Vehicle *v) { /* empty */ }
|
||||
extern void OnNewDay_DisasterVehicle(Vehicle *v);
|
||||
|
||||
typedef void OnNewVehicleDayProc(Vehicle *v);
|
||||
|
||||
static OnNewVehicleDayProc * _on_new_vehicle_day_proc[] = {
|
||||
OnNewDay_Train,
|
||||
OnNewDay_RoadVeh,
|
||||
OnNewDay_Ship,
|
||||
OnNewDay_Aircraft,
|
||||
OnNewDay_EffectVehicle,
|
||||
OnNewDay_DisasterVehicle,
|
||||
};
|
||||
|
||||
extern void WaypointsDailyLoop();
|
||||
extern void ChatMessageDailyLoop();
|
||||
extern void EnginesDailyLoop();
|
||||
@@ -225,7 +207,7 @@ static void RunVehicleDayProc(uint daytick)
|
||||
if (v->IsValid()) {
|
||||
/* Call the 32-day callback if needed */
|
||||
CheckVehicle32Day(v);
|
||||
_on_new_vehicle_day_proc[v->type](v);
|
||||
v->OnNewDay();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -59,50 +59,34 @@ struct DebugLevel {
|
||||
|
||||
#if !defined(NO_DEBUG_MESSAGES)
|
||||
|
||||
/** Functionized DEBUG macro for compilers that don't support
|
||||
* variadic macros (__VA_ARGS__) such as...yes MSVC2003 and lower */
|
||||
#if defined(NO_VARARG_MACRO)
|
||||
void CDECL DEBUG(int name, int level, ...)
|
||||
{
|
||||
va_list va;
|
||||
const char *dbg;
|
||||
const DebugLevel *dl = &debug_level[name];
|
||||
|
||||
if (level != 0 && *dl->level < level) return;
|
||||
dbg = dl->name;
|
||||
va_start(va, level);
|
||||
#else
|
||||
void CDECL debug(const char *dbg, ...)
|
||||
{
|
||||
va_list va;
|
||||
va_start(va, dbg);
|
||||
#endif /* NO_VARARG_MACRO */
|
||||
{
|
||||
const char *s;
|
||||
char buf[1024];
|
||||
const char *s;
|
||||
char buf[1024];
|
||||
|
||||
s = va_arg(va, const char*);
|
||||
vsnprintf(buf, lengthof(buf), s, va);
|
||||
va_end(va);
|
||||
s = va_arg(va, const char*);
|
||||
vsnprintf(buf, lengthof(buf), s, va);
|
||||
va_end(va);
|
||||
#if defined(ENABLE_NETWORK)
|
||||
if (_debug_socket != INVALID_SOCKET) {
|
||||
char buf2[lengthof(buf) + 32];
|
||||
if (_debug_socket != INVALID_SOCKET) {
|
||||
char buf2[lengthof(buf) + 32];
|
||||
|
||||
snprintf(buf2, lengthof(buf2), "dbg: [%s] %s\n", dbg, buf);
|
||||
send(_debug_socket, buf2, strlen(buf2), 0);
|
||||
} else
|
||||
snprintf(buf2, lengthof(buf2), "dbg: [%s] %s\n", dbg, buf);
|
||||
send(_debug_socket, buf2, strlen(buf2), 0);
|
||||
} else
|
||||
#endif /* ENABLE_NETWORK */
|
||||
{
|
||||
{
|
||||
#if defined(WINCE)
|
||||
/* We need to do OTTD2FS twice, but as it uses a static buffer, we need to store one temporary */
|
||||
TCHAR tbuf[512];
|
||||
_sntprintf(tbuf, sizeof(tbuf), _T("%s"), OTTD2FS(dbg));
|
||||
NKDbgPrintfW(_T("dbg: [%s] %s\n"), tbuf, OTTD2FS(buf));
|
||||
/* We need to do OTTD2FS twice, but as it uses a static buffer, we need to store one temporary */
|
||||
TCHAR tbuf[512];
|
||||
_sntprintf(tbuf, sizeof(tbuf), _T("%s"), OTTD2FS(dbg));
|
||||
NKDbgPrintfW(_T("dbg: [%s] %s\n"), tbuf, OTTD2FS(buf));
|
||||
#else
|
||||
fprintf(stderr, "dbg: [%s] %s\n", dbg, buf);
|
||||
fprintf(stderr, "dbg: [%s] %s\n", dbg, buf);
|
||||
#endif
|
||||
IConsoleDebug(dbg, buf);
|
||||
}
|
||||
IConsoleDebug(dbg, buf);
|
||||
}
|
||||
}
|
||||
#endif /* NO_DEBUG_MESSAGES */
|
||||
|
38
src/debug.h
38
src/debug.h
@@ -19,44 +19,14 @@
|
||||
* 6.. - extremely detailed spamming
|
||||
*/
|
||||
|
||||
/* Of course MSVC 2003 and lower has no support for variadic macros
|
||||
* so we need to work around this... *sigh* */
|
||||
#if defined(_MSC_VER) && (_MSC_VER < 1400)
|
||||
#define NO_VARARG_MACRO
|
||||
#endif
|
||||
|
||||
#if defined(NO_VARARG_MACRO)
|
||||
enum DebugLevelType {
|
||||
ai,
|
||||
driver,
|
||||
grf,
|
||||
map,
|
||||
misc,
|
||||
ms,
|
||||
net,
|
||||
sprite,
|
||||
oldloader,
|
||||
ntp,
|
||||
npf,
|
||||
yapf,
|
||||
freetype,
|
||||
sl,
|
||||
station,
|
||||
};
|
||||
#endif /* NO_VARARG_MACRO */
|
||||
|
||||
#ifdef NO_DEBUG_MESSAGES
|
||||
#if defined(NO_VARARG_MACRO)
|
||||
static inline void DEBUG(int name, int level, ...) {}
|
||||
#elif defined(__GNUC__) && (__GNUC__ < 3)
|
||||
#if defined(__GNUC__) && (__GNUC__ < 3)
|
||||
#define DEBUG(name, level, args...)
|
||||
#else
|
||||
#define DEBUG(name, level, ...)
|
||||
#endif
|
||||
#else /* NO_DEBUG_MESSAGES */
|
||||
#if defined(NO_VARARG_MACRO)
|
||||
void CDECL DEBUG(int name, int level, ...);
|
||||
#elif defined(__GNUC__) && (__GNUC__ < 3)
|
||||
#if defined(__GNUC__) && (__GNUC__ < 3)
|
||||
#define DEBUG(name, level, args...) if ((level == 0) || ( _debug_ ## name ## _level >= level)) debug(#name, args)
|
||||
#else
|
||||
#define DEBUG(name, level, ...) if (level == 0 || _debug_ ## name ## _level >= level) debug(#name, __VA_ARGS__)
|
||||
@@ -78,9 +48,7 @@
|
||||
extern int _debug_sl_level;
|
||||
extern int _debug_station_level;
|
||||
|
||||
#if !defined(NO_VARARG_MACRO)
|
||||
void CDECL debug(const char *dbg, ...);
|
||||
#endif /* NO_VARARG_MACRO */
|
||||
void CDECL debug(const char *dbg, ...);
|
||||
#endif /* NO_DEBUG_MESSAGES */
|
||||
|
||||
void SetDebugString(const char *s);
|
||||
|
@@ -45,7 +45,7 @@ static inline bool IsTileDepotType(TileIndex tile, TransportType type)
|
||||
return IsTileType(tile, MP_RAILWAY) && GetRailTileType(tile) == RAIL_TILE_DEPOT;
|
||||
|
||||
case TRANSPORT_ROAD:
|
||||
return IsTileType(tile, MP_ROAD) && GetRoadTileType(tile) == ROAD_TILE_DEPOT;
|
||||
return IsRoadDepotTile(tile);
|
||||
|
||||
case TRANSPORT_WATER:
|
||||
return IsTileType(tile, MP_WATER) && GetWaterTileType(tile) == WATER_TILE_DEPOT;
|
||||
@@ -64,7 +64,7 @@ static inline bool IsTileDepotType(TileIndex tile, TransportType type)
|
||||
static inline bool IsDepotTile(TileIndex tile)
|
||||
{
|
||||
switch (GetTileType(tile)) {
|
||||
case MP_ROAD: return GetRoadTileType(tile) == ROAD_TILE_DEPOT;
|
||||
case MP_ROAD: return IsRoadDepot(tile);
|
||||
case MP_WATER: return GetWaterTileType(tile) == WATER_TILE_DEPOT;
|
||||
case MP_RAILWAY: return GetRailTileType(tile) == RAIL_TILE_DEPOT;
|
||||
case MP_STATION: return IsHangar(tile);
|
||||
|
@@ -519,9 +519,11 @@ static void ResizeDepotButtons(Window *w)
|
||||
* Only use this if it's the same widget, that's used for more than one vehicle type and it needs different text/sprites
|
||||
* Vehicle specific text/sprites, that's in a widget, that's only shown for one vehicle type (like sell whole train) is set in the widget array
|
||||
*/
|
||||
static void SetupStringsForDepotWindow(Window *w, byte type)
|
||||
static void SetupStringsForDepotWindow(Window *w, VehicleType type)
|
||||
{
|
||||
switch (type) {
|
||||
default: NOT_REACHED();
|
||||
|
||||
case VEH_TRAIN:
|
||||
w->widget[DEPOT_WIDGET_CAPTION].data = STR_8800_TRAIN_DEPOT;
|
||||
w->widget[DEPOT_WIDGET_STOP_ALL].tooltips = STR_MASS_STOP_DEPOT_TRAIN_TIP;
|
||||
@@ -858,8 +860,13 @@ static void DepotWndProc(Window *w, WindowEvent *e)
|
||||
} break;
|
||||
|
||||
case WE_ABORT_PLACE_OBJ: {
|
||||
/* abort clone */
|
||||
w->RaiseWidget(DEPOT_WIDGET_CLONE);
|
||||
w->InvalidateWidget(DEPOT_WIDGET_CLONE);
|
||||
|
||||
/* abort drag & drop */
|
||||
WP(w, depot_d).sel = INVALID_VEHICLE;
|
||||
w->InvalidateWidget(DEPOT_WIDGET_MATRIX);
|
||||
} break;
|
||||
|
||||
/* check if a vehicle in a depot was clicked.. */
|
||||
|
@@ -72,6 +72,9 @@ static void DisasterClearSquare(TileIndex tile)
|
||||
_current_player = OWNER_WATER;
|
||||
DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
_current_player = p;
|
||||
|
||||
/* update signals in buffer */
|
||||
UpdateSignalsInBuffer();
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -138,8 +141,7 @@ static void InitializeDisasterVehicle(Vehicle *v, int x, int y, byte z, Directio
|
||||
|
||||
DisasterVehicleUpdateImage(v);
|
||||
VehiclePositionChanged(v);
|
||||
BeginVehicleMove(v);
|
||||
EndVehicleMove(v);
|
||||
MarkSingleVehicleDirty(v);
|
||||
}
|
||||
|
||||
static void DeleteDisasterVeh(Vehicle *v)
|
||||
@@ -547,8 +549,7 @@ static void DisasterTick_Helicopter_Rotors(Vehicle *v)
|
||||
if (++v->cur_image > SPR_ROTOR_MOVING_3) v->cur_image = SPR_ROTOR_MOVING_1;
|
||||
|
||||
VehiclePositionChanged(v);
|
||||
BeginVehicleMove(v);
|
||||
EndVehicleMove(v);
|
||||
MarkSingleVehicleDirty(v);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -706,8 +707,7 @@ static void DisasterTick_Submarine(Vehicle *v)
|
||||
|
||||
if (++v->age > 8880) {
|
||||
VehiclePositionChanged(v);
|
||||
BeginVehicleMove(v);
|
||||
EndVehicleMove(v);
|
||||
MarkSingleVehicleDirty(v);
|
||||
delete v;
|
||||
return;
|
||||
}
|
||||
@@ -716,9 +716,8 @@ static void DisasterTick_Submarine(Vehicle *v)
|
||||
|
||||
tile = v->tile + TileOffsByDiagDir(DirToDiagDir(v->direction));
|
||||
if (IsValidTile(tile)) {
|
||||
TrackdirBits r = (TrackdirBits)GetTileTrackStatus(tile, TRANSPORT_WATER, 0);
|
||||
|
||||
if (TrackdirBitsToTrackBits(r) == TRACK_BIT_ALL && !Chance16(1, 90)) {
|
||||
TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_WATER, 0));
|
||||
if (trackbits == TRACK_BIT_ALL && !Chance16(1, 90)) {
|
||||
GetNewVehiclePosResult gp = GetNewVehiclePos(v);
|
||||
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
|
||||
return;
|
||||
@@ -749,12 +748,6 @@ void DisasterVehicle::Tick()
|
||||
_disastervehicle_tick_procs[this->subtype](this);
|
||||
}
|
||||
|
||||
|
||||
void OnNewDay_DisasterVehicle(Vehicle *v)
|
||||
{
|
||||
// not used
|
||||
}
|
||||
|
||||
typedef void DisasterInitProc();
|
||||
|
||||
|
||||
|
@@ -19,6 +19,7 @@
|
||||
#include "viewport_func.h"
|
||||
#include "gfx_func.h"
|
||||
#include "player_func.h"
|
||||
#include "slope_func.h"
|
||||
|
||||
#include "table/sprites.h"
|
||||
#include "table/strings.h"
|
||||
@@ -189,14 +190,11 @@ static void BuildDocksToolbWndProc(Window *w, WindowEvent *e)
|
||||
TileIndex tile_from;
|
||||
TileIndex tile_to;
|
||||
|
||||
tile_from = tile_to = e->we.place.tile;
|
||||
switch (GetTileSlope(tile_from, NULL)) {
|
||||
case SLOPE_SW: tile_to += TileDiffXY(-1, 0); break;
|
||||
case SLOPE_SE: tile_to += TileDiffXY( 0, -1); break;
|
||||
case SLOPE_NW: tile_to += TileDiffXY( 0, 1); break;
|
||||
case SLOPE_NE: tile_to += TileDiffXY( 1, 0); break;
|
||||
default: break;
|
||||
}
|
||||
tile_from = e->we.place.tile;
|
||||
|
||||
DiagDirection dir = GetInclinedSlopeDirection(GetTileSlope(tile_from, NULL));
|
||||
tile_to = (dir != INVALID_DIAGDIR ? TileAddByDiagDir(tile_from, ReverseDiagDir(dir)) : tile_from);
|
||||
|
||||
VpSetPresizeRange(tile_from, tile_to);
|
||||
} break;
|
||||
|
||||
@@ -245,7 +243,7 @@ static void BuildDockStationWndProc(Window *w, WindowEvent *e)
|
||||
case WE_CREATE: w->LowerWidget(_station_show_coverage + 3); break;
|
||||
|
||||
case WE_PAINT: {
|
||||
int rad = (_patches.modified_catchment) ? CA_DOCK : 4;
|
||||
int rad = (_patches.modified_catchment) ? CA_DOCK : CA_UNMODIFIED;
|
||||
|
||||
if (WP(w, def_d).close) return;
|
||||
DrawWindowWidgets(w);
|
||||
@@ -256,7 +254,13 @@ static void BuildDockStationWndProc(Window *w, WindowEvent *e)
|
||||
SetTileSelectSize(1, 1);
|
||||
}
|
||||
|
||||
DrawStationCoverageAreaText(4, 50, SCT_ALL, rad);
|
||||
int text_end = DrawStationCoverageAreaText(4, 50, SCT_ALL, rad) + 4;
|
||||
if (text_end > w->widget[2].bottom) {
|
||||
SetWindowDirty(w);
|
||||
ResizeWindowForWidget(w, 2, 0, text_end - w->widget[2].bottom);
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@@ -64,7 +64,7 @@ static void ChangeTileOwner_Dummy(TileIndex tile, PlayerID old_player, PlayerID
|
||||
/* not used */
|
||||
}
|
||||
|
||||
static uint32 GetTileTrackStatus_Dummy(TileIndex tile, TransportType mode, uint sub_mode)
|
||||
static TrackStatus GetTileTrackStatus_Dummy(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@@ -41,6 +41,7 @@
|
||||
#include "sound_func.h"
|
||||
#include "track_type.h"
|
||||
#include "track_func.h"
|
||||
#include "road_func.h"
|
||||
#include "rail_map.h"
|
||||
#include "signal_func.h"
|
||||
#include "gfx_func.h"
|
||||
@@ -162,16 +163,16 @@ int UpdateCompanyRatingAndValue(Player *p, bool update)
|
||||
num++;
|
||||
if (v->age > 730) {
|
||||
/* Find the vehicle with the lowest amount of profit */
|
||||
if (min_profit_first == true) {
|
||||
if (min_profit_first || min_profit > v->profit_last_year) {
|
||||
min_profit = v->profit_last_year;
|
||||
min_profit_first = false;
|
||||
} else if (min_profit > v->profit_last_year) {
|
||||
min_profit = v->profit_last_year;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
min_profit >>= 8; // remove the fract part
|
||||
|
||||
_score_part[owner][SCORE_VEHICLES] = num;
|
||||
/* Don't allow negative min_profit to show */
|
||||
if (min_profit > 0)
|
||||
@@ -432,7 +433,9 @@ void ChangeOwnershipOfPlayerItems(PlayerID old_player, PlayerID new_player)
|
||||
|
||||
if (new_player != PLAYER_SPECTATOR) {
|
||||
/* Update all signals because there can be new segment that was owned by two players
|
||||
* and signals were not propagated */
|
||||
* and signals were not propagated
|
||||
* Similiar with crossings - it is needed to bar crossings that weren't before
|
||||
* because of different owner of crossing and approaching train */
|
||||
tile = 0;
|
||||
|
||||
do {
|
||||
@@ -440,11 +443,16 @@ void ChangeOwnershipOfPlayerItems(PlayerID old_player, PlayerID new_player)
|
||||
TrackBits tracks = GetTrackBits(tile);
|
||||
do { // there may be two tracks with signals for TRACK_BIT_HORZ and TRACK_BIT_VERT
|
||||
Track track = RemoveFirstTrack(&tracks);
|
||||
if (HasSignalOnTrack(tile, track)) SetSignalsOnBothDir(tile, track, new_player);
|
||||
if (HasSignalOnTrack(tile, track)) AddTrackToSignalBuffer(tile, track, new_player);
|
||||
} while (tracks != TRACK_BIT_NONE);
|
||||
} else if (IsLevelCrossingTile(tile) && IsTileOwner(tile, new_player)) {
|
||||
UpdateLevelCrossing(tile);
|
||||
}
|
||||
} while (++tile != MapSize());
|
||||
}
|
||||
|
||||
/* update signals in buffer */
|
||||
UpdateSignalsInBuffer();
|
||||
}
|
||||
|
||||
/* Change color of existing windows */
|
||||
@@ -838,9 +846,9 @@ static const Money _price_base[NUM_PRICES] = {
|
||||
55, ///< remove_dock
|
||||
1600, ///< remove_house
|
||||
40, ///< remove_road
|
||||
5600, ///< running_rail[0] railroad
|
||||
5200, ///< running_rail[1] monorail
|
||||
4800, ///< running_rail[2] maglev
|
||||
5600, ///< running_rail[0] steam
|
||||
5200, ///< running_rail[1] diesel
|
||||
4800, ///< running_rail[2] electric
|
||||
9600, ///< aircraft_running
|
||||
1600, ///< roadveh_running
|
||||
5600, ///< ship_running
|
||||
@@ -906,6 +914,15 @@ void StartupEconomy()
|
||||
_economy.fluct = GB(Random(), 0, 8) + 168;
|
||||
}
|
||||
|
||||
|
||||
Money GetPriceByIndex(uint8 index)
|
||||
{
|
||||
if (index > NUM_PRICES) return 0;
|
||||
|
||||
return ((Money*)&_price)[index];
|
||||
}
|
||||
|
||||
|
||||
Pair SetupSubsidyDecodeParam(const Subsidy* s, bool mode)
|
||||
{
|
||||
TileIndex tile;
|
||||
@@ -1497,7 +1514,7 @@ void VehiclePayment(Vehicle *front_v)
|
||||
cp->days_in_transit,
|
||||
v->cargo_type);
|
||||
|
||||
front_v->profit_this_year += profit;
|
||||
front_v->profit_this_year += profit << 8;
|
||||
virtual_profit += profit; // accumulate transfer profits for whole vehicle
|
||||
cp->feeder_share += profit; // account for the (virtual) profit already made for the cargo packet
|
||||
cp->paid_for = true; // record that the cargo has been paid for to eliminate double counting
|
||||
@@ -1515,7 +1532,7 @@ void VehiclePayment(Vehicle *front_v)
|
||||
}
|
||||
|
||||
if (route_profit != 0) {
|
||||
front_v->profit_this_year += vehicle_profit;
|
||||
front_v->profit_this_year += vehicle_profit << 8;
|
||||
SubtractMoneyFromPlayer(CommandCost(front_v->GetExpenseType(true), -route_profit));
|
||||
|
||||
if (IsLocalPlayer() && !PlayVehicleSound(front_v, VSE_LOAD_UNLOAD)) {
|
||||
@@ -1863,7 +1880,7 @@ CommandCost CmdBuyShareInCompany(TileIndex tile, uint32 flags, uint32 p1, uint32
|
||||
if (!p->is_active) return CMD_ERROR;
|
||||
|
||||
/* Protect new companies from hostile takeovers */
|
||||
if (_cur_year - p->inaugurated_year < 6) return_cmd_error(STR_7080_PROTECTED);
|
||||
if (_cur_year - p->inaugurated_year < 6) return_cmd_error(STR_PROTECTED);
|
||||
|
||||
/* Those lines are here for network-protection (clients can be slow) */
|
||||
if (GetAmountOwnedBy(p, PLAYER_SPECTATOR) == 0) return cost;
|
||||
|
@@ -41,4 +41,6 @@ uint MoveGoodsToStation(TileIndex tile, int w, int h, CargoID type, uint amount)
|
||||
void VehiclePayment(Vehicle *front_v);
|
||||
void LoadUnloadStation(Station *st);
|
||||
|
||||
Money GetPriceByIndex(uint8 index);
|
||||
|
||||
#endif /* ECONOMY_FUNC_H */
|
||||
|
@@ -112,18 +112,19 @@ assert_compile(NUM_PRICES * sizeof(Money) == sizeof(Prices));
|
||||
|
||||
enum ExpensesType {
|
||||
EXPENSES_CONSTRUCTION = 0,
|
||||
EXPENSES_NEW_VEHICLES = 1,
|
||||
EXPENSES_TRAIN_RUN = 2,
|
||||
EXPENSES_ROADVEH_RUN = 3,
|
||||
EXPENSES_AIRCRAFT_RUN = 4,
|
||||
EXPENSES_SHIP_RUN = 5,
|
||||
EXPENSES_PROPERTY = 6,
|
||||
EXPENSES_TRAIN_INC = 7,
|
||||
EXPENSES_ROADVEH_INC = 8,
|
||||
EXPENSES_AIRCRAFT_INC = 9,
|
||||
EXPENSES_SHIP_INC = 10,
|
||||
EXPENSES_LOAN_INT = 11,
|
||||
EXPENSES_OTHER = 12,
|
||||
EXPENSES_NEW_VEHICLES,
|
||||
EXPENSES_TRAIN_RUN,
|
||||
EXPENSES_ROADVEH_RUN,
|
||||
EXPENSES_AIRCRAFT_RUN,
|
||||
EXPENSES_SHIP_RUN,
|
||||
EXPENSES_PROPERTY,
|
||||
EXPENSES_TRAIN_INC,
|
||||
EXPENSES_ROADVEH_INC,
|
||||
EXPENSES_AIRCRAFT_INC,
|
||||
EXPENSES_SHIP_INC,
|
||||
EXPENSES_LOAN_INT,
|
||||
EXPENSES_OTHER,
|
||||
EXPENSES_END,
|
||||
INVALID_EXPENSES = 0xFF,
|
||||
};
|
||||
|
||||
|
@@ -64,6 +64,7 @@
|
||||
#include "tunnelbridge_map.h"
|
||||
#include "vehicle_func.h"
|
||||
#include "player_base.h"
|
||||
#include "tunnelbridge.h"
|
||||
|
||||
#include "table/sprites.h"
|
||||
#include "table/elrail_data.h"
|
||||
@@ -73,8 +74,11 @@ static inline TLG GetTLG(TileIndex t)
|
||||
return (TLG)((HasBit(TileX(t), 0) << 1) + HasBit(TileY(t), 0));
|
||||
}
|
||||
|
||||
/** Finds which Rail Bits are present on a given tile. For bridge tiles,
|
||||
* returns track bits under the bridge
|
||||
/**
|
||||
* Finds which Electrified Rail Bits are present on a given tile.
|
||||
* @param t tile to check
|
||||
* @param override pointer to PCP override, can be NULL
|
||||
* @return trackbits of tile if it is electrified
|
||||
*/
|
||||
static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
|
||||
{
|
||||
@@ -93,13 +97,13 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
|
||||
|
||||
case MP_TUNNELBRIDGE:
|
||||
if (GetRailType(t) != RAILTYPE_ELECTRIC) return TRACK_BIT_NONE;
|
||||
if (override != NULL && (IsTunnel(t) || DistanceMax(t, GetOtherBridgeEnd(t)) > 1)) {
|
||||
if (override != NULL && (IsTunnel(t) || GetTunnelBridgeLength(t, GetOtherBridgeEnd(t)) > 0)) {
|
||||
*override = 1 << GetTunnelBridgeDirection(t);
|
||||
}
|
||||
return AxisToTrackBits(DiagDirToAxis(GetTunnelBridgeDirection(t)));
|
||||
|
||||
case MP_ROAD:
|
||||
if (GetRoadTileType(t) != ROAD_TILE_CROSSING) return TRACK_BIT_NONE;
|
||||
if (!IsLevelCrossing(t)) return TRACK_BIT_NONE;
|
||||
if (GetRailType(t) != RAILTYPE_ELECTRIC) return TRACK_BIT_NONE;
|
||||
return GetCrossingRailBits(t);
|
||||
|
||||
@@ -126,13 +130,7 @@ static void AdjustTileh(TileIndex tile, Slope *tileh)
|
||||
} else if (*tileh != SLOPE_FLAT) {
|
||||
*tileh = SLOPE_FLAT;
|
||||
} else {
|
||||
switch (GetTunnelBridgeDirection(tile)) {
|
||||
case DIAGDIR_NE: *tileh = SLOPE_NE; break;
|
||||
case DIAGDIR_SE: *tileh = SLOPE_SE; break;
|
||||
case DIAGDIR_SW: *tileh = SLOPE_SW; break;
|
||||
case DIAGDIR_NW: *tileh = SLOPE_NW; break;
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
*tileh = InclinedSlope(GetTunnelBridgeDirection(tile));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -191,7 +189,7 @@ void DrawCatenaryOnTunnel(const TileInfo *ti)
|
||||
sss->image, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
|
||||
BB_data[2] - sss->x_offset, BB_data[3] - sss->y_offset, BB_Z_SEPARATOR - sss->z_offset + 1,
|
||||
GetTileZ(ti->tile) + sss->z_offset,
|
||||
IsTransparencySet(TO_BUILDINGS),
|
||||
IsTransparencySet(TO_CATENARY),
|
||||
BB_data[0] - sss->x_offset, BB_data[1] - sss->y_offset, BB_Z_SEPARATOR - sss->z_offset
|
||||
);
|
||||
}
|
||||
@@ -338,7 +336,7 @@ static void DrawCatenaryRailway(const TileInfo *ti)
|
||||
|
||||
AddSortableSpriteToDraw(pylon_sprites[temp], PAL_NONE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE,
|
||||
GetPCPElevation(ti->tile, i),
|
||||
IsTransparencySet(TO_BUILDINGS), -1, -1);
|
||||
IsTransparencySet(TO_CATENARY), -1, -1);
|
||||
break; /* We already have drawn a pylon, bail out */
|
||||
}
|
||||
}
|
||||
@@ -346,7 +344,7 @@ static void DrawCatenaryRailway(const TileInfo *ti)
|
||||
}
|
||||
|
||||
/* Don't draw a wire under a low bridge */
|
||||
if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile) && !IsTransparencySet(TO_BUILDINGS)) {
|
||||
if (MayHaveBridgeAbove(ti->tile) && IsBridgeAbove(ti->tile) && !IsTransparencySet(TO_CATENARY)) {
|
||||
uint height = GetBridgeHeight(GetNorthernBridgeEnd(ti->tile));
|
||||
|
||||
if (height <= GetTileMaxZ(ti->tile) + TILE_HEIGHT) return;
|
||||
@@ -373,7 +371,7 @@ static void DrawCatenaryRailway(const TileInfo *ti)
|
||||
*/
|
||||
AddSortableSpriteToDraw(sss->image, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
|
||||
sss->x_size, sss->y_size, sss->z_size, GetSlopeZ(ti->x + sss->x_offset, ti->y + sss->y_offset) + sss->z_offset,
|
||||
IsTransparencySet(TO_BUILDINGS));
|
||||
IsTransparencySet(TO_CATENARY));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -383,8 +381,8 @@ static void DrawCatenaryOnBridge(const TileInfo *ti)
|
||||
TileIndex end = GetSouthernBridgeEnd(ti->tile);
|
||||
TileIndex start = GetOtherBridgeEnd(end);
|
||||
|
||||
uint length = GetBridgeLength(start, end);
|
||||
uint num = DistanceMax(ti->tile, start);
|
||||
uint length = GetTunnelBridgeLength(start, end);
|
||||
uint num = GetTunnelBridgeLength(ti->tile, start) + 1;
|
||||
uint height;
|
||||
|
||||
const SortableSpriteStruct *sss;
|
||||
@@ -406,7 +404,7 @@ static void DrawCatenaryOnBridge(const TileInfo *ti)
|
||||
|
||||
AddSortableSpriteToDraw(sss->image, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
|
||||
sss->x_size, sss->y_size, sss->z_size, height + sss->z_offset,
|
||||
IsTransparencySet(TO_BUILDINGS)
|
||||
IsTransparencySet(TO_CATENARY)
|
||||
);
|
||||
|
||||
/* Finished with wires, draw pylons */
|
||||
@@ -417,17 +415,17 @@ static void DrawCatenaryOnBridge(const TileInfo *ti)
|
||||
if (HasBit(tlg, (axis == AXIS_X ? 0 : 1))) PPPpos = ReverseDir(PPPpos);
|
||||
uint x = ti->x + x_pcp_offsets[PCPpos] + x_ppp_offsets[PPPpos];
|
||||
uint y = ti->y + y_pcp_offsets[PCPpos] + y_ppp_offsets[PPPpos];
|
||||
AddSortableSpriteToDraw(pylon_sprites[PPPpos], PAL_NONE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE, height, IsTransparencySet(TO_BUILDINGS), -1, -1);
|
||||
AddSortableSpriteToDraw(pylon_sprites[PPPpos], PAL_NONE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE, height, IsTransparencySet(TO_CATENARY), -1, -1);
|
||||
}
|
||||
|
||||
/* need a pylon on the southern end of the bridge */
|
||||
if (DistanceMax(ti->tile, start) == length) {
|
||||
if (GetTunnelBridgeLength(ti->tile, start) + 1 == length) {
|
||||
DiagDirection PCPpos = (axis == AXIS_X ? DIAGDIR_SW : DIAGDIR_SE);
|
||||
Direction PPPpos = (axis == AXIS_X ? DIR_NW : DIR_NE);
|
||||
if (HasBit(tlg, (axis == AXIS_X ? 0 : 1))) PPPpos = ReverseDir(PPPpos);
|
||||
uint x = ti->x + x_pcp_offsets[PCPpos] + x_ppp_offsets[PPPpos];
|
||||
uint y = ti->y + y_pcp_offsets[PCPpos] + y_ppp_offsets[PPPpos];
|
||||
AddSortableSpriteToDraw(pylon_sprites[PPPpos], PAL_NONE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE, height, IsTransparencySet(TO_BUILDINGS), -1, -1);
|
||||
AddSortableSpriteToDraw(pylon_sprites[PPPpos], PAL_NONE, x, y, 1, 1, BB_HEIGHT_UNDER_BRIDGE, height, IsTransparencySet(TO_CATENARY), -1, -1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -453,7 +451,7 @@ void DrawCatenary(const TileInfo *ti)
|
||||
sss->image, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
|
||||
sss->x_size, sss->y_size, sss->z_size,
|
||||
GetTileMaxZ(ti->tile) + sss->z_offset,
|
||||
IsTransparencySet(TO_BUILDINGS)
|
||||
IsTransparencySet(TO_CATENARY)
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -471,7 +469,6 @@ void DrawCatenary(const TileInfo *ti)
|
||||
|
||||
int32 SettingsDisableElrail(int32 p1)
|
||||
{
|
||||
EngineID e_id;
|
||||
Vehicle *v;
|
||||
Player *p;
|
||||
bool disable = (p1 != 0);
|
||||
@@ -481,8 +478,9 @@ int32 SettingsDisableElrail(int32 p1)
|
||||
const RailType new_railtype = disable ? RAILTYPE_RAIL : RAILTYPE_ELECTRIC;
|
||||
|
||||
/* walk through all train engines */
|
||||
for (e_id = 0; e_id < NUM_TRAIN_ENGINES; e_id++) {
|
||||
RailVehicleInfo *rv_info = &_rail_vehicle_info[e_id];
|
||||
EngineID eid;
|
||||
FOR_ALL_ENGINEIDS_OF_TYPE(eid, VEH_TRAIN) {
|
||||
RailVehicleInfo *rv_info = &_rail_vehicle_info[eid];
|
||||
/* if it is an electric rail engine and its railtype is the wrong one */
|
||||
if (rv_info->engclass == 2 && rv_info->railtype == old_railtype) {
|
||||
/* change it to the proper one */
|
||||
|
@@ -91,8 +91,9 @@ static void CalcEngineReliability(Engine *e)
|
||||
|
||||
/* Check for early retirement */
|
||||
if (e->player_avail != 0 && !_patches.never_expire_vehicles) {
|
||||
uint retire_early = EngInfo(e - _engines)->retire_early;
|
||||
if (retire_early > 0 && age >= e->duration_phase_1 + e->duration_phase_2 - retire_early * 12) {
|
||||
int retire_early = EngInfo(e - _engines)->retire_early;
|
||||
uint retire_early_max_age = max(0, e->duration_phase_1 + e->duration_phase_2 - retire_early * 12);
|
||||
if (retire_early != 0 && age >= retire_early_max_age) {
|
||||
/* Early retirement is enabled and we're past the date... */
|
||||
e->player_avail = 0;
|
||||
AddRemoveEngineFromAutoreplaceAndBuildWindows(e->type);
|
||||
@@ -172,12 +173,6 @@ void StartupEngines()
|
||||
e->flags |= ENGINE_AVAILABLE;
|
||||
e->player_avail = 0;
|
||||
}
|
||||
|
||||
/* This sets up type for the engine
|
||||
* It is needed if you want to ask the engine what type it is
|
||||
* It should hopefully be the same as when you ask a vehicle what it is
|
||||
* but using this, you can ask what type an engine number is
|
||||
* even if it is not a vehicle (yet)*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,13 +191,13 @@ static void AcceptEnginePreview(EngineID eid, PlayerID player)
|
||||
SetBit(p->avail_roadtypes, HasBit(EngInfo(eid)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD);
|
||||
}
|
||||
|
||||
e->preview_player = INVALID_PLAYER;
|
||||
e->preview_player_rank = 0xFF;
|
||||
if (player == _local_player) {
|
||||
AddRemoveEngineFromAutoreplaceAndBuildWindows(e->type);
|
||||
}
|
||||
}
|
||||
|
||||
static PlayerID GetBestPlayer(PlayerID pp)
|
||||
static PlayerID GetBestPlayer(uint8 pp)
|
||||
{
|
||||
const Player *p;
|
||||
int32 best_hist;
|
||||
@@ -223,7 +218,7 @@ static PlayerID GetBestPlayer(PlayerID pp)
|
||||
if (best_player == PLAYER_SPECTATOR) return PLAYER_SPECTATOR;
|
||||
|
||||
SetBit(mask, best_player);
|
||||
} while (pp--, pp != 0);
|
||||
} while (--pp != 0);
|
||||
|
||||
return best_player;
|
||||
}
|
||||
@@ -239,16 +234,16 @@ void EnginesDailyLoop()
|
||||
|
||||
if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) {
|
||||
if (e->flags & ENGINE_OFFER_WINDOW_OPEN) {
|
||||
if (e->preview_player != 0xFF && !--e->preview_wait) {
|
||||
if (e->preview_player_rank != 0xFF && !--e->preview_wait) {
|
||||
e->flags &= ~ENGINE_OFFER_WINDOW_OPEN;
|
||||
DeleteWindowById(WC_ENGINE_PREVIEW, i);
|
||||
e->preview_player++;
|
||||
e->preview_player_rank++;
|
||||
}
|
||||
} else if (e->preview_player != 0xFF) {
|
||||
PlayerID best_player = GetBestPlayer(e->preview_player);
|
||||
} else if (e->preview_player_rank != 0xFF) {
|
||||
PlayerID best_player = GetBestPlayer(e->preview_player_rank);
|
||||
|
||||
if (best_player == PLAYER_SPECTATOR) {
|
||||
e->preview_player = INVALID_PLAYER;
|
||||
e->preview_player_rank = 0xFF;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -278,7 +273,7 @@ CommandCost CmdWantEnginePreview(TileIndex tile, uint32 flags, uint32 p1, uint32
|
||||
|
||||
if (!IsEngineIndex(p1)) return CMD_ERROR;
|
||||
e = GetEngine(p1);
|
||||
if (GetBestPlayer(e->preview_player) != _current_player) return CMD_ERROR;
|
||||
if (GetBestPlayer(e->preview_player_rank) != _current_player) return CMD_ERROR;
|
||||
|
||||
if (flags & DC_EXEC) AcceptEnginePreview(p1, _current_player);
|
||||
|
||||
@@ -348,10 +343,9 @@ static void NewVehicleAvailable(Engine *e)
|
||||
|
||||
void EnginesMonthlyLoop()
|
||||
{
|
||||
Engine *e;
|
||||
|
||||
if (_cur_year < YEAR_ENGINE_AGING_STOPS) {
|
||||
for (e = _engines; e != endof(_engines); e++) {
|
||||
Engine *e;
|
||||
FOR_ALL_ENGINES(e) {
|
||||
/* Age the vehicle */
|
||||
if (e->flags & ENGINE_AVAILABLE && e->age != 0xFFFF) {
|
||||
e->age++;
|
||||
@@ -367,7 +361,7 @@ void EnginesMonthlyLoop()
|
||||
|
||||
/* Do not introduce new rail wagons */
|
||||
if (!IsWagon(e - _engines))
|
||||
e->preview_player = (PlayerID)1; // Give to the player with the highest rating.
|
||||
e->preview_player_rank = 1; // Give to the player with the highest rating.
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -410,22 +404,19 @@ CommandCost CmdRenameEngine(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* returns true if an engine is valid, of the specified type, and buildable by
|
||||
* the given player, false otherwise
|
||||
*
|
||||
* engine = index of the engine to check
|
||||
* type = the type the engine should be of (VEH_xxx)
|
||||
* player = index of the player
|
||||
/** Check if an engine is buildable.
|
||||
* @param engine index of the engine to check.
|
||||
* @param type the type the engine should be.
|
||||
* @param player index of the player.
|
||||
* @return True if an engine is valid, of the specified type, and buildable by
|
||||
* the given player.
|
||||
*/
|
||||
bool IsEngineBuildable(EngineID engine, byte type, PlayerID player)
|
||||
bool IsEngineBuildable(EngineID engine, VehicleType type, PlayerID player)
|
||||
{
|
||||
const Engine *e;
|
||||
|
||||
/* check if it's an engine that is in the engine array */
|
||||
if (!IsEngineIndex(engine)) return false;
|
||||
|
||||
e = GetEngine(engine);
|
||||
const Engine *e = GetEngine(engine);
|
||||
|
||||
/* check if it's an engine of specified type */
|
||||
if (e->type != type) return false;
|
||||
@@ -507,6 +498,10 @@ void RemoveAllEngineReplacement(EngineRenewList *erl)
|
||||
EngineID EngineReplacement(EngineRenewList erl, EngineID engine, GroupID group)
|
||||
{
|
||||
const EngineRenew *er = GetEngineReplacement(erl, engine, group);
|
||||
if (er == NULL && (group == DEFAULT_GROUP || (IsValidGroupID(group) && !GetGroup(group)->replace_protection))) {
|
||||
/* We didn't find anything useful in the vehicle's own group so we will try ALL_GROUP */
|
||||
er = GetEngineReplacement(erl, engine, ALL_GROUP);
|
||||
}
|
||||
return er == NULL ? INVALID_ENGINE : er->to;
|
||||
}
|
||||
|
||||
@@ -618,7 +613,7 @@ static const SaveLoad _engine_desc[] = {
|
||||
|
||||
SLE_VAR(Engine, lifelength, SLE_UINT8),
|
||||
SLE_VAR(Engine, flags, SLE_UINT8),
|
||||
SLE_VAR(Engine, preview_player, SLE_UINT8),
|
||||
SLE_VAR(Engine, preview_player_rank, SLE_UINT8),
|
||||
SLE_VAR(Engine, preview_wait, SLE_UINT8),
|
||||
SLE_CONDNULL(1, 0, 44),
|
||||
SLE_VAR(Engine, player_avail, SLE_UINT8),
|
||||
|
14
src/engine.h
14
src/engine.h
@@ -36,12 +36,13 @@ struct RailVehicleInfo {
|
||||
uint16 max_speed;
|
||||
uint16 power;
|
||||
uint16 weight;
|
||||
byte running_cost_base;
|
||||
byte running_cost;
|
||||
byte running_cost_class;
|
||||
EngineClass engclass; ///< Class of engine for this vehicle
|
||||
byte capacity;
|
||||
CargoID cargo_type;
|
||||
byte ai_rank;
|
||||
byte ai_passenger_only; ///< Bit value to tell AI that this engine is for passenger use only
|
||||
uint16 pow_wag_power;
|
||||
byte pow_wag_weight;
|
||||
byte visual_effect; // NOTE: this is not 100% implemented yet, at the moment it is only used as a 'fallback' value
|
||||
@@ -89,6 +90,7 @@ struct RoadVehicleInfo {
|
||||
byte image_index;
|
||||
byte base_cost;
|
||||
byte running_cost;
|
||||
byte running_cost_class;
|
||||
SoundFxByte sfx;
|
||||
byte max_speed;
|
||||
byte capacity;
|
||||
@@ -109,7 +111,7 @@ struct EngineInfo {
|
||||
byte refit_cost;
|
||||
byte misc_flags;
|
||||
byte callbackmask;
|
||||
byte retire_early; ///< Number of years early to retire vehicle
|
||||
int8 retire_early; ///< Number of years early to retire vehicle
|
||||
StringID string_id; ///< Default name of engine
|
||||
};
|
||||
|
||||
@@ -123,7 +125,7 @@ struct Engine {
|
||||
uint16 duration_phase_1, duration_phase_2, duration_phase_3;
|
||||
byte lifelength;
|
||||
byte flags;
|
||||
PlayerByte preview_player;
|
||||
uint8 preview_player_rank;
|
||||
byte preview_wait;
|
||||
byte player_avail;
|
||||
VehicleType type; ///< type, ie VEH_ROAD, VEH_TRAIN, etc.
|
||||
@@ -167,7 +169,7 @@ void DrawAircraftEngine(int x, int y, EngineID engine, SpriteID pal);
|
||||
void LoadCustomEngineNames();
|
||||
void DeleteCustomEngineNames();
|
||||
|
||||
bool IsEngineBuildable(EngineID engine, byte type, PlayerID player);
|
||||
bool IsEngineBuildable(EngineID engine, VehicleType type, PlayerID player);
|
||||
CargoID GetEngineCargoType(EngineID engine);
|
||||
|
||||
enum {
|
||||
@@ -184,14 +186,14 @@ enum {
|
||||
ROAD_ENGINES_INDEX = NUM_TRAIN_ENGINES,
|
||||
};
|
||||
|
||||
static inline EngineID GetFirstEngineOfType(byte type)
|
||||
static inline EngineID GetFirstEngineOfType(VehicleType type)
|
||||
{
|
||||
const EngineID start[] = {0, ROAD_ENGINES_INDEX, SHIP_ENGINES_INDEX, AIRCRAFT_ENGINES_INDEX};
|
||||
|
||||
return start[type];
|
||||
}
|
||||
|
||||
static inline EngineID GetLastEngineOfType(byte type)
|
||||
static inline EngineID GetLastEngineOfType(VehicleType type)
|
||||
{
|
||||
const EngineID end[] = {
|
||||
NUM_TRAIN_ENGINES,
|
||||
|
@@ -126,7 +126,7 @@ static void DrawTrainEngineInfo(EngineID engine, int x, int y, int maxw)
|
||||
SetDParam(3, rvi->power << multihead);
|
||||
SetDParam(1, rvi->weight << multihead);
|
||||
|
||||
SetDParam(4, rvi->running_cost_base * _price.running_rail[rvi->running_cost_class] >> 8 << multihead);
|
||||
SetDParam(4, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8 << multihead);
|
||||
|
||||
if (rvi->capacity != 0) {
|
||||
SetDParam(5, rvi->cargo_type);
|
||||
@@ -155,7 +155,7 @@ static void DrawRoadVehEngineInfo(EngineID engine, int x, int y, int maxw)
|
||||
|
||||
SetDParam(0, (_price.roadveh_base >> 3) * rvi->base_cost >> 5);
|
||||
SetDParam(1, rvi->max_speed * 10 / 32);
|
||||
SetDParam(2, rvi->running_cost * _price.roadveh_running >> 8);
|
||||
SetDParam(2, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8);
|
||||
SetDParam(3, rvi->cargo_type);
|
||||
SetDParam(4, rvi->capacity);
|
||||
|
||||
|
@@ -33,6 +33,7 @@ struct Fio {
|
||||
FILE *handles[MAX_FILE_SLOTS]; ///< array of file handles we can have open
|
||||
byte buffer_start[FIO_BUFFER_SIZE]; ///< local buffer when read from file
|
||||
const char *filenames[MAX_FILE_SLOTS]; ///< array of filenames we (should) have open
|
||||
char *shortnames[MAX_FILE_SLOTS];///< array of short names for spriteloader's use
|
||||
#if defined(LIMITED_FDS)
|
||||
uint open_handles; ///< current amount of open handles
|
||||
uint usage_count[MAX_FILE_SLOTS]; ///< count how many times this file has been opened
|
||||
@@ -47,9 +48,9 @@ uint32 FioGetPos()
|
||||
return _fio.pos + (_fio.buffer - _fio.buffer_start) - FIO_BUFFER_SIZE;
|
||||
}
|
||||
|
||||
const char *FioGetFilename()
|
||||
const char *FioGetFilename(uint8 slot)
|
||||
{
|
||||
return _fio.filename;
|
||||
return _fio.shortnames[slot];
|
||||
}
|
||||
|
||||
void FioSeekTo(uint32 pos, int mode)
|
||||
@@ -131,6 +132,10 @@ static inline void FioCloseFile(int slot)
|
||||
{
|
||||
if (_fio.handles[slot] != NULL) {
|
||||
fclose(_fio.handles[slot]);
|
||||
|
||||
free(_fio.shortnames[slot]);
|
||||
_fio.shortnames[slot] = NULL;
|
||||
|
||||
_fio.handles[slot] = NULL;
|
||||
#if defined(LIMITED_FDS)
|
||||
_fio.open_handles--;
|
||||
@@ -184,6 +189,14 @@ void FioOpenFile(int slot, const char *filename)
|
||||
FioCloseFile(slot); // if file was opened before, close it
|
||||
_fio.handles[slot] = f;
|
||||
_fio.filenames[slot] = filename;
|
||||
|
||||
/* Store the filename without path and extension */
|
||||
const char *t = strrchr(filename, PATHSEPCHAR);
|
||||
_fio.shortnames[slot] = strdup(t == NULL ? filename : t);
|
||||
char *t2 = strrchr(_fio.shortnames[slot], '.');
|
||||
if (t2 != NULL) *t2 = '\0';
|
||||
strtolower(_fio.shortnames[slot]);
|
||||
|
||||
#if defined(LIMITED_FDS)
|
||||
_fio.usage_count[slot] = 0;
|
||||
_fio.open_handles++;
|
||||
|
@@ -12,7 +12,7 @@
|
||||
void FioSeekTo(uint32 pos, int mode);
|
||||
void FioSeekToFile(uint8 slot, uint32 pos);
|
||||
uint32 FioGetPos();
|
||||
const char *FioGetFilename();
|
||||
const char *FioGetFilename(uint8 slot);
|
||||
byte FioReadByte();
|
||||
uint16 FioReadWord();
|
||||
uint32 FioReadDword();
|
||||
|
@@ -19,6 +19,8 @@
|
||||
#ifdef WIN32
|
||||
# include <tchar.h>
|
||||
# include <io.h>
|
||||
# define access _taccess
|
||||
# define unlink _tunlink
|
||||
#else
|
||||
# include <unistd.h>
|
||||
#endif /* WIN32 */
|
||||
@@ -202,7 +204,7 @@ bool FileExists(const char *filename)
|
||||
CloseHandle(hand);
|
||||
return 0;
|
||||
#else
|
||||
return access(filename, 0) == 0;
|
||||
return access(OTTD2FS(filename), 0) == 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@@ -518,34 +518,38 @@ void SetUnicodeGlyph(FontSize size, uint32 key, SpriteID sprite)
|
||||
|
||||
void InitializeUnicodeGlyphMap()
|
||||
{
|
||||
FontSize size;
|
||||
SpriteID base;
|
||||
SpriteID sprite;
|
||||
uint i;
|
||||
|
||||
for (size = FS_NORMAL; size != FS_END; size++) {
|
||||
for (FontSize size = FS_NORMAL; size != FS_END; size++) {
|
||||
/* Clear out existing glyph map if it exists */
|
||||
if (_unicode_glyph_map[size] != NULL) {
|
||||
for (i = 0; i < 256; i++) {
|
||||
for (uint i = 0; i < 256; i++) {
|
||||
if (_unicode_glyph_map[size][i] != NULL) free(_unicode_glyph_map[size][i]);
|
||||
}
|
||||
free(_unicode_glyph_map[size]);
|
||||
_unicode_glyph_map[size] = NULL;
|
||||
}
|
||||
|
||||
base = GetFontBase(size);
|
||||
for (i = ASCII_LETTERSTART; i < 256; i++) {
|
||||
sprite = base + i - ASCII_LETTERSTART;
|
||||
SpriteID base = GetFontBase(size);
|
||||
|
||||
for (uint i = ASCII_LETTERSTART; i < 256; i++) {
|
||||
SpriteID sprite = base + i - ASCII_LETTERSTART;
|
||||
if (!SpriteExists(sprite)) continue;
|
||||
SetUnicodeGlyph(size, i, sprite);
|
||||
SetUnicodeGlyph(size, i + SCC_SPRITE_START, sprite);
|
||||
}
|
||||
for (i = 0; i < lengthof(_default_unicode_map); i++) {
|
||||
sprite = base + _default_unicode_map[i].key - ASCII_LETTERSTART;
|
||||
SetUnicodeGlyph(size, _default_unicode_map[i].code, sprite);
|
||||
|
||||
for (uint i = 0; i < lengthof(_default_unicode_map); i++) {
|
||||
byte key = _default_unicode_map[i].key;
|
||||
if (key == CLRA || key == CLRL) {
|
||||
/* Clear the glyph. This happens if the glyph at this code point
|
||||
* is non-standard and should be accessed by an SCC_xxx enum
|
||||
* entry only. */
|
||||
if (key == CLRA || size == FS_LARGE) {
|
||||
SetUnicodeGlyph(size, _default_unicode_map[i].code, 0);
|
||||
}
|
||||
} else {
|
||||
SpriteID sprite = base + key - ASCII_LETTERSTART;
|
||||
SetUnicodeGlyph(size, _default_unicode_map[i].code, sprite);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@@ -24,6 +24,7 @@
|
||||
#include "engine.h"
|
||||
#include "settings_type.h"
|
||||
#include "newgrf_storage.h"
|
||||
#include "water.h"
|
||||
|
||||
#include "table/sprites.h"
|
||||
|
||||
@@ -89,7 +90,7 @@ static void *_GenerateWorld(void *arg)
|
||||
if (_network_dedicated) DEBUG(net, 0, "Generating map, please wait...");
|
||||
/* Set the Random() seed to generation_seed so we produce the same map with the same seed */
|
||||
if (_patches.generation_seed == GENERATE_NEW_SEED) _patches.generation_seed = _patches_newgame.generation_seed = InteractiveRandom();
|
||||
_random_seeds[0][0] = _random_seeds[0][1] = _patches.generation_seed;
|
||||
_random.SetSeed(_patches.generation_seed);
|
||||
SetGeneratingWorldProgress(GWP_MAP_INIT, 2);
|
||||
SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, VHM_NONE, WC_MAIN_WINDOW, 0);
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -37,7 +37,7 @@ bool _screen_disable_anim = false; ///< Disable palette animation (important f
|
||||
bool _exit_game;
|
||||
bool _networking; ///< are we in networking mode?
|
||||
byte _game_mode;
|
||||
byte _pause_game;
|
||||
int8 _pause_game;
|
||||
int _pal_first_dirty;
|
||||
int _pal_count_dirty;
|
||||
|
||||
|
@@ -65,12 +65,11 @@ extern uint16 _cur_resolution[2];
|
||||
extern Colour _cur_palette[256];
|
||||
|
||||
void HandleKeypress(uint32 key);
|
||||
void HandleCtrlChanged();
|
||||
void HandleMouseEvents();
|
||||
void CSleep(int milliseconds);
|
||||
void UpdateWindows();
|
||||
|
||||
uint32 InteractiveRandom(); //< Used for random sequences that are not the same on the other end of the multiplayer link
|
||||
uint InteractiveRandomRange(uint max);
|
||||
void DrawChatMessage();
|
||||
void DrawMouseCursor();
|
||||
void ScreenSizeChanged();
|
||||
@@ -83,12 +82,6 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo);
|
||||
|
||||
void DrawSprite(SpriteID img, SpriteID pal, int x, int y, const SubSprite *sub = NULL);
|
||||
|
||||
/* XXX doesn't really belong here, but the only
|
||||
* consumers always use it in conjunction with DoDrawString() */
|
||||
#define UPARROW "\xEE\x8A\x80"
|
||||
#define DOWNARROW "\xEE\x8A\xAA"
|
||||
|
||||
|
||||
int DrawStringCentered(int x, int y, StringID str, uint16 color);
|
||||
int DrawStringCenteredTruncated(int xl, int xr, int y, StringID str, uint16 color);
|
||||
int DoDrawStringCentered(int x, int y, const char *str, uint16 color);
|
||||
|
162
src/gfxinit.cpp
162
src/gfxinit.cpp
@@ -30,7 +30,6 @@ struct FileList {
|
||||
MD5File basic[2]; ///< GRF files that always have to be loaded
|
||||
MD5File landscape[3]; ///< Landscape specific grf files
|
||||
MD5File sound; ///< Sound samples
|
||||
MD5File chars; ///< GRF File with character replacements
|
||||
MD5File openttd; ///< GRF File with OTTD specific graphics
|
||||
};
|
||||
|
||||
@@ -71,20 +70,15 @@ void LoadSpritesIndexed(int file_index, uint *sprite_id, const SpriteID *index_t
|
||||
while ((start = *index_tbl++) != END) {
|
||||
uint end = *index_tbl++;
|
||||
|
||||
if (start == SKIP) { // skip sprites (amount in second var)
|
||||
SkipSprites(end);
|
||||
(*sprite_id) += end;
|
||||
} else { // load sprites and use indexes from start to end
|
||||
do {
|
||||
#ifdef NDEBUG
|
||||
LoadNextSprite(start, file_index, *sprite_id);
|
||||
#else
|
||||
bool b = LoadNextSprite(start, file_index, *sprite_id);
|
||||
assert(b);
|
||||
#endif
|
||||
(*sprite_id)++;
|
||||
} while (++start <= end);
|
||||
}
|
||||
do {
|
||||
#ifdef NDEBUG
|
||||
LoadNextSprite(start, file_index, *sprite_id);
|
||||
#else
|
||||
bool b = LoadNextSprite(start, file_index, *sprite_id);
|
||||
assert(b);
|
||||
#endif
|
||||
(*sprite_id)++;
|
||||
} while (++start <= end);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,10 +186,6 @@ void CheckExternalFiles()
|
||||
add_pos += snprintf(add_pos, ERROR_MESSAGE_LENGTH, "Your 'sample.cat' file is corrupted or missing! You can find 'sample.cat' on your Transport Tycoon Deluxe CD-ROM.\n");
|
||||
}
|
||||
|
||||
if (!FileMD5(files->chars)) {
|
||||
add_pos += snprintf(add_pos, ERROR_MESSAGE_LENGTH, "Your '%s' file is corrupted or missing! The file was part of your installation.\n", files->chars.filename);
|
||||
}
|
||||
|
||||
if (!FileMD5(files->openttd)) {
|
||||
add_pos += snprintf(add_pos, ERROR_MESSAGE_LENGTH, "Your '%s' file is corrupted or missing! The file was part of your installation.\n", files->openttd.filename);
|
||||
}
|
||||
@@ -204,142 +194,12 @@ void CheckExternalFiles()
|
||||
}
|
||||
|
||||
|
||||
static const SpriteID trg1idx[] = {
|
||||
0, 1, ///< Mouse cursor, ZZZ
|
||||
/* Medium font */
|
||||
2, 92, ///< ' ' till 'z'
|
||||
SKIP, 36,
|
||||
160, 160, ///< Move Ÿ to the correct position
|
||||
98, 98, ///< Up arrow
|
||||
131, 133,
|
||||
SKIP, 1, ///< skip currency sign
|
||||
135, 135,
|
||||
SKIP, 1,
|
||||
137, 137,
|
||||
SKIP, 1,
|
||||
139, 139,
|
||||
140, 140, ///< @todo Down arrow
|
||||
141, 141,
|
||||
142, 142, ///< @todo Check mark
|
||||
143, 143, ///< @todo Cross
|
||||
144, 144,
|
||||
145, 145, ///< @todo Right arrow
|
||||
146, 149,
|
||||
118, 122, ///< Transport markers
|
||||
SKIP, 2,
|
||||
157, 157,
|
||||
114, 115, ///< Small up/down arrows
|
||||
SKIP, 1,
|
||||
161, 225,
|
||||
/* Small font */
|
||||
226, 316, ///< ' ' till 'z'
|
||||
SKIP, 36,
|
||||
384, 384, ///< Move Ÿ to the correct position
|
||||
322, 322, ///< Up arrow
|
||||
355, 357,
|
||||
SKIP, 1, ///< skip currency sign
|
||||
359, 359,
|
||||
SKIP, 1,
|
||||
361, 361,
|
||||
SKIP, 1,
|
||||
363, 363,
|
||||
364, 364, ////< @todo Down arrow
|
||||
365, 366,
|
||||
SKIP, 1,
|
||||
368, 368,
|
||||
369, 369, ///< @todo Right arrow
|
||||
370, 373,
|
||||
SKIP, 7,
|
||||
381, 381,
|
||||
SKIP, 3,
|
||||
385, 449,
|
||||
/* Big font */
|
||||
450, 540, ///< ' ' till 'z'
|
||||
SKIP, 36,
|
||||
608, 608, ///< Move Ÿ to the correct position
|
||||
SKIP, 1,
|
||||
579, 581,
|
||||
SKIP, 1,
|
||||
583, 583,
|
||||
SKIP, 5,
|
||||
589, 589,
|
||||
SKIP, 15,
|
||||
605, 605,
|
||||
SKIP, 3,
|
||||
609, 625,
|
||||
SKIP, 1,
|
||||
627, 632,
|
||||
SKIP, 1,
|
||||
634, 639,
|
||||
SKIP, 1,
|
||||
641, 657,
|
||||
SKIP, 1,
|
||||
659, 664,
|
||||
SKIP, 2,
|
||||
667, 671,
|
||||
SKIP, 1,
|
||||
673, 673,
|
||||
/* Graphics */
|
||||
674, 4792,
|
||||
END
|
||||
};
|
||||
|
||||
/** Replace some letter sprites with some other letters */
|
||||
static const SpriteID _chars_grf_indexes[] = {
|
||||
134, 134, ///< euro symbol medium size
|
||||
582, 582, ///< euro symbol large size
|
||||
358, 358, ///< euro symbol tiny
|
||||
648, 648, ///< nordic char: æ
|
||||
616, 616, ///< nordic char: Æ
|
||||
666, 666, ///< nordic char: ø
|
||||
634, 634, ///< nordic char: Ø
|
||||
382, 383, ///< Œ œ tiny
|
||||
158, 159, ///< Œ œ medium
|
||||
606, 607, ///< Œ œ large
|
||||
360, 360, ///< Š tiny
|
||||
362, 362, ///< š tiny
|
||||
136, 136, ///< Š medium
|
||||
138, 138, ///< š medium
|
||||
584, 584, ///< Š large
|
||||
586, 586, ///< š large
|
||||
626, 626, ///< Ð large
|
||||
658, 658, ///< ð large
|
||||
374, 374, ///< Ž tiny
|
||||
378, 378, ///< ž tiny
|
||||
150, 150, ///< Ž medium
|
||||
154, 154, ///< ž medium
|
||||
598, 598, ///< Ž large
|
||||
602, 602, ///< ž large
|
||||
640, 640, ///< Þ large
|
||||
672, 672, ///< þ large
|
||||
380, 380, ///< º tiny
|
||||
156, 156, ///< º medium
|
||||
604, 604, ///< º large
|
||||
317, 320, ///< { | } ~ tiny
|
||||
93, 96, ///< { | } ~ medium
|
||||
541, 544, ///< { | } ~ large
|
||||
585, 585, ///< § large
|
||||
587, 587, ///< © large
|
||||
592, 592, ///< ® large
|
||||
594, 597, ///< ° ± ² ³ large
|
||||
633, 633, ///< × large
|
||||
665, 665, ///< ÷ large
|
||||
377, 377, ///< · small
|
||||
153, 153, ///< · medium
|
||||
601, 601, ///< · large
|
||||
END
|
||||
};
|
||||
|
||||
|
||||
static void LoadSpriteTables()
|
||||
{
|
||||
const FileList *files = _use_dos_palette ? &files_dos : &files_win;
|
||||
uint i = FIRST_GRF_SLOT;
|
||||
|
||||
LoadGrfIndexed(files->basic[0].filename, trg1idx, i++);
|
||||
DupSprite( 2, 130); // non-breaking space medium
|
||||
DupSprite(226, 354); // non-breaking space tiny
|
||||
DupSprite(450, 578); // non-breaking space large
|
||||
LoadGrfFile(files->basic[0].filename, 0, i++);
|
||||
|
||||
/*
|
||||
* The second basic file always starts at the given location and does
|
||||
@@ -362,8 +222,6 @@ static void LoadSpriteTables()
|
||||
);
|
||||
}
|
||||
|
||||
LoadGrfIndexed(files->chars.filename, _chars_grf_indexes, i++);
|
||||
|
||||
/* Initialize the unicode to sprite mapping table */
|
||||
InitializeUnicodeGlyphMap();
|
||||
|
||||
|
@@ -43,7 +43,7 @@ enum {
|
||||
};
|
||||
|
||||
/* Apparently these don't play well with enums. */
|
||||
static const OverflowSafeInt64 INVALID_DATAPOINT = INT64_MAX; // Value used for a datapoint that shouldn't be drawn.
|
||||
static const OverflowSafeInt64 INVALID_DATAPOINT(INT64_MAX); // Value used for a datapoint that shouldn't be drawn.
|
||||
static const uint INVALID_DATAPOINT_POS = UINT_MAX; // Used to determine if the previous point was drawn.
|
||||
|
||||
struct GraphDrawer {
|
||||
|
@@ -23,7 +23,7 @@ struct Group : PoolItem<Group, GroupID, &_Group_pool> {
|
||||
char *name; ///< Group Name
|
||||
|
||||
uint16 num_vehicle; ///< Number of vehicles wich belong to the group
|
||||
PlayerID owner; ///< Group Owner
|
||||
PlayerByte owner; ///< Group Owner
|
||||
VehicleTypeByte vehicle_type; ///< Vehicle type of the group
|
||||
|
||||
bool replace_protection; ///< If set to true, the global autoreplace have no effect on the group
|
||||
|
@@ -134,6 +134,9 @@ CommandCost CmdDeleteGroup(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
if (v->group_id == g->index && v->type == g->vehicle_type) v->group_id = DEFAULT_GROUP;
|
||||
}
|
||||
|
||||
/* Update backupped orders if needed */
|
||||
if (_backup_orders_data.group == g->index) _backup_orders_data.group = DEFAULT_GROUP;
|
||||
|
||||
/* If we set an autoreplace for the group we delete, remove it. */
|
||||
if (_current_player < MAX_PLAYERS) {
|
||||
Player *p;
|
||||
|
@@ -23,6 +23,7 @@
|
||||
#include "viewport_func.h"
|
||||
#include "gfx_func.h"
|
||||
#include "player_func.h"
|
||||
#include "widgets/dropdown_type.h"
|
||||
#include "widgets/dropdown_func.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
@@ -114,7 +115,6 @@ enum GroupListWidgets {
|
||||
GRP_WIDGET_LIST_GROUP,
|
||||
GRP_WIDGET_LIST_GROUP_SCROLLBAR,
|
||||
GRP_WIDGET_SORT_BY_ORDER,
|
||||
GRP_WIDGET_SORT_BY_TEXT,
|
||||
GRP_WIDGET_SORT_BY_DROPDOWN,
|
||||
GRP_WIDGET_EMPTY_TOP_RIGHT,
|
||||
GRP_WIDGET_LIST_VEHICLE,
|
||||
@@ -126,7 +126,6 @@ enum GroupListWidgets {
|
||||
GRP_WIDGET_REPLACE_PROTECTION,
|
||||
GRP_WIDGET_EMPTY2,
|
||||
GRP_WIDGET_AVAILABLE_VEHICLES,
|
||||
GRP_WIDGET_MANAGE_VEHICLES,
|
||||
GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN,
|
||||
GRP_WIDGET_STOP_ALL,
|
||||
GRP_WIDGET_START_ALL,
|
||||
@@ -145,8 +144,7 @@ static const Widget _group_widgets[] = {
|
||||
{ WWT_MATRIX, RESIZE_BOTTOM, 14, 0, 188, 52, 168, 0x701, STR_GROUPS_CLICK_ON_GROUP_FOR_TIP},
|
||||
{ WWT_SCROLLBAR, RESIZE_BOTTOM, 14, 189, 200, 52, 168, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 201, 281, 14, 25, STR_SORT_BY, STR_SORT_ORDER_TIP},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 282, 435, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 436, 447, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_DROPDOWN, RESIZE_NONE, 14, 282, 447, 14, 25, 0x0, STR_SORT_CRITERIA_TIP},
|
||||
{ WWT_PANEL, RESIZE_RIGHT, 14, 448, 459, 14, 25, 0x0, STR_NULL},
|
||||
{ WWT_MATRIX, RESIZE_RB, 14, 201, 447, 26, 181, 0x701, STR_NULL},
|
||||
{ WWT_SCROLL2BAR, RESIZE_LRB, 14, 448, 459, 26, 181, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
|
||||
@@ -157,8 +155,7 @@ static const Widget _group_widgets[] = {
|
||||
{ WWT_PUSHIMGBTN, RESIZE_TB, 14, 165, 188, 169, 193, 0x0, STR_GROUP_REPLACE_PROTECTION_TIP},
|
||||
{ WWT_PANEL, RESIZE_TB, 14, 189, 200, 169, 193, 0x0, STR_NULL},
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 201, 306, 182, 193, 0x0, STR_AVAILABLE_ENGINES_TIP},
|
||||
{ WWT_TEXTBTN, RESIZE_TB, 14, 307, 411, 182, 193, STR_MANAGE_LIST, STR_MANAGE_LIST_TIP},
|
||||
{ WWT_TEXTBTN, RESIZE_TB, 14, 412, 423, 182, 193, STR_0225, STR_MANAGE_LIST_TIP},
|
||||
{ WWT_DROPDOWN, RESIZE_TB, 14, 307, 423, 182, 193, STR_MANAGE_LIST, STR_MANAGE_LIST_TIP},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_TB, 14, 424, 435, 182, 193, SPR_FLAG_VEH_STOPPED, STR_MASS_STOP_LIST_TIP},
|
||||
{ WWT_PUSHIMGBTN, RESIZE_TB, 14, 436, 447, 182, 193, SPR_FLAG_VEH_RUNNING, STR_MASS_START_LIST_TIP},
|
||||
{ WWT_PANEL, RESIZE_RTB, 14, 448, 447, 182, 193, 0x0, STR_NULL},
|
||||
@@ -258,28 +255,33 @@ static void CreateVehicleGroupWindow(Window *w)
|
||||
}
|
||||
}
|
||||
|
||||
enum GroupActionListFunction {
|
||||
GALF_REPLACE,
|
||||
GALF_SERVICE,
|
||||
GALF_DEPOT,
|
||||
GALF_ADD_SHARED,
|
||||
GALF_REMOVE_ALL,
|
||||
};
|
||||
|
||||
/**
|
||||
* Update/redraw the group action dropdown
|
||||
* @param w the window the dropdown belongs to
|
||||
* @param gid the currently selected group in the window
|
||||
*/
|
||||
static void UpdateGroupActionDropdown(Window *w, GroupID gid, bool refresh = true)
|
||||
static void ShowGroupActionDropdown(Window *w, GroupID gid)
|
||||
{
|
||||
if (refresh && !w->IsWidgetLowered(GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN)) return;
|
||||
DropDownList *list = new DropDownList();
|
||||
|
||||
static StringID action_str[] = {
|
||||
STR_REPLACE_VEHICLES,
|
||||
STR_SEND_FOR_SERVICING,
|
||||
STR_SEND_TRAIN_TO_DEPOT,
|
||||
STR_NULL,
|
||||
STR_NULL,
|
||||
INVALID_STRING_ID
|
||||
};
|
||||
list->push_back(new DropDownListStringItem(STR_REPLACE_VEHICLES, GALF_REPLACE, false));
|
||||
list->push_back(new DropDownListStringItem(STR_SEND_FOR_SERVICING, GALF_SERVICE, false));
|
||||
list->push_back(new DropDownListStringItem(STR_SEND_TRAIN_TO_DEPOT, GALF_DEPOT, false));
|
||||
|
||||
action_str[3] = IsValidGroupID(gid) ? STR_GROUP_ADD_SHARED_VEHICLE : INVALID_STRING_ID;
|
||||
action_str[4] = IsValidGroupID(gid) ? STR_GROUP_REMOVE_ALL_VEHICLES : INVALID_STRING_ID;
|
||||
if (IsValidGroupID(gid)) {
|
||||
list->push_back(new DropDownListStringItem(STR_GROUP_ADD_SHARED_VEHICLE, GALF_ADD_SHARED, false));
|
||||
list->push_back(new DropDownListStringItem(STR_GROUP_REMOVE_ALL_VEHICLES, GALF_REMOVE_ALL, false));
|
||||
}
|
||||
|
||||
ShowDropDownMenu(w, action_str, 0, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN, 0, 0);
|
||||
ShowDropDownList(w, list, 0, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -299,7 +301,10 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
case WE_INVALIDATE_DATA:
|
||||
gv->l.flags |= VL_REBUILD;
|
||||
gl->l.flags |= VL_REBUILD;
|
||||
UpdateGroupActionDropdown(w, gv->group_sel);
|
||||
if (!(IsAllGroupID(gv->group_sel) || IsDefaultGroupID(gv->group_sel) || IsValidGroupID(gv->group_sel))) {
|
||||
gv->group_sel = ALL_GROUP;
|
||||
HideDropDownMenu(w);
|
||||
}
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
|
||||
@@ -336,7 +341,6 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
w->SetWidgetsDisabledState(gv->l.list_length == 0 || _local_player != owner,
|
||||
GRP_WIDGET_STOP_ALL,
|
||||
GRP_WIDGET_START_ALL,
|
||||
GRP_WIDGET_MANAGE_VEHICLES,
|
||||
GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN,
|
||||
WIDGET_LIST_END);
|
||||
|
||||
@@ -411,6 +415,8 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
}
|
||||
|
||||
/* Set text of sort by dropdown */
|
||||
w->widget[GRP_WIDGET_SORT_BY_DROPDOWN].data = _vehicle_sort_listing[gv->l.sort_type];
|
||||
|
||||
DrawWindowWidgets(w);
|
||||
|
||||
@@ -460,10 +466,9 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
DrawStringRightAligned(187, y1 + 1, STR_GROUP_TINY_NUM, (gv->group_sel == g->index) ? TC_WHITE : TC_BLACK);
|
||||
}
|
||||
|
||||
/* Draw Matrix Vehicle according to the vehicle list built before */
|
||||
DrawString(285, 15, _vehicle_sort_listing[gv->l.sort_type], TC_BLACK);
|
||||
DoDrawString(gv->l.flags & VL_DESC ? DOWNARROW : UPARROW, 269, 15, TC_BLACK);
|
||||
DrawSortButtonState(w, GRP_WIDGET_SORT_BY_ORDER, gv->l.flags & VL_DESC ? SBS_DOWN : SBS_UP);
|
||||
|
||||
/* Draw Matrix Vehicle according to the vehicle list built before */
|
||||
max = min(w->vscroll2.pos + w->vscroll2.cap, gv->l.list_length);
|
||||
for (i = w->vscroll2.pos ; i < max ; ++i) {
|
||||
const Vehicle* v = gv->sort_list[i];
|
||||
@@ -478,8 +483,8 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
if (w->resize.step_height == PLY_WND_PRC__SIZE_OF_ROW_BIG2) DrawSmallOrderList(v, x + 138, y2);
|
||||
|
||||
SetDParam(0, v->profit_this_year);
|
||||
SetDParam(1, v->profit_last_year);
|
||||
SetDParam(0, v->GetDisplayProfitThisYear());
|
||||
SetDParam(1, v->GetDisplayProfitLastYear());
|
||||
DrawString(x + 19, y2 + w->resize.step_height - 8, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, TC_FROMSTRING);
|
||||
|
||||
if (IsValidGroupID(v->group_id)) {
|
||||
@@ -494,6 +499,8 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
|
||||
case WE_CLICK:
|
||||
HideDropDownMenu(w);
|
||||
|
||||
switch(e->we.click.widget) {
|
||||
case GRP_WIDGET_SORT_BY_ORDER: // Flip sorting method ascending/descending
|
||||
gv->l.flags ^= VL_DESC;
|
||||
@@ -503,7 +510,6 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
|
||||
case GRP_WIDGET_SORT_BY_TEXT:
|
||||
case GRP_WIDGET_SORT_BY_DROPDOWN: // Select sorting criteria dropdown menu
|
||||
ShowDropDownMenu(w, _vehicle_sort_listing, gv->l.sort_type, GRP_WIDGET_SORT_BY_DROPDOWN, 0, 0);
|
||||
return;
|
||||
@@ -512,7 +518,6 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
if (!IsAllGroupID(gv->group_sel)) {
|
||||
gv->group_sel = ALL_GROUP;
|
||||
gv->l.flags |= VL_REBUILD;
|
||||
UpdateGroupActionDropdown(w, gv->group_sel);
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
break;
|
||||
@@ -521,7 +526,6 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
if (!IsDefaultGroupID(gv->group_sel)) {
|
||||
gv->group_sel = DEFAULT_GROUP;
|
||||
gv->l.flags |= VL_REBUILD;
|
||||
UpdateGroupActionDropdown(w, gv->group_sel);
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
break;
|
||||
@@ -538,7 +542,6 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
gv->group_sel = gl->sort_list[id_g]->index;;
|
||||
|
||||
gv->l.flags |= VL_REBUILD;
|
||||
UpdateGroupActionDropdown(w, gv->group_sel);
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
}
|
||||
@@ -591,12 +594,9 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
ShowBuildVehicleWindow(0, gv->vehicle_type);
|
||||
break;
|
||||
|
||||
case GRP_WIDGET_MANAGE_VEHICLES:
|
||||
case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN: {
|
||||
UpdateGroupActionDropdown(w, gv->group_sel, false);
|
||||
case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN:
|
||||
ShowGroupActionDropdown(w, gv->group_sel);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case GRP_WIDGET_START_ALL:
|
||||
case GRP_WIDGET_STOP_ALL: { // Start/stop all vehicles of the list
|
||||
@@ -709,24 +709,24 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
assert(gv->l.list_length != 0);
|
||||
|
||||
switch (e->we.dropdown.index) {
|
||||
case 0: // Replace window
|
||||
case GALF_REPLACE: // Replace window
|
||||
ShowReplaceGroupVehicleWindow(gv->group_sel, gv->vehicle_type);
|
||||
break;
|
||||
case 1: // Send for servicing
|
||||
case GALF_SERVICE: // Send for servicing
|
||||
DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
|
||||
| DEPOT_MASS_SEND
|
||||
| DEPOT_SERVICE, NULL, GetCmdSendToDepot(gv->vehicle_type));
|
||||
break;
|
||||
case 2: // Send to Depots
|
||||
case GALF_DEPOT: // Send to Depots
|
||||
DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
|
||||
| DEPOT_MASS_SEND, NULL, GetCmdSendToDepot(gv->vehicle_type));
|
||||
break;
|
||||
case 3: // Add shared Vehicles
|
||||
case GALF_ADD_SHARED: // Add shared Vehicles
|
||||
assert(IsValidGroupID(gv->group_sel));
|
||||
|
||||
DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_ADD_SHARED_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_SHARED_VEHICLE));
|
||||
break;
|
||||
case 4: // Remove all Vehicles from the selected group
|
||||
case GALF_REMOVE_ALL: // Remove all Vehicles from the selected group
|
||||
assert(IsValidGroupID(gv->group_sel));
|
||||
|
||||
DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_REMOVE_ALL_VEHICLES_GROUP | CMD_MSG(STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES));
|
||||
@@ -761,6 +761,13 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
SetWindowDirty(w);
|
||||
}
|
||||
break;
|
||||
|
||||
case WE_ABORT_PLACE_OBJ: // called when new object to place is selected from keyboard
|
||||
/* abort drag & drop */
|
||||
gv->vehicle_sel = INVALID_VEHICLE;
|
||||
w->InvalidateWidget(GRP_WIDGET_LIST_VEHICLE);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -60,6 +60,7 @@ enum {
|
||||
DDSP_CREATE_DESERT,
|
||||
DDSP_CREATE_ROCKS,
|
||||
DDSP_CREATE_WATER,
|
||||
DDSP_CREATE_RIVER,
|
||||
DDSP_PLANT_TREES,
|
||||
DDSP_BUILD_BRIDGE,
|
||||
|
||||
@@ -105,7 +106,7 @@ void SetFiosType(const byte fiostype);
|
||||
extern const TextColour _fios_colors[];
|
||||
|
||||
/* bridge_gui.cpp */
|
||||
void ShowBuildBridgeWindow(uint start, uint end, byte type);
|
||||
void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transport_type, byte bridge_type);
|
||||
|
||||
void ShowBuildIndustryWindow();
|
||||
void ShowMusicWindow();
|
||||
|
@@ -179,6 +179,7 @@ struct IndustrySpec {
|
||||
GRFMappedStringID closure_text; ///< Message appearing when the industry closes
|
||||
GRFMappedStringID production_up_text; ///< Message appearing when the industry's production is increasing
|
||||
GRFMappedStringID production_down_text; ///< Message appearing when the industry's production is decreasing
|
||||
GRFMappedStringID station_name; ///< Default name for nearby station
|
||||
byte appear_ingame[NUM_LANDSCAPE]; ///< Probability of appearance in game
|
||||
byte appear_creation[NUM_LANDSCAPE]; ///< Probability of appearance during map creation
|
||||
uint8 number_of_sounds; ///< Number of sounds available in the sounds array
|
||||
|
@@ -815,7 +815,7 @@ static void ClickTile_Industry(TileIndex tile)
|
||||
ShowIndustryViewWindow(GetIndustryIndex(tile));
|
||||
}
|
||||
|
||||
static uint32 GetTileTrackStatus_Industry(TileIndex tile, TransportType mode, uint sub_mode)
|
||||
static TrackStatus GetTileTrackStatus_Industry(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -841,7 +841,7 @@ static bool IsBadFarmFieldTile(TileIndex tile)
|
||||
{
|
||||
switch (GetTileType(tile)) {
|
||||
case MP_CLEAR: return IsClearGround(tile, CLEAR_FIELDS) || IsClearGround(tile, CLEAR_SNOW) || IsClearGround(tile, CLEAR_DESERT);
|
||||
case MP_TREES: return false;
|
||||
case MP_TREES: return (GetTreeGround(tile) == TREE_GROUND_SHORE);
|
||||
default: return true;
|
||||
}
|
||||
}
|
||||
@@ -850,7 +850,7 @@ static bool IsBadFarmFieldTile2(TileIndex tile)
|
||||
{
|
||||
switch (GetTileType(tile)) {
|
||||
case MP_CLEAR: return IsClearGround(tile, CLEAR_SNOW) || IsClearGround(tile, CLEAR_DESERT);
|
||||
case MP_TREES: return false;
|
||||
case MP_TREES: return (GetTreeGround(tile) == TREE_GROUND_SHORE);
|
||||
default: return true;
|
||||
}
|
||||
}
|
||||
@@ -1415,6 +1415,16 @@ static bool CheckIfFarEnoughFromIndustry(TileIndex tile, int type)
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Production level maximum, minimum and default values.
|
||||
* It is not a value been really used in order to change, but rather an indicator
|
||||
* of how the industry is behaving. */
|
||||
enum ProductionLevels {
|
||||
PRODLEVEL_CLOSURE = 0x00, ///< signal set to actually close the industry
|
||||
PRODLEVEL_MINIMUM = 0x04, ///< below this level, the industry is set to be closing
|
||||
PRODLEVEL_DEFAULT = 0x10, ///< default level set when the industry is created
|
||||
PRODLEVEL_MAXIMUM = 0x80, ///< the industry is running at full speed
|
||||
};
|
||||
|
||||
static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const IndustryTileTable *it, byte layout, const Town *t, Owner owner)
|
||||
{
|
||||
const IndustrySpec *indspec = GetIndustrySpec(type);
|
||||
@@ -1503,7 +1513,7 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const Ind
|
||||
|
||||
if (!_generating_world) i->last_month_production[0] = i->last_month_production[1] = 0;
|
||||
|
||||
i->prod_level = 0x10;
|
||||
i->prod_level = PRODLEVEL_DEFAULT;
|
||||
|
||||
do {
|
||||
TileIndex cur_tile = tile + ToTileIndexDiff(it->ti);
|
||||
@@ -1524,11 +1534,11 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const Ind
|
||||
SetIndustryConstructionCounter(cur_tile, 3);
|
||||
SetIndustryConstructionStage(cur_tile, 2);
|
||||
}
|
||||
if (it->gfx >= NEW_INDUSTRYTILEOFFSET) {
|
||||
/* New industry */
|
||||
const IndustryTileSpec *its = GetIndustryTileSpec(it->gfx);
|
||||
if (its->animation_info != 0xFFFF) AddAnimatedTile(cur_tile);
|
||||
}
|
||||
|
||||
/* it->gfx is stored in the map. But the translated ID cur_gfx is the interesting one */
|
||||
IndustryGfx cur_gfx = GetTranslatedIndustryTileID(it->gfx);
|
||||
const IndustryTileSpec *its = GetIndustryTileSpec(cur_gfx);
|
||||
if (its->animation_info != 0xFFFF) AddAnimatedTile(cur_tile);
|
||||
}
|
||||
} while ((++it)->ti.x != -0x80);
|
||||
|
||||
@@ -1548,9 +1558,10 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const Ind
|
||||
* @param flags of operations to conduct
|
||||
* @param indspec pointer to industry specifications
|
||||
* @param itspec_index the index of the itsepc to build/fund
|
||||
* @param seed random seed (possibly) used by industries
|
||||
* @return the pointer of the newly created industry, or NULL if it failed
|
||||
*/
|
||||
static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint32 flags, const IndustrySpec *indspec, uint itspec_index)
|
||||
static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint32 flags, const IndustrySpec *indspec, uint itspec_index, uint32 seed)
|
||||
{
|
||||
const IndustryTileTable *it = indspec->table[itspec_index];
|
||||
bool custom_shape_check = false;
|
||||
@@ -1558,7 +1569,7 @@ static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint
|
||||
if (!CheckIfIndustryTilesAreFree(tile, it, itspec_index, type, &custom_shape_check)) return NULL;
|
||||
|
||||
if (HasBit(GetIndustrySpec(type)->callback_flags, CBM_IND_LOCATION)) {
|
||||
if (!CheckIfCallBackAllowsCreation(tile, type, itspec_index)) return NULL;
|
||||
if (!CheckIfCallBackAllowsCreation(tile, type, itspec_index, seed)) return NULL;
|
||||
} else {
|
||||
if (!_check_new_industry_procs[indspec->check_proc](tile)) return NULL;
|
||||
}
|
||||
@@ -1588,15 +1599,15 @@ static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, uint
|
||||
/** Build/Fund an industry
|
||||
* @param tile tile where industry is built
|
||||
* @param flags of operations to conduct
|
||||
* @param p1 industry type see build_industry.h and see industry.h
|
||||
* @param p2 first layout to try
|
||||
* @param p1 various bitstuffed elements
|
||||
* - p1 = (bit 0 - 15) - industry type see build_industry.h and see industry.h
|
||||
* - p1 = (bit 16 - 31) - first layout to try
|
||||
* @param p2 seed to use for variable 8F
|
||||
* @return index of the newly create industry, or CMD_ERROR if it failed
|
||||
*/
|
||||
CommandCost CmdBuildIndustry(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
const IndustrySpec *indspec;
|
||||
|
||||
indspec = GetIndustrySpec(p1);
|
||||
const IndustrySpec *indspec = GetIndustrySpec(GB(p1, 0, 16));
|
||||
|
||||
/* Check if the to-be built/founded industry is available for this climate. */
|
||||
if (!indspec->enabled) {
|
||||
@@ -1620,7 +1631,7 @@ CommandCost CmdBuildIndustry(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
* because parameter evaluation order is not guaranteed in the c++ standard
|
||||
*/
|
||||
tile = RandomTile();
|
||||
const Industry *ind = CreateNewIndustryHelper(tile, p1, flags, indspec, RandomRange(indspec->num_table));
|
||||
const Industry *ind = CreateNewIndustryHelper(tile, p1, flags, indspec, RandomRange(indspec->num_table), p2);
|
||||
if (ind != NULL) {
|
||||
SetDParam(0, indspec->name);
|
||||
if (indspec->new_industry_text > STR_LAST_STRINGID) {
|
||||
@@ -1639,7 +1650,7 @@ CommandCost CmdBuildIndustry(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
} else {
|
||||
int count = indspec->num_table;
|
||||
const IndustryTileTable * const *itt = indspec->table;
|
||||
int num = Clamp(p2, 0, count - 1);
|
||||
int num = Clamp(GB(p1, 16, 16), 0, count - 1);
|
||||
|
||||
_error_message = STR_0239_SITE_UNSUITABLE;
|
||||
do {
|
||||
@@ -1647,7 +1658,7 @@ CommandCost CmdBuildIndustry(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
if (--num < 0) num = indspec->num_table - 1;
|
||||
} while (!CheckIfIndustryTilesAreFree(tile, itt[num], num, p1));
|
||||
|
||||
if (CreateNewIndustryHelper(tile, p1, flags, indspec, num) == NULL) return CMD_ERROR;
|
||||
if (CreateNewIndustryHelper(tile, p1, flags, indspec, num, p2) == NULL) return CMD_ERROR;
|
||||
}
|
||||
|
||||
return CommandCost(EXPENSES_OTHER, indspec->GetConstructionCost());
|
||||
@@ -1658,7 +1669,8 @@ Industry *CreateNewIndustry(TileIndex tile, IndustryType type)
|
||||
{
|
||||
const IndustrySpec *indspec = GetIndustrySpec(type);
|
||||
|
||||
return CreateNewIndustryHelper(tile, type, DC_EXEC, indspec, RandomRange(indspec->num_table));
|
||||
uint32 seed = Random();
|
||||
return CreateNewIndustryHelper(tile, type, DC_EXEC, indspec, RandomRange(indspec->num_table), seed);
|
||||
}
|
||||
|
||||
enum {
|
||||
@@ -2007,7 +2019,6 @@ enum {
|
||||
*/
|
||||
static void ChangeIndustryProduction(Industry *i, bool monthly)
|
||||
{
|
||||
extern StringID MapGRFStringID(uint32 grfid, StringID str);
|
||||
StringID str = STR_NULL;
|
||||
bool closeit = false;
|
||||
const IndustrySpec *indspec = GetIndustrySpec(i->type);
|
||||
@@ -2124,8 +2135,8 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
|
||||
}
|
||||
|
||||
/* Increase if needed */
|
||||
while (mul-- != 0 && i->prod_level < 0x80) {
|
||||
i->prod_level <<= 1;
|
||||
while (mul-- != 0 && i->prod_level < PRODLEVEL_MAXIMUM) {
|
||||
i->prod_level = min(i->prod_level * 2, PRODLEVEL_MAXIMUM);
|
||||
i->production_rate[0] = min(i->production_rate[0] * 2, 0xFF);
|
||||
i->production_rate[1] = min(i->production_rate[1] * 2, 0xFF);
|
||||
if (str == STR_NULL) str = indspec->production_up_text;
|
||||
@@ -2133,24 +2144,28 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
|
||||
|
||||
/* Decrease if needed */
|
||||
while (div-- != 0 && !closeit) {
|
||||
if (i->prod_level == 4) {
|
||||
if (i->prod_level == PRODLEVEL_MINIMUM) {
|
||||
closeit = true;
|
||||
} else {
|
||||
i->prod_level >>= 1;
|
||||
i->production_rate[0] = (i->production_rate[0] + 1) >> 1;
|
||||
i->production_rate[1] = (i->production_rate[1] + 1) >> 1;
|
||||
i->prod_level = max(i->prod_level / 2, (int)PRODLEVEL_MINIMUM); // typecast to int required to please MSVC
|
||||
i->production_rate[0] = (i->production_rate[0] + 1) / 2;
|
||||
i->production_rate[1] = (i->production_rate[1] + 1) / 2;
|
||||
if (str == STR_NULL) str = indspec->production_down_text;
|
||||
}
|
||||
}
|
||||
|
||||
/* Increase or Decreasing the production level if needed */
|
||||
if (increment != 0) {
|
||||
i->prod_level = ClampU(i->prod_level + increment, 4, 0x80);
|
||||
if (i->prod_level == 4) closeit = true;
|
||||
if (increment < 0 && i->prod_level == PRODLEVEL_MINIMUM) {
|
||||
closeit = true;
|
||||
} else {
|
||||
i->prod_level = ClampU(i->prod_level + increment, PRODLEVEL_MINIMUM, PRODLEVEL_MAXIMUM);
|
||||
}
|
||||
}
|
||||
|
||||
/* Close if needed and allowed */
|
||||
if (closeit && !CheckIndustryCloseDownProtection(i->type)) {
|
||||
i->prod_level = 0;
|
||||
i->prod_level = PRODLEVEL_CLOSURE;
|
||||
str = indspec->closure_text;
|
||||
}
|
||||
|
||||
@@ -2194,7 +2209,7 @@ void IndustryMonthlyLoop()
|
||||
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
UpdateIndustryStatistics(i);
|
||||
if (i->prod_level == 0) {
|
||||
if (i->prod_level == PRODLEVEL_CLOSURE) {
|
||||
delete i;
|
||||
} else {
|
||||
ChangeIndustryProduction(i, true);
|
||||
@@ -2300,12 +2315,12 @@ static const SaveLoad _industry_desc[] = {
|
||||
SLE_VAR(Industry, width, SLE_UINT8),
|
||||
SLE_VAR(Industry, height, SLE_UINT8),
|
||||
SLE_REF(Industry, town, REF_TOWN),
|
||||
SLE_CONDNULL( 2, 2, 60), ///< used to be industry's produced_cargo
|
||||
SLE_CONDNULL( 2, 0, 60), ///< used to be industry's produced_cargo
|
||||
SLE_CONDARR(Industry, produced_cargo, SLE_UINT8, 2, 78, SL_MAX_VERSION),
|
||||
SLE_CONDARR(Industry, incoming_cargo_waiting, SLE_UINT16, 3, 70, SL_MAX_VERSION),
|
||||
SLE_ARR(Industry, produced_cargo_waiting, SLE_UINT16, 2),
|
||||
SLE_ARR(Industry, production_rate, SLE_UINT8, 2),
|
||||
SLE_CONDNULL( 3, 2, 60), ///< used to be industry's accepts_cargo
|
||||
SLE_CONDNULL( 3, 0, 60), ///< used to be industry's accepts_cargo
|
||||
SLE_CONDARR(Industry, accepts_cargo, SLE_UINT8, 3, 78, SL_MAX_VERSION),
|
||||
SLE_VAR(Industry, prod_level, SLE_UINT8),
|
||||
SLE_ARR(Industry, this_month_production, SLE_UINT16, 2),
|
||||
|
@@ -57,6 +57,9 @@ static struct IndustryData {
|
||||
bool enabled[NUM_INDUSTRYTYPES + 1]; ///< availability state, coming from CBID_INDUSTRY_AVAILABLE (if ever)
|
||||
} _fund_gui;
|
||||
|
||||
assert_compile(lengthof(_fund_gui.index) == lengthof(_fund_gui.text));
|
||||
assert_compile(lengthof(_fund_gui.index) == lengthof(_fund_gui.enabled));
|
||||
|
||||
static void BuildDynamicIndustryWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
switch (e->event) {
|
||||
@@ -79,11 +82,14 @@ static void BuildDynamicIndustryWndProc(Window *w, WindowEvent *e)
|
||||
WP(w, fnd_d).timer_enabled = _loaded_newgrf_features.has_newindustries;
|
||||
|
||||
/* Initilialize structures */
|
||||
memset(&_fund_gui.index, 0xFF, NUM_INDUSTRYTYPES);
|
||||
memset(&_fund_gui.text, STR_NULL, NUM_INDUSTRYTYPES);
|
||||
memset(&_fund_gui.enabled, false, NUM_INDUSTRYTYPES);
|
||||
_fund_gui.count = 0;
|
||||
|
||||
for (uint i = 0; i < lengthof(_fund_gui.index); i++) {
|
||||
_fund_gui.index[i] = 0xFF;
|
||||
_fund_gui.text[i] = STR_NULL;
|
||||
_fund_gui.enabled[i] = false;
|
||||
}
|
||||
|
||||
w->vscroll.cap = 8; // rows in grid, same in scroller
|
||||
w->resize.step_height = 13;
|
||||
|
||||
@@ -253,7 +259,7 @@ static void BuildDynamicIndustryWndProc(Window *w, WindowEvent *e)
|
||||
_generating_world = false;
|
||||
}
|
||||
} else if (_game_mode != GM_EDITOR && _patches.raw_industry_construction == 2 && GetIndustrySpec(WP(w, fnd_d).select)->IsRawIndustry()) {
|
||||
DoCommandP(0, WP(w, fnd_d).select, 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
|
||||
DoCommandP(0, WP(w, fnd_d).select, InteractiveRandom(), NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
|
||||
w->HandleButtonClick(DPIW_FUND_WIDGET);
|
||||
} else {
|
||||
HandlePlacePushButton(w, DPIW_FUND_WIDGET, SPR_CURSOR_INDUSTRY, VHM_RECT, NULL);
|
||||
@@ -272,6 +278,7 @@ static void BuildDynamicIndustryWndProc(Window *w, WindowEvent *e)
|
||||
bool success = true;
|
||||
/* We do not need to protect ourselves against "Random Many Industries" in this mode */
|
||||
const IndustrySpec *indsp = GetIndustrySpec(WP(w, fnd_d).select);
|
||||
uint32 seed = InteractiveRandom();
|
||||
|
||||
if (_game_mode == GM_EDITOR) {
|
||||
/* Show error if no town exists at all */
|
||||
@@ -284,7 +291,7 @@ static void BuildDynamicIndustryWndProc(Window *w, WindowEvent *e)
|
||||
_current_player = OWNER_NONE;
|
||||
_generating_world = true;
|
||||
_ignore_restrictions = true;
|
||||
success = DoCommandP(e->we.place.tile, WP(w, fnd_d).select, InteractiveRandomRange(indsp->num_table), NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
|
||||
success = DoCommandP(e->we.place.tile, (InteractiveRandomRange(indsp->num_table) << 16) | WP(w, fnd_d).select, seed, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
|
||||
if (!success) {
|
||||
SetDParam(0, indsp->name);
|
||||
ShowErrorMessage(_error_message, STR_0285_CAN_T_BUILD_HERE, e->we.place.pt.x, e->we.place.pt.y);
|
||||
@@ -293,7 +300,7 @@ static void BuildDynamicIndustryWndProc(Window *w, WindowEvent *e)
|
||||
_ignore_restrictions = false;
|
||||
_generating_world = false;
|
||||
} else {
|
||||
success = DoCommandP(e->we.place.tile, WP(w, fnd_d).select, InteractiveRandomRange(indsp->num_table), NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
|
||||
success = DoCommandP(e->we.place.tile, (InteractiveRandomRange(indsp->num_table) << 16) | WP(w, fnd_d).select, seed, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
|
||||
}
|
||||
|
||||
/* If an industry has been built, just reset the cursor and the system */
|
||||
@@ -384,6 +391,7 @@ enum IndustryViewWidgets {
|
||||
IVW_INFO,
|
||||
IVW_GOTO,
|
||||
IVW_SPACER,
|
||||
IVW_RESIZE_WIDGET,
|
||||
};
|
||||
|
||||
/** Information to store about the industry window */
|
||||
@@ -437,13 +445,27 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
|
||||
lines++;
|
||||
}
|
||||
|
||||
if (HasBit(ind->callback_flags, CBM_IND_WINDOW_MORE_TEXT)) lines += 2;
|
||||
|
||||
for (byte j = 5; j <= 7; j++) {
|
||||
if (j != 5) w->widget[j].top += lines * 10;
|
||||
w->widget[j].bottom += lines * 10;
|
||||
if (HasBit(ind->callback_flags, CBM_IND_WINDOW_MORE_TEXT)) {
|
||||
lines += 2;
|
||||
} else {
|
||||
/* Remove the resizing option from the widgets. Do it before the Hiding since it will be overwritten */
|
||||
for (byte j = IVW_INFO; j <= IVW_RESIZE_WIDGET; j++) {
|
||||
w->widget[j].display_flags = RESIZE_NONE;
|
||||
}
|
||||
/* Hide the resize button and enlarge the spacer so it will take its place */
|
||||
w->HideWidget(IVW_RESIZE_WIDGET);
|
||||
w->widget[IVW_SPACER].right = w->widget[IVW_RESIZE_WIDGET].right;
|
||||
}
|
||||
w->height += lines * 10;
|
||||
|
||||
lines *= 10;
|
||||
|
||||
/* Resize the widgets for the new size, given by the addition of cargos */
|
||||
for (byte j = IVW_INFO; j <= IVW_RESIZE_WIDGET; j++) {
|
||||
if (j != IVW_INFO) w->widget[j].top += lines;
|
||||
w->widget[j].bottom += lines;
|
||||
}
|
||||
w->height += lines;
|
||||
w->resize.height += lines;
|
||||
} break;
|
||||
|
||||
case WE_PAINT: {
|
||||
@@ -515,10 +537,12 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
|
||||
if (callback_res != CALLBACK_FAILED) {
|
||||
StringID message = GetGRFStringID(ind->grf_prop.grffile->grfid, 0xD000 + callback_res);
|
||||
if (message != STR_NULL && message != STR_UNDEFINED) {
|
||||
const Widget *wi = &w->widget[IVW_INFO];
|
||||
y += 10;
|
||||
|
||||
PrepareTextRefStackUsage(6);
|
||||
DrawString(2, y, message, TC_FROMSTRING);
|
||||
/* Use all the available space left from where we stand up to the end of the window */
|
||||
DrawStringMultiLine(2, y, message, wi->right - wi->left - 4, wi->bottom - y);
|
||||
StopTextRefStackUsage();
|
||||
}
|
||||
}
|
||||
@@ -607,9 +631,10 @@ static const Widget _industry_view_widgets[] = {
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 9, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, // IVW_STICKY
|
||||
{ WWT_PANEL, RESIZE_NONE, 9, 0, 259, 14, 105, 0x0, STR_NULL}, // IVW_BACKGROUND
|
||||
{ WWT_INSET, RESIZE_NONE, 9, 2, 257, 16, 103, 0x0, STR_NULL}, // IVW_VIEWPORT
|
||||
{ WWT_PANEL, RESIZE_NONE, 9, 0, 259, 106, 147, 0x0, STR_NULL}, // IVW_INFO
|
||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 9, 0, 129, 148, 159, STR_00E4_LOCATION, STR_482C_CENTER_THE_MAIN_VIEW_ON}, // IVW_GOTO
|
||||
{ WWT_PANEL, RESIZE_NONE, 9, 130, 259, 148, 159, 0x0, STR_NULL}, // IVW_SPACER
|
||||
{ WWT_PANEL, RESIZE_BOTTOM, 9, 0, 259, 106, 147, 0x0, STR_NULL}, // IVW_INFO
|
||||
{ WWT_PUSHTXTBTN, RESIZE_TB, 9, 0, 129, 148, 159, STR_00E4_LOCATION, STR_482C_CENTER_THE_MAIN_VIEW_ON}, // IVW_GOTO
|
||||
{ WWT_PANEL, RESIZE_TB, 9, 130, 247, 148, 159, 0x0, STR_NULL}, // IVW_SPACER
|
||||
{ WWT_RESIZEBOX, RESIZE_TB, 9, 248, 259, 148, 159, 0x0, STR_RESIZE_BUTTON}, // IVW_RESIZE_WIDGET
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -617,7 +642,7 @@ static const Widget _industry_view_widgets[] = {
|
||||
static const WindowDesc _industry_view_desc = {
|
||||
WDP_AUTO, WDP_AUTO, 260, 160, 260, 160,
|
||||
WC_INDUSTRY_VIEW, WC_NONE,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
|
||||
_industry_view_widgets,
|
||||
IndustryViewWndProc
|
||||
};
|
||||
@@ -781,10 +806,6 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
switch (e->event) {
|
||||
case WE_PAINT: {
|
||||
int n;
|
||||
uint p;
|
||||
static const uint16 _indicator_positions[4] = {88, 187, 284, 387};
|
||||
|
||||
if (_industry_sort_dirty) {
|
||||
_industry_sort_dirty = false;
|
||||
MakeSortedIndustryList();
|
||||
@@ -793,10 +814,10 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
|
||||
SetVScrollCount(w, _num_industry_sort);
|
||||
|
||||
DrawWindowWidgets(w);
|
||||
DoDrawString(_industry_sort_order & 1 ? DOWNARROW : UPARROW, _indicator_positions[_industry_sort_order >> 1], 15, TC_BLACK);
|
||||
DrawSortButtonState(w, IDW_SORTBYNAME + (_industry_sort_order >> 1), _industry_sort_order & 1 ? SBS_DOWN : SBS_UP);
|
||||
|
||||
p = w->vscroll.pos;
|
||||
n = 0;
|
||||
uint p = w->vscroll.pos;
|
||||
int n = 0;
|
||||
|
||||
while (p < _num_industry_sort) {
|
||||
const Industry* i = _industry_sort[p];
|
||||
|
@@ -52,51 +52,73 @@ static inline void SetNewLandscapeType(byte landscape)
|
||||
InvalidateWindowClasses(WC_SELECT_GAME);
|
||||
}
|
||||
|
||||
enum SelectGameIntroWidgets {
|
||||
SGI_GENERATE_GAME = 2,
|
||||
SGI_LOAD_GAME,
|
||||
SGI_PLAY_SCENARIO,
|
||||
SGI_PLAY_HEIGHTMAP,
|
||||
SGI_EDIT_SCENARIO,
|
||||
SGI_PLAY_NETWORK,
|
||||
SGI_TEMPERATE_LANDSCAPE,
|
||||
SGI_ARCTIC_LANDSCAPE,
|
||||
SGI_TROPIC_LANDSCAPE,
|
||||
SGI_TOYLAND_LANDSCAPE,
|
||||
SGI_OPTIONS,
|
||||
SGI_DIFFICULTIES,
|
||||
SGI_PATCHES_OPTIONS,
|
||||
SGI_GRF_SETTINGS,
|
||||
SGI_EXIT,
|
||||
};
|
||||
|
||||
static void SelectGameWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
switch (e->event) {
|
||||
case WE_CREATE: w->LowerWidget(_opt_newgame.landscape + 8); break;
|
||||
case WE_CREATE: w->LowerWidget(_opt_newgame.landscape + 8); break;
|
||||
|
||||
case WE_PAINT:
|
||||
w->SetWidgetLoweredState(8, _opt_newgame.landscape == LT_TEMPERATE);
|
||||
w->SetWidgetLoweredState(9, _opt_newgame.landscape == LT_ARCTIC);
|
||||
w->SetWidgetLoweredState(10, _opt_newgame.landscape == LT_TROPIC);
|
||||
w->SetWidgetLoweredState(11, _opt_newgame.landscape == LT_TOYLAND);
|
||||
SetDParam(0, STR_6801_EASY + _opt_newgame.diff_level);
|
||||
DrawWindowWidgets(w);
|
||||
break;
|
||||
case WE_PAINT:
|
||||
w->SetWidgetLoweredState(SGI_TEMPERATE_LANDSCAPE, _opt_newgame.landscape == LT_TEMPERATE);
|
||||
w->SetWidgetLoweredState(SGI_ARCTIC_LANDSCAPE, _opt_newgame.landscape == LT_ARCTIC);
|
||||
w->SetWidgetLoweredState(SGI_TROPIC_LANDSCAPE, _opt_newgame.landscape == LT_TROPIC);
|
||||
w->SetWidgetLoweredState(SGI_TOYLAND_LANDSCAPE, _opt_newgame.landscape == LT_TOYLAND);
|
||||
SetDParam(0, STR_6801_EASY + _opt_newgame.diff_level);
|
||||
DrawWindowWidgets(w);
|
||||
break;
|
||||
|
||||
case WE_CLICK:
|
||||
case WE_CLICK:
|
||||
#ifdef ENABLE_NETWORK
|
||||
/* Do not create a network server when you (just) have closed one of the game
|
||||
* creation/load windows for the network server. */
|
||||
if (2 <= e->we.click.widget && e->we.click.widget <= 6) _is_network_server = false;
|
||||
/* Do not create a network server when you (just) have closed one of the game
|
||||
* creation/load windows for the network server. */
|
||||
if (SGI_GENERATE_GAME <= e->we.click.widget && e->we.click.widget <= SGI_EDIT_SCENARIO) _is_network_server = false;
|
||||
#endif /* ENABLE_NETWORK */
|
||||
|
||||
switch (e->we.click.widget) {
|
||||
case 2: ShowGenerateLandscape(); break;
|
||||
case 3: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
|
||||
case 4: ShowSaveLoadDialog(SLD_LOAD_SCENARIO); break;
|
||||
case 5: ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); break;
|
||||
case 6: StartScenarioEditor(); break;
|
||||
case 7:
|
||||
if (!_network_available) {
|
||||
ShowErrorMessage(INVALID_STRING_ID, STR_NETWORK_ERR_NOTAVAILABLE, 0, 0);
|
||||
} else {
|
||||
ShowNetworkGameWindow();
|
||||
switch (e->we.click.widget) {
|
||||
case SGI_GENERATE_GAME: ShowGenerateLandscape(); break;
|
||||
case SGI_LOAD_GAME: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
|
||||
case SGI_PLAY_SCENARIO: ShowSaveLoadDialog(SLD_LOAD_SCENARIO); break;
|
||||
case SGI_PLAY_HEIGHTMAP: ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); break;
|
||||
case SGI_EDIT_SCENARIO: StartScenarioEditor(); break;
|
||||
|
||||
case SGI_PLAY_NETWORK:
|
||||
if (!_network_available) {
|
||||
ShowErrorMessage(INVALID_STRING_ID, STR_NETWORK_ERR_NOTAVAILABLE, 0, 0);
|
||||
} else {
|
||||
ShowNetworkGameWindow();
|
||||
}
|
||||
break;
|
||||
|
||||
case SGI_TEMPERATE_LANDSCAPE: case SGI_ARCTIC_LANDSCAPE:
|
||||
case SGI_TROPIC_LANDSCAPE: case SGI_TOYLAND_LANDSCAPE:
|
||||
w->RaiseWidget(_opt_newgame.landscape + SGI_TEMPERATE_LANDSCAPE);
|
||||
SetNewLandscapeType(e->we.click.widget - SGI_TEMPERATE_LANDSCAPE);
|
||||
break;
|
||||
|
||||
case SGI_OPTIONS: ShowGameOptions(); break;
|
||||
case SGI_DIFFICULTIES: ShowGameDifficulty(); break;
|
||||
case SGI_PATCHES_OPTIONS: ShowPatchesSelection(); break;
|
||||
case SGI_GRF_SETTINGS: ShowNewGRFSettings(true, true, false, &_grfconfig_newgame); break;
|
||||
case SGI_EXIT: HandleExitGameRequest(); break;
|
||||
}
|
||||
break;
|
||||
case 8: case 9: case 10: case 11:
|
||||
w->RaiseWidget(_opt_newgame.landscape + 8);
|
||||
SetNewLandscapeType(e->we.click.widget - 8);
|
||||
break;
|
||||
case 12: ShowGameOptions(); break;
|
||||
case 13: ShowGameDifficulty(); break;
|
||||
case 14: ShowPatchesSelection(); break;
|
||||
case 15: ShowNewGRFSettings(true, true, false, &_grfconfig_newgame); break;
|
||||
case 16: HandleExitGameRequest(); break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,9 +143,9 @@ static void AskExitGameCallback(Window *w, bool confirmed)
|
||||
void AskExitGame()
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
SetDParam(0, STR_0133_WINDOWS);
|
||||
SetDParam(0, STR_OSNAME_WINDOWS);
|
||||
#elif defined(__APPLE__)
|
||||
SetDParam(0, STR_0135_OSX);
|
||||
SetDParam(0, STR_OSNAME_OSX);
|
||||
#elif defined(__BEOS__)
|
||||
SetDParam(0, STR_OSNAME_BEOS);
|
||||
#elif defined(__MORPHOS__)
|
||||
@@ -135,7 +157,7 @@ void AskExitGame()
|
||||
#elif defined(SUNOS)
|
||||
SetDParam(0, STR_OSNAME_SUNOS);
|
||||
#else
|
||||
SetDParam(0, STR_0134_UNIX);
|
||||
SetDParam(0, STR_OSNAME_UNIX);
|
||||
#endif
|
||||
ShowQuery(
|
||||
STR_00C7_QUIT,
|
||||
|
@@ -23,6 +23,7 @@
|
||||
#include "date_func.h"
|
||||
#include "vehicle_func.h"
|
||||
#include "settings_type.h"
|
||||
#include "water.h"
|
||||
|
||||
#include "table/sprites.h"
|
||||
|
||||
@@ -141,7 +142,7 @@ uint GetPartialZ(int x, int y, Slope corners)
|
||||
|
||||
int z = 0;
|
||||
|
||||
switch (corners & ~SLOPE_HALFTILE_MASK) {
|
||||
switch (RemoveHalftileSlope(corners)) {
|
||||
case SLOPE_W:
|
||||
if (x - y >= 0)
|
||||
z = (x - y) >> 1;
|
||||
@@ -253,10 +254,7 @@ uint GetSlopeZ(int x, int y)
|
||||
int GetSlopeZInCorner(Slope tileh, Corner corner)
|
||||
{
|
||||
assert(!IsHalftileSlope(tileh));
|
||||
static const int _corner_slopes[4][2] = {
|
||||
{ SLOPE_W, SLOPE_STEEP_W }, { SLOPE_S, SLOPE_STEEP_S }, { SLOPE_E, SLOPE_STEEP_E }, { SLOPE_N, SLOPE_STEEP_N }
|
||||
};
|
||||
return ((tileh & _corner_slopes[corner][0]) != 0 ? TILE_HEIGHT : 0) + (tileh == _corner_slopes[corner][1] ? TILE_HEIGHT : 0);
|
||||
return ((tileh & SlopeWithOneCornerRaised(corner)) != 0 ? TILE_HEIGHT : 0) + (tileh == SteepSlope(corner) ? TILE_HEIGHT : 0);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -288,15 +286,24 @@ void GetSlopeZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2)
|
||||
|
||||
if ((tileh & corners[edge][0]) != 0) *z1 += TILE_HEIGHT; // z1 is raised
|
||||
if ((tileh & corners[edge][1]) != 0) *z2 += TILE_HEIGHT; // z2 is raised
|
||||
if ((tileh & ~SLOPE_HALFTILE_MASK) == corners[edge][2]) *z1 += TILE_HEIGHT; // z1 is highest corner of a steep slope
|
||||
if ((tileh & ~SLOPE_HALFTILE_MASK) == corners[edge][3]) *z2 += TILE_HEIGHT; // z2 is highest corner of a steep slope
|
||||
if (RemoveHalftileSlope(tileh) == corners[edge][2]) *z1 += TILE_HEIGHT; // z1 is highest corner of a steep slope
|
||||
if (RemoveHalftileSlope(tileh) == corners[edge][3]) *z2 += TILE_HEIGHT; // z2 is highest corner of a steep slope
|
||||
}
|
||||
|
||||
static Slope GetFoundationSlope(TileIndex tile, uint* z)
|
||||
/**
|
||||
* Get slope of a tile on top of a (possible) foundation
|
||||
* If a tile does not have a foundation, the function returns the same as GetTileSlope.
|
||||
*
|
||||
* @param tile The tile of interest.
|
||||
* @param z returns the z of the foundation slope. (Can be NULL, if not needed)
|
||||
* @return The slope on top of the foundation.
|
||||
*/
|
||||
Slope GetFoundationSlope(TileIndex tile, uint* z)
|
||||
{
|
||||
Slope tileh = GetTileSlope(tile, z);
|
||||
Foundation f = _tile_type_procs[GetTileType(tile)]->get_foundation_proc(tile, tileh);
|
||||
*z += ApplyFoundationToSlope(f, &tileh);
|
||||
uint z_inc = ApplyFoundationToSlope(f, &tileh);
|
||||
if (z != NULL) *z += z_inc;
|
||||
return tileh;
|
||||
}
|
||||
|
||||
@@ -430,9 +437,18 @@ void DoClearSquare(TileIndex tile)
|
||||
MarkTileDirtyByTile(tile);
|
||||
}
|
||||
|
||||
uint32 GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode)
|
||||
/** Returns information about trackdirs and signal states.
|
||||
* If there is any trackbit at 'side', return all trackdirbits.
|
||||
* For TRANSPORT_ROAD, return no trackbits if there is no roadbit (of given subtype) at given side.
|
||||
* @param tile tile to get info about
|
||||
* @param mode transport type
|
||||
* @param sub_mode for TRANSPORT_ROAD, roadtypes to check
|
||||
* @param side side we are entering from, INVALID_DIAGDIR to return all trackbits
|
||||
* @return trackdirbits and other info depending on 'mode'
|
||||
*/
|
||||
TrackStatus GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
return _tile_type_procs[GetTileType(tile)]->get_tile_track_status_proc(tile, mode, sub_mode);
|
||||
return _tile_type_procs[GetTileType(tile)]->get_tile_track_status_proc(tile, mode, sub_mode, side);
|
||||
}
|
||||
|
||||
void ChangeTileOwner(TileIndex tile, PlayerID old_player, PlayerID new_player)
|
||||
@@ -629,7 +645,7 @@ void InitializeLandscape()
|
||||
for (x = 0; x < maxx; x++) {
|
||||
MakeClear(sizex * y + x, CLEAR_GRASS, 3);
|
||||
SetTileHeight(sizex * y + x, 0);
|
||||
SetTropicZone(sizex * y + x, TROPICZONE_INVALID);
|
||||
SetTropicZone(sizex * y + x, TROPICZONE_NORMAL);
|
||||
ClearBridgeMiddle(sizex * y + x);
|
||||
}
|
||||
MakeVoid(sizex * y + x);
|
||||
@@ -637,53 +653,6 @@ void InitializeLandscape()
|
||||
for (x = 0; x < sizex; x++) MakeVoid(sizex * y + x);
|
||||
}
|
||||
|
||||
void ConvertGroundTilesIntoWaterTiles()
|
||||
{
|
||||
TileIndex tile;
|
||||
uint z;
|
||||
Slope slope;
|
||||
|
||||
for (tile = 0; tile < MapSize(); ++tile) {
|
||||
slope = GetTileSlope(tile, &z);
|
||||
if (IsTileType(tile, MP_CLEAR) && z == 0) {
|
||||
/* Make both water for tiles at level 0
|
||||
* and make shore, as that looks much better
|
||||
* during the generation. */
|
||||
switch (slope) {
|
||||
case SLOPE_FLAT:
|
||||
MakeWater(tile);
|
||||
break;
|
||||
|
||||
case SLOPE_N:
|
||||
case SLOPE_E:
|
||||
case SLOPE_S:
|
||||
case SLOPE_W:
|
||||
MakeShore(tile);
|
||||
break;
|
||||
|
||||
case SLOPE_NW:
|
||||
if (GetTileSlope(TileAddByDiagDir(tile, DIAGDIR_SE), NULL) != SLOPE_SE) MakeShore(tile);
|
||||
break;
|
||||
|
||||
case SLOPE_SW:
|
||||
if (GetTileSlope(TileAddByDiagDir(tile, DIAGDIR_NE), NULL) != SLOPE_NE) MakeShore(tile);
|
||||
break;
|
||||
|
||||
case SLOPE_SE:
|
||||
if (GetTileSlope(TileAddByDiagDir(tile, DIAGDIR_NW), NULL) != SLOPE_NW) MakeShore(tile);
|
||||
break;
|
||||
|
||||
case SLOPE_NE:
|
||||
if (GetTileSlope(TileAddByDiagDir(tile, DIAGDIR_SW), NULL) != SLOPE_SW) MakeShore(tile);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static const byte _genterrain_tbl_1[5] = { 10, 22, 33, 37, 4 };
|
||||
static const byte _genterrain_tbl_2[5] = { 0, 0, 0, 0, 33 };
|
||||
|
||||
@@ -950,8 +919,3 @@ TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng)
|
||||
TileY(a) + (GB(r, 8, 8) * rn * 2 >> 8) - rn
|
||||
));
|
||||
}
|
||||
|
||||
bool IsValidTile(TileIndex tile)
|
||||
{
|
||||
return (tile < MapSizeX() * MapMaxY() && TileX(tile) != MapMaxX());
|
||||
}
|
||||
|
@@ -26,12 +26,11 @@ byte GetSnowLine(void);
|
||||
byte HighestSnowLine(void);
|
||||
void ClearSnowLine(void);
|
||||
|
||||
bool IsValidTile(TileIndex tile);
|
||||
|
||||
uint GetPartialZ(int x, int y, Slope corners);
|
||||
uint GetSlopeZ(int x, int y);
|
||||
void GetSlopeZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2);
|
||||
int GetSlopeZInCorner(Slope tileh, Corner corner);
|
||||
Slope GetFoundationSlope(TileIndex tile, uint* z);
|
||||
|
||||
static inline Point RemapCoords(int x, int y, int z)
|
||||
{
|
||||
@@ -55,8 +54,6 @@ void RunTileLoop();
|
||||
void InitializeLandscape();
|
||||
void GenerateLandscape(byte mode);
|
||||
|
||||
void ConvertGroundTilesIntoWaterTiles();
|
||||
|
||||
TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng);
|
||||
|
||||
#endif /* LANDSCAPE_H */
|
||||
|
@@ -15,8 +15,6 @@ STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Plat daal vereis
|
||||
STR_0008_WAITING :{BLACK}Wag: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{CARGO}
|
||||
STR_000A_EN_ROUTE_FROM :{WHITE}{CARGO}{YELLOW} (en-roete van
|
||||
STR_000B :{YELLOW}{STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Aanvaar: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Aanvaar: {GOLD}
|
||||
STR_000E :
|
||||
@@ -274,9 +272,9 @@ STR_0130_RENAME :{BLACK}Hernoem
|
||||
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Te veel name bepaal
|
||||
STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Gekies naam alreeds in gebruik
|
||||
|
||||
STR_0133_WINDOWS :Windows
|
||||
STR_0134_UNIX :Unix
|
||||
STR_0135_OSX :OS X
|
||||
STR_OSNAME_WINDOWS :Windows
|
||||
STR_OSNAME_UNIX :Unix
|
||||
STR_OSNAME_OSX :OS X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
@@ -287,11 +285,11 @@ STR_013B_OWNED_BY :{WHITE}...besit
|
||||
STR_013C_CARGO :{BLACK}Vrag
|
||||
STR_013D_INFORMATION :{BLACK}Inligting
|
||||
STR_013E_CAPACITIES :{BLACK}Kapasiteite
|
||||
STR_013E_TOTAL_CARGO :{BLACK}Totaale Vrag
|
||||
STR_TOTAL_CARGO :{BLACK}Totaale Vrag
|
||||
STR_013F_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO}
|
||||
STR_CAPACITY_MULT :{BLACK}Kapasiteit: {LTBLUE}{CARGO} (x{NUM})
|
||||
STR_013F_TOTAL_CAPACITY_TEXT :{BLACK}Totaale vrag kapasitiet van die trein:
|
||||
STR_013F_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_TEXT :{BLACK}Totaale vrag kapasitiet van die trein:
|
||||
STR_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
|
||||
STR_0140_NEW_GAME :{BLACK}Nuwe Speletjie
|
||||
STR_0141_LOAD_GAME :{BLACK}Laai Speletjie
|
||||
@@ -299,12 +297,6 @@ STR_SINGLE_PLAYER :{BLACK}Enkel sp
|
||||
STR_MULTIPLAYER :{BLACK}Veelspeler
|
||||
STR_SCENARIO_EDITOR :{BLACK}Draaiboek Redakteur
|
||||
|
||||
STR_64 :64
|
||||
STR_128 :128
|
||||
STR_256 :256
|
||||
STR_512 :512
|
||||
STR_1024 :1024
|
||||
STR_2048 :2048
|
||||
STR_MAPSIZE :{BLACK}Werfkaart groote:
|
||||
STR_BY :{BLACK}*
|
||||
STR_0148_GAME_OPTIONS :{BLACK}Speletjie Opsies
|
||||
@@ -733,7 +725,7 @@ STR_0290_DELETE :{BLACK}Uitvee
|
||||
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Uitvee hierdie dorp heeltemal
|
||||
STR_0292_SAVE_SCENARIO :Spaar draaiboek
|
||||
STR_0293_LOAD_SCENARIO :Laai draaiboek
|
||||
STR_LOAD_HEIGHTMAP :Laai Hoogtekaart
|
||||
STR_MENU_LOAD_HEIGHTMAP :Laai Hoogtekaart
|
||||
STR_0294_QUIT_EDITOR :Laat vaar redigeerder
|
||||
STR_0295 :
|
||||
STR_0296_QUIT :Laat vaar
|
||||
@@ -773,9 +765,9 @@ STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Spaar pa
|
||||
|
||||
STR_CHECKMARK :{CHECKMARK}
|
||||
############ range for menu starts
|
||||
STR_02C3_GAME_OPTIONS :Speletjie opsies
|
||||
STR_02C5_DIFFICULTY_SETTINGS :Moeite stellings
|
||||
STR_02C7_CONFIG_PATCHES :Konfigureer laslappe
|
||||
STR_02C4_GAME_OPTIONS :Speletjie opsies
|
||||
STR_02C6_DIFFICULTY_SETTINGS :Moeite stellings
|
||||
STR_MENU_CONFIG_PATCHES :Konfigureer laslappe
|
||||
STR_NEWGRF_SETTINGS :NewGRF stellings
|
||||
STR_TRANSPARENCY_OPTIONS :Deursigtigheid opsies
|
||||
STR_GAMEOPTMENU_0A :
|
||||
@@ -875,8 +867,8 @@ STR_SAVING_GAME :{RED}* * BESP
|
||||
STR_SAVE_STILL_IN_PROGRESS :{WHITE}Spaar nog in vorder, {}wag asb tot dit klaar is!
|
||||
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Kies 'Ezy Straat styl musiek' musiek lys
|
||||
|
||||
STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
STR_6 :{BLACK}6
|
||||
STR_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Engels (Oorspronkilik)
|
||||
@@ -1051,7 +1043,6 @@ STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Laattoe
|
||||
STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Laattoe die koop van eksklusief vervoer regte: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Laattoe die stuur van geld na ander maatskappye: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Ongelyk stasies: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Nuwe wêreldwyd padvind (NPF, oorbrug NTP): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Gewig vermenivoud vir vrag om swaar treine te simuleer: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Laattoe skyf-deur pad stop op dorp besit paaie: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Laattoe gebou van aangrensend stasies: {ORANGE}{STRING}
|
||||
@@ -1205,9 +1196,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Verander stel waarde
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Sommige of almal van die verstek diens pouse(s) onder is onversoenbaar met die gekies stel! 5-90% en 30-800 dae is geldig
|
||||
STR_CONFIG_PATCHES_YAPF_SHIPS :{LTBLUE}Gebruik YAPF vir skepe: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_YAPF_ROAD :{LTBLUE}Gebruik YAPF vir pad voertuie: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_YAPF_RAIL :{LTBLUE}Gebruik YAPF vir treine: {ORANGE}{STRING}
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :Magtig landskap
|
||||
STR_SUB_ARCTIC_LANDSCAPE :Onder-noordpool landskap
|
||||
@@ -1649,41 +1637,41 @@ STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Moet eer
|
||||
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Moet pad eers verwyder
|
||||
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Pad werke in vorder
|
||||
STR_1802_ROAD_CONSTRUCTION :{WHITE}Pad Konstruksie
|
||||
STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Tremweg Konstruksie
|
||||
STR_WHITE_TRAMWAY_CONSTRUCTION :{WHITE}Tremweg Konstruksie
|
||||
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Kies Pad Brug
|
||||
STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... een rigting paaie kan nie aansluitings hê nie
|
||||
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan nie pad hier bou nie...
|
||||
STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kan nie tremweg hier bou nie...
|
||||
STR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kan nie tremweg hier bou nie...
|
||||
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan nie pad van hier verwyder nie...
|
||||
STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kan nie tremweg van hier af verwyder nie...
|
||||
STR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kan nie tremweg van hier af verwyder nie...
|
||||
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Pad Depot Ori<72>tering
|
||||
STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Trem Depot Orientasie
|
||||
STR_TRAM_DEPOT_ORIENTATION :{WHITE}Trem Depot Orientasie
|
||||
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kan nie pad voertuig depot hier bou nie...
|
||||
STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Kan nie trem voertuig depot hier bou nie...
|
||||
STR_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Kan nie trem voertuig depot hier bou nie...
|
||||
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kan nie bus stasie hier bou nie...
|
||||
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan nie vragmotor stasie bou nie...
|
||||
STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kan nie passasier trem stasie bou nie...
|
||||
STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kan nie vrag trem stasie bou nie...
|
||||
STR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kan nie passasier trem stasie bou nie...
|
||||
STR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kan nie vrag trem stasie bou nie...
|
||||
STR_180A_ROAD_CONSTRUCTION :Pad konstruksie
|
||||
STR_180A_TRAMWAY_CONSTRUCTION :Tremweg konstruksie
|
||||
STR_TRAMWAY_CONSTRUCTION :Tremweg konstruksie
|
||||
STR_180B_BUILD_ROAD_SECTION :{BLACK}Bou pad afdeling
|
||||
STR_BUILD_AUTOROAD_TIP :{BLACK}Bou pad seksie gebruikend Outopad metode
|
||||
STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Bou tremweg afdeling
|
||||
STR_BUILD_TRAMWAY_SECTION :{BLACK}Bou tremweg afdeling
|
||||
STR_BUILD_AUTOTRAM_TIP :{BLACK}Bou tremweg gebruikend die Outotrem metode
|
||||
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bou pad voertuig depot (vir bou en diens van voertuie)
|
||||
STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Bou trem voertuig depot (vir bou en diens van voertuie)
|
||||
STR_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Bou trem voertuig depot (vir bou en diens van voertuie)
|
||||
STR_180D_BUILD_BUS_STATION :{BLACK}Bou bus stasie
|
||||
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Bou vraagmotor laai area
|
||||
STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bou passasier trem stasie
|
||||
STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Bou vrag trem stasie
|
||||
STR_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bou passasier trem stasie
|
||||
STR_BUILD_CARGO_TRAM_STATION :{BLACK}Bou vrag trem stasie
|
||||
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Bou pad brug
|
||||
STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Bou tremweg brug
|
||||
STR_BUILD_TRAMWAY_BRIDGE :{BLACK}Bou tremweg brug
|
||||
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Bou pad tonnel
|
||||
STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Bou tremweg tonnel
|
||||
STR_BUILD_TRAMWAY_TUNNEL :{BLACK}Bou tremweg tonnel
|
||||
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Tokkel bou/verwyder vir pad bou
|
||||
STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Tokkel bou/verwyder vir tremweg konstruksie
|
||||
STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Tokkel bou/verwyder vir tremweg konstruksie
|
||||
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Kies pad voertuig depot orientasie
|
||||
STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Kies trem voertuig depot orientasie
|
||||
STR_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Kies trem voertuig depot orientasie
|
||||
STR_1814_ROAD :Pad
|
||||
STR_1815_ROAD_WITH_STREETLIGHTS :Pad met straatligte
|
||||
STR_1816_TREE_LINED_ROAD :Boom-belynde pad
|
||||
@@ -1825,8 +1813,8 @@ STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD :{WHITE}Te naby
|
||||
STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grens aan meer as een bestaande stasie/laai area
|
||||
STR_3007_TOO_MANY_STATIONS_LOADING :{WHITE}Te veel stasies/laai areas in die stad
|
||||
STR_3008_TOO_MANY_STATIONS_LOADING :{WHITE}Te veel stasies/laai areas
|
||||
STR_3008A_TOO_MANY_BUS_STOPS :{WHITE}Te veel bushalte
|
||||
STR_3008B_TOO_MANY_TRUCK_STOPS :{WHITE}Te veel vragmotor stasies
|
||||
STR_TOO_MANY_BUS_STOPS :{WHITE}Te veel bushalte
|
||||
STR_TOO_MANY_TRUCK_STOPS :{WHITE}Te veel vragmotor stasies
|
||||
STR_3009_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Te naby aan 'n ander stasie/laai area
|
||||
STR_300A_0 :{WHITE}{STATION} {STATIONFEATURES}
|
||||
STR_300B_MUST_DEMOLISH_RAILROAD :{WHITE}Moet eers spoorweg stasie afbreek
|
||||
@@ -1857,12 +1845,12 @@ STR_3040_NOW_ACCEPTS :{WHITE}{STATION
|
||||
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} aanvaar nou {STRING} en {STRING}
|
||||
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Bus Stasie Orientasie
|
||||
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Vragmotor Stasie Orientasie
|
||||
STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Passasier Trem Orientasie
|
||||
STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Vrag Trem Orientasie
|
||||
STR_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Passasier Trem Orientasie
|
||||
STR_CARGO_TRAM_STATION_ORIENT :{WHITE}Vrag Trem Orientasie
|
||||
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Moet eers bus stasie afbreek
|
||||
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Moet eers vragmotor stasie afbreek
|
||||
STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Moet eers passasier trem stasie afbreek
|
||||
STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Moet eers vrag trem stasie afbreek
|
||||
STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Moet eers passasier trem stasie afbreek
|
||||
STR_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Moet eers vrag trem stasie afbreek
|
||||
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Stasie{P "" s}
|
||||
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
|
||||
STR_304A_NONE :{YELLOW}- Geen -
|
||||
@@ -1874,8 +1862,8 @@ STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}Kies nom
|
||||
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Kies lengte van spoorweg stasie
|
||||
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Kies bus stasie orientasie
|
||||
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Kies vragmotor laai area orientasie
|
||||
STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Kies passasier trem stasie orientasie
|
||||
STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Kies vrag trem stasie orientasie
|
||||
STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Kies passasier trem stasie orientasie
|
||||
STR_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Kies vrag trem stasie orientasie
|
||||
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Senter skerm op stasie
|
||||
STR_3054_SHOW_STATION_RATINGS :{BLACK}Toon stasie graderings
|
||||
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Verander naam van stasie
|
||||
@@ -1897,7 +1885,7 @@ STR_3068_DOCK :{WHITE}Werf
|
||||
STR_3069_BUOY :Baken
|
||||
STR_306A_BUOY_IN_THE_WAY :{WHITE}...baken in die pad
|
||||
STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...Stasie te ver van mekaar af
|
||||
STR_306D_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...ongelyk stasies is versper
|
||||
STR_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...ongelyk stasies is versper
|
||||
STR_USE_CTRL_TO_SELECT_MORE :{BLACK}Hou in CTRL om meer as een item te selekteer
|
||||
|
||||
STR_UNDEFINED :(undefined string)
|
||||
@@ -1938,7 +1926,7 @@ STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Spaar di
|
||||
STR_400E_SELECT_NEW_GAME_TYPE :{WHITE}Kies Nuwe Speletjie Tipe
|
||||
STR_400F_SELECT_SCENARIO_GREEN_PRE :{BLACK}Kies draaiboek (groen), vooraf-stel speletjie (blou), of lukraak nuwe speletjie
|
||||
STR_4010_GENERATE_RANDOM_NEW_GAME :Opwek lukraak nuwe speletjie
|
||||
STR_4011_LOAD_HEIGHTMAP :{WHITE}Laai Hoogtekaart
|
||||
STR_LOAD_HEIGHTMAP :{WHITE}Laai Hoogtekaart
|
||||
|
||||
##id 0x4800
|
||||
STR_4800_IN_THE_WAY :{WHITE}{STRING} in die pad
|
||||
@@ -2142,10 +2130,10 @@ STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Hoeveel
|
||||
STR_6813_ECONOMY :{LTBLUE}Ekonomie: {ORANGE}{STRING}
|
||||
STR_6814_TRAIN_REVERSING :{LTBLUE}Trein omkeer: {ORANGE}{STRING}
|
||||
STR_6815_DISASTERS :{LTBLUE}Rampe: {ORANGE}{STRING}
|
||||
STR_16816_CITY_APPROVAL :{LTBLUE}Stad raad se houding na area herstruktuuring: {ORANGE}{STRING}
|
||||
STR_CITY_APPROVAL :{LTBLUE}Stad raad se houding na area herstruktuuring: {ORANGE}{STRING}
|
||||
############ range for difficulty settings ends
|
||||
|
||||
STR_26816_NONE :Geen
|
||||
STR_NONE :Geen
|
||||
STR_NUM_VERY_LOW :Baie laag
|
||||
STR_6816_LOW :Laag
|
||||
STR_6817_NORMAL :Normaal
|
||||
@@ -2183,9 +2171,9 @@ STR_6835_AT_END_OF_LINE_ONLY :Slegs op die en
|
||||
STR_6836_OFF :Af
|
||||
STR_6837_ON :Aan
|
||||
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Wys ho<68>telling tabel
|
||||
STR_6839_PERMISSIVE :Permissief
|
||||
STR_683A_TOLERANT :Toelaatbaar
|
||||
STR_683B_HOSTILE :Vyandelik
|
||||
STR_PERMISSIVE :Permissief
|
||||
STR_TOLERANT :Toelaatbaar
|
||||
STR_HOSTILE :Vyandelik
|
||||
|
||||
##id 0x7000
|
||||
STR_7000 :
|
||||
@@ -2317,7 +2305,7 @@ STR_707B_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kan nie
|
||||
STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Kan nie 25% aandeel in die maatskappy verkoop nie...
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA}% besit by {COMPANY})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{COMPANY} is deur {COMPANY} oorgevat!
|
||||
STR_7080_PROTECTED :{WHITE}Die maatskappy is nie oud genoeg om aandeele te handel nie...
|
||||
STR_PROTECTED :{WHITE}Die maatskappy is nie oud genoeg om aandeele te handel nie...
|
||||
|
||||
STR_LIVERY_DEFAULT :Standaard Lewery
|
||||
STR_LIVERY_STEAM :Stoom Enjin
|
||||
@@ -2624,17 +2612,17 @@ STR_8803_TRAIN_IN_THE_WAY :{WHITE}Trein in
|
||||
STR_8804 :{SETX 10}{COMMA}: {STRING} {STRING}
|
||||
STR_8805 :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
|
||||
STR_8806_GO_TO :Gaan na {STATION}
|
||||
STR_8807_GO_TO_TRANSFER :Gaan na {STATION} (Oordrag en vat vrag)
|
||||
STR_8808_GO_TO_UNLOAD :Gaan na {STATION} (Aflaai)
|
||||
STR_8809_GO_TO_TRANSFER_UNLOAD :Gaan na {STATION} (Oordrag en verlaat leeg)
|
||||
STR_880A_GO_TO_LOAD :Gaan na {STATION} (Laai)
|
||||
STR_880B_GO_TO_TRANSFER_LOAD :Gaan na {STATION} (Oordrag en wag vir volle lading)
|
||||
STR_880C_GO_NON_STOP_TO :Gaan deurgaande na {STATION}
|
||||
STR_880D_GO_TO_NON_STOP_TRANSFER :Gaan deurgaande na {STATION} (Oordra en neem vrag)
|
||||
STR_880E_GO_NON_STOP_TO_UNLOAD :Gaan deurgaande na {STATION} (Aflaai)
|
||||
STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD :Gaan deurgaande na {STATION} (Oordra en verlaat leë)
|
||||
STR_8810_GO_NON_STOP_TO_LOAD :Gaan deurgaande na {STATION} (Laai)
|
||||
STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD :Gaan deurgaande na {STATION} (Oordra en wag vir volle lading)
|
||||
STR_GO_TO_TRANSFER :Gaan na {STATION} (Oordrag en vat vrag)
|
||||
STR_8807_GO_TO_UNLOAD :Gaan na {STATION} (Aflaai)
|
||||
STR_GO_TO_TRANSFER_UNLOAD :Gaan na {STATION} (Oordrag en verlaat leeg)
|
||||
STR_8808_GO_TO_LOAD :Gaan na {STATION} (Laai)
|
||||
STR_GO_TO_TRANSFER_LOAD :Gaan na {STATION} (Oordrag en wag vir volle lading)
|
||||
STR_880A_GO_NON_STOP_TO :Gaan deurgaande na {STATION}
|
||||
STR_GO_TO_NON_STOP_TRANSFER :Gaan deurgaande na {STATION} (Oordra en neem vrag)
|
||||
STR_880B_GO_NON_STOP_TO_UNLOAD :Gaan deurgaande na {STATION} (Aflaai)
|
||||
STR_GO_TO_NON_STOP_TRANSFER_UNLOAD :Gaan deurgaande na {STATION} (Oordra en verlaat leë)
|
||||
STR_880C_GO_NON_STOP_TO_LOAD :Gaan deurgaande na {STATION} (Laai)
|
||||
STR_GO_TO_NON_STOP_TRANSFER_LOAD :Gaan deurgaande na {STATION} (Oordra en wag vir volle lading)
|
||||
STR_GO_TO_TRAIN_DEPOT :Gaan na {TOWN} Trein Depot
|
||||
STR_SERVICE_AT_TRAIN_DEPOT :Diens by {TOWN} Trein Depot
|
||||
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Gaan deurgaande na {TOWN} Trein Depot
|
||||
@@ -2738,7 +2726,7 @@ STR_884E_DECREASE_SERVICING_INTERVAL :{BLACK}Verminde
|
||||
STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Toon besonderhede van vrag gedra
|
||||
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Toon besonderhede van trein voertuie
|
||||
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Toon kapasiteite van elke voertuig
|
||||
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Toon totaale kapasitiet van trein, verdeel by vrag tipe
|
||||
STR_SHOW_TOTAL_CARGO :{BLACK}Toon totaale kapasitiet van trein, verdeel by vrag tipe
|
||||
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Opdraglys - kliek op 'n opdrag om dit te verlig. CTRL + kliek senter op stasie
|
||||
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Sprong die huidige opdraag, en begin die volgende. CTRL + kliek sprong na verkieste opdrag
|
||||
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Vee uit die verlig opdrag
|
||||
@@ -2769,8 +2757,8 @@ STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT
|
||||
STR_8869_CAN_T_REVERSE_DIRECTION :{WHITE}Kan nie rigting van trein omkeer nie...
|
||||
STR_886A_RENAME_TRAIN_VEHICLE_TYPE :{WHITE}Hernoem trein voertuig tipe
|
||||
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Trein voertuig tipe kan nie hernoem word nie...
|
||||
STR_886D_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Maak die verlig opdrag forseer die voertuig om sy vrag te stort
|
||||
STR_886F_TRANSFER :{BLACK}Oordra
|
||||
STR_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Maak die verlig opdrag forseer die voertuig om sy vrag te stort
|
||||
STR_TRANSFER :{BLACK}Oordra
|
||||
STR_CLEAR_TIME :{BLACK}Reinig Tyd
|
||||
STR_RESET_LATENESS :{BLACK}Herstel Laat Teller
|
||||
|
||||
@@ -2847,8 +2835,8 @@ STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}Pad voer
|
||||
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Benaam pad voertuig
|
||||
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste bus arriveer by {STATION}!
|
||||
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste trok arriveer by {STATION}!
|
||||
STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste passasier trein arriveer by {STATION}!
|
||||
STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste vrag trein arriveer by {STATION}!
|
||||
STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste passasier trein arriveer by {STATION}!
|
||||
STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste vrag trein arriveer by {STATION}!
|
||||
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Pad Voertuig Botsing!{}Bestuurder sterf in vuurbol na botsing met trein
|
||||
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Pad voertuig Botsing!{}{COMMA} sterf in vuurbol na botsing met trein
|
||||
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Kan nie voertuig forseer om te omdraai nie...
|
||||
@@ -2857,7 +2845,7 @@ STR_9034_RENAME :{BLACK}Hernoem
|
||||
STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Hernoem pad voertuig tipe
|
||||
STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Hernoem pad voertuig tipe
|
||||
STR_9037_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Pad voertuig tipe kan nie hernoem word nie...
|
||||
STR_9038_GO_TO_ROADVEH_DEPOT :Gaan na {TOWN} Pad Voertuig Depot
|
||||
STR_GO_TO_ROADVEH_DEPOT :Gaan na {TOWN} Pad Voertuig Depot
|
||||
STR_SERVICE_AT_ROADVEH_DEPOT :Diens by {TOWN} Pad Voertuig Depot
|
||||
|
||||
STR_REFIT_ROAD_VEHICLE_TO_CARRY :{BLACK}Herpas pad voertuig om 'n ander vrag tipe te ontvoer
|
||||
@@ -3256,7 +3244,6 @@ STR_HEIGHTMAP_SCALE_WARNING_CAPTION :{WHITE}Skaal wa
|
||||
STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}Om te verstel oorsprong werfkaart te is nie aanbeveel. Voortgaan met die generasie?
|
||||
STR_TOWN_LAYOUT_WARNING_CAPTION :{WHITE}Dorp uitleg waarskuwing
|
||||
STR_TOWN_LAYOUT_WARNING_MESSAGE :{YELLOW}Die dorp uitleg "geen meer paaie" is nie aanbeveel nie. Gaan aan met generasie?
|
||||
STR_SNOW_LINE_HEIGHT_NUM :{NUM}
|
||||
STR_HEIGHTMAP_NAME :{BLACK}Hoogtekaart name:
|
||||
STR_HEIGHTMAP_SIZE :{BLACK}Groote: {ORANGE}{NUM} x {NUM}
|
||||
STR_GENERATION_WORLD :{WHITE}Genereer wêreld...
|
||||
@@ -3282,7 +3269,6 @@ STR_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Beweeg d
|
||||
STR_FLAT_WORLD_HEIGHT_UP :{BLACK}Beweeg die hoogte van platte daal bo een
|
||||
STR_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Verander die hoogte van platte daal
|
||||
STR_FLAT_WORLD_HEIGHT :{BLACK}Hoogte van platte daal:
|
||||
STR_FLAT_WORLD_HEIGHT_NUM :{NUM}
|
||||
|
||||
STR_SMALLMAP_CENTER :{BLACK}Senter die kleinwerfkaart op die huidige posisie
|
||||
|
||||
|
@@ -17,8 +17,7 @@ STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Requer terreno plano
|
||||
STR_0008_WAITING :{BLACK}Aguardando: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{CARGO}
|
||||
STR_000A_EN_ROUTE_FROM :{WHITE}{CARGO}{YELLOW} (em rota de
|
||||
STR_000B :{YELLOW}{STATION})
|
||||
STR_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} vindo de {STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Aceita: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Aceita: {GOLD}
|
||||
STR_000E :
|
||||
@@ -215,7 +214,7 @@ STR_00F3_400M :{BLACK}{TINYFON
|
||||
STR_00F4_500M :{BLACK}{TINYFONT}500m
|
||||
STR_00F5_TRAINS :{BLACK}{TINYFONT}Trens
|
||||
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Automóveis
|
||||
STR_00F7_SHIPS :{BLACK}{TINYFONT}Navios
|
||||
STR_00F7_SHIPS :{BLACK}{TINYFONT}Embarcação
|
||||
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Aeronaves
|
||||
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Rotas de Transporte
|
||||
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Mina de Carvão
|
||||
@@ -276,9 +275,9 @@ STR_0130_RENAME :{BLACK}Renomear
|
||||
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Muitos nomes definidos
|
||||
STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}O nome escolhido já está em uso
|
||||
|
||||
STR_0133_WINDOWS :Windows
|
||||
STR_0134_UNIX :Unix
|
||||
STR_0135_OSX :OS X
|
||||
STR_OSNAME_WINDOWS :Windows
|
||||
STR_OSNAME_UNIX :Unix
|
||||
STR_OSNAME_OSX :OS X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
@@ -289,11 +288,11 @@ STR_013B_OWNED_BY :{WHITE}...propr
|
||||
STR_013C_CARGO :{BLACK}Carga
|
||||
STR_013D_INFORMATION :{BLACK}Informação
|
||||
STR_013E_CAPACITIES :{BLACK}Capacidades
|
||||
STR_013E_TOTAL_CARGO :{BLACK}Carga Total
|
||||
STR_TOTAL_CARGO :{BLACK}Carga Total
|
||||
STR_013F_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}
|
||||
STR_CAPACITY_MULT :{BLACK}Capacidade: {LTBLUE}{CARGO} (x{NUM})
|
||||
STR_013F_TOTAL_CAPACITY_TEXT :{BLACK}Capacidade total deste trem:
|
||||
STR_013F_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_TEXT :{BLACK}Capacidade total deste trem:
|
||||
STR_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
|
||||
STR_0140_NEW_GAME :{BLACK}Novo Jogo
|
||||
STR_0141_LOAD_GAME :{BLACK}Abrir Jogo
|
||||
@@ -301,12 +300,6 @@ STR_SINGLE_PLAYER :{BLACK}1 jogado
|
||||
STR_MULTIPLAYER :{BLACK}Multi-jogador
|
||||
STR_SCENARIO_EDITOR :{BLACK}Editor de Cenário
|
||||
|
||||
STR_64 :64
|
||||
STR_128 :128
|
||||
STR_256 :256
|
||||
STR_512 :512
|
||||
STR_1024 :1024
|
||||
STR_2048 :2048
|
||||
STR_MAPSIZE :{BLACK}Dimensões do mapa:
|
||||
STR_BY :{BLACK}*
|
||||
STR_0148_GAME_OPTIONS :{BLACK}Opções do Jogo
|
||||
@@ -379,7 +372,7 @@ STR_SORT_BY_DROPDOWN_NAME :Nome
|
||||
STR_SORT_BY_DATE :{BLACK}Data
|
||||
STR_SORT_BY_NUMBER :Número
|
||||
STR_SORT_BY_PROFIT_LAST_YEAR :Lucros do último ano
|
||||
STR_SORT_BY_PROFIT_THIS_YEAR :Lucros deste ano
|
||||
STR_SORT_BY_PROFIT_THIS_YEAR :Lucro anual
|
||||
STR_SORT_BY_AGE :Idade
|
||||
STR_SORT_BY_RELIABILITY :Confiabilidade
|
||||
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capacidade total por tipo de carga
|
||||
@@ -474,7 +467,7 @@ STR_0194_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Exibir r
|
||||
STR_0195_SHOW_VEGETATION_ON_MAP :{BLACK}Exibir vegetação no mapa
|
||||
STR_0196_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Exibir propriedades no mapa
|
||||
STR_0197_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Alternar exibir/ocultar nomes das cidades no mapa
|
||||
STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}Lucro deste ano: {CURRENCY} (ano passado: {CURRENCY})
|
||||
STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}Lucro anual: {CURRENCY} (último ano: {CURRENCY})
|
||||
|
||||
############ range for service numbers starts
|
||||
STR_AGE :{COMMA} ano{P "" s} ({COMMA})
|
||||
@@ -487,7 +480,7 @@ STR_019E_SHIP :{G=m}Embarcaç
|
||||
STR_019F_TRAIN :{G=m}Trem
|
||||
STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA} está ficando velho
|
||||
STR_01A1_IS_GETTING_VERY_OLD :{WHITE}{STRING} {COMMA} está ficando muito velho
|
||||
STR_01A2_IS_GETTING_VERY_OLD_AND :{WHITE}{STRING} {COMMA} está ficando muito velho e precisa substituição urgente
|
||||
STR_01A2_IS_GETTING_VERY_OLD_AND :{WHITE}{STRING} {COMMA} está ficando muito velho e precisa ser substituído urgentemente
|
||||
STR_01A3_LAND_AREA_INFORMATION :{WHITE}Informações do Terreno
|
||||
STR_01A4_COST_TO_CLEAR_N_A :{BLACK}Custo para limpar: {LTBLUE}N/D
|
||||
STR_01A5_COST_TO_CLEAR :{BLACK}Custo para limpar: {LTBLUE}{CURRENCY}
|
||||
@@ -734,11 +727,12 @@ STR_028D_PLACE_LIGHTHOUSE :{BLACK}Colocar
|
||||
STR_028E_PLACE_TRANSMITTER :{BLACK}Colocar transmissor
|
||||
STR_028F_DEFINE_DESERT_AREA :{BLACK}Define área desértica.{} Pressione e segure CTRL para removê-la
|
||||
STR_CREATE_LAKE :{BLACK}Define área com água.{} Faz um canal, a menos se CTRL for pressionado ao nível do mar, neste caso inundará ao redor
|
||||
STR_CREATE_RIVER :{BLACK}Criar Rios
|
||||
STR_0290_DELETE :{BLACK}Remover
|
||||
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Remover esta cidade completamente
|
||||
STR_0292_SAVE_SCENARIO :Salvar cenário
|
||||
STR_0293_LOAD_SCENARIO :Abrir cenário
|
||||
STR_LOAD_HEIGHTMAP :Carregar relevo
|
||||
STR_MENU_LOAD_HEIGHTMAP :Carregar relevo
|
||||
STR_0294_QUIT_EDITOR :Sair do editor
|
||||
STR_0295 :
|
||||
STR_0296_QUIT :Sair
|
||||
@@ -778,9 +772,9 @@ STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Salvar n
|
||||
|
||||
STR_CHECKMARK :{CHECKMARK}
|
||||
############ range for menu starts
|
||||
STR_02C3_GAME_OPTIONS :Opções do Jogo
|
||||
STR_02C5_DIFFICULTY_SETTINGS :Configurações de dificuldade
|
||||
STR_02C7_CONFIG_PATCHES :Configurar correções
|
||||
STR_02C4_GAME_OPTIONS :Opções do Jogo
|
||||
STR_02C6_DIFFICULTY_SETTINGS :Configurações de dificuldade
|
||||
STR_MENU_CONFIG_PATCHES :Configurar correções
|
||||
STR_NEWGRF_SETTINGS :Configurar NewGRF
|
||||
STR_TRANSPARENCY_OPTIONS :Opções de Transparência
|
||||
STR_GAMEOPTMENU_0A :
|
||||
@@ -880,8 +874,8 @@ STR_SAVING_GAME :{RED}* * SALV
|
||||
STR_SAVE_STILL_IN_PROGRESS :{WHITE}Gravação em progresso,{}por favor aguarde até que termine!
|
||||
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Selecionar programa 'Ezy Street'
|
||||
|
||||
STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
STR_6 :{BLACK}6
|
||||
STR_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Inglês (Original)
|
||||
@@ -900,7 +894,7 @@ STR_TOWNNAME_HUNGARIAN :Húngaro
|
||||
STR_TOWNNAME_AUSTRIAN :Austríaco
|
||||
STR_TOWNNAME_ROMANIAN :Romeno
|
||||
STR_TOWNNAME_CZECH :Checo
|
||||
STR_TOWNNAME_SWISS :Suiça
|
||||
STR_TOWNNAME_SWISS :Suiço
|
||||
STR_TOWNNAME_DANISH :Dinamarquês
|
||||
STR_TOWNNAME_TURKISH :Turco
|
||||
STR_TOWNNAME_ITALIAN :Italiano
|
||||
@@ -917,7 +911,7 @@ STR_CURR_CHF :Franco Suíço
|
||||
STR_CURR_CZK :Coroa Checa (CZK)
|
||||
STR_CURR_DEM :Marco Alemão (DEM)
|
||||
STR_CURR_DKK :Coroa Dinamarquesa (DKK)
|
||||
STR_CURR_ESP :Peseta (ESP)
|
||||
STR_CURR_ESP :Peso (ESP)
|
||||
STR_CURR_FIM :Marco Finlandês (FIM)
|
||||
STR_CURR_FRF :Franco (FRF)
|
||||
STR_CURR_GRD :Dracma Grego (GRD)
|
||||
@@ -932,7 +926,7 @@ STR_CURR_RUR :Rublo Russo (RU
|
||||
STR_CURR_SIT :Tolar Eslovênio (SIT)
|
||||
STR_CURR_SEK :Coroa Sueca (SEK)
|
||||
STR_CURR_YTL :Lira Turca (YTL)
|
||||
STR_CURR_SKK :Koruna Eslovaca (SKK)
|
||||
STR_CURR_SKK :Coroa Eslovaca (SKK)
|
||||
STR_CURR_BRR :Real Brasileiro (BRL)
|
||||
|
||||
STR_CURR_CUSTOM :Personalizado...
|
||||
@@ -969,8 +963,8 @@ STR_MONTH_OCT :Outubro
|
||||
STR_MONTH_NOV :Novembro
|
||||
STR_MONTH_DEC :Dezembro
|
||||
|
||||
STR_HEADING_FOR_STATION :{LTBLUE}Dirigindo-se para {STATION}
|
||||
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Dirigindo-se para {STATION}, {VELOCITY}
|
||||
STR_HEADING_FOR_STATION :{LTBLUE}Indo para {STATION}
|
||||
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Indo para {STATION}, {VELOCITY}
|
||||
STR_NO_ORDERS :{LTBLUE}Sem ordens
|
||||
STR_NO_ORDERS_VEL :{LTBLUE}Sem ordens, {VELOCITY}
|
||||
|
||||
@@ -1055,9 +1049,8 @@ STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Fila de
|
||||
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Deslocar janela quando o cursor está na borda do mapa: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Permitir o suborno da autoridade local: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Permtir compra de direitos exclusivos de transporte: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Permitir o envio de dinheiro a outras companhias: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Permitir o envio de dinheiro a outras empresas: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Estações não uniformes: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Novo busca de caminho global (NPF, sobrepõe NTP): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Multiplicador de peso para trens simulando trens pesados: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Permitir estações drive-through em ruas locais: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Permitir construção de estações adjacentes: {ORANGE}{STRING}
|
||||
@@ -1122,12 +1115,12 @@ STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF :Desligado
|
||||
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Pausar automaticamente ao inicar um novo jogo: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Usar a lista avançada de veículos: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OFF :Desligado
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :Própria Compania
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :Todas as companias
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :Própria empresa
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :Todas as empresas
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Usar indicadores de carga: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS_OFF :Desligado
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :Própria Compania
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :Todas as Companias
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :Própria empresa
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :Todas as empresas
|
||||
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Ativar plano de horário para veículos: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Exibir plano de horário em tiques ao invés de dias: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Tipo padrão de ferrovia (ao criar ou carregar um jogo): {ORANGE}{STRING}
|
||||
@@ -1169,7 +1162,7 @@ STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}Noticia
|
||||
STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}Data de início: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Terminar jogo em: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Ativar economia regular (alterações menores)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permite comprar ações de outras companhias
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permite comprar ações de outras empresas
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Ao arrastar colocar sinais a cada: {ORANGE}{STRING} quadrado(s)
|
||||
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Automaticamente constroi semáforos anteriores: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI :{LTBLUE}Ativar interface de sinais: {ORANGE}{STRING}
|
||||
@@ -1212,9 +1205,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Alterar valor
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alguns ou todos os intervalo(s) de serviço predefinidos abaixo são incompatíveis com o valor escolhido! São válidos 5-90% e 30-800 dias
|
||||
STR_CONFIG_PATCHES_YAPF_SHIPS :{LTBLUE}Usar YAPF para embarcações: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_YAPF_ROAD :{LTBLUE}Usar YAPF para automóveis: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_YAPF_RAIL :{LTBLUE}Usar YAPF para trens: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Pathfinder para trens: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Não recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Pathfinder para automóveis: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(Não recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Pathfinder para embarcações: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Não recomendado)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :terreno temperado
|
||||
STR_SUB_ARCTIC_LANDSCAPE :terreno subártico
|
||||
@@ -1234,8 +1237,8 @@ STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Mudar d
|
||||
STR_CHEAT_CHANGE_DATE :{LTBLUE}Alterar data: {ORANGE} {DATE_SHORT}
|
||||
STR_CHEAT_SETUP_PROD :{LTBLUE}Ativar modificação de valores de produção: {ORANGE}{STRING}
|
||||
|
||||
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Dirigindo-se para {WAYPOINT}
|
||||
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Dirigindo-se para {WAYPOINT}, {VELOCITY}
|
||||
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Indo para {WAYPOINT}
|
||||
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Indo para {WAYPOINT}, {VELOCITY}
|
||||
|
||||
STR_GO_TO_WAYPOINT :Ir via {WAYPOINT}
|
||||
STR_GO_NON_STOP_TO_WAYPOINT :Ir sem parar via {WAYPOINT}
|
||||
@@ -1404,11 +1407,11 @@ STR_NETWORK_LAN_INTERNET :Rede Local / In
|
||||
STR_NETWORK_INTERNET_ADVERTISE :Internet (divulgar)
|
||||
STR_NETWORK_CLIENTS_SELECT :{BLACK}{SKIP}{SKIP}{NUM} cliente{P "" s}
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Máximo de clientes:
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Escolha o número máximo de clientes. Não precisa estarem todos preenchidos
|
||||
STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} compan{P ia ias}
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Escolha o número máximo de clientes. Não é necessário estarem todos preenchidos
|
||||
STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} empresa{P "" s}
|
||||
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Máximo de empresas:
|
||||
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Limita o servidor para uma certa quantia de empresas
|
||||
STR_NETWORK_SPECTATORS_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} espectator{P "" es}
|
||||
STR_NETWORK_SPECTATORS_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} espectador{P "" es}
|
||||
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Max espectadores:
|
||||
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Limita o servidor para um certa quantia de espectadores
|
||||
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Idioma falado:
|
||||
@@ -1656,42 +1659,42 @@ STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Deve rem
|
||||
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Deve remover a rodovia primeiro
|
||||
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Recapeamento rodoviário em progresso
|
||||
STR_1802_ROAD_CONSTRUCTION :{WHITE}Construir rodovias
|
||||
STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Construção de Bonde
|
||||
STR_WHITE_TRAMWAY_CONSTRUCTION :{WHITE}Construção de Bonde
|
||||
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Selecionar Ponte Rodoviária
|
||||
STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... vias de mão única não podem ter junções
|
||||
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Impossível construir rodovia aqui...
|
||||
STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Impossível construir bonde aqui...
|
||||
STR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Impossível construir bonde aqui...
|
||||
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Impossível remover rodovia daqui...
|
||||
STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Impossível remover bonde daqui...
|
||||
STR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Impossível remover bonde daqui...
|
||||
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Orientação da Garagem
|
||||
STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Orientação do Depósito
|
||||
STR_TRAM_DEPOT_ORIENTATION :{WHITE}Orientação do Depósito
|
||||
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Impossível construir garagem aqui...
|
||||
STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Impossível construir depósito aqui...
|
||||
STR_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Impossível construir depósito aqui...
|
||||
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Impossível construir estação de ônibus...
|
||||
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Impossível construir estação de caminhão
|
||||
STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Impossível construir estação de bonde...
|
||||
STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Impossível construir estação de bonde
|
||||
STR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Impossível construir estação de bonde...
|
||||
STR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Impossível construir estação de bonde
|
||||
STR_180A_ROAD_CONSTRUCTION :Construir rodovias
|
||||
STR_180A_TRAMWAY_CONSTRUCTION :Construção de Bonde
|
||||
STR_TRAMWAY_CONSTRUCTION :Construção de Bonde
|
||||
STR_180B_BUILD_ROAD_SECTION :{BLACK}Construir trecho rodoviário
|
||||
STR_BUILD_AUTOROAD_TIP :{BLACK}Construir estradas usando o modo Autoestrada
|
||||
STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Construir linha de bonde
|
||||
STR_BUILD_TRAMWAY_SECTION :{BLACK}Construir linha de bonde
|
||||
STR_BUILD_AUTOTRAM_TIP :{BLACK}Construir linha de bonde usando o modo Automático
|
||||
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construir garagem (para construção e manutenção de automóveis)
|
||||
STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construir depósito de bonde (para construção e manutenção de bondes)
|
||||
STR_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construir depósito de bonde (para construção e manutenção de bondes)
|
||||
STR_180D_BUILD_BUS_STATION :{BLACK}Construir estação de ônibus
|
||||
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Construir carga de caminhões
|
||||
STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Constuir estação de bonde para passageiros
|
||||
STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Constuir estação de bonde para carga
|
||||
STR_BUILD_PASSENGER_TRAM_STATION :{BLACK}Constuir estação de bonde para passageiros
|
||||
STR_BUILD_CARGO_TRAM_STATION :{BLACK}Constuir estação de bonde para carga
|
||||
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Construir ponte rodoviária
|
||||
STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Construir ponte de bonde
|
||||
STR_BUILD_TRAMWAY_BRIDGE :{BLACK}Construir ponte de bonde
|
||||
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Construir túnel rodoviário
|
||||
STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Construir túnel de bonde
|
||||
STR_BUILD_TRAMWAY_TUNNEL :{BLACK}Construir túnel de bonde
|
||||
STR_TOGGLE_ONE_WAY_ROAD :{BLACK}Ativar/Desativar vias de mão única
|
||||
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Alternar construir/remover para contrução rodoviária
|
||||
STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Alternar construir/remover linhas de bonde e sinais
|
||||
STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Alternar construir/remover linhas de bonde e sinais
|
||||
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Selecionar a orientação da garagem
|
||||
STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Selecionar a orientação do depósito de bonde
|
||||
STR_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Selecionar a orientação do depósito de bonde
|
||||
STR_1814_ROAD :Rodovia
|
||||
STR_1815_ROAD_WITH_STREETLIGHTS :Rodovia iluminada
|
||||
STR_1816_TREE_LINED_ROAD :Rodovia arborizada
|
||||
@@ -1757,7 +1760,7 @@ STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT
|
||||
STR_2031_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá 50% extra durante um ano!
|
||||
STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá em dobro durante um ano!
|
||||
STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá o triplo durante um ano!
|
||||
STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{}Transporte de {STRING} de {STATION} para {STATION} receberá o quadruplo durante um ano!
|
||||
STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá o quadruplo durante um ano!
|
||||
STR_2035_LOCAL_AUTHORITY_REFUSES :{WHITE}a autoridade local de {TOWN} não permite que outro aeroporto seja construído nesta cidade
|
||||
STR_2036_COTTAGES :Casas de campo
|
||||
STR_2037_HOUSES :Casas
|
||||
@@ -1796,7 +1799,7 @@ STR_2056 :{TINYFONT}{WHIT
|
||||
STR_2057 :{ORANGE}{TOWN}{BLACK} ({COMMA})
|
||||
STR_2058_UNDER_CONSTRUCTION :{STRING} (em construção)
|
||||
STR_2059_IGLOO :Iglú
|
||||
STR_205A_TEPEES :Tepees
|
||||
STR_205A_TEPEES :Ocas
|
||||
STR_205B_TEAPOT_HOUSE :Casa-bule
|
||||
STR_205C_PIGGY_BANK :Mealheiro
|
||||
|
||||
@@ -1836,8 +1839,8 @@ STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD :{WHITE}Muito pe
|
||||
STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Muito perto de uma estação/local de carga já existente
|
||||
STR_3007_TOO_MANY_STATIONS_LOADING :{WHITE}Muitas estações/áreas de carga nesta cidade
|
||||
STR_3008_TOO_MANY_STATIONS_LOADING :{WHITE}Muitas estações/áreas de carga
|
||||
STR_3008A_TOO_MANY_BUS_STOPS :{WHITE}Muitas estações de ônibus
|
||||
STR_3008B_TOO_MANY_TRUCK_STOPS :{WHITE}Muitos locais de carga
|
||||
STR_TOO_MANY_BUS_STOPS :{WHITE}Muitas estações de ônibus
|
||||
STR_TOO_MANY_TRUCK_STOPS :{WHITE}Muitos locais de carga
|
||||
STR_3009_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Muito perto de outra estação/local de carga
|
||||
STR_300A_0 :{WHITE}{STATION} {STATIONFEATURES}
|
||||
STR_300B_MUST_DEMOLISH_RAILROAD :{WHITE}Deve demolir a estação primeiro
|
||||
@@ -1868,12 +1871,12 @@ STR_3040_NOW_ACCEPTS :{WHITE}{STATION
|
||||
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} agora aceita {STRING} e {STRING}
|
||||
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Orientação do estação de ônibus
|
||||
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Orientação da estação de caminhão
|
||||
STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Orientação da Estação de Bonde
|
||||
STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Orientação da Estação de Bonde
|
||||
STR_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Orientação da Estação de Bonde
|
||||
STR_CARGO_TRAM_STATION_ORIENT :{WHITE}Orientação da Estação de Bonde
|
||||
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Deve demolir a estação de ônibus primeiro
|
||||
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Deve demolir a estação de caminhão
|
||||
STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Deve demolir a estação de bonde primeiro
|
||||
STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Deve demolir a estação de bonde primeiro
|
||||
STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Deve demolir a estação de bonde primeiro
|
||||
STR_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Deve demolir a estação de bonde primeiro
|
||||
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Estações
|
||||
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
|
||||
STR_304A_NONE :{YELLOW}- Nenhuma -
|
||||
@@ -1885,8 +1888,8 @@ STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}Selecion
|
||||
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Selecionar o tamanho da estação ferroviária
|
||||
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Selecionar orientação do estação de ônibus
|
||||
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Selecionar orientação da área de carga
|
||||
STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Selecionar orientação da estação de bonde
|
||||
STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Selecionar orientação da estação de bonde
|
||||
STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Selecionar orientação da estação de bonde
|
||||
STR_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Selecionar orientação da estação de bonde
|
||||
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Centralizar visualização no local estação
|
||||
STR_3054_SHOW_STATION_RATINGS :{BLACK}Exibir avaliações da estação
|
||||
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Alterar o nome da estação
|
||||
@@ -1908,7 +1911,7 @@ STR_3068_DOCK :{WHITE}Doca
|
||||
STR_3069_BUOY :Bóia
|
||||
STR_306A_BUOY_IN_THE_WAY :{WHITE}...bóia no caminho
|
||||
STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...estação muito extensa
|
||||
STR_306D_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...Estações não-uniformes desativadas
|
||||
STR_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...Estações não-uniformes desativadas
|
||||
STR_USE_CTRL_TO_SELECT_MORE :{BLACK}Segure CTRL para selecionar mais de um item
|
||||
|
||||
STR_UNDEFINED :(undefined string)
|
||||
@@ -1949,7 +1952,7 @@ STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Salvar o
|
||||
STR_400E_SELECT_NEW_GAME_TYPE :{WHITE}Selecionar Novo Tipo de Jogo
|
||||
STR_400F_SELECT_SCENARIO_GREEN_PRE :{BLACK}Selecionar cenário (verde), jogo pré-programado (azul), ou novo jogo aleatório
|
||||
STR_4010_GENERATE_RANDOM_NEW_GAME :Gerar novo jogo aleatório
|
||||
STR_4011_LOAD_HEIGHTMAP :{WHITE}Carregar Relevo
|
||||
STR_LOAD_HEIGHTMAP :{WHITE}Carregar Relevo
|
||||
|
||||
##id 0x4800
|
||||
STR_4800_IN_THE_WAY :{WHITE}{STRING} no caminho
|
||||
@@ -2008,8 +2011,8 @@ STR_4828_PRODUCES :{BLACK}Produz:
|
||||
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produção no mês passado:
|
||||
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportado)
|
||||
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centralizar visualização na localização da indústria
|
||||
STR_482D_NEW_UNDER_CONSTRUCTION :{BLACK}{BIGFONT}Nova {STRING} em construção em {TOWN}!
|
||||
STR_482E_NEW_BEING_PLANTED_NEAR :{BLACK}{BIGFONT}Nova {STRING} sendo plantada em {TOWN}!
|
||||
STR_482D_NEW_UNDER_CONSTRUCTION :{BLACK}{BIGFONT}Nov{G o a} {STRING} em construção em {TOWN}!
|
||||
STR_482E_NEW_BEING_PLANTED_NEAR :{BLACK}{BIGFONT}Nov{G o a} {STRING} sendo plantada em {TOWN}!
|
||||
STR_482F_COST :{BLACK}Custo: {YELLOW}{CURRENCY}
|
||||
STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Impossível construir este tipo de indústria aqui...
|
||||
STR_4831_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}...a floresta só pode ser plantada acima do nível de neve
|
||||
@@ -2153,10 +2156,10 @@ STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Quantid
|
||||
STR_6813_ECONOMY :{LTBLUE}Economia: {ORANGE}{STRING}
|
||||
STR_6814_TRAIN_REVERSING :{LTBLUE}Inverter trem: {ORANGE}{STRING}
|
||||
STR_6815_DISASTERS :{LTBLUE}Desastres: {ORANGE}{STRING}
|
||||
STR_16816_CITY_APPROVAL :{LTBLUE}Atitude das autoridades sobre reestruturamentos: {ORANGE}{STRING}
|
||||
STR_CITY_APPROVAL :{LTBLUE}Atitude das autoridades sobre reestruturamentos: {ORANGE}{STRING}
|
||||
############ range for difficulty settings ends
|
||||
|
||||
STR_26816_NONE :Nenhum
|
||||
STR_NONE :Nenhum
|
||||
STR_NUM_VERY_LOW :Muito baixo
|
||||
STR_6816_LOW :Baixo
|
||||
STR_6817_NORMAL :Normal
|
||||
@@ -2194,9 +2197,9 @@ STR_6835_AT_END_OF_LINE_ONLY :Só no fim da l
|
||||
STR_6836_OFF :Off
|
||||
STR_6837_ON :On
|
||||
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Exibir melhores pontuações
|
||||
STR_6839_PERMISSIVE :Permissivo
|
||||
STR_683A_TOLERANT :Tolerante
|
||||
STR_683B_HOSTILE :Hostil
|
||||
STR_PERMISSIVE :Permissivo
|
||||
STR_TOLERANT :Tolerante
|
||||
STR_HOSTILE :Hostil
|
||||
|
||||
##id 0x7000
|
||||
STR_7000 :
|
||||
@@ -2245,7 +2248,7 @@ STR_702A_REPAY :{BLACK}Pagar {S
|
||||
STR_702B_MAXIMUM_PERMITTED_LOAN :{WHITE}...o empréstimo máximo permitido é de {CURRENCY}
|
||||
STR_702C_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Impossível pedir mais dinheiro emprestado...
|
||||
STR_702D_LOAN_ALREADY_REPAYED :{WHITE}...não há empréstimo para pagar
|
||||
STR_702E_REQUIRED :{WHITE}...{CURRENCY} requerido
|
||||
STR_702E_REQUIRED :{WHITE}...precisa de {CURRENCY}
|
||||
STR_702F_CAN_T_REPAY_LOAN :{WHITE}Impossível pagar empréstimo...
|
||||
STR_INSUFFICIENT_FUNDS :{WHITE}Impossível dar o dinheiro emprestado do banco
|
||||
STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT :{BLACK}Selecionar novo rosto para o presidente
|
||||
@@ -2253,7 +2256,7 @@ STR_7031_CHANGE_THE_COMPANY_VEHICLE :{BLACK}Alterar
|
||||
STR_7032_CHANGE_THE_PRESIDENT_S :{BLACK}Alterar nome do presidente
|
||||
STR_7033_CHANGE_THE_COMPANY_NAME :{BLACK}Alterar nome da empresa
|
||||
STR_7034_CLICK_ON_SELECTED_NEW_COLOR :{BLACK}Clique no novo esquema de cor
|
||||
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Aumentar empréstimo
|
||||
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Pedir empréstimo
|
||||
STR_7036_REPAY_PART_OF_LOAN :{BLACK}Pagar parte do empréstimo
|
||||
STR_7037_PRESIDENT :{WHITE}{PLAYERNAME}{}{GOLD}(Presidente)
|
||||
STR_7038_INAUGURATED :{GOLD}Inaugurado: {WHITE}{NUM}
|
||||
@@ -2322,7 +2325,7 @@ STR_COMPANY_PASSWORD_CAPTION :{WHITE}Senha da
|
||||
STR_MAKE_DEFAULT_COMPANY_PASSWORD :{BLACK}Senha padrão da empresa
|
||||
STR_MAKE_DEFAULT_COMPANY_PASSWORD_TIP :{BLACK}Usar esta senha de empresa como padrão para novas empresas
|
||||
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Recessão Mundial!{}{}Economistas temem crise!
|
||||
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Fim do recessão!{}{}Melhoras no comércio inspiram confiança nas indústrias à medida que a economia se fortalece!
|
||||
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Fim da recessão!{}{}Melhoras no comércio inspiram confiança nas indústrias à medida que a economia se fortalece!
|
||||
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Alternar entre janela grande/pequena
|
||||
STR_7076_COMPANY_VALUE :{GOLD}Valor da empresa: {WHITE}{CURRENCY}
|
||||
STR_7077_BUY_25_SHARE_IN_COMPANY :{BLACK}Comprar 25% de ações
|
||||
@@ -2333,7 +2336,7 @@ STR_707B_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Impossí
|
||||
STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Impossível vender 25% das ações desta empresa...
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA}% propriedade de {COMPANY})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{COMPANY} foi comprada por {COMPANY}!
|
||||
STR_7080_PROTECTED :{WHITE}Esta empresa ainda não troca ações...
|
||||
STR_PROTECTED :{WHITE}Esta empresa ainda não troca ações...
|
||||
|
||||
STR_LIVERY_DEFAULT :Cores padrão
|
||||
STR_LIVERY_STEAM :Máquina a Vapor
|
||||
@@ -2346,6 +2349,8 @@ STR_LIVERY_EMU :EMU
|
||||
STR_LIVERY_PASSENGER_WAGON_STEAM :Vagão de Passageiro (Vapor)
|
||||
STR_LIVERY_PASSENGER_WAGON_DIESEL :Vagão de Passageiro (Diesel)
|
||||
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Vagão de Passageiro (Elétrico)
|
||||
STR_LIVERY_PASSENGER_WAGON_MONORAIL :Vagão de Passageiro (Monorail)
|
||||
STR_LIVERY_PASSENGER_WAGON_MAGLEV :Vagão de Passageiro (Maglev)
|
||||
STR_LIVERY_FREIGHT_WAGON :Vagão de carga
|
||||
STR_LIVERY_BUS :Ônibus
|
||||
STR_LIVERY_TRUCK :Caminhão
|
||||
@@ -2576,12 +2581,12 @@ STR_80CD_CS_INC_OIL_TANKER :Petroleiro CS-I
|
||||
STR_80CE_MPS_PASSENGER_FERRY :Barco de Passageiros MPS
|
||||
STR_80CF_FFP_PASSENGER_FERRY :Barco de Passageiros FFP
|
||||
STR_80D0_BAKEWELL_300_HOVERCRAFT :Hovercraft Bakewell 300
|
||||
STR_80D1_CHUGGER_CHUG_PASSENGER :Barco de Passageiros Chugger-Chug
|
||||
STR_80D2_SHIVERSHAKE_PASSENGER_FERRY :Barco de Passageiros Shivershake
|
||||
STR_80D3_YATE_CARGO_SHIP :Navio de Bens Yate
|
||||
STR_80D4_BAKEWELL_CARGO_SHIP :Navio de Bens Bakewell
|
||||
STR_80D5_MIGHTYMOVER_CARGO_SHIP :Navio de Bens Mightymover
|
||||
STR_80D6_POWERNAUT_CARGO_SHIP :Navio de Bens Powernaut
|
||||
STR_80D1_CHUGGER_CHUG_PASSENGER :Navio de Passageiros Chugger-Chug
|
||||
STR_80D2_SHIVERSHAKE_PASSENGER_FERRY :Navio de Passageiros Shivershake
|
||||
STR_80D3_YATE_CARGO_SHIP :Cargueiro Yate
|
||||
STR_80D4_BAKEWELL_CARGO_SHIP :Cargueiro Bakewell
|
||||
STR_80D5_MIGHTYMOVER_CARGO_SHIP :Cargueiro Mightymover
|
||||
STR_80D6_POWERNAUT_CARGO_SHIP :Cargueiro Powernaut
|
||||
STR_80D7_SAMPSON_U52 :Sampson U52
|
||||
STR_80D8_COLEMAN_COUNT :Coleman Count
|
||||
STR_80D9_FFP_DART :FFP Dart
|
||||
@@ -2640,17 +2645,17 @@ STR_8803_TRAIN_IN_THE_WAY :{WHITE}Trem no
|
||||
STR_8804 :{SETX 10}{COMMA}: {STRING} {STRING}
|
||||
STR_8805 :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
|
||||
STR_8806_GO_TO :Ir para {STATION}
|
||||
STR_8807_GO_TO_TRANSFER :Ir para {STATION} (Transferir e carregar)
|
||||
STR_8808_GO_TO_UNLOAD :Ir para {STATION} (Descarregar)
|
||||
STR_8809_GO_TO_TRANSFER_UNLOAD :Ir para {STATION} (Transferir e deixar vazio)
|
||||
STR_880A_GO_TO_LOAD :Ir para {STATION} (Carregar)
|
||||
STR_880B_GO_TO_TRANSFER_LOAD :Ir para {STATION} (Trasferir e aguardar carga total)
|
||||
STR_880C_GO_NON_STOP_TO :Ir sem parar para {STATION}
|
||||
STR_880D_GO_TO_NON_STOP_TRANSFER :Ir sem parar para {STATION} (Transferir e carregar)
|
||||
STR_880E_GO_NON_STOP_TO_UNLOAD :Ir sem parar para {STATION} (Descarregar)
|
||||
STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD :Ir sem parar para {STATION} (Transferir e deixar vazio)
|
||||
STR_8810_GO_NON_STOP_TO_LOAD :Ir sem parar para {STATION} (Carregar)
|
||||
STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD :Ir sem parar para {STATION} (Trasferir e aguardar carga total)
|
||||
STR_GO_TO_TRANSFER :Ir para {STATION} (Transferir e carregar)
|
||||
STR_8807_GO_TO_UNLOAD :Ir para {STATION} (Descarregar)
|
||||
STR_GO_TO_TRANSFER_UNLOAD :Ir para {STATION} (Transferir e deixar vazio)
|
||||
STR_8808_GO_TO_LOAD :Ir para {STATION} (Carregar)
|
||||
STR_GO_TO_TRANSFER_LOAD :Ir para {STATION} (Trasferir e aguardar carga total)
|
||||
STR_880A_GO_NON_STOP_TO :Ir sem parar para {STATION}
|
||||
STR_GO_TO_NON_STOP_TRANSFER :Ir sem parar para {STATION} (Transferir e carregar)
|
||||
STR_880B_GO_NON_STOP_TO_UNLOAD :Ir sem parar para {STATION} (Descarregar)
|
||||
STR_GO_TO_NON_STOP_TRANSFER_UNLOAD :Ir sem parar para {STATION} (Transferir e deixar vazio)
|
||||
STR_880C_GO_NON_STOP_TO_LOAD :Ir sem parar para {STATION} (Carregar)
|
||||
STR_GO_TO_NON_STOP_TRANSFER_LOAD :Ir sem parar para {STATION} (Trasferir e aguardar carga total)
|
||||
STR_GO_TO_TRAIN_DEPOT :Ir para o depósito de {TOWN}
|
||||
STR_SERVICE_AT_TRAIN_DEPOT :Manutenção no depósito de {TOWN}
|
||||
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Ir sem parar para o depósito de {TOWN}
|
||||
@@ -2663,8 +2668,8 @@ STR_TIMETABLE_STAY_FOR :e ficar durante
|
||||
STR_TIMETABLE_DAYS :{COMMA} dia{P "" s}
|
||||
STR_TIMETABLE_TICKS :{COMMA} tique{P "" s}
|
||||
|
||||
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Dirigindo-se ao depósito de {TOWN}
|
||||
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Dirigindo-se ao depósito de {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Indo para o depósito de {TOWN}
|
||||
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Indo para o depósito de {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_TRAIN_DEPOT_SERVICE :{LTBLUE}Manutenção no depósito de {TOWN}
|
||||
STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL :{LTBLUE}Manutenção no depósito de {TOWN}, {VELOCITY}
|
||||
|
||||
@@ -2754,7 +2759,7 @@ STR_884E_DECREASE_SERVICING_INTERVAL :{BLACK}Diminuir
|
||||
STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Exibir detalhes da carga transportada
|
||||
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Exibir detalhes dos veículos
|
||||
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Exibir capacidades de cada veículo
|
||||
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Exibir capacidade total do trem, dividir por tipo de carga
|
||||
STR_SHOW_TOTAL_CARGO :{BLACK}Exibir capacidade total do trem, dividir por tipo de carga
|
||||
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Lista de ordens - clique numa ordem para a selecionar
|
||||
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Pula a ordem atual e executa a próxima. CTRL + clique pula a ordem selecionada
|
||||
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Remover a ordem selecionada
|
||||
@@ -2766,13 +2771,13 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Plano de
|
||||
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Mude a quantidade de tempo que a ordem deverá levar
|
||||
STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Reseta a quantidade de tempo para a ordem selecionada
|
||||
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Reseta o contador de atraso, fazendo o veículo estar na hora
|
||||
STR_SERVICE_HINT :{BLACK}Saltar esta ordem a menos que seja preciso manutenção
|
||||
STR_SERVICE_HINT :{BLACK}Pular esta ordem a menos que necessite de manutenção
|
||||
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Custo: {CURRENCY} Peso: {WEIGHT_S}{}Velocidade: {VELOCITY} Potência: {POWER}{}Custo de circulação: {CURRENCY}/ano{}Capacidade: {CARGO}
|
||||
STR_885C_BROKEN_DOWN :{RED}Quebrado
|
||||
STR_885D_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_S} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade Máx.: {LTBLUE}{VELOCITY}
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_S} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade: {LTBLUE}{VELOCITY} {BLACK}Manutenção.: {LTBLUE}{FORCE}
|
||||
STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_8860_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
|
||||
STR_8861_STOPPED :{RED}Parado
|
||||
STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Impossível fazer o trem passar o sinal de perigo...
|
||||
@@ -2785,8 +2790,8 @@ STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT
|
||||
STR_8869_CAN_T_REVERSE_DIRECTION :{WHITE}Impossível inverter a direção do trem...
|
||||
STR_886A_RENAME_TRAIN_VEHICLE_TYPE :{WHITE}Renomear tipo de veículo ferroviário
|
||||
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Impossível renomear tipo de veículo ferroviário...
|
||||
STR_886D_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Força o veículo a deixar a carga na ordem selecionada
|
||||
STR_886F_TRANSFER :{BLACK}Transferir
|
||||
STR_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Força o veículo a deixar a carga na ordem selecionada
|
||||
STR_TRANSFER :{BLACK}Transferir
|
||||
STR_CLEAR_TIME :{BLACK}Resetar horário
|
||||
STR_RESET_LATENESS :{BLACK}Resetar contador de atraso
|
||||
|
||||
@@ -2796,9 +2801,9 @@ STR_INCOMPATIBLE_RAIL_TYPES :Tipo de ferrovi
|
||||
STR_TRAIN_NO_POWER :{RED}Sem força
|
||||
STR_TRAIN_START_NO_CATENARY :Essa linha não tem energia, portanto o trem não parte
|
||||
|
||||
STR_NEW_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Novo {STRING} agora disponível!
|
||||
STR_NEW_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Nov{G o a} {STRING} agora disponível!
|
||||
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
|
||||
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novo {STRING} agora disponível! - {ENGINE}
|
||||
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G o a} {STRING} agora disponível! - {ENGINE}
|
||||
|
||||
STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Impossível vender veículo destruído...
|
||||
STR_CAN_T_REFIT_DESTROYED_VEHICLE :{WHITE}Impossível adptar veículo destruído...
|
||||
@@ -2827,7 +2832,7 @@ STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Impossí
|
||||
STR_900C_DETAILS :{WHITE}{VEHICLE} (Detalhes)
|
||||
STR_900D_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
|
||||
STR_900E_MAX_SPEED :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY}
|
||||
STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_9010_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
|
||||
STR_9011_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
|
||||
STR_9012_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}
|
||||
@@ -2835,8 +2840,8 @@ STR_9013_MUST_BE_STOPPED_INSIDE :{WHITE}...deve
|
||||
STR_9014_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Impossível vender automóvel...
|
||||
STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Impossível iniciar/parar automóvel...
|
||||
STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}Automóvel {COMMA} está aguardando na garagem
|
||||
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Dirigindo-se à garagem de {TOWN}
|
||||
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Dirigindo-se à garagem de {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Indo para a garagem de {TOWN}
|
||||
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Indo para a garagem de {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Manutenção na garagem de {TOWN}
|
||||
STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Manutenção na garagem de {TOWN}, {VELOCITY}
|
||||
STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}Impossível enviar o veículo para a garagem...
|
||||
@@ -2864,8 +2869,8 @@ STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}Impossí
|
||||
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Renomear automóvel
|
||||
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro ônibus chega a {STATION}!
|
||||
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro caminhão chega a {STATION}!
|
||||
STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro bonde de passageiros chega a {STATION}!
|
||||
STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro bonde de carga chega a {STATION}!
|
||||
STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro bonde de passageiros chega a {STATION}!
|
||||
STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM :{BLACK}{BIGFONT}Cidadãos celebram . . .{}Primeiro bonde de carga chega a {STATION}!
|
||||
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Acidente Rodoviário!{} Condutor morre numa explosão após a colisão com um trem
|
||||
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Acidente Rodoviário!{} {COMMA} mortos numa explosão após a colisão com um trem
|
||||
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Impossível fazer o veículo dar a volta...
|
||||
@@ -2874,7 +2879,7 @@ STR_9034_RENAME :{BLACK}Renomear
|
||||
STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Renomear tipo do automóvel
|
||||
STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Renomear tipo do automóvel
|
||||
STR_9037_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Impossível renomear tipo do automóvel...
|
||||
STR_9038_GO_TO_ROADVEH_DEPOT :Ir para a garagem de {TOWN}
|
||||
STR_GO_TO_ROADVEH_DEPOT :Ir para a garagem de {TOWN}
|
||||
STR_SERVICE_AT_ROADVEH_DEPOT :Manutenção na garagem de {TOWN}
|
||||
|
||||
STR_REFIT_ROAD_VEHICLE_TO_CARRY :{BLACK}Adaptar automóvel para carregar tipo de carga diferente
|
||||
@@ -2903,15 +2908,15 @@ STR_980F :{WHITE}{VEHICLE
|
||||
STR_9811_DETAILS :{WHITE}{VEHICLE} (Detalhes)
|
||||
STR_9812_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
|
||||
STR_9813_MAX_SPEED :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY}
|
||||
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_9815_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
|
||||
STR_9816_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
|
||||
STR_9817_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}
|
||||
STR_9818_CAN_T_STOP_START_SHIP :{WHITE}Impossível iniciar/parar embarcação...
|
||||
STR_9819_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Impossível enviar embarcação para o depósito...
|
||||
STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Incapaz de encontrar depósito local
|
||||
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Dirigindo-se ao depósito naval de {TOWN}
|
||||
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Dirigindo-se ao depósito naval {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Indo para o depósito naval de {TOWN}
|
||||
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Indo para o depósito naval {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Manutenção no depósito naval de {TOWN}
|
||||
STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Manutenção no depósito naval de {TOWN}, {VELOCITY}
|
||||
STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Embarcação {COMMA} está aguardando no depósito naval
|
||||
@@ -2971,12 +2976,12 @@ STR_A00B_ORDERS :{WHITE}{VEHICLE
|
||||
STR_A00C_DETAILS :{WHITE}{VEHICLE} (Detalhes)
|
||||
STR_A00D_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
|
||||
STR_A00E_MAX_SPEED :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY}
|
||||
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
|
||||
STR_A011_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
|
||||
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Impossível enviar aeronave para o hangar...
|
||||
STR_HEADING_FOR_HANGAR :{ORANGE}Dirigindo-se ao hangar de {STATION}
|
||||
STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Dirigindo-se ao hangar de {STATION}, {VELOCITY}
|
||||
STR_HEADING_FOR_HANGAR :{ORANGE}Indo para o hangar de {STATION}
|
||||
STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Indo para o hangar de {STATION}, {VELOCITY}
|
||||
STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Manutenção no Hangar de {STATION}
|
||||
STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Manutenção no Hangar de {STATION}, {VELOCITY}
|
||||
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Aeronave {COMMA} está aguardando no hangar
|
||||
@@ -3034,7 +3039,7 @@ STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT
|
||||
STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Explosão na refinaria de petróleo em {TOWN}!
|
||||
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fábrica destruída em circunstâncias suspeitas em {TOWN}!
|
||||
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}OVNI pousa próximo a {TOWN}!
|
||||
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Afundamento de mina de carvão deixa um rasto de destruição em {TOWN}!
|
||||
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Afundamento da mina de carvão deixa um rasto de destruição em {TOWN}!
|
||||
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Inundações!{}Pelo menos {COMMA} perdidos ou mortos após terríveis inundações!
|
||||
|
||||
STR_BRIBE_FAILED :{WHITE}A sua tentativa de suborno foi
|
||||
@@ -3176,7 +3181,7 @@ STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP :{BLACK}Autosubs
|
||||
STR_VEHICLE_LIST_TRAIN_DEPOT :{BLACK}{STRING} - {COMMA} Tre{P m ns}
|
||||
STR_VEHICLE_LIST_ROADVEH_DEPOT :{BLACK}{STRING} - {COMMA} Automóve{P l is}
|
||||
STR_VEHICLE_LIST_SHIP_DEPOT :{BLACK}{STRING} - {COMMA} Embarcaç{P ão ões}
|
||||
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - {COMMA} Aeronave
|
||||
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - {COMMA} Aeronave{P "" s}
|
||||
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Substituir {STRING}
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Iniciar Substituição
|
||||
@@ -3248,6 +3253,12 @@ STR_PURCHASE_INFO_ALL_TYPES :Todos as cargas
|
||||
STR_PURCHASE_INFO_ALL_BUT :Todas menos {GOLD}
|
||||
STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Tração : {GOLD}{FORCE}
|
||||
|
||||
########### For showing numbers in widgets
|
||||
|
||||
STR_NUM_1 :{BLACK}{SKIP}{NUM}
|
||||
STR_NUM_2 :{BLACK}{SKIP}{SKIP}{NUM}
|
||||
STR_NUM_3 :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
|
||||
|
||||
########### String for New Landscape Generator
|
||||
|
||||
STR_GENERATE :{WHITE}Gerar
|
||||
@@ -3275,7 +3286,6 @@ STR_HEIGHTMAP_SCALE_WARNING_CAPTION :{WHITE}Aviso de
|
||||
STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}Alterar muito o tamanho do mapa original não é recomendado. Continuar com a geração?
|
||||
STR_TOWN_LAYOUT_WARNING_CAPTION :{WHITE}Aviso do layout da cidade
|
||||
STR_TOWN_LAYOUT_WARNING_MESSAGE :{YELLOW}O Layout "sem mais estradas" não é recomendado. Continuar com a geração?
|
||||
STR_SNOW_LINE_HEIGHT_NUM :{NUM}
|
||||
STR_HEIGHTMAP_NAME :{BLACK}Nome do mapa em relevo:
|
||||
STR_HEIGHTMAP_SIZE :{BLACK}Tamanho: {ORANGE}{NUM} x {NUM}
|
||||
STR_GENERATION_WORLD :{WHITE}Gerando mundo...
|
||||
@@ -3301,7 +3311,6 @@ STR_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Mover a
|
||||
STR_FLAT_WORLD_HEIGHT_UP :{BLACK}Mover a altitude da terra plana em uma unidade a mais
|
||||
STR_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Mudar a altitude da terra plana
|
||||
STR_FLAT_WORLD_HEIGHT :{BLACK}Altitude da terra plana
|
||||
STR_FLAT_WORLD_HEIGHT_NUM :{NUM}
|
||||
|
||||
STR_SMALLMAP_CENTER :{BLACK}Centralizar o minimapa na posição atual
|
||||
STR_SMALLMAP_INDUSTRY :{TINYFONT}{STRING} ({NUM})
|
||||
@@ -3348,6 +3357,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Alternar
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Alternar transparência para construções como estações, depósitos, pontos de controle e eletrificação da ferrovia
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Alternar transparência para pontes
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Alternar transparência para estruturas como faróis e antenas, talvez no futuro para efeitos visuais
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Alternar transparência para catenária. CTRL+click para travar.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Altera transparência para os indicadores de carga
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
@@ -3362,20 +3372,20 @@ STR_GROUP_NAME_FORMAT :Agrupar {COMMA}
|
||||
STR_GROUP_TINY_NAME :{TINYFONT}{GROUP}
|
||||
STR_GROUP_ALL_TRAINS :Todos os trens
|
||||
STR_GROUP_ALL_ROADS :Todos os automóveis
|
||||
STR_GROUP_ALL_SHIPS :Todos os navios
|
||||
STR_GROUP_ALL_SHIPS :Todas as embarcações
|
||||
STR_GROUP_ALL_AIRCRAFTS :Todas as aeronaves
|
||||
STR_GROUP_DEFAULT_TRAINS :Trens sem grupo
|
||||
STR_GROUP_DEFAULT_ROADS :Automóveis sem grupo
|
||||
STR_GROUP_DEFAULT_SHIPS :Navios sem grupo
|
||||
STR_GROUP_DEFAULT_SHIPS :Embarcações sem grupo
|
||||
STR_GROUP_DEFAULT_AIRCRAFTS :Aeronaves sem grupo
|
||||
STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
|
||||
STR_GROUP_ADD_SHARED_VEHICLE :Adicionar veículos compartilhados
|
||||
STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos os veículos
|
||||
|
||||
STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Trem{P "" s}
|
||||
STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Automóvel{P "" s}
|
||||
STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Navio{P "" s}
|
||||
STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Aeronave
|
||||
STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Tre{P m ns}
|
||||
STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Automóve{P l is}
|
||||
STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Embarcaç{P ão ões}
|
||||
STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Aeronave{P "" s}
|
||||
STR_GROUP_RENAME_CAPTION :{BLACK}Renomear um grupo
|
||||
STR_GROUP_REPLACE_CAPTION :{WHITE}Substituir Veículos de "{GROUP}"
|
||||
|
||||
|
@@ -17,8 +17,7 @@ STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Трябва равна земя
|
||||
STR_0008_WAITING :{BLACK}Чакане: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{CARGO}
|
||||
STR_000A_EN_ROUTE_FROM :{WHITE}{CARGO}{YELLOW} (на път от
|
||||
STR_000B :{YELLOW}{STATION})
|
||||
STR_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} на път от {STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Приема: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Приема: {GOLD}
|
||||
STR_000E :
|
||||
@@ -276,9 +275,9 @@ STR_0130_RENAME :{BLACK}Преи
|
||||
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Прекалено много имена
|
||||
STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Избраното име вече е в употреба
|
||||
|
||||
STR_0133_WINDOWS :Windows
|
||||
STR_0134_UNIX :Unix
|
||||
STR_0135_OSX :ОС Х
|
||||
STR_OSNAME_WINDOWS :Windows
|
||||
STR_OSNAME_UNIX :Unix
|
||||
STR_OSNAME_OSX :ОС Х
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
@@ -289,11 +288,11 @@ STR_013B_OWNED_BY :{WHITE}...со
|
||||
STR_013C_CARGO :{BLACK}Товар
|
||||
STR_013D_INFORMATION :{BLACK}Информация
|
||||
STR_013E_CAPACITIES :{BLACK}Вместимости
|
||||
STR_013E_TOTAL_CARGO :{BLACK}Общо товар
|
||||
STR_TOTAL_CARGO :{BLACK}Общо товар
|
||||
STR_013F_CAPACITY :{BLACK}Вместимост: {LTBLUE}{CARGO}
|
||||
STR_CAPACITY_MULT :{BLACK}Капацитет: {LTBLUE}{CARGO} (x{NUM})
|
||||
STR_013F_TOTAL_CAPACITY_TEXT :{BLACK}Обща товарна вместимост на влака:
|
||||
STR_013F_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_TEXT :{BLACK}Обща товарна вместимост на влака:
|
||||
STR_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
|
||||
STR_0140_NEW_GAME :{BLACK}Нова игра
|
||||
STR_0141_LOAD_GAME :{BLACK}Отвори игра
|
||||
@@ -301,12 +300,6 @@ STR_SINGLE_PLAYER :{BLACK}Сам
|
||||
STR_MULTIPLAYER :{BLACK}Много играчи
|
||||
STR_SCENARIO_EDITOR :{BLACK}Редактор сценарии
|
||||
|
||||
STR_64 :64
|
||||
STR_128 :128
|
||||
STR_256 :256
|
||||
STR_512 :512
|
||||
STR_1024 :1024
|
||||
STR_2048 :2048
|
||||
STR_MAPSIZE :{BLACK}Размер на картата:
|
||||
STR_BY :{BLACK}*
|
||||
STR_0148_GAME_OPTIONS :{BLACK}Настройки
|
||||
@@ -734,11 +727,12 @@ STR_028D_PLACE_LIGHTHOUSE :{BLACK}Пост
|
||||
STR_028E_PLACE_TRANSMITTER :{BLACK}Постави предавател
|
||||
STR_028F_DEFINE_DESERT_AREA :{BLACK}Избери пустинен терен.{}Задръж CTRL за да го премахнеш.
|
||||
STR_CREATE_LAKE :{BLACK}Определи водна площ.{}Построи канал, освем когато CTRL е натиснат на морско ниво, когато ще наводни околната среда в замяна
|
||||
STR_CREATE_RIVER :{BLACK}Направи реки.
|
||||
STR_0290_DELETE :{BLACK}Изтрий
|
||||
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Премахни напълно града
|
||||
STR_0292_SAVE_SCENARIO :Запис на сценарий
|
||||
STR_0293_LOAD_SCENARIO :Зареждане на сценарий
|
||||
STR_LOAD_HEIGHTMAP :Отвори височинна карта
|
||||
STR_MENU_LOAD_HEIGHTMAP :Отвори височинна карта
|
||||
STR_0294_QUIT_EDITOR :Изход от редактора
|
||||
STR_0295 :
|
||||
STR_0296_QUIT :Изход
|
||||
@@ -778,9 +772,9 @@ STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Запи
|
||||
|
||||
STR_CHECKMARK :{CHECKMARK}
|
||||
############ range for menu starts
|
||||
STR_02C3_GAME_OPTIONS :Игрови опции
|
||||
STR_02C5_DIFFICULTY_SETTINGS :Опции за трудност
|
||||
STR_02C7_CONFIG_PATCHES :Конфигурирай патчове
|
||||
STR_02C4_GAME_OPTIONS :Игрови опции
|
||||
STR_02C6_DIFFICULTY_SETTINGS :Опции за трудност
|
||||
STR_MENU_CONFIG_PATCHES :Конфигурирай патчове
|
||||
STR_NEWGRF_SETTINGS :Newgrf настройки
|
||||
STR_TRANSPARENCY_OPTIONS :Опций на прозрачност
|
||||
STR_GAMEOPTMENU_0A :
|
||||
@@ -880,8 +874,8 @@ STR_SAVING_GAME :{RED}* * ЗА
|
||||
STR_SAVE_STILL_IN_PROGRESS :{WHITE}Записването продължава,{}моля изчакайте да сръши!
|
||||
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Избери програмата 'Ezy Street style music'
|
||||
|
||||
STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
STR_6 :{BLACK}6
|
||||
STR_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :английски (оригинални)
|
||||
@@ -1057,7 +1051,6 @@ STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Под
|
||||
STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Позволи купуване на изклучителни транспортни права: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Позволи изпращане на пари до други компаний: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Нестандартни станции: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Нов глобален навигатор (NPF, отменя NTP): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Теглови множител към товарите за симулация на тежки влакове: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Преминаване през спирки на градски пътища: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Позвалявай допрени гари: {ORANGE}{STRING}
|
||||
@@ -1212,9 +1205,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Промяна стойноста на настройка
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Някои от стойностите за интервал(и) на сервиз са несъвместими с избраните настройки! 5-90% и 30-800 са валидни стойности
|
||||
STR_CONFIG_PATCHES_YAPF_SHIPS :{LTBLUE}YAPF за кораби: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_YAPF_ROAD :{LTBLUE}YAPF за автомобили: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_YAPF_RAIL :{LTBLUE}YAPF за влакове: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Пътенамирач за влакове: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Не е препоръчано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Препоръчано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Пътенамирач за пътни превозни средства: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Оригинал {RED}(Не е препоръчано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Препоръчано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Пътенамирач за кораби: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Оригинал {BLUE}(Препоръчано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Не е препоръчано)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :умерен климат
|
||||
STR_SUB_ARCTIC_LANDSCAPE :Арктичен климат
|
||||
@@ -1656,42 +1659,42 @@ STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Желе
|
||||
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Първо махнете пътя
|
||||
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Пътни ремонти в процес
|
||||
STR_1802_ROAD_CONSTRUCTION :{WHITE}Пътно строителство
|
||||
STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Конструкциа на трамвайна линиа
|
||||
STR_WHITE_TRAMWAY_CONSTRUCTION :{WHITE}Конструкциа на трамвайна линиа
|
||||
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Избор на асфалтов мост
|
||||
STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... еднопосочни пътища немогат да имат съединениа
|
||||
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Пътя не може да се построи...
|
||||
STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Трамвайна линиа неможе да бъде посроена тук...
|
||||
STR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Трамвайна линиа неможе да бъде посроена тук...
|
||||
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Пътя не може да се махне...
|
||||
STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Трамвайната линиа неможе да бъде премахната от тук...
|
||||
STR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Трамвайната линиа неможе да бъде премахната от тук...
|
||||
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Ориентация на гараж
|
||||
STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Посока на Трамвайно Депо
|
||||
STR_TRAM_DEPOT_ORIENTATION :{WHITE}Посока на Трамвайно Депо
|
||||
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Гаража не може да се построи...
|
||||
STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Трамвайно депо неможе да бъде построено тук...
|
||||
STR_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Трамвайно депо неможе да бъде построено тук...
|
||||
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Автогарата не може да се построи...
|
||||
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Товарната гара не може да се построи...
|
||||
STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Пътническа трамвайна гара неможе да бъде построена...
|
||||
STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Товарна трамвайна гара неможе да бъде построена...
|
||||
STR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Пътническа трамвайна гара неможе да бъде построена...
|
||||
STR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Товарна трамвайна гара неможе да бъде построена...
|
||||
STR_180A_ROAD_CONSTRUCTION :Пътно строителство
|
||||
STR_180A_TRAMWAY_CONSTRUCTION :Конструкциа на трамвайна линиа
|
||||
STR_TRAMWAY_CONSTRUCTION :Конструкциа на трамвайна линиа
|
||||
STR_180B_BUILD_ROAD_SECTION :{BLACK}Строене на път
|
||||
STR_BUILD_AUTOROAD_TIP :{BLACK}Построи отсечка от шосе използвайки Афто-шосе методът
|
||||
STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Построи секциа от трамвайна линиа
|
||||
STR_BUILD_TRAMWAY_SECTION :{BLACK}Построи секциа от трамвайна линиа
|
||||
STR_BUILD_AUTOTRAM_TIP :{BLACK}Построи отсечка от железопътна линиа използвайки Афто-линиа методът
|
||||
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Строене на гараж (за строене и сервиз на МПС-та)
|
||||
STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Построи трамвайно депо (за стройтелни и сервизни коли)
|
||||
STR_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Построи трамвайно депо (за стройтелни и сервизни коли)
|
||||
STR_180D_BUILD_BUS_STATION :{BLACK}Строене на автогара
|
||||
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Строене на товарна гара
|
||||
STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Построи пъгническа трамвайна гара
|
||||
STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Построи товарна трамвайна гара
|
||||
STR_BUILD_PASSENGER_TRAM_STATION :{BLACK}Построи пъгническа трамвайна гара
|
||||
STR_BUILD_CARGO_TRAM_STATION :{BLACK}Построи товарна трамвайна гара
|
||||
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Построй мост
|
||||
STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Построи трамвайен мост
|
||||
STR_BUILD_TRAMWAY_BRIDGE :{BLACK}Построи трамвайен мост
|
||||
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Построй тунел
|
||||
STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Построи трамвайен тунел
|
||||
STR_BUILD_TRAMWAY_TUNNEL :{BLACK}Построи трамвайен тунел
|
||||
STR_TOGGLE_ONE_WAY_ROAD :{BLACK}Активирай/Деактивирай еднопосочни пътища
|
||||
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Премахване на асфалтов път
|
||||
STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Превключване строене/разрушаване на трамвайни консктрукции
|
||||
STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Превключване строене/разрушаване на трамвайни консктрукции
|
||||
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Ориентация на гараж
|
||||
STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Избери посоката на трамвайното депо
|
||||
STR_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Избери посоката на трамвайното депо
|
||||
STR_1814_ROAD :път
|
||||
STR_1815_ROAD_WITH_STREETLIGHTS :Асфалтов път с улични лампи
|
||||
STR_1816_TREE_LINED_ROAD :Асфалтов път с дървета
|
||||
@@ -1834,8 +1837,8 @@ STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD :{WHITE}Твър
|
||||
STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Граничи с повече от една гара/товарна платформа
|
||||
STR_3007_TOO_MANY_STATIONS_LOADING :{WHITE}Твърде много гари/товарни платформи в града
|
||||
STR_3008_TOO_MANY_STATIONS_LOADING :{WHITE}Твърде много гари/товарни платформи
|
||||
STR_3008A_TOO_MANY_BUS_STOPS :{WHITE}Твърде много автобусни спирки
|
||||
STR_3008B_TOO_MANY_TRUCK_STOPS :{WHITE}Твърде много гари за камиони
|
||||
STR_TOO_MANY_BUS_STOPS :{WHITE}Твърде много автобусни спирки
|
||||
STR_TOO_MANY_TRUCK_STOPS :{WHITE}Твърде много гари за камиони
|
||||
STR_3009_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Твърде близо до друга гара/товарна платформа
|
||||
STR_300A_0 :{WHITE}{STATION} {STATIONFEATURES}
|
||||
STR_300B_MUST_DEMOLISH_RAILROAD :{WHITE}Първо разрушете ЖП гарата
|
||||
@@ -1866,12 +1869,12 @@ STR_3040_NOW_ACCEPTS :{WHITE}{STATION
|
||||
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} вече приема {STRING} и {STRING}
|
||||
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Ориентация на автогара
|
||||
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Ориент. товарна гара
|
||||
STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Посока на пътнически трамвай
|
||||
STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Посока на товарен трамвай
|
||||
STR_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Посока на пътнически трамвай
|
||||
STR_CARGO_TRAM_STATION_ORIENT :{WHITE}Посока на товарен трамвай
|
||||
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Първо разрушете автогарата
|
||||
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Първо разрушете товарната гара
|
||||
STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Пътническата трамвайна гара трябва да бъде унищожена първо
|
||||
STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Товарната трамвайна гара трябва да бъде унищожена първо
|
||||
STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Пътническата трамвайна гара трябва да бъде унищожена първо
|
||||
STR_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Товарната трамвайна гара трябва да бъде унищожена първо
|
||||
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Станци{P я и}
|
||||
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
|
||||
STR_304A_NONE :{YELLOW}- Николко -
|
||||
@@ -1883,8 +1886,8 @@ STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}Брой
|
||||
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Дължина на ЖП гарата
|
||||
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Ориентация на автогарата
|
||||
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Ориентация на товарната гара
|
||||
STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Избери посоката на пътническата трамвайна гара
|
||||
STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Избери посоката на товарната трамвайна гара
|
||||
STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Избери посоката на пътническата трамвайна гара
|
||||
STR_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Избери посоката на товарната трамвайна гара
|
||||
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Центриране на главния прозорец върху станцията
|
||||
STR_3054_SHOW_STATION_RATINGS :{BLACK}Покажи нивото на обслужване
|
||||
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Промяна името на станцията
|
||||
@@ -1906,7 +1909,7 @@ STR_3068_DOCK :{WHITE}Док
|
||||
STR_3069_BUOY :Шамандура
|
||||
STR_306A_BUOY_IN_THE_WAY :{WHITE}...шамандура на пътя
|
||||
STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...станцията е прекалено разпръсната
|
||||
STR_306D_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...неправилните станции са изключени
|
||||
STR_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...неправилните станции са изключени
|
||||
STR_USE_CTRL_TO_SELECT_MORE :{BLACK}Задържете CTRL за да изберете повече от един обект
|
||||
|
||||
STR_UNDEFINED :(неопределен текст)
|
||||
@@ -1947,7 +1950,7 @@ STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Запа
|
||||
STR_400E_SELECT_NEW_GAME_TYPE :{WHITE}Избери нов тип игра
|
||||
STR_400F_SELECT_SCENARIO_GREEN_PRE :{BLACK}Избери на сценарии (зелено), предварително настроена игра (синьо), или произволна нова игра
|
||||
STR_4010_GENERATE_RANDOM_NEW_GAME :Генерирай произволна нова игра
|
||||
STR_4011_LOAD_HEIGHTMAP :{WHITE}Зареди височинна карта
|
||||
STR_LOAD_HEIGHTMAP :{WHITE}Зареди височинна карта
|
||||
|
||||
##id 0x4800
|
||||
STR_4800_IN_THE_WAY :{WHITE}{STRING} пречи
|
||||
@@ -2151,10 +2154,10 @@ STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Кол
|
||||
STR_6813_ECONOMY :{LTBLUE}Икономика: {ORANGE}{STRING}
|
||||
STR_6814_TRAIN_REVERSING :{LTBLUE}Обръщане на влаковете: {ORANGE}{STRING}
|
||||
STR_6815_DISASTERS :{LTBLUE}Бедствия: {ORANGE}{STRING}
|
||||
STR_16816_CITY_APPROVAL :{LTBLUE}Отношение на градските власти към промяна на земята: {ORANGE}{STRING}
|
||||
STR_CITY_APPROVAL :{LTBLUE}Отношение на градските власти към промяна на земята: {ORANGE}{STRING}
|
||||
############ range for difficulty settings ends
|
||||
|
||||
STR_26816_NONE :Николко
|
||||
STR_NONE :Николко
|
||||
STR_NUM_VERY_LOW :Много ниско
|
||||
STR_6816_LOW :малко
|
||||
STR_6817_NORMAL :нормално
|
||||
@@ -2192,9 +2195,9 @@ STR_6835_AT_END_OF_LINE_ONLY :само в к
|
||||
STR_6836_OFF :изключено
|
||||
STR_6837_ON :включено
|
||||
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Покажи класирането
|
||||
STR_6839_PERMISSIVE :разрешаващи
|
||||
STR_683A_TOLERANT :толерантни
|
||||
STR_683B_HOSTILE :враждебни
|
||||
STR_PERMISSIVE :разрешаващи
|
||||
STR_TOLERANT :толерантни
|
||||
STR_HOSTILE :враждебни
|
||||
|
||||
##id 0x7000
|
||||
STR_7000 :
|
||||
@@ -2331,7 +2334,7 @@ STR_707B_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Не м
|
||||
STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Не може да продадеш 25% от акциите на тази компания...
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA}% е притежание на {COMPANY})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{COMPANY} бе закупена от {COMPANY}!
|
||||
STR_7080_PROTECTED :{WHITE}Тази компания все още не е достатъчно стара да предлага акции...
|
||||
STR_PROTECTED :{WHITE}Тази компания все още не е достатъчно стара да предлага акции...
|
||||
|
||||
STR_LIVERY_DEFAULT :Стандартен Ливъри
|
||||
STR_LIVERY_STEAM :Парен локомотив
|
||||
@@ -2344,6 +2347,8 @@ STR_LIVERY_EMU :EMU
|
||||
STR_LIVERY_PASSENGER_WAGON_STEAM :Пътнически вагон (Парен)
|
||||
STR_LIVERY_PASSENGER_WAGON_DIESEL :Пътнически вагон (Дизел)
|
||||
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Пътнически вагон (Електрически)
|
||||
STR_LIVERY_PASSENGER_WAGON_MONORAIL :Пътнически вагон (Monorail - еднорелсова железопътна линия)
|
||||
STR_LIVERY_PASSENGER_WAGON_MAGLEV :Пътнически вагон (Maglev - магнетично издигнат влак)
|
||||
STR_LIVERY_FREIGHT_WAGON :Товарен вагон
|
||||
STR_LIVERY_BUS :Автобус
|
||||
STR_LIVERY_TRUCK :Камион
|
||||
@@ -2638,17 +2643,17 @@ STR_8803_TRAIN_IN_THE_WAY :{WHITE}Влак
|
||||
STR_8804 :{SETX 10}{COMMA}: {STRING} {STRING}
|
||||
STR_8805 :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
|
||||
STR_8806_GO_TO :Отиди на {STATION}
|
||||
STR_8807_GO_TO_TRANSFER :Отиди на {STATION} (Обмени и вземи товар)
|
||||
STR_8808_GO_TO_UNLOAD :Отиди на {STATION} (Разтовари)
|
||||
STR_8809_GO_TO_TRANSFER_UNLOAD :Отиди на {STATION} (Обмени и не взимай нов товар)
|
||||
STR_880A_GO_TO_LOAD :Отиди на {STATION} (Товари)
|
||||
STR_880B_GO_TO_TRANSFER_LOAD :Отиди на {STATION} (Обмени и изчакай до пълен товар)
|
||||
STR_880C_GO_NON_STOP_TO :Отиди без да спираш на {STATION}
|
||||
STR_880D_GO_TO_NON_STOP_TRANSFER :Отиди без да спираш на {STATION} (Обмени и вземи товар)
|
||||
STR_880E_GO_NON_STOP_TO_UNLOAD :отиди без да спираш на {STATION} (Разтовари)
|
||||
STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD :Отиди без да спираш на {STATION} (Обмени и не товари)
|
||||
STR_8810_GO_NON_STOP_TO_LOAD :Отиди без да спираш на {STATION} (Товари)
|
||||
STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD :Отиди без да спираш на {STATION} (Обмени и изчакай до пълен товар)
|
||||
STR_GO_TO_TRANSFER :Отиди на {STATION} (Обмени и вземи товар)
|
||||
STR_8807_GO_TO_UNLOAD :Отиди на {STATION} (Разтовари)
|
||||
STR_GO_TO_TRANSFER_UNLOAD :Отиди на {STATION} (Обмени и не взимай нов товар)
|
||||
STR_8808_GO_TO_LOAD :Отиди на {STATION} (Товари)
|
||||
STR_GO_TO_TRANSFER_LOAD :Отиди на {STATION} (Обмени и изчакай до пълен товар)
|
||||
STR_880A_GO_NON_STOP_TO :Отиди без да спираш на {STATION}
|
||||
STR_GO_TO_NON_STOP_TRANSFER :Отиди без да спираш на {STATION} (Обмени и вземи товар)
|
||||
STR_880B_GO_NON_STOP_TO_UNLOAD :отиди без да спираш на {STATION} (Разтовари)
|
||||
STR_GO_TO_NON_STOP_TRANSFER_UNLOAD :Отиди без да спираш на {STATION} (Обмени и не товари)
|
||||
STR_880C_GO_NON_STOP_TO_LOAD :Отиди без да спираш на {STATION} (Товари)
|
||||
STR_GO_TO_NON_STOP_TRANSFER_LOAD :Отиди без да спираш на {STATION} (Обмени и изчакай до пълен товар)
|
||||
STR_GO_TO_TRAIN_DEPOT :Отиди до Влаковото депо на {TOWN}
|
||||
STR_SERVICE_AT_TRAIN_DEPOT :Ремонт в {TOWN} влаково депо
|
||||
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Отиди без да спираш на {TOWN} Влаково депо
|
||||
@@ -2752,7 +2757,7 @@ STR_884E_DECREASE_SERVICING_INTERVAL :{BLACK}Нама
|
||||
STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Информация за превозвания товар
|
||||
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Информация за влаковата композиция
|
||||
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Капацитет на влаковата композиция
|
||||
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Общ капацитет на влака, разбит по типове товар
|
||||
STR_SHOW_TOTAL_CARGO :{BLACK}Общ капацитет на влака, разбит по типове товар
|
||||
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Пътен лист - натиснете върху назначение за маркиране. CTRL + натискане - центрира върху станцията
|
||||
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Прескачане на настоящата заповед и започване на цледващата. CTRL + клик прескача до избраната заповед
|
||||
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Изтриване на избраното назначение
|
||||
@@ -2783,8 +2788,8 @@ STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT
|
||||
STR_8869_CAN_T_REVERSE_DIRECTION :{WHITE}Не може да обърне посоката на влак...
|
||||
STR_886A_RENAME_TRAIN_VEHICLE_TYPE :{WHITE}Преименуване на влак
|
||||
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Не може да се преименува влак...
|
||||
STR_886D_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Изхвърляне на товара при достигане на избраното назначение
|
||||
STR_886F_TRANSFER :{BLACK}Транфер
|
||||
STR_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Изхвърляне на товара при достигане на избраното назначение
|
||||
STR_TRANSFER :{BLACK}Транфер
|
||||
STR_CLEAR_TIME :{BLACK}Изчисти времето
|
||||
STR_RESET_LATENESS :{BLACK}Преправи закъснялата бройка
|
||||
|
||||
@@ -2862,8 +2867,8 @@ STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}Не м
|
||||
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Преименувай МПС-то
|
||||
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Гражданите празнуват . . .{}Първият автобус пристигнал в {STATION}!
|
||||
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Хората празнуват . . .{}Първи камион пристигна на {STATION}!
|
||||
STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Гражданите празнуват . . .{}Първиат пътнически трамвай пристига на {STATION}!
|
||||
STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Гражданите празнуват . . .{}Първиат товарен трамвай пристига на {STATION}!
|
||||
STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM :{BLACK}{BIGFONT}Гражданите празнуват . . .{}Първиат пътнически трамвай пристига на {STATION}!
|
||||
STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM :{BLACK}{BIGFONT}Гражданите празнуват . . .{}Първиат товарен трамвай пристига на {STATION}!
|
||||
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Пътно-транспортно Произшествие!{}Шофьор загина на място при екплозия на МПС след сблъсък с влак
|
||||
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Пътно-транспортно Произшествие!{}{COMMA} загинаха на място при екплозия на МПС след сблъсък с влак
|
||||
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Не може да обърнеш МПС-то...
|
||||
@@ -2872,7 +2877,7 @@ STR_9034_RENAME :{BLACK}Преи
|
||||
STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Преименувай МПС-то
|
||||
STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Преименувай МПС-то
|
||||
STR_9037_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Не може да преименуваш МПС-то...
|
||||
STR_9038_GO_TO_ROADVEH_DEPOT :Отиди в {TOWN} МПС-депото
|
||||
STR_GO_TO_ROADVEH_DEPOT :Отиди в {TOWN} МПС-депото
|
||||
STR_SERVICE_AT_ROADVEH_DEPOT :Ремонт в {TOWN} гараж
|
||||
|
||||
STR_REFIT_ROAD_VEHICLE_TO_CARRY :{BLACK}Преоборудване автомобила за друг товар
|
||||
@@ -3246,6 +3251,12 @@ STR_PURCHASE_INFO_ALL_TYPES :Всички в
|
||||
STR_PURCHASE_INFO_ALL_BUT :Всички освен {GOLD}
|
||||
STR_PURCHASE_INFO_MAX_TE :{BLACK}Макс. теглеща сила: {GOLD}{FORCE}
|
||||
|
||||
########### For showing numbers in widgets
|
||||
|
||||
STR_NUM_1 :{BLACK}{SKIP}{NUM}
|
||||
STR_NUM_2 :{BLACK}{SKIP}{SKIP}{NUM}
|
||||
STR_NUM_3 :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
|
||||
|
||||
########### String for New Landscape Generator
|
||||
|
||||
STR_GENERATE :{WHITE}Генериране
|
||||
@@ -3273,7 +3284,6 @@ STR_HEIGHTMAP_SCALE_WARNING_CAPTION :{WHITE}Маща
|
||||
STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}Прекаленото оразмеряване не е препорачително. Продължаване с генерацията?
|
||||
STR_TOWN_LAYOUT_WARNING_CAPTION :{WHITE}Грацки план предупреждение
|
||||
STR_TOWN_LAYOUT_WARNING_MESSAGE :{YELLOW}Грацкиа план "няма повече пътища" не е препоръчан. Продължи със създаването?
|
||||
STR_SNOW_LINE_HEIGHT_NUM :{NUM}
|
||||
STR_HEIGHTMAP_NAME :{BLACK}Име на височинна карта:
|
||||
STR_HEIGHTMAP_SIZE :{BLACK}Размер: {ORANGE}{NUM} x {NUM}
|
||||
STR_GENERATION_WORLD :{WHITE}Създаване на свят...
|
||||
@@ -3299,7 +3309,6 @@ STR_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Свал
|
||||
STR_FLAT_WORLD_HEIGHT_UP :{BLACK}Повишаване височината на плоска земя
|
||||
STR_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Промяна височината на плоска земя
|
||||
STR_FLAT_WORLD_HEIGHT :{BLACK}Височина на плоска земя:
|
||||
STR_FLAT_WORLD_HEIGHT_NUM :{NUM}
|
||||
|
||||
STR_SMALLMAP_CENTER :{BLACK}Центриране на малката карта на текущата позиция
|
||||
STR_SMALLMAP_INDUSTRY :{TINYFONT}{STRING} ({NUM})
|
||||
|
@@ -15,8 +15,7 @@ STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Es necessita un terreny pla
|
||||
STR_0008_WAITING :{BLACK}Esperant: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{CARGO}
|
||||
STR_000A_EN_ROUTE_FROM :{WHITE}{CARGO}{YELLOW} (en ruta des de
|
||||
STR_000B :{YELLOW}{STATION})
|
||||
STR_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} en ruta des de {STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Accepta: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Accepta: {GOLD}
|
||||
STR_000E :
|
||||
@@ -274,9 +273,9 @@ STR_0130_RENAME :{BLACK}Reanomen
|
||||
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Massa noms definits
|
||||
STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Aquest nom ja es fa servir
|
||||
|
||||
STR_0133_WINDOWS :Windows
|
||||
STR_0134_UNIX :Unix
|
||||
STR_0135_OSX :OS X
|
||||
STR_OSNAME_WINDOWS :Windows
|
||||
STR_OSNAME_UNIX :Unix
|
||||
STR_OSNAME_OSX :OS X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
@@ -287,11 +286,11 @@ STR_013B_OWNED_BY :{WHITE}...propi
|
||||
STR_013C_CARGO :{BLACK}Càrrega
|
||||
STR_013D_INFORMATION :{BLACK}Informació
|
||||
STR_013E_CAPACITIES :{BLACK}Capacitats
|
||||
STR_013E_TOTAL_CARGO :{BLACK}Càrrega Total
|
||||
STR_TOTAL_CARGO :{BLACK}Càrrega Total
|
||||
STR_013F_CAPACITY :{BLACK}Capacitats: {LTBLUE}{CARGO}
|
||||
STR_CAPACITY_MULT :{BLACK}Capacitat: {LTBLUE}{CARGO} (x{NUM})
|
||||
STR_013F_TOTAL_CAPACITY_TEXT :{BLACK}Càrrega total (capacitat) d'aquest tren:
|
||||
STR_013F_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_TEXT :{BLACK}Càrrega total (capacitat) d'aquest tren:
|
||||
STR_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
|
||||
STR_0140_NEW_GAME :{BLACK}Joc Nou
|
||||
STR_0141_LOAD_GAME :{BLACK}Carrega un Joc
|
||||
@@ -299,12 +298,6 @@ STR_SINGLE_PLAYER :{BLACK}Jugador
|
||||
STR_MULTIPLAYER :{BLACK}Multijugador
|
||||
STR_SCENARIO_EDITOR :{BLACK}Editor d'Escenaris
|
||||
|
||||
STR_64 :64
|
||||
STR_128 :128
|
||||
STR_256 :256
|
||||
STR_512 :512
|
||||
STR_1024 :1024
|
||||
STR_2048 :2048
|
||||
STR_MAPSIZE :{BLACK}Tamany del mapa:
|
||||
STR_BY :{BLACK}*
|
||||
STR_0148_GAME_OPTIONS :{BLACK}Opcions del Joc
|
||||
@@ -732,11 +725,12 @@ STR_028D_PLACE_LIGHTHOUSE :{BLACK}Situa un
|
||||
STR_028E_PLACE_TRANSMITTER :{BLACK}Situa un repetidor
|
||||
STR_028F_DEFINE_DESERT_AREA :{BLACK}Defineix àrea de desert.{}Prem i mantingues la tecla CTRL per treure'l
|
||||
STR_CREATE_LAKE :{BLACK}Defineix l'area d'aigua.{}Fa un canal, excepte si CTRL està apretat al nivell del mar, llavors s'inundaran els voltants
|
||||
STR_CREATE_RIVER :{BLACK}Posa rius.
|
||||
STR_0290_DELETE :{BLACK}Esborra
|
||||
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Esborra totalment aquesta població
|
||||
STR_0292_SAVE_SCENARIO :Desa l'escenari
|
||||
STR_0293_LOAD_SCENARIO :Carrega un escenari
|
||||
STR_LOAD_HEIGHTMAP :Carrega Mapa d'alçades
|
||||
STR_MENU_LOAD_HEIGHTMAP :Carrega Mapa d'alçades
|
||||
STR_0294_QUIT_EDITOR :Surt de l'editor
|
||||
STR_0295 :
|
||||
STR_0296_QUIT :Surt
|
||||
@@ -776,9 +770,9 @@ STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Desa els
|
||||
|
||||
STR_CHECKMARK :{CHECKMARK}
|
||||
############ range for menu starts
|
||||
STR_02C3_GAME_OPTIONS :Opcions del Joc
|
||||
STR_02C5_DIFFICULTY_SETTINGS :Paràmetres de dificultat
|
||||
STR_02C7_CONFIG_PATCHES :Configura pedaços
|
||||
STR_02C4_GAME_OPTIONS :Opcions del Joc
|
||||
STR_02C6_DIFFICULTY_SETTINGS :Paràmetres de dificultat
|
||||
STR_MENU_CONFIG_PATCHES :Configura pedaços
|
||||
STR_NEWGRF_SETTINGS :Extensions NewGRF
|
||||
STR_TRANSPARENCY_OPTIONS :Opcions de transparència
|
||||
STR_GAMEOPTMENU_0A :
|
||||
@@ -878,8 +872,8 @@ STR_SAVING_GAME :{RED}* * DESA
|
||||
STR_SAVE_STILL_IN_PROGRESS :{WHITE}S'està desant el joc,{}espera a que acabi l'operació!
|
||||
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Selecciona el programa 'Ezy Street style music'
|
||||
|
||||
STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
STR_6 :{BLACK}6
|
||||
STR_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Anglès
|
||||
@@ -1055,7 +1049,6 @@ STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Permet
|
||||
STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Permet comprar els drets del transport en exclusiva: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Permet enviar diners a altres companyies: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Estacions no uniformes: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Nova cerca de rutes global (NPF, anul·la NTP): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Multiplicador de pes per contenidor per simular trens pesats: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Permet situar parades en carreteres que són propietat del poble: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Permet construir estacions annexes: {ORANGE}{STRING}
|
||||
@@ -1210,9 +1203,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Canvia el valor de l'adjustament
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alguns o tots els intervals de manteniment següents són incompatibles amb el valor triat! 5-90% i 30-800 dies són els vàlids
|
||||
STR_CONFIG_PATCHES_YAPF_SHIPS :{LTBLUE}Utilitza YAPF pels vaixells: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_YAPF_ROAD :{LTBLUE}Utilitza YAPF pels automòvils: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_YAPF_RAIL :{LTBLUE}Utilitza YAPF pels trens: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Cerca de rutes per trens: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(No recomanat)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Recomanat)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Cerca de rutes per vehicles: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(No recomanat)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recomanat)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Cerca de rutes per vaixells: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Recomanat)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Not recomanat)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :paisatge temperat
|
||||
STR_SUB_ARCTIC_LANDSCAPE :paisatge subàrtic
|
||||
@@ -1654,42 +1657,42 @@ STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Primer h
|
||||
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}S'ha de treure la carretera primer
|
||||
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Obres en progrés
|
||||
STR_1802_ROAD_CONSTRUCTION :{WHITE}Construcció de Carreteres
|
||||
STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Construcció de Tramvies
|
||||
STR_WHITE_TRAMWAY_CONSTRUCTION :{WHITE}Construcció de Tramvies
|
||||
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Selecciona un Pont per Carretera
|
||||
STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... les carreteres de sentit únic no poden tenir encreuaments
|
||||
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Aquí no es pot construir una carretera...
|
||||
STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}No puc construir la via de tramvia aquí...
|
||||
STR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}No puc construir la via de tramvia aquí...
|
||||
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Aquí no es pot treure una carretera...
|
||||
STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}No puc treure la via de tramvia d'aquí...
|
||||
STR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}No puc treure la via de tramvia d'aquí...
|
||||
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Cotxeres
|
||||
STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Orientació de les cotxeres de tramvies
|
||||
STR_TRAM_DEPOT_ORIENTATION :{WHITE}Orientació de les cotxeres de tramvies
|
||||
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Aquí no es pot construir una cotxera...
|
||||
STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Aquí no puc construir les cotxeres de tramvies...
|
||||
STR_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Aquí no puc construir les cotxeres de tramvies...
|
||||
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}No es pot construir una parada d'autobús...
|
||||
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}No es pot construir estació de mercaderies...
|
||||
STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}No puc construir l'estació de tramvies de passatgers
|
||||
STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}No puc construir l'estació de tramvies de càrrega
|
||||
STR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}No puc construir l'estació de tramvies de passatgers
|
||||
STR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}No puc construir l'estació de tramvies de càrrega
|
||||
STR_180A_ROAD_CONSTRUCTION :Construcció de Carreteres
|
||||
STR_180A_TRAMWAY_CONSTRUCTION :Construcció de Tramvies
|
||||
STR_TRAMWAY_CONSTRUCTION :Construcció de Tramvies
|
||||
STR_180B_BUILD_ROAD_SECTION :{BLACK}Construeix una secció de carretera
|
||||
STR_BUILD_AUTOROAD_TIP :{BLACK}Construeix secció de carretera utilitzant el mode Autocarretera
|
||||
STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Construeix una secció de via de tramvia
|
||||
STR_BUILD_TRAMWAY_SECTION :{BLACK}Construeix una secció de via de tramvia
|
||||
STR_BUILD_AUTOTRAM_TIP :{BLACK}Construeix secció de tramvia utilitzant el mode Autotramvia
|
||||
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Construeix una cotxera (per construir i mantenir vehicles)
|
||||
STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construeix cotxeres de tramvies (per construir i revisar tramvies)
|
||||
STR_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Construeix cotxeres de tramvies (per construir i revisar tramvies)
|
||||
STR_180D_BUILD_BUS_STATION :{BLACK}Constueix una parada d'autobús
|
||||
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Construeix un moll de càrrega
|
||||
STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construeix una estació de tramvies de passatgers
|
||||
STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Construeix una estació de tramvies de mercaderies
|
||||
STR_BUILD_PASSENGER_TRAM_STATION :{BLACK}Construeix una estació de tramvies de passatgers
|
||||
STR_BUILD_CARGO_TRAM_STATION :{BLACK}Construeix una estació de tramvies de mercaderies
|
||||
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Construeix un pont per carretera
|
||||
STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Construeix pont per tramvies
|
||||
STR_BUILD_TRAMWAY_BRIDGE :{BLACK}Construeix pont per tramvies
|
||||
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Construeix un túnel per carretera
|
||||
STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Construeix túnel per tramvies
|
||||
STR_BUILD_TRAMWAY_TUNNEL :{BLACK}Construeix túnel per tramvies
|
||||
STR_TOGGLE_ONE_WAY_ROAD :{BLACK}Activa/Desactiva les carreteres d'un sentit
|
||||
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Intercanvia funció construeix/treu per la construcció de carreteres
|
||||
STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Canvia construeix/treu de la construcció de vies de tramvia
|
||||
STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Canvia construeix/treu de la construcció de vies de tramvia
|
||||
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Selecciona la orientació de les Cotxeres
|
||||
STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Selecciona l'orientació de les cotxeres de tramvies
|
||||
STR_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Selecciona l'orientació de les cotxeres de tramvies
|
||||
STR_1814_ROAD :Carretera
|
||||
STR_1815_ROAD_WITH_STREETLIGHTS :Carretera amb fanals
|
||||
STR_1816_TREE_LINED_ROAD :Carretera de tres carrils
|
||||
@@ -1832,8 +1835,8 @@ STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD :{WHITE}Massa a
|
||||
STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Fusiona més d'una estació/àrea de càrrega existent
|
||||
STR_3007_TOO_MANY_STATIONS_LOADING :{WHITE}Hi ha massa estacions/àrees de càrrega en aquesta població
|
||||
STR_3008_TOO_MANY_STATIONS_LOADING :{WHITE}Massa estacions/àrees de càrrega
|
||||
STR_3008A_TOO_MANY_BUS_STOPS :{WHITE}Massa parades d'autobús
|
||||
STR_3008B_TOO_MANY_TRUCK_STOPS :{WHITE}Masses estacions de càrrega
|
||||
STR_TOO_MANY_BUS_STOPS :{WHITE}Massa parades d'autobús
|
||||
STR_TOO_MANY_TRUCK_STOPS :{WHITE}Masses estacions de càrrega
|
||||
STR_3009_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Massa a prop d'una altra estació/àrea de càrrega
|
||||
STR_300A_0 :{WHITE}{STATION} {STATIONFEATURES}
|
||||
STR_300B_MUST_DEMOLISH_RAILROAD :{WHITE}Primer has d'enderrocar l'estació de tren
|
||||
@@ -1864,12 +1867,12 @@ STR_3040_NOW_ACCEPTS :{WHITE}{STATION
|
||||
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} ara accepta {STRING} i {STRING}
|
||||
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Parada d'autobús
|
||||
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Estació de Mercaderies
|
||||
STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Orientació estació passatgers
|
||||
STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Orientació estació mercaderies
|
||||
STR_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Orientació estació passatgers
|
||||
STR_CARGO_TRAM_STATION_ORIENT :{WHITE}Orientació estació mercaderies
|
||||
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Primer has d'enderrocar la parada d'autobús
|
||||
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Primer has d'enderrocar l'estació de mercaderies
|
||||
STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Primer has de demolir l'estació de tramvies de passatgers
|
||||
STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Primer has de demolir l'estació de tramvies de mercaderies
|
||||
STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Primer has de demolir l'estació de tramvies de passatgers
|
||||
STR_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Primer has de demolir l'estació de tramvies de mercaderies
|
||||
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Estacions/Parades
|
||||
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
|
||||
STR_304A_NONE :{YELLOW}- Cap -
|
||||
@@ -1881,8 +1884,8 @@ STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}Seleccio
|
||||
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Selecciona la mida de les andanes de l'estació de tren
|
||||
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Selecciona l'orientació de la parada d'autobús
|
||||
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Selecciona l'orientació del moll de càrrega de camions
|
||||
STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Selecciona l'orientació de l'estació de tramvies de passatgers
|
||||
STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Selecciona l'orientació de l'estació de tramvies de mercaderies
|
||||
STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Selecciona l'orientació de l'estació de tramvies de passatgers
|
||||
STR_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Selecciona l'orientació de l'estació de tramvies de mercaderies
|
||||
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Centra la pantalla principal al lloc de l'estació
|
||||
STR_3054_SHOW_STATION_RATINGS :{BLACK}Mostra els ratis de l'estació
|
||||
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Canvia el nom de l'estació
|
||||
@@ -1904,7 +1907,7 @@ STR_3068_DOCK :{WHITE}Moll
|
||||
STR_3069_BUOY :Boia
|
||||
STR_306A_BUOY_IN_THE_WAY :{WHITE}...boia en el camí
|
||||
STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...estació massa extesa
|
||||
STR_306D_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...estacions no uniformes desactivades
|
||||
STR_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...estacions no uniformes desactivades
|
||||
STR_USE_CTRL_TO_SELECT_MORE :{BLACK}Mantin apretat CTRL per a seleccionar més de un item
|
||||
|
||||
STR_UNDEFINED :(cadena sense definir)
|
||||
@@ -1945,7 +1948,7 @@ STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Desa el
|
||||
STR_400E_SELECT_NEW_GAME_TYPE :{WHITE}Selecciona el Nou Tipus de Joc
|
||||
STR_400F_SELECT_SCENARIO_GREEN_PRE :{BLACK}Selecciona l'escenari (verd), joc pre-programat (blau), o el nou joc aleatori
|
||||
STR_4010_GENERATE_RANDOM_NEW_GAME :Genera un nou joc aleatori
|
||||
STR_4011_LOAD_HEIGHTMAP :{WHITE}Carrega un Mapa d'alçades
|
||||
STR_LOAD_HEIGHTMAP :{WHITE}Carrega un Mapa d'alçades
|
||||
|
||||
##id 0x4800
|
||||
STR_4800_IN_THE_WAY :{WHITE}{STRING} en el camí
|
||||
@@ -2149,10 +2152,10 @@ STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Quantit
|
||||
STR_6813_ECONOMY :{LTBLUE}Economia: {ORANGE}{STRING}
|
||||
STR_6814_TRAIN_REVERSING :{LTBLUE}Canvi de sentit dels trens: {ORANGE}{STRING}
|
||||
STR_6815_DISASTERS :{LTBLUE}Desastres: {ORANGE}{STRING}
|
||||
STR_16816_CITY_APPROVAL :{LTBLUE}Actitud de l'Ajuntament sobre reestructuracions d'àrees: {ORANGE}{STRING}
|
||||
STR_CITY_APPROVAL :{LTBLUE}Actitud de l'Ajuntament sobre reestructuracions d'àrees: {ORANGE}{STRING}
|
||||
############ range for difficulty settings ends
|
||||
|
||||
STR_26816_NONE :Cap
|
||||
STR_NONE :Cap
|
||||
STR_NUM_VERY_LOW :Molt baix
|
||||
STR_6816_LOW :Baix
|
||||
STR_6817_NORMAL :Normal
|
||||
@@ -2190,9 +2193,9 @@ STR_6835_AT_END_OF_LINE_ONLY :Només al final
|
||||
STR_6836_OFF :Desactivat
|
||||
STR_6837_ON :Activat
|
||||
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Veure la taula de les majors puntuacions
|
||||
STR_6839_PERMISSIVE :Permisiu
|
||||
STR_683A_TOLERANT :Tolerant
|
||||
STR_683B_HOSTILE :Hostil
|
||||
STR_PERMISSIVE :Permisiu
|
||||
STR_TOLERANT :Tolerant
|
||||
STR_HOSTILE :Hostil
|
||||
|
||||
##id 0x7000
|
||||
STR_7000 :
|
||||
@@ -2329,7 +2332,7 @@ STR_707B_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}No pots
|
||||
STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}No pots vendre el 25% de participació en aquesta empresa...
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA}% propietat de {COMPANY})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{COMPANY} ha estat absorbida per {COMPANY}!
|
||||
STR_7080_PROTECTED :{WHITE}Aquesta empresa ja no negocia participacions...
|
||||
STR_PROTECTED :{WHITE}Aquesta empresa ja no negocia participacions...
|
||||
|
||||
STR_LIVERY_DEFAULT :Decoració estandard
|
||||
STR_LIVERY_STEAM :Motor de vapor
|
||||
@@ -2342,6 +2345,8 @@ STR_LIVERY_EMU :EMU
|
||||
STR_LIVERY_PASSENGER_WAGON_STEAM :Vagó de passatgers (Vapor)
|
||||
STR_LIVERY_PASSENGER_WAGON_DIESEL :Vagó de passatgers (Diesel)
|
||||
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Vagó de passatgers (Elèctric)
|
||||
STR_LIVERY_PASSENGER_WAGON_MONORAIL :Vagó de Passatgers (Monorail)
|
||||
STR_LIVERY_PASSENGER_WAGON_MAGLEV :Vagó de Passatgers (Maglev)
|
||||
STR_LIVERY_FREIGHT_WAGON :Vagó de càrrega
|
||||
STR_LIVERY_BUS :Autobús
|
||||
STR_LIVERY_TRUCK :Camió
|
||||
@@ -2636,17 +2641,17 @@ STR_8803_TRAIN_IN_THE_WAY :{WHITE}Tren en
|
||||
STR_8804 :{SETX 10}{COMMA}: {STRING} {STRING}
|
||||
STR_8805 :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
|
||||
STR_8806_GO_TO :Ves a {STATION}
|
||||
STR_8807_GO_TO_TRANSFER :Ves a {STATION} (Transfereix i agafa càrrega)
|
||||
STR_8808_GO_TO_UNLOAD :Ves a {STATION} (Descarrega)
|
||||
STR_8809_GO_TO_TRANSFER_UNLOAD :Ves a {STATION} (Transfereix i deixa buit)
|
||||
STR_880A_GO_TO_LOAD :Ves a {STATION} (Carrega)
|
||||
STR_880B_GO_TO_TRANSFER_LOAD :Ves a {STATION} (Transfereix i espera càrrega completa)
|
||||
STR_880C_GO_NON_STOP_TO :Ves sense parar a {STATION}
|
||||
STR_880D_GO_TO_NON_STOP_TRANSFER :Ves sense parar a {STATION} (Transfereix i agafa càrrega)
|
||||
STR_880E_GO_NON_STOP_TO_UNLOAD :Ves sense parar a {STATION} (Descarrega)
|
||||
STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD :Ves sense parar a {STATION} (Transfereix i deixa buit)
|
||||
STR_8810_GO_NON_STOP_TO_LOAD :Ves sense parar a {STATION} (Carrega)
|
||||
STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD :Ves sense parar a {STATION} (Transfereix i espera càrrega completa)
|
||||
STR_GO_TO_TRANSFER :Ves a {STATION} (Transfereix i agafa càrrega)
|
||||
STR_8807_GO_TO_UNLOAD :Ves a {STATION} (Descarrega)
|
||||
STR_GO_TO_TRANSFER_UNLOAD :Ves a {STATION} (Transfereix i deixa buit)
|
||||
STR_8808_GO_TO_LOAD :Ves a {STATION} (Carrega)
|
||||
STR_GO_TO_TRANSFER_LOAD :Ves a {STATION} (Transfereix i espera càrrega completa)
|
||||
STR_880A_GO_NON_STOP_TO :Ves sense parar a {STATION}
|
||||
STR_GO_TO_NON_STOP_TRANSFER :Ves sense parar a {STATION} (Transfereix i agafa càrrega)
|
||||
STR_880B_GO_NON_STOP_TO_UNLOAD :Ves sense parar a {STATION} (Descarrega)
|
||||
STR_GO_TO_NON_STOP_TRANSFER_UNLOAD :Ves sense parar a {STATION} (Transfereix i deixa buit)
|
||||
STR_880C_GO_NON_STOP_TO_LOAD :Ves sense parar a {STATION} (Carrega)
|
||||
STR_GO_TO_NON_STOP_TRANSFER_LOAD :Ves sense parar a {STATION} (Transfereix i espera càrrega completa)
|
||||
STR_GO_TO_TRAIN_DEPOT :Ves al Diposit {TOWN} de Tren
|
||||
STR_SERVICE_AT_TRAIN_DEPOT :Manteniment a cotxeres de {TOWN}.
|
||||
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Ves sense parar a les cotxeres de {TOWN}.
|
||||
@@ -2750,7 +2755,7 @@ STR_884E_DECREASE_SERVICING_INTERVAL :{BLACK}Disminue
|
||||
STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Mostra els detalls de càrrega transportada
|
||||
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Mostra els detalls d'elements del tren
|
||||
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Mostra les capacitats de cada element
|
||||
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Mostra la capacitat total del tren, separat per tipus de càrrega
|
||||
STR_SHOW_TOTAL_CARGO :{BLACK}Mostra la capacitat total del tren, separat per tipus de càrrega
|
||||
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Llista d'ordres - clica en una per seleccionar-la
|
||||
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Salta l'ordre actual, i comença la següent. CTRL + clic salta l'ordre seleccionada
|
||||
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Esborra l'ordre seleccionada
|
||||
@@ -2781,8 +2786,8 @@ STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT
|
||||
STR_8869_CAN_T_REVERSE_DIRECTION :{WHITE}No es pot invertir la direcció del tren...
|
||||
STR_886A_RENAME_TRAIN_VEHICLE_TYPE :{WHITE}Reanomena el tipus d'element del tren
|
||||
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}No es pot reanomenar el tipus d'element del tren...
|
||||
STR_886D_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Fer que l'ordre marcada forci al vehicle a volcar la càrrega
|
||||
STR_886F_TRANSFER :{BLACK}Transf.
|
||||
STR_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Fer que l'ordre marcada forci al vehicle a volcar la càrrega
|
||||
STR_TRANSFER :{BLACK}Transf.
|
||||
STR_CLEAR_TIME :{BLACK}Esborra Temps
|
||||
STR_RESET_LATENESS :{BLACK}Reset. control de retràs
|
||||
|
||||
@@ -2860,8 +2865,8 @@ STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}No es po
|
||||
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Anomena automòbil
|
||||
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Celebració popular . . .{}Primer autobús arriba a {STATION}!
|
||||
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Celebració popular . . .{}Primer camió arriba a {STATION}!
|
||||
STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Els ciutadans celebren . . .{}El primer tramvia de passatgers arriba a {STATION}!
|
||||
STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Els ciutadans celebren . . .{}El primer tramvia de mercaderies arriba a {STATION}!
|
||||
STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM :{BLACK}{BIGFONT}Els ciutadans celebren . . .{}El primer tramvia de passatgers arriba a {STATION}!
|
||||
STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM :{BLACK}{BIGFONT}Els ciutadans celebren . . .{}El primer tramvia de mercaderies arriba a {STATION}!
|
||||
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Accident de Vehicle!{}El conductor mor en una bola de foc després de la colisió amb un tren
|
||||
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Accident de Vehicle!{}{COMMA} moren en una bola de foc després d'una colisió amb un tren
|
||||
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}No es pot fer que el vehicle torni...
|
||||
@@ -2870,7 +2875,7 @@ STR_9034_RENAME :{BLACK}Reanomen
|
||||
STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Reanomena tipus d'automòbil
|
||||
STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Reanomena tipus d'automòbil
|
||||
STR_9037_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}No es pot reanomenar tipus d'automòbil
|
||||
STR_9038_GO_TO_ROADVEH_DEPOT :Ves a la cotxera de {TOWN}.
|
||||
STR_GO_TO_ROADVEH_DEPOT :Ves a la cotxera de {TOWN}.
|
||||
STR_SERVICE_AT_ROADVEH_DEPOT :Manteniment a la cotxera de {TOWN}.
|
||||
|
||||
STR_REFIT_ROAD_VEHICLE_TO_CARRY :{BLACK}Remodela vehicle de carretera per dur un tipus diferent de càrrega
|
||||
@@ -3244,6 +3249,12 @@ STR_PURCHASE_INFO_ALL_TYPES :Totes les càrr
|
||||
STR_PURCHASE_INFO_ALL_BUT :Tots menys {GOLD}
|
||||
STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Esforç de Tracció: {GOLD}{FORCE}
|
||||
|
||||
########### For showing numbers in widgets
|
||||
|
||||
STR_NUM_1 :{BLACK}{SKIP}{NUM}
|
||||
STR_NUM_2 :{BLACK}{SKIP}{SKIP}{NUM}
|
||||
STR_NUM_3 :{BLACK}{SKIP}{SKIP}{SKIP}{NUM}
|
||||
|
||||
########### String for New Landscape Generator
|
||||
|
||||
STR_GENERATE :{WHITE}Genera
|
||||
@@ -3271,7 +3282,6 @@ STR_HEIGHTMAP_SCALE_WARNING_CAPTION :{WHITE}Alerta d
|
||||
STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}No es recomana redimensionar massa el mapa d'origen. Vols continuar amb la generació?
|
||||
STR_TOWN_LAYOUT_WARNING_CAPTION :{WHITE}Alerta de format de poble
|
||||
STR_TOWN_LAYOUT_WARNING_MESSAGE :{YELLOW}El format de poble "no més carreteres" no està recomanat. Continuar amb la generació?
|
||||
STR_SNOW_LINE_HEIGHT_NUM :{NUM}
|
||||
STR_HEIGHTMAP_NAME :{BLACK}Nom del mapa d'alçades:
|
||||
STR_HEIGHTMAP_SIZE :{BLACK}Mida: {ORANGE}{NUM} x {NUM}
|
||||
STR_GENERATION_WORLD :{WHITE}Generant món...
|
||||
@@ -3297,7 +3307,6 @@ STR_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Mou l'al
|
||||
STR_FLAT_WORLD_HEIGHT_UP :{BLACK}Mou l'alçada del terreny pla un pas amunt
|
||||
STR_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Canvia alçada del terreny pla
|
||||
STR_FLAT_WORLD_HEIGHT :{BLACK}Alçada del terreny pla:
|
||||
STR_FLAT_WORLD_HEIGHT_NUM :{NUM}
|
||||
|
||||
STR_SMALLMAP_CENTER :{BLACK}Centrar el mapa petit a la posició actual
|
||||
STR_SMALLMAP_INDUSTRY :{TINYFONT}{STRING} ({NUM})
|
||||
@@ -3344,6 +3353,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Activa/D
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Activa/Desactiva transparència dels edificis com ara estacions, cotxeres, punts de trobada i catenàries
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Activa/Desactiva transparència dels ponts
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Activa/Desactiva transparència de les estructures com ara fars i antenes
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Commuta la transparència de la catenària. CTRL+clic per bloquejar.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Activa/Desactiva la transparència pels indicadors de carregament
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
|
@@ -17,14 +17,12 @@ STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Potrebna ravna površina
|
||||
STR_0008_WAITING :{BLACK}Čekanje: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{CARGO}
|
||||
STR_000A_EN_ROUTE_FROM :{WHITE}{CARGO}{YELLOW} (na putu od
|
||||
STR_000B :{YELLOW}{STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Prihvaća: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Prihvaća: {GOLD}
|
||||
STR_000E :
|
||||
STR_000F_PASSENGERS :putnici
|
||||
STR_0010_COAL :ugljen
|
||||
STR_0011_MAIL :pošta
|
||||
STR_000F_PASSENGERS :Putnici
|
||||
STR_0010_COAL :Ugljen
|
||||
STR_0011_MAIL :Pošta
|
||||
STR_0012_OIL :nafta
|
||||
STR_0013_LIVESTOCK :domaće životinje
|
||||
STR_0014_GOODS :robe
|
||||
@@ -276,9 +274,9 @@ STR_0130_RENAME :{BLACK}Preimenu
|
||||
STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Previše definiranih imena
|
||||
STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Odabrano ime već se koristi
|
||||
|
||||
STR_0133_WINDOWS :Windows
|
||||
STR_0134_UNIX :Unix
|
||||
STR_0135_OSX :OS X
|
||||
STR_OSNAME_WINDOWS :Windows
|
||||
STR_OSNAME_UNIX :Unix
|
||||
STR_OSNAME_OSX :OS X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
STR_OSNAME_AMIGAOS :AmigaOS
|
||||
@@ -289,11 +287,11 @@ STR_013B_OWNED_BY :{WHITE}...u vla
|
||||
STR_013C_CARGO :{BLACK}Teret
|
||||
STR_013D_INFORMATION :{BLACK}Informacije
|
||||
STR_013E_CAPACITIES :{BLACK}Nosivosti
|
||||
STR_013E_TOTAL_CARGO :{BLACK}Ukupni teret
|
||||
STR_TOTAL_CARGO :{BLACK}Ukupni teret
|
||||
STR_013F_CAPACITY :{BLACK}Nosivost: {LTBLUE}{CARGO}
|
||||
STR_CAPACITY_MULT :{BLACK}Nosivost: {LTBLUE}{CARGO} (x{NUM})
|
||||
STR_013F_TOTAL_CAPACITY_TEXT :{BLACK}Ukupna nosivost tereta ovog vlaka:
|
||||
STR_013F_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_TEXT :{BLACK}Ukupna nosivost tereta ovog vlaka:
|
||||
STR_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
|
||||
STR_0140_NEW_GAME :{BLACK}Nova igra
|
||||
STR_0141_LOAD_GAME :{BLACK}Učitaj igru
|
||||
@@ -301,12 +299,6 @@ STR_SINGLE_PLAYER :{BLACK}Jedan ig
|
||||
STR_MULTIPLAYER :{BLACK}Više igrača
|
||||
STR_SCENARIO_EDITOR :{BLACK}Editor scenarija
|
||||
|
||||
STR_64 :64
|
||||
STR_128 :128
|
||||
STR_256 :256
|
||||
STR_512 :512
|
||||
STR_1024 :1024
|
||||
STR_2048 :2048
|
||||
STR_MAPSIZE :{BLACK}Veličina karte:
|
||||
STR_BY :{BLACK}*
|
||||
STR_0148_GAME_OPTIONS :{BLACK}Postavke igre
|
||||
@@ -738,7 +730,7 @@ STR_0290_DELETE :{BLACK}Obriši
|
||||
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Obriši ovaj grad u cjelosti
|
||||
STR_0292_SAVE_SCENARIO :Spremi scenarij
|
||||
STR_0293_LOAD_SCENARIO :Učitaj secenarij
|
||||
STR_LOAD_HEIGHTMAP :Učitaj visinsku kartu
|
||||
STR_MENU_LOAD_HEIGHTMAP :Učitaj visinsku kartu
|
||||
STR_0294_QUIT_EDITOR :Završi s uređivanjem
|
||||
STR_0295 :
|
||||
STR_0296_QUIT :Završi
|
||||
@@ -778,9 +770,9 @@ STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Spremi p
|
||||
|
||||
STR_CHECKMARK :{CHECKMARK}
|
||||
############ range for menu starts
|
||||
STR_02C3_GAME_OPTIONS :Postavke igre
|
||||
STR_02C5_DIFFICULTY_SETTINGS :Postavke težine
|
||||
STR_02C7_CONFIG_PATCHES :Konfiguriraj zakrpe
|
||||
STR_02C4_GAME_OPTIONS :Postavke igre
|
||||
STR_02C6_DIFFICULTY_SETTINGS :Postavke težine
|
||||
STR_MENU_CONFIG_PATCHES :Konfiguriraj zakrpe
|
||||
STR_NEWGRF_SETTINGS :Postavke NewGRF-a
|
||||
STR_TRANSPARENCY_OPTIONS :Postavke prozirnosti
|
||||
STR_GAMEOPTMENU_0A :
|
||||
@@ -880,8 +872,8 @@ STR_SAVING_GAME :{RED}* * SPRE
|
||||
STR_SAVE_STILL_IN_PROGRESS :{WHITE}Spremanje još u tijeku,{}molimo pričekajte dok se ne završi!
|
||||
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Odaberi glazbeni program 'Ezy Street style'
|
||||
|
||||
STR_0335_6 :{BLACK}6
|
||||
STR_0336_7 :{BLACK}7
|
||||
STR_6 :{BLACK}6
|
||||
STR_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Engleski (original)
|
||||
@@ -1057,7 +1049,6 @@ STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Dopusti
|
||||
STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Dopusti kupovinu ekskluzivnih prijevoznih prava: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Dopusti slanje novca drugim tvrtkama: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Neujednačene stanice: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Novo globalno pronalaženje puteva (NPF, isključuje NTP): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Težinski množitelj za teret za simulaciju teških vlakova: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Dopusti prolazne stanice na cestama u vlasti grada: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Dopusti izgradnju pridruženih stanica: {ORANGE}{STRING}
|
||||
@@ -1212,9 +1203,6 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Promijeni vrijednost postavke
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Neki ili svi od zadanih servisnih intervala ispod nisu kompatibilni s odabranim postavkama! Valjane vrijednosti su 5-90% ili 30-800 dana.
|
||||
STR_CONFIG_PATCHES_YAPF_SHIPS :{LTBLUE}Koristi YAPF za brodove: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_YAPF_ROAD :{LTBLUE}Koristi YAPF za cestovna vozila: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_YAPF_RAIL :{LTBLUE}Koristi YAPF za vlakove: {ORANGE}{STRING}
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :Blagi krajolik
|
||||
STR_SUB_ARCTIC_LANDSCAPE :Pod-arktički krajolik
|
||||
@@ -1656,42 +1644,42 @@ STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Najprije
|
||||
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Najprije moraš ukloniti cestu
|
||||
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Cestovni radovi u tijeku
|
||||
STR_1802_ROAD_CONSTRUCTION :{WHITE}Izgradnja ceste
|
||||
STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Izgradnja tramvaja
|
||||
STR_WHITE_TRAMWAY_CONSTRUCTION :{WHITE}Izgradnja tramvaja
|
||||
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Odaberi cestovni most
|
||||
STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}...jednosmjerne ceste ne mogu imati raskrižja
|
||||
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Ovdje nije moguće izgraditi cestu...
|
||||
STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Ovdje nije moguće izgraditi tramvaj...
|
||||
STR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Ovdje nije moguće izgraditi tramvaj...
|
||||
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Nije moguće ukloniti cestu odavdje...
|
||||
STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Nije moguće ukloniti tramvaj odavdje...
|
||||
STR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Nije moguće ukloniti tramvaj odavdje...
|
||||
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Smjer cestovnog spremišta
|
||||
STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Smjer tramvajskog spremišta
|
||||
STR_TRAM_DEPOT_ORIENTATION :{WHITE}Smjer tramvajskog spremišta
|
||||
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Ovdje nije moguće izgraditi spremište cestovnih vozila...
|
||||
STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Ovdje nije moguće izgraditi tramvajsko spremište...
|
||||
STR_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Ovdje nije moguće izgraditi tramvajsko spremište...
|
||||
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Nije moguće izgraditi autobusnu stanicu...
|
||||
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nije moguće izgraditi kamionski terminal...
|
||||
STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nije moguće izgraditi tramvajsku stanicu za putnike...
|
||||
STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nije moguće izgraditi teretnu tramvajsku stanicu...
|
||||
STR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nije moguće izgraditi tramvajsku stanicu za putnike...
|
||||
STR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nije moguće izgraditi teretnu tramvajsku stanicu...
|
||||
STR_180A_ROAD_CONSTRUCTION :Izgradnja ceste
|
||||
STR_180A_TRAMWAY_CONSTRUCTION :Izgradnja tramvaja
|
||||
STR_TRAMWAY_CONSTRUCTION :Izgradnja tramvaja
|
||||
STR_180B_BUILD_ROAD_SECTION :{BLACK}Izgradi dio ceste
|
||||
STR_BUILD_AUTOROAD_TIP :{BLACK}Izgradi cestu koristeći Autoroad način gradnje
|
||||
STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Izgradi tramvajski dio
|
||||
STR_BUILD_TRAMWAY_SECTION :{BLACK}Izgradi tramvajski dio
|
||||
STR_BUILD_AUTOTRAM_TIP :{BLACK}Izgradi tramvajsku prugu koristeći Autotram način gradnje
|
||||
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Izgradi spremište cestovnih vozila (za izgradnju i servisiranje vozila)
|
||||
STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Izgradi spremište tramvajskih vozila (za izgradnju i servisiranje vozila)
|
||||
STR_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Izgradi spremište tramvajskih vozila (za izgradnju i servisiranje vozila)
|
||||
STR_180D_BUILD_BUS_STATION :{BLACK}Izgradi autobusnu stanicu
|
||||
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Izgradi pretovarni kamionski terminal
|
||||
STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Izgradi putničku tramvajsku stanicu
|
||||
STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Izgradi teretnu tramvajsku stanicu
|
||||
STR_BUILD_PASSENGER_TRAM_STATION :{BLACK}Izgradi putničku tramvajsku stanicu
|
||||
STR_BUILD_CARGO_TRAM_STATION :{BLACK}Izgradi teretnu tramvajsku stanicu
|
||||
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Izgradi cestovni most
|
||||
STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Izgradi tramvajski most
|
||||
STR_BUILD_TRAMWAY_BRIDGE :{BLACK}Izgradi tramvajski most
|
||||
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Izgradi cestovni tunel
|
||||
STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Izgradi tramvajski tunel
|
||||
STR_BUILD_TRAMWAY_TUNNEL :{BLACK}Izgradi tramvajski tunel
|
||||
STR_TOGGLE_ONE_WAY_ROAD :{BLACK}Aktiviraj/deaktiviraj jednosmjerne ceste
|
||||
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Aktiviraj izgradnju/uklanjanje ceste
|
||||
STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Aktiviraj izgradnju/brisanje za izgradnju tramvaja
|
||||
STR_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Aktiviraj izgradnju/brisanje za izgradnju tramvaja
|
||||
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Odaberi smjer spremišta cestovnih vozila
|
||||
STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Odaberi smjer tramvajskog spremišta
|
||||
STR_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Odaberi smjer tramvajskog spremišta
|
||||
STR_1814_ROAD :Cesta
|
||||
STR_1815_ROAD_WITH_STREETLIGHTS :Cesta sa semaforima
|
||||
STR_1816_TREE_LINED_ROAD :Cesta s tri trake
|
||||
@@ -1834,8 +1822,8 @@ STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD :{WHITE}Preblizu
|
||||
STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Spaja više od jedne postojeće stanice/terminala
|
||||
STR_3007_TOO_MANY_STATIONS_LOADING :{WHITE}U ovom gradu ima previše stanica/terminala
|
||||
STR_3008_TOO_MANY_STATIONS_LOADING :{WHITE}Previše stanica/terminala
|
||||
STR_3008A_TOO_MANY_BUS_STOPS :{WHITE}Previše autobusnih stanica
|
||||
STR_3008B_TOO_MANY_TRUCK_STOPS :{WHITE}Previše kamionskih stanica
|
||||
STR_TOO_MANY_BUS_STOPS :{WHITE}Previše autobusnih stanica
|
||||
STR_TOO_MANY_TRUCK_STOPS :{WHITE}Previše kamionskih stanica
|
||||
STR_3009_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Preblizu drugoj stanici/terminalu
|
||||
STR_300A_0 :{WHITE}{STATION} {STATIONFEATURES}
|
||||
STR_300B_MUST_DEMOLISH_RAILROAD :{WHITE}Najprije moraš srušiti željezničku stanicu
|
||||
@@ -1866,12 +1854,12 @@ STR_3040_NOW_ACCEPTS :{WHITE}{STATION
|
||||
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} od sada prihvaća {STRING} i {STRING}
|
||||
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Smjer autobusne stanice
|
||||
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Smjer kamionskog terminala
|
||||
STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Orijentacija putničkog tramvaja
|
||||
STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Orijentacija teretnog tramvaja
|
||||
STR_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Orijentacija putničkog tramvaja
|
||||
STR_CARGO_TRAM_STATION_ORIENT :{WHITE}Orijentacija teretnog tramvaja
|
||||
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Najprije moraš srušiti autobusnu stanicu
|
||||
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Najprije moraš srušiti kamionski terminal
|
||||
STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Najprije moraš srušiti putničku tramvajsku stanicu
|
||||
STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Najprije moraš srušiti teretnu tramvajsku stanicu
|
||||
STR_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Najprije moraš srušiti putničku tramvajsku stanicu
|
||||
STR_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Najprije moraš srušiti teretnu tramvajsku stanicu
|
||||
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} stanic{P a e a}
|
||||
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
|
||||
STR_304A_NONE :{YELLOW}- Ništa -
|
||||
@@ -1883,8 +1871,8 @@ STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}Odaberi
|
||||
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Odaberi dužinu željezničke stanice
|
||||
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Odaberi smjer autobusne stanice
|
||||
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Odaberi smjer kamionskog terminala
|
||||
STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Odaberi smjer putničke tramvajske stanice
|
||||
STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Odaberi smjer teretne tramvajske stanice
|
||||
STR_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Odaberi smjer putničke tramvajske stanice
|
||||
STR_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Odaberi smjer teretne tramvajske stanice
|
||||
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Centriraj glavni pogled na lokaciju stanice
|
||||
STR_3054_SHOW_STATION_RATINGS :{BLACK}Pokaži ocjene stanice
|
||||
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Promijeni ime stanice
|
||||
@@ -1906,7 +1894,7 @@ STR_3068_DOCK :{WHITE}Pristani
|
||||
STR_3069_BUOY :Plutača
|
||||
STR_306A_BUOY_IN_THE_WAY :{WHITE}...plutača na putu
|
||||
STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...stanica previše proširena
|
||||
STR_306D_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...neujednačene stanice onemogućene
|
||||
STR_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...neujednačene stanice onemogućene
|
||||
STR_USE_CTRL_TO_SELECT_MORE :{BLACK}Drži CTRL kako bi odabrao više od jedne stavke
|
||||
|
||||
STR_UNDEFINED :(neodređen znakovni niz)
|
||||
@@ -1947,7 +1935,7 @@ STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Spremi t
|
||||
STR_400E_SELECT_NEW_GAME_TYPE :{WHITE}Odaberi vrstu nove igre
|
||||
STR_400F_SELECT_SCENARIO_GREEN_PRE :{BLACK}Odaberi scenarij (zeleno), namještenu igru (plavo), ili nasumičnu novu igru
|
||||
STR_4010_GENERATE_RANDOM_NEW_GAME :Stvori nasumičnu novu igru
|
||||
STR_4011_LOAD_HEIGHTMAP :{WHITE}Učitaj visinsku kartu
|
||||
STR_LOAD_HEIGHTMAP :{WHITE}Učitaj visinsku kartu
|
||||
|
||||
##id 0x4800
|
||||
STR_4800_IN_THE_WAY :{WHITE}{STRING} na putu
|
||||
@@ -2151,10 +2139,10 @@ STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Količi
|
||||
STR_6813_ECONOMY :{LTBLUE}Ekonomija: {ORANGE}{STRING}
|
||||
STR_6814_TRAIN_REVERSING :{LTBLUE}Promjena smjera vlaka: {ORANGE}{STRING}
|
||||
STR_6815_DISASTERS :{LTBLUE}Prirodne katastrofe: {ORANGE}{STRING}
|
||||
STR_16816_CITY_APPROVAL :{LTBLUE}Stav gradsko vijeća prema restrukturiranju područja: {ORANGE}{STRING}
|
||||
STR_CITY_APPROVAL :{LTBLUE}Stav gradsko vijeća prema restrukturiranju područja: {ORANGE}{STRING}
|
||||
############ range for difficulty settings ends
|
||||
|
||||
STR_26816_NONE :Ništa
|
||||
STR_NONE :Ništa
|
||||
STR_NUM_VERY_LOW :Vrlo nisko
|
||||
STR_6816_LOW :Nisko
|
||||
STR_6817_NORMAL :Normalno
|
||||
@@ -2192,9 +2180,9 @@ STR_6835_AT_END_OF_LINE_ONLY :Isključivo na
|
||||
STR_6836_OFF :Isključeno
|
||||
STR_6837_ON :Uključeno
|
||||
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Pokaži tablice najboljih rezultata
|
||||
STR_6839_PERMISSIVE :Dopustiv
|
||||
STR_683A_TOLERANT :Tolerantan
|
||||
STR_683B_HOSTILE :Agresivan
|
||||
STR_PERMISSIVE :Dopustiv
|
||||
STR_TOLERANT :Tolerantan
|
||||
STR_HOSTILE :Agresivan
|
||||
|
||||
##id 0x7000
|
||||
STR_7000 :
|
||||
@@ -2331,7 +2319,7 @@ STR_707B_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Nije mog
|
||||
STR_707C_CAN_T_SELL_25_SHARE_IN :{WHITE}Nije moguće prodati 25% udjela u ovoj tvrtci...
|
||||
STR_707D_OWNED_BY :{WHITE}({COMMA}% u vlasništvu {COMPANY})
|
||||
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{COMPANY} je preuzeta od strane tvrtke {COMPANY}!
|
||||
STR_7080_PROTECTED :{WHITE}Ova tvrka još nije dovoljno stara da bi trgovala udjelima...
|
||||
STR_PROTECTED :{WHITE}Ova tvrka još nije dovoljno stara da bi trgovala udjelima...
|
||||
|
||||
STR_LIVERY_DEFAULT :Standardna boja
|
||||
STR_LIVERY_STEAM :Parna lokomotiva
|
||||
@@ -2638,17 +2626,17 @@ STR_8803_TRAIN_IN_THE_WAY :{WHITE}Vlak na
|
||||
STR_8804 :{SETX 10}{COMMA}: {STRING} {STRING}
|
||||
STR_8805 :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
|
||||
STR_8806_GO_TO :Idi do {STATION}
|
||||
STR_8807_GO_TO_TRANSFER :Idi do {STATION} (Transferiraj i preuzmi teret)
|
||||
STR_8808_GO_TO_UNLOAD :Idi do {STATION} (Istovar)
|
||||
STR_8809_GO_TO_TRANSFER_UNLOAD :Go to {STATION} (Transferiraj i otiđi prazan)
|
||||
STR_880A_GO_TO_LOAD :Idi do{STATION} (Utovar)
|
||||
STR_880B_GO_TO_TRANSFER_LOAD :Idi do {STATION} (Transferiraj i pričekaj puni utovar)
|
||||
STR_880C_GO_NON_STOP_TO :Idi neprekidno do {STATION}
|
||||
STR_880D_GO_TO_NON_STOP_TRANSFER :Idi neprekidno do {STATION} (Transferiraj i preuzmi teret)
|
||||
STR_880E_GO_NON_STOP_TO_UNLOAD :Idi neprekidno do {STATION} (Istovar)
|
||||
STR_880F_GO_TO_NON_STOP_TRANSFER_UNLOAD :Idi neprekidno do {STATION} (Transferiraj i otiđi prazan)
|
||||
STR_8810_GO_NON_STOP_TO_LOAD :Idi neprekidno do {STATION} (Utovar)
|
||||
STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD :Idi neprekidno do {STATION} (Transferiraj i pričekaj puni utovar)
|
||||
STR_GO_TO_TRANSFER :Idi do {STATION} (Transferiraj i preuzmi teret)
|
||||
STR_8807_GO_TO_UNLOAD :Idi do {STATION} (Istovar)
|
||||
STR_GO_TO_TRANSFER_UNLOAD :Go to {STATION} (Transferiraj i otiđi prazan)
|
||||
STR_8808_GO_TO_LOAD :Idi do{STATION} (Utovar)
|
||||
STR_GO_TO_TRANSFER_LOAD :Idi do {STATION} (Transferiraj i pričekaj puni utovar)
|
||||
STR_880A_GO_NON_STOP_TO :Idi neprekidno do {STATION}
|
||||
STR_GO_TO_NON_STOP_TRANSFER :Idi neprekidno do {STATION} (Transferiraj i preuzmi teret)
|
||||
STR_880B_GO_NON_STOP_TO_UNLOAD :Idi neprekidno do {STATION} (Istovar)
|
||||
STR_GO_TO_NON_STOP_TRANSFER_UNLOAD :Idi neprekidno do {STATION} (Transferiraj i otiđi prazan)
|
||||
STR_880C_GO_NON_STOP_TO_LOAD :Idi neprekidno do {STATION} (Utovar)
|
||||
STR_GO_TO_NON_STOP_TRANSFER_LOAD :Idi neprekidno do {STATION} (Transferiraj i pričekaj puni utovar)
|
||||
STR_GO_TO_TRAIN_DEPOT :Idi u spremište vlakova grada {TOWN}
|
||||
STR_SERVICE_AT_TRAIN_DEPOT :Servisiranje u spremištu vlakova grada {TOWN}
|
||||
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Idi neprekidno do spremišta vlakova grada {TOWN}
|
||||
@@ -2734,7 +2722,7 @@ STR_SERVICING_INTERVAL_PERCENT :{BLACK}Servisni
|
||||
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Vlakovi - klikni na vlak za informacije
|
||||
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Izgradi/kupi nove vlakove (zahtijeva spremište vlakova)
|
||||
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Vlakovi - klikni na vlak za informacije., vuci vozilo kako bi dodao/oduzeo od vlaka
|
||||
STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Izgradi novi vlak
|
||||
STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Kupi novo željezničko vozilo
|
||||
STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE :{BLACK}Ovdje povuci vlak kako bi ga prodao
|
||||
STR_8842_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Centriraj glavni pogled na lokaciju željezničkog spremišta
|
||||
STR_8843_TRAIN_VEHICLE_SELECTION :{BLACK}Popis izabranih vlakova - klikni na vlak za informacije
|
||||
@@ -2752,7 +2740,7 @@ STR_884E_DECREASE_SERVICING_INTERVAL :{BLACK}Smanji s
|
||||
STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Pokaži detalje tereta koji se prevozi
|
||||
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Pokaži detalje vagona
|
||||
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Pokaži nosivosti svakog vagona
|
||||
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Pokaži ukupnu nosivost vlaka podijeljenu prema vrsti tereta
|
||||
STR_SHOW_TOTAL_CARGO :{BLACK}Pokaži ukupnu nosivost vlaka podijeljenu prema vrsti tereta
|
||||
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Popis naredbi - klikni na naredbu kako bi ju označio. CTRL + klik klizi na stanicu
|
||||
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Preskoči trenutnu naredbu i pokreni slijedeću. CTRL + klik preskače na odabranu naredbu
|
||||
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Obriši označenu naredbu
|
||||
@@ -2783,8 +2771,8 @@ STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT
|
||||
STR_8869_CAN_T_REVERSE_DIRECTION :{WHITE}Nije moguće promijeniti smjer vlaka...
|
||||
STR_886A_RENAME_TRAIN_VEHICLE_TYPE :{WHITE}Preimenuj vrstu vagona
|
||||
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Nije moguće preimenovati vrstu vagona...
|
||||
STR_886D_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Napravi da označena naredba prisili vozilo da izbaci teret
|
||||
STR_886F_TRANSFER :{BLACK}Transfer
|
||||
STR_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Napravi da označena naredba prisili vozilo da izbaci teret
|
||||
STR_TRANSFER :{BLACK}Transfer
|
||||
STR_CLEAR_TIME :{BLACK}Obriši vrijeme
|
||||
STR_RESET_LATENESS :{BLACK}Poništi Brojač Kašnjenja
|
||||
|
||||
@@ -2862,8 +2850,8 @@ STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}Nije mog
|
||||
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Imenuj cestovno vozilo
|
||||
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Građani slave . . .{}Prvi bus je stigao na {STATION}!
|
||||
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Građani slave . . .{}Prvi kamion je stigao na {STATION}!
|
||||
STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Građani slave . . .{}Prvi putnički tramvaj je stigao na {STATION}!
|
||||
STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Građani slave . . .{}Prvi teretni tramvaj je stigao na {STATION}!
|
||||
STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM :{BLACK}{BIGFONT}Građani slave . . .{}Prvi putnički tramvaj je stigao na {STATION}!
|
||||
STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM :{BLACK}{BIGFONT}Građani slave . . .{}Prvi teretni tramvaj je stigao na {STATION}!
|
||||
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Sudar cestovnog vozila!{}Vozač poginuo u eksploziji nakon sudara s vlakom
|
||||
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Sudar cestovnog vozila!{}{COMMA} poginulih u eksploziji nakon sudara s vlakom
|
||||
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Nije moguće natjerati vozilo da se okrene...
|
||||
@@ -2872,7 +2860,7 @@ STR_9034_RENAME :{BLACK}Preimenu
|
||||
STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Preimenuj vrstu cestovnog vozila
|
||||
STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Preimenuj vrstu cestovnog vozila
|
||||
STR_9037_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Nije moguće preimenovati vrstu cestovnog vozila...
|
||||
STR_9038_GO_TO_ROADVEH_DEPOT :Idi prema spremištu cestovnih vozila grada {TOWN}
|
||||
STR_GO_TO_ROADVEH_DEPOT :Idi prema spremištu cestovnih vozila grada {TOWN}
|
||||
STR_SERVICE_AT_ROADVEH_DEPOT :Servisiranje u spremištu cestovnih vozila grada {TOWN}
|
||||
|
||||
STR_REFIT_ROAD_VEHICLE_TO_CARRY :{BLACK}Prenamijeni cestovno vozilo za prijevoz neke druge vrste tereta
|
||||
@@ -3246,6 +3234,9 @@ STR_PURCHASE_INFO_ALL_TYPES :Sve vrste teret
|
||||
STR_PURCHASE_INFO_ALL_BUT :Sve osim {GOLD}
|
||||
STR_PURCHASE_INFO_MAX_TE :{BLACK} Maks. vučni napor: {GOLD}{FORCE}
|
||||
|
||||
########### For showing numbers in widgets
|
||||
|
||||
|
||||
########### String for New Landscape Generator
|
||||
|
||||
STR_GENERATE :{WHITE}Izradi
|
||||
@@ -3273,7 +3264,6 @@ STR_HEIGHTMAP_SCALE_WARNING_CAPTION :{WHITE}Upozoren
|
||||
STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}Prekomjerna promjena veličine mape nije preporučena. Nastaviti sa kreiranjem?
|
||||
STR_TOWN_LAYOUT_WARNING_CAPTION :{WHITE}Upozorenje na raspored grada
|
||||
STR_TOWN_LAYOUT_WARNING_MESSAGE :{YELLOW}Raspored grada s opcijom "nema više cesti" nije preporučen. Nastaviti s generiranjem?
|
||||
STR_SNOW_LINE_HEIGHT_NUM :{NUM}
|
||||
STR_HEIGHTMAP_NAME :{BLACK}Ime heightmape:
|
||||
STR_HEIGHTMAP_SIZE :{BLACK}Veličina: {ORANGE}{NUM} x {NUM}
|
||||
STR_GENERATION_WORLD :{WHITE}Izrada svijeta u toku...
|
||||
@@ -3299,7 +3289,6 @@ STR_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Snizi ra
|
||||
STR_FLAT_WORLD_HEIGHT_UP :{BLACK}Povisi ravnu površinu za jedan korak
|
||||
STR_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Promijeni visinu ravne površine
|
||||
STR_FLAT_WORLD_HEIGHT :{BLACK}Visina ravne površine:
|
||||
STR_FLAT_WORLD_HEIGHT_NUM :{NUM}
|
||||
|
||||
STR_SMALLMAP_CENTER :{BLACK}Centriraj malu mapu na trenutni položaj
|
||||
STR_SMALLMAP_INDUSTRY :{TINYFONT}{STRING} ({NUM})
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user