(svn r11309) [NoAI] -Sync: with trunk r11145:11308.
--- a/bin/ai/regression/regression.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/bin/ai/regression/regression.txt Sat Oct 20 10:42:28 2007 +0000
@@ -9,9 +9,9 @@
abs( 21): 21
--AIBase--
- Rand(): -1692638405
- Rand(): -1170386787
- Rand(): 190814891
+ Rand(): -561136928
+ Rand(): 1884901916
+ Rand(): -1202945897
RandRange(0): 0
RandRange(0): 0
RandRange(0): 0
@@ -20,13 +20,13 @@
RandRange(1): 0
RandRange(2): 0
RandRange(2): 0
- RandRange(2): 0
+ RandRange(2): 1
+ RandRange(9): 2
+ RandRange(9): 5
RandRange(9): 4
- RandRange(9): 6
- RandRange(9): 2
Chance(1, 2): true
Chance(1, 2): true
- Chance(1, 2): false
+ Chance(1, 2): true
--List--
IsEmpty(): true
@@ -137,144 +137,144 @@
1098 => 1098
1099 => 1099
Randomize ListDump:
- 1 => 581150761
- 2 => 780195416
- 1000 => -1005781929
- 1001 => -304338569
- 1002 => -1743669342
- 1003 => 2052174274
- 1004 => -239846598
- 1005 => -519154508
- 1006 => 1384592592
- 1007 => 92537681
- 1008 => -783011799
- 1009 => 1020927039
- 1010 => -762645416
- 1011 => 1654042603
- 1012 => 210165652
- 1013 => -1851586478
- 1014 => 208319733
- 1015 => -1211393332
- 1016 => 2052272773
- 1017 => -1489194376
- 1018 => -438907823
- 1019 => 130289291
- 1020 => -1283324111
- 1021 => -259554489
- 1022 => 1143992540
- 1023 => -1301766703
- 1024 => 2067670203
- 1025 => 1726364654
- 1026 => 939556491
- 1027 => -1134709978
- 1028 => -110608336
- 1029 => 1339284138
- 1030 => -472993361
- 1031 => 958802835
- 1032 => 761440845
- 1033 => -1469223188
- 1034 => -721599317
- 1035 => 434887418
- 1036 => -820146882
- 1037 => 274760994
- 1038 => -522727528
- 1039 => -669489971
- 1040 => 1377115572
- 1041 => 516401345
- 1042 => 295153940
- 1043 => -1055199725
- 1044 => -1143220467
- 1045 => -686775621
- 1046 => 867901084
- 1047 => 1693214681
- 1048 => -1112224853
- 1049 => 659718584
- 1051 => -1132568097
- 1052 => -1370768491
- 1053 => -1233695197
- 1054 => 824602143
- 1055 => 1213169381
- 1056 => 1616397171
- 1057 => -1494293955
- 1058 => 168525123
- 1059 => 985183216
- 1060 => 163496891
- 1061 => -1920407820
- 1062 => 512739738
- 1063 => 1098365126
- 1064 => 1522198446
- 1065 => 152025258
- 1066 => -1654530986
- 1067 => 1386785618
- 1068 => -49512268
- 1069 => 1214031860
- 1070 => 458782250
- 1071 => -1641082778
- 1072 => -1284412562
- 1073 => 1507095104
- 1074 => -1103314033
- 1075 => -837829736
- 1076 => 1245363646
- 1077 => -1003369287
- 1078 => -729296780
- 1079 => -2042801701
- 1080 => 690945725
- 1081 => 844366079
- 1082 => 1659029417
- 1083 => 585818047
- 1084 => -1199106717
- 1085 => 680742150
- 1086 => 264108503
- 1087 => -301161571
- 1088 => -132905463
- 1089 => 1892881479
- 1090 => -1903322021
- 1091 => 1017533996
- 1092 => -976386914
- 1093 => -90625762
- 1094 => -1290852461
- 1095 => -1953934605
- 1096 => 112304592
- 1097 => 1238896913
- 1098 => 1436365455
- 1099 => 825503137
+ 1 => -619704336
+ 2 => 1166439751
+ 1000 => -914833827
+ 1001 => -1215386906
+ 1002 => -1069187552
+ 1003 => 112127200
+ 1004 => 1050904874
+ 1005 => -429346856
+ 1006 => -608971312
+ 1007 => 1169222927
+ 1008 => 1369657072
+ 1009 => 767111199
+ 1010 => 1904874981
+ 1011 => 161085759
+ 1012 => 271771856
+ 1013 => -533081029
+ 1014 => -1409657365
+ 1015 => 1563875660
+ 1016 => 1113935053
+ 1017 => 792268145
+ 1018 => -70442569
+ 1019 => -547592946
+ 1020 => -778640532
+ 1021 => -1375060615
+ 1022 => 318449191
+ 1023 => -190171711
+ 1024 => 178940318
+ 1025 => 442765623
+ 1026 => 313145543
+ 1027 => -458470184
+ 1028 => -1297320844
+ 1029 => 2091522683
+ 1030 => 529678468
+ 1031 => 548268055
+ 1032 => -9350756
+ 1033 => -1719797748
+ 1034 => -1837545138
+ 1035 => 794565562
+ 1036 => 465317634
+ 1037 => -1928623851
+ 1038 => -330437837
+ 1039 => -956974293
+ 1040 => 976574875
+ 1041 => -1888843242
+ 1042 => -2005628326
+ 1043 => -1562648047
+ 1044 => -868060600
+ 1045 => -403788235
+ 1046 => 367414207
+ 1047 => 681820797
+ 1048 => -1197099260
+ 1049 => -650879767
+ 1051 => 941556066
+ 1052 => -36585116
+ 1053 => -988001222
+ 1054 => -1407695456
+ 1055 => 1569591207
+ 1056 => 1434294956
+ 1057 => -879654590
+ 1058 => 6511542
+ 1059 => -270940883
+ 1060 => 1646156529
+ 1061 => 1457378902
+ 1062 => -1703288615
+ 1063 => -1530193095
+ 1064 => 1852649127
+ 1065 => -1071976838
+ 1066 => 372901081
+ 1067 => 934187143
+ 1068 => -516975589
+ 1069 => -1086784819
+ 1070 => 1484112318
+ 1071 => -2061433623
+ 1072 => -1787587249
+ 1073 => 1528388260
+ 1074 => 658189461
+ 1075 => 2114811864
+ 1076 => 949664695
+ 1077 => -1569338881
+ 1078 => 880833979
+ 1079 => 883721763
+ 1080 => 632697644
+ 1081 => 1556076896
+ 1082 => -1316111879
+ 1083 => -1721672483
+ 1084 => -1693824167
+ 1085 => 1135419548
+ 1086 => -1387302877
+ 1087 => 1713624705
+ 1088 => 492025163
+ 1089 => 1559280427
+ 1090 => 703894820
+ 1091 => -1626847649
+ 1092 => 1977038480
+ 1093 => -1644526188
+ 1094 => -640385428
+ 1095 => -726109663
+ 1096 => -106206677
+ 1097 => 291310901
+ 1098 => 647492868
+ 1099 => 421056347
KeepTop(10):
- 1 => 581150761
- 2 => 780195416
- 1000 => -1005781929
- 1001 => -304338569
- 1002 => -1743669342
- 1003 => 2052174274
- 1004 => -239846598
- 1005 => -519154508
- 1006 => 1384592592
- 1007 => 92537681
+ 1 => -619704336
+ 2 => 1166439751
+ 1000 => -914833827
+ 1001 => -1215386906
+ 1002 => -1069187552
+ 1003 => 112127200
+ 1004 => 1050904874
+ 1005 => -429346856
+ 1006 => -608971312
+ 1007 => 1169222927
KeepBottom(8):
- 1000 => -1005781929
- 1001 => -304338569
- 1002 => -1743669342
- 1003 => 2052174274
- 1004 => -239846598
- 1005 => -519154508
- 1006 => 1384592592
- 1007 => 92537681
+ 1000 => -914833827
+ 1001 => -1215386906
+ 1002 => -1069187552
+ 1003 => 112127200
+ 1004 => 1050904874
+ 1005 => -429346856
+ 1006 => -608971312
+ 1007 => 1169222927
RemoveBottom(2):
- 1000 => -1005781929
- 1001 => -304338569
- 1002 => -1743669342
- 1003 => 2052174274
- 1004 => -239846598
- 1005 => -519154508
+ 1000 => -914833827
+ 1001 => -1215386906
+ 1002 => -1069187552
+ 1003 => 112127200
+ 1004 => 1050904874
+ 1005 => -429346856
RemoveTop(2):
- 1002 => -1743669342
- 1003 => 2052174274
- 1004 => -239846598
- 1005 => -519154508
+ 1002 => -1069187552
+ 1003 => 112127200
+ 1004 => 1050904874
+ 1005 => -429346856
RemoveList({1003, 1004}):
- 1002 => -1743669342
- 1005 => -519154508
+ 1002 => -1069187552
+ 1005 => -429346856
KeepList({1003, 1004, 1005}):
- 1005 => -519154508
+ 1005 => -429346856
IsEmpty(): true
--AIAirport--
@@ -332,11 +332,11 @@
GetHangarOfAirport(): 32119
IsHangarTile(): true
IsAirportTile(): true
- GetBankBalance(): 90052
+ GetBankBalance(): 90100
RemoveAirport(): true
IsHangarTile(): false
IsAirportTile(): false
- GetBankBalance(): 89788
+ GetBankBalance(): 89836
BuildAirport(): true
--AICargo--
@@ -378,7 +378,7 @@
IsFreight(): true
GetCargoIncome(0, 0): 0
GetCargoIncome(10, 10): 5
- GetCargoIncome(100, 10): 54
+ GetCargoIncome(100, 10): 53
GetCargoIncome(10, 100): 3
Cargo 4
IsValidCargo(): true
@@ -410,7 +410,7 @@
IsFreight(): true
GetCargoIncome(0, 0): 0
GetCargoIncome(10, 10): 6
- GetCargoIncome(100, 10): 61
+ GetCargoIncome(100, 10): 60
GetCargoIncome(10, 100): 4
Cargo 8
IsValidCargo(): true
@@ -475,11 +475,11 @@
SetCompanyName(): true
SetCompanyName(): false
GetCompanyName(): Regression
- GetPresidentName(): I. Gribble
+ GetPresidentName(): I. Campbell
SetPresidentName(): true
GetPresidentName(): Regression AI
GetCompanyValue(): 0
- GetBankBalance(): 84364
+ GetBankBalance(): 84436
GetCompanyName(): (null : 0x00000000)
GetLoanAmount(): 100000
GetMaxLoanAmount(): 300000
@@ -487,13 +487,13 @@
SetLoanAmount(1): false
SetLoanAmount(100): false
SetLoanAmount(10000): false
- GetBankBalance(): 84364
+ GetBankBalance(): 84436
GetLoanAmount(): 100000
SetMinimumLoanAmount(31337): true
- GetBankBalance(): 24364
+ GetBankBalance(): 24436
GetLoanAmount(): 40000
SetLoanAmount(10000): true
- GetBankBalance(): 284364
+ GetBankBalance(): 284436
GetLoanAmount(): 300000
--Engine--
@@ -513,7 +513,7 @@
GetCapacity(): 0
GetReliability(): 82
GetMaxSpeed(): 64
- GetPrice(): 8257
+ GetPrice(): 8203
GetVehicleType(): 0
Engine 1
IsValidEngine(): false
@@ -585,7 +585,7 @@
GetCapacity(): 0
GetReliability(): 79
GetMaxSpeed(): 112
- GetPrice(): 15334
+ GetPrice(): 15234
GetVehicleType(): 0
Engine 9
IsValidEngine(): true
@@ -594,7 +594,7 @@
GetCapacity(): 0
GetReliability(): 83
GetMaxSpeed(): 128
- GetPrice(): 22412
+ GetPrice(): 22265
GetVehicleType(): 0
Engine 10
IsValidEngine(): false
@@ -756,7 +756,7 @@
GetCapacity(): 40
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 291359
+ GetPrice(): 289453
GetVehicleType(): 0
Engine 28
IsValidEngine(): true
@@ -765,7 +765,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 268947
+ GetPrice(): 267187
GetVehicleType(): 0
Engine 29
IsValidEngine(): true
@@ -774,7 +774,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 207608
+ GetPrice(): 206250
GetVehicleType(): 0
Engine 30
IsValidEngine(): true
@@ -783,7 +783,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 235918
+ GetPrice(): 234375
GetVehicleType(): 0
Engine 31
IsValidEngine(): true
@@ -792,7 +792,7 @@
GetCapacity(): 25
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 226482
+ GetPrice(): 225000
GetVehicleType(): 0
Engine 32
IsValidEngine(): true
@@ -801,7 +801,7 @@
GetCapacity(): 25
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 224122
+ GetPrice(): 222656
GetVehicleType(): 0
Engine 33
IsValidEngine(): true
@@ -810,7 +810,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 214686
+ GetPrice(): 213281
GetVehicleType(): 0
Engine 34
IsValidEngine(): true
@@ -819,7 +819,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 213506
+ GetPrice(): 212109
GetVehicleType(): 0
Engine 35
IsValidEngine(): true
@@ -828,7 +828,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 211147
+ GetPrice(): 209765
GetVehicleType(): 0
Engine 36
IsValidEngine(): true
@@ -837,7 +837,7 @@
GetCapacity(): 20
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 231200
+ GetPrice(): 229687
GetVehicleType(): 0
Engine 37
IsValidEngine(): true
@@ -846,7 +846,7 @@
GetCapacity(): 20
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 300796
+ GetPrice(): 298828
GetVehicleType(): 0
Engine 38
IsValidEngine(): false
@@ -1026,7 +1026,7 @@
GetCapacity(): 45
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 291359
+ GetPrice(): 289453
GetVehicleType(): 0
Engine 58
IsValidEngine(): true
@@ -1035,7 +1035,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 268947
+ GetPrice(): 267187
GetVehicleType(): 0
Engine 59
IsValidEngine(): true
@@ -1044,7 +1044,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 207608
+ GetPrice(): 206250
GetVehicleType(): 0
Engine 60
IsValidEngine(): true
@@ -1053,7 +1053,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 235918
+ GetPrice(): 234375
GetVehicleType(): 0
Engine 61
IsValidEngine(): true
@@ -1062,7 +1062,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 226482
+ GetPrice(): 225000
GetVehicleType(): 0
Engine 62
IsValidEngine(): true
@@ -1071,7 +1071,7 @@
GetCapacity(): 30
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 224122
+ GetPrice(): 222656
GetVehicleType(): 0
Engine 63
IsValidEngine(): true
@@ -1080,7 +1080,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 214686
+ GetPrice(): 213281
GetVehicleType(): 0
Engine 64
IsValidEngine(): true
@@ -1089,7 +1089,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 213506
+ GetPrice(): 212109
GetVehicleType(): 0
Engine 65
IsValidEngine(): true
@@ -1098,7 +1098,7 @@
GetCapacity(): 35
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 211147
+ GetPrice(): 209765
GetVehicleType(): 0
Engine 66
IsValidEngine(): true
@@ -1107,7 +1107,7 @@
GetCapacity(): 25
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 231200
+ GetPrice(): 229687
GetVehicleType(): 0
Engine 67
IsValidEngine(): true
@@ -1116,7 +1116,7 @@
GetCapacity(): 25
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 300796
+ GetPrice(): 298828
GetVehicleType(): 0
Engine 68
IsValidEngine(): false
@@ -1314,7 +1314,7 @@
GetCapacity(): 47
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 291359
+ GetPrice(): 289453
GetVehicleType(): 0
Engine 90
IsValidEngine(): true
@@ -1323,7 +1323,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 268947
+ GetPrice(): 267187
GetVehicleType(): 0
Engine 91
IsValidEngine(): true
@@ -1332,7 +1332,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 207608
+ GetPrice(): 206250
GetVehicleType(): 0
Engine 92
IsValidEngine(): true
@@ -1341,7 +1341,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 235918
+ GetPrice(): 234375
GetVehicleType(): 0
Engine 93
IsValidEngine(): true
@@ -1350,7 +1350,7 @@
GetCapacity(): 32
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 226482
+ GetPrice(): 225000
GetVehicleType(): 0
Engine 94
IsValidEngine(): true
@@ -1359,7 +1359,7 @@
GetCapacity(): 32
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 224122
+ GetPrice(): 222656
GetVehicleType(): 0
Engine 95
IsValidEngine(): true
@@ -1368,7 +1368,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 214686
+ GetPrice(): 213281
GetVehicleType(): 0
Engine 96
IsValidEngine(): true
@@ -1377,7 +1377,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 213506
+ GetPrice(): 212109
GetVehicleType(): 0
Engine 97
IsValidEngine(): true
@@ -1386,7 +1386,7 @@
GetCapacity(): 37
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 211147
+ GetPrice(): 209765
GetVehicleType(): 0
Engine 98
IsValidEngine(): true
@@ -1395,7 +1395,7 @@
GetCapacity(): 27
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 231200
+ GetPrice(): 229687
GetVehicleType(): 0
Engine 99
IsValidEngine(): true
@@ -1404,7 +1404,7 @@
GetCapacity(): 27
GetReliability(): 0
GetMaxSpeed(): 0
- GetPrice(): 300796
+ GetPrice(): 298828
GetVehicleType(): 0
Engine 100
IsValidEngine(): false
@@ -1557,7 +1557,7 @@
GetCapacity(): 31
GetReliability(): 78
GetMaxSpeed(): 112
- GetPrice(): 4953
+ GetPrice(): 4920
GetVehicleType(): 1
Engine 117
IsValidEngine(): false
@@ -1620,7 +1620,7 @@
GetCapacity(): 20
GetReliability(): 76
GetMaxSpeed(): 96
- GetPrice(): 4458
+ GetPrice(): 4428
GetVehicleType(): 1
Engine 124
IsValidEngine(): false
@@ -1647,7 +1647,7 @@
GetCapacity(): 22
GetReliability(): 91
GetMaxSpeed(): 96
- GetPrice(): 4747
+ GetPrice(): 4715
GetVehicleType(): 1
Engine 127
IsValidEngine(): false
@@ -1701,7 +1701,7 @@
GetCapacity(): 21
GetReliability(): 97
GetMaxSpeed(): 96
- GetPrice(): 4540
+ GetPrice(): 4510
GetVehicleType(): 1
Engine 133
IsValidEngine(): false
@@ -1728,7 +1728,7 @@
GetCapacity(): 14
GetReliability(): 96
GetMaxSpeed(): 96
- GetPrice(): 4334
+ GetPrice(): 4305
GetVehicleType(): 1
Engine 136
IsValidEngine(): false
@@ -1755,7 +1755,7 @@
GetCapacity(): 14
GetReliability(): 86
GetMaxSpeed(): 96
- GetPrice(): 4417
+ GetPrice(): 4387
GetVehicleType(): 1
Engine 139
IsValidEngine(): false
@@ -1782,7 +1782,7 @@
GetCapacity(): 20
GetReliability(): 96
GetMaxSpeed(): 96
- GetPrice(): 4706
+ GetPrice(): 4674
GetVehicleType(): 1
Engine 142
IsValidEngine(): false
@@ -1809,7 +1809,7 @@
GetCapacity(): 20
GetReliability(): 97
GetMaxSpeed(): 96
- GetPrice(): 4871
+ GetPrice(): 4838
GetVehicleType(): 1
Engine 145
IsValidEngine(): false
@@ -1836,7 +1836,7 @@
GetCapacity(): 22
GetReliability(): 96
GetMaxSpeed(): 96
- GetPrice(): 4995
+ GetPrice(): 4961
GetVehicleType(): 1
Engine 148
IsValidEngine(): false
@@ -1863,7 +1863,7 @@
GetCapacity(): 15
GetReliability(): 81
GetMaxSpeed(): 96
- GetPrice(): 4623
+ GetPrice(): 4592
GetVehicleType(): 1
Engine 151
IsValidEngine(): false
@@ -1890,7 +1890,7 @@
GetCapacity(): 12
GetReliability(): 75
GetMaxSpeed(): 96
- GetPrice(): 5985
+ GetPrice(): 5945
GetVehicleType(): 1
Engine 154
IsValidEngine(): false
@@ -2349,7 +2349,7 @@
GetCapacity(): 220
GetReliability(): 98
GetMaxSpeed(): 48
- GetPrice(): 30670
+ GetPrice(): 30465
GetVehicleType(): 2
Engine 205
IsValidEngine(): false
@@ -2367,7 +2367,7 @@
GetCapacity(): 100
GetReliability(): 87
GetMaxSpeed(): 64
- GetPrice(): 18402
+ GetPrice(): 18279
GetVehicleType(): 2
Engine 207
IsValidEngine(): false
@@ -2412,7 +2412,7 @@
GetCapacity(): 160
GetReliability(): 81
GetMaxSpeed(): 48
- GetPrice(): 24536
+ GetPrice(): 24372
GetVehicleType(): 2
Engine 212
IsValidEngine(): false
@@ -2448,7 +2448,7 @@
GetCapacity(): 25
GetReliability(): 70
GetMaxSpeed(): 477
- GetPrice(): 28900
+ GetPrice(): 28710
GetVehicleType(): 3
Engine 216
IsValidEngine(): true
@@ -2457,7 +2457,7 @@
GetCapacity(): 65
GetReliability(): 95
GetMaxSpeed(): 477
- GetPrice(): 30964
+ GetPrice(): 30761
GetVehicleType(): 3
Engine 217
IsValidEngine(): false
@@ -2484,7 +2484,7 @@
GetCapacity(): 30
GetReliability(): 76
GetMaxSpeed(): 477
- GetPrice(): 30964
+ GetPrice(): 30761
GetVehicleType(): 3
Engine 220
IsValidEngine(): false
@@ -3180,17 +3180,17 @@
118 => 0
117 => 0
Price ListDump:
- 153 => 5985
- 147 => 4995
- 116 => 4953
- 144 => 4871
- 126 => 4747
- 141 => 4706
- 150 => 4623
- 132 => 4540
- 123 => 4458
- 138 => 4417
- 135 => 4334
+ 153 => 5945
+ 147 => 4961
+ 116 => 4920
+ 144 => 4838
+ 126 => 4715
+ 141 => 4674
+ 150 => 4592
+ 132 => 4510
+ 123 => 4428
+ 138 => 4387
+ 135 => 4305
203 => 0
202 => 0
201 => 0
@@ -4047,7 +4047,7 @@
IsBuoyTile(): false
IsLockTile(): false
IsCanalTile(): false
- GetBankBalance(): 284034
+ GetBankBalance(): 284108
BuildWaterDepot(): true
BuildDock(): true
BuildBuoy(): true
@@ -4058,7 +4058,7 @@
IsBuoyTile(): true
IsLockTile(): true
IsCanalTile(): true
- GetBankBalance(): 254295
+ GetBankBalance(): 254559
RemoveWaterDepot(): true
RemoveDock(): true
RemoveBuoy(): true
@@ -4069,7 +4069,7 @@
IsBuoyTile(): false
IsLockTile(): false
IsCanalTile(): false
- GetBankBalance(): 231503
+ GetBankBalance(): 231914
BuildWaterDepot(): true
BuildDock(): true
@@ -4483,27 +4483,27 @@
Town 0
IsValidTown(): true
GetName(): Planfield
- GetPopulation(): 754
+ GetPopulation(): 538
GetLocation(): 15508
Town 1
IsValidTown(): true
GetName(): Trenningville
- GetPopulation(): 226
+ GetPopulation(): 236
GetLocation(): 46751
Town 2
IsValidTown(): true
GetName(): Tondston
- GetPopulation(): 320
+ GetPopulation(): 253
GetLocation(): 28365
Town 3
IsValidTown(): true
GetName(): Tunford
- GetPopulation(): 211
+ GetPopulation(): 206
GetLocation(): 41895
Town 4
IsValidTown(): true
GetName(): Wrundtown
- GetPopulation(): 396
+ GetPopulation(): 414
GetLocation(): 41450
Town 5
IsValidTown(): true
@@ -4513,22 +4513,22 @@
Town 6
IsValidTown(): true
GetName(): Muningville
- GetPopulation(): 579
+ GetPopulation(): 566
GetLocation(): 38200
Town 7
IsValidTown(): true
GetName(): Hutfingford
- GetPopulation(): 777
+ GetPopulation(): 652
GetLocation(): 59234
Town 8
IsValidTown(): true
GetName(): Sadtown
- GetPopulation(): 290
+ GetPopulation(): 292
GetLocation(): 51267
Town 9
IsValidTown(): true
GetName(): Frindinghattan
- GetPopulation(): 459
+ GetPopulation(): 447
GetLocation(): 5825
Town 10
IsValidTown(): true
@@ -4538,12 +4538,12 @@
Town 11
IsValidTown(): true
GetName(): Fort Frindston
- GetPopulation(): 197
+ GetPopulation(): 156
GetLocation(): 14935
Town 12
IsValidTown(): true
GetName(): Ginborough
- GetPopulation(): 853
+ GetPopulation(): 766
GetLocation(): 32740
Town 13
IsValidTown(): true
@@ -4553,22 +4553,22 @@
Town 14
IsValidTown(): true
GetName(): Prundinghall
- GetPopulation(): 336
+ GetPopulation(): 316
GetLocation(): 51298
Town 15
IsValidTown(): true
GetName(): Benville
- GetPopulation(): 776
+ GetPopulation(): 699
GetLocation(): 42338
Town 16
IsValidTown(): true
GetName(): Kennville
- GetPopulation(): 717
+ GetPopulation(): 659
GetLocation(): 17345
Town 17
IsValidTown(): true
GetName(): Quartfingfield
- GetPopulation(): 170
+ GetPopulation(): 185
GetLocation(): 24252
Town 18
IsValidTown(): true
@@ -4578,7 +4578,7 @@
Town 19
IsValidTown(): true
GetName(): Mendingston
- GetPopulation(): 226
+ GetPopulation(): 221
GetLocation(): 6511
Town 20
IsValidTown(): true
@@ -4588,22 +4588,22 @@
Town 21
IsValidTown(): true
GetName(): Franinghead
- GetPopulation(): 780
+ GetPopulation(): 598
GetLocation(): 9634
Town 22
IsValidTown(): true
GetName(): Naborough
- GetPopulation(): 191
+ GetPopulation(): 174
GetLocation(): 51891
Town 23
IsValidTown(): true
GetName(): Lardborough
- GetPopulation(): 669
+ GetPopulation(): 657
GetLocation(): 59622
Town 24
IsValidTown(): true
GetName(): Little Fruford
- GetPopulation(): 636
+ GetPopulation(): 624
GetLocation(): 19596
Town 25
IsValidTown(): true
@@ -4613,12 +4613,12 @@
Town 26
IsValidTown(): true
GetName(): Bedburg
- GetPopulation(): 349
+ GetPopulation(): 336
GetLocation(): 39505
Town 27
IsValidTown(): true
GetName(): Fudinghattan
- GetPopulation(): 412
+ GetPopulation(): 382
GetLocation(): 45525
Town 28
IsValidTown(): false
@@ -4735,17 +4735,17 @@
KeepAboveValue(500): done
Count(): 11
Population ListDump:
- 12 => 853
- 21 => 780
- 7 => 777
- 15 => 776
- 0 => 754
- 16 => 717
+ 12 => 766
10 => 702
- 23 => 669
- 24 => 636
- 6 => 579
+ 15 => 699
+ 16 => 659
+ 23 => 657
+ 7 => 652
+ 24 => 624
+ 21 => 598
+ 6 => 566
25 => 548
+ 0 => 538
--Vehicle--
IsValidVehicle(-1): false
@@ -4755,13 +4755,13 @@
BuildVehicle(): 0
IsValidVehicle(11): false
--Transaction--
- GetCosts(): 5985
+ GetCosts(): 5945
Execute(): true
IsValidVehicle(11): true
CloneVehicle(): 12
--Accounting--
- GetCosts(): 11970
- Should be: 11970
+ GetCosts(): 11890
+ Should be: 11890
ResetCosts(): (null : 0x00000000)
SellVehicle(12): true
IsInDepot(): true
@@ -4773,8 +4773,8 @@
IsInDepot(): false
IsStoppedInDepot(): false
--Accounting--
- GetCosts(): -5985
- Should be: -5985
+ GetCosts(): -5945
+ Should be: -5945
GetName(): Road Vehicle 1
SetName(): true
GetName(): MyVehicleName
@@ -4783,10 +4783,10 @@
GetLocation(): 33417
GetEngineType(): 153
GetUnitNumber(): 1
- GetAge(): 1
+ GetAge(): 0
GetMaxAge(): 5490
- GetAgeLeft(): 5489
- GetProfitThisYear(): -1
+ GetAgeLeft(): 5490
+ GetProfitThisYear(): 0
GetProfitLastYear(): 0
GetVehicleType(): 1
IsInDepot(): false
@@ -4821,18 +4821,18 @@
13 => 1
11 => 1
Age ListDump:
+ 15 => 1
+ 13 => 1
12 => 1
11 => 1
- 15 => 0
- 13 => 0
MaxAge ListDump:
15 => 10980
13 => 10980
12 => 5490
11 => 5490
AgeLeft ListDump:
- 15 => 10980
- 13 => 10980
+ 15 => 10979
+ 13 => 10979
12 => 5489
11 => 5489
ProfitThisYear ListDump:
--- a/config.lib Sat Oct 20 10:14:05 2007 +0000
+++ b/config.lib Sat Oct 20 10:42:28 2007 +0000
@@ -882,6 +882,10 @@
LIBS="$LIBS -pthread"
fi
+ if [ "$os" = "FREEBSD" ]; then
+ LIBS="$LIBS -lpthread"
+ fi
+
if [ "$os" = "OSX" ]; then
LDFLAGS="$LDFLAGS -framework Cocoa"
if [ "$enable_dedicated" = "0" ]; then
--- a/src/aircraft_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/aircraft_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -488,6 +488,8 @@
if (v->type != VEH_AIRCRAFT || !CheckOwnership(v->owner)) return CMD_ERROR;
if (!v->IsStoppedInDepot()) return_cmd_error(STR_A01B_AIRCRAFT_MUST_BE_STOPPED);
+ if (HASBITS(v->vehstatus, VS_CRASHED)) return_cmd_error(STR_CAN_T_SELL_DESTROYED_VEHICLE);
+
SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
if (flags & DC_EXEC) {
@@ -1260,8 +1262,8 @@
SetAircraftPosition(v, v->x_pos, v->y_pos, v->z_pos);
r = Random();
CreateEffectVehicleRel(v,
- GB(r, 0, 4) + 4,
- GB(r, 4, 4) + 4,
+ GB(r, 0, 4) - 4,
+ GB(r, 4, 4) - 4,
GB(r, 8, 4),
EV_EXPLOSION_SMALL);
}
--- a/src/clear_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/clear_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -480,7 +480,7 @@
if (!CheckTileOwnership(tile) && _current_player != OWNER_WATER) return CMD_ERROR;
- if (!EnsureNoVehicle(tile)) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
if (flags & DC_EXEC) DoClearSquare(tile);
--- a/src/console_cmds.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/console_cmds.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -593,10 +593,8 @@
DEF_CONSOLE_HOOK(ConHookValidateMaxClientsCount)
{
- /* XXX - hardcoded, string limiation -- TrueLight
- * XXX - also see network.c:NetworkStartup ~1356 */
- if (_network_game_info.clients_max > 10) {
- _network_game_info.clients_max = 10;
+ if (_network_game_info.clients_max > MAX_CLIENTS) {
+ _network_game_info.clients_max = MAX_CLIENTS;
IConsoleError("Maximum clients out of bounds, truncating to limit.");
}
--- a/src/disaster_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/disaster_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -60,7 +60,7 @@
static void DisasterClearSquare(TileIndex tile)
{
- if (!EnsureNoVehicle(tile)) return;
+ if (!EnsureNoVehicleOnGround(tile)) return;
switch (GetTileType(tile)) {
case MP_RAILWAY:
--- a/src/economy.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/economy.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -1524,7 +1524,7 @@
byte load_amount = EngInfo(v->engine_type)->load_amount;
if (_patches.gradual_loading && HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_LOAD_AMOUNT)) {
uint16 cb_load_amount = GetVehicleCallback(CBID_VEHICLE_LOAD_AMOUNT, 0, 0, v->engine_type, v);
- if (cb_load_amount != CALLBACK_FAILED) load_amount = cb_load_amount & 0xFF;
+ if (cb_load_amount != CALLBACK_FAILED && cb_load_amount != 0) load_amount = cb_load_amount & 0xFF;
}
GoodsEntry *ge = &st->goods[v->cargo_type];
--- a/src/functions.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/functions.h Sat Oct 20 10:42:28 2007 +0000
@@ -78,7 +78,7 @@
uint InteractiveRandomRange(uint max);
/* texteff.cpp */
-bool AddAnimatedTile(TileIndex tile);
+void AddAnimatedTile(TileIndex tile);
void DeleteAnimatedTile(TileIndex tile);
void AnimateAnimatedTiles();
void InitializeAnimatedTiles();
@@ -132,7 +132,6 @@
bool ScrollMainWindowToTile(TileIndex tile, bool instant = false);
bool ScrollMainWindowTo(int x, int y, bool instant = false);
-bool EnsureNoVehicle(TileIndex tile);
bool EnsureNoVehicleOnGround(TileIndex tile);
/**
--- a/src/industry.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/industry.h Sat Oct 20 10:42:28 2007 +0000
@@ -66,7 +66,7 @@
IACT_USERCREATION, ///< from the Fund/build window
};
-enum IndustyBehaviour {
+enum IndustryBehaviour {
INDUSTRYBEH_NONE = 0,
INDUSTRYBEH_PLANT_FIELDS = 1 << 0, ///< periodically plants fileds around itself (temp and artic farms)
INDUSTRYBEH_CUT_TREES = 1 << 1, ///< cuts trees and produce first output cargo from them (lumber mill)
@@ -90,7 +90,7 @@
};
-DECLARE_ENUM_AS_BIT_SET(IndustyBehaviour);
+DECLARE_ENUM_AS_BIT_SET(IndustryBehaviour);
struct Industry;
DECLARE_OLD_POOL(Industry, Industry, 3, 8000)
@@ -171,7 +171,7 @@
uint16 input_cargo_multiplier[3][2]; ///< Input cargo multipliers (multiply amount of incoming cargo for the produced cargos)
IndustryLifeType life_type; ///< This is also known as Industry production flag, in newgrf specs
byte climate_availability; ///< Bitmask, giving landscape enums as bit position
- IndustyBehaviour behaviour; ///< How this industry will behave, and how others entities can use it
+ IndustryBehaviour behaviour; ///< How this industry will behave, and how others entities can use it
byte map_colour; ///< colour used for the small map
StringID name; ///< Displayed name of the industry
StringID new_industry_text; ///< Message appearing when the industry is built
--- a/src/industry_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/industry_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -1007,7 +1007,7 @@
if ((i->counter & 0xFF) == 0) {
if (HASBIT(indsp->callback_flags, CBM_IND_PRODUCTION_256_TICKS)) IndustryProductionCallback(i, 1);
- IndustyBehaviour indbehav = indsp->behaviour;
+ IndustryBehaviour indbehav = indsp->behaviour;
i->produced_cargo_waiting[0] = min(0xffff, i->produced_cargo_waiting[0] + i->production_rate[0]);
i->produced_cargo_waiting[1] = min(0xffff, i->produced_cargo_waiting[1] + i->production_rate[1]);
@@ -1185,6 +1185,7 @@
bool IsSlopeRefused(Slope current, Slope refused)
{
+ if (IsSteepSlope(current)) return true;
if (current != SLOPE_FLAT) {
if (refused & SLOPE_STEEP) return true;
@@ -1220,32 +1221,22 @@
return false;
}
} else {
- if (!EnsureNoVehicle(cur_tile)) return false;
+ if (!EnsureNoVehicleOnGround(cur_tile)) return false;
if (MayHaveBridgeAbove(cur_tile) && IsBridgeAbove(cur_tile)) return false;
const IndustryTileSpec *its = GetIndustryTileSpec(gfx);
- IndustyBehaviour ind_behav = GetIndustrySpec(type)->behaviour;
+ IndustryBehaviour ind_behav = GetIndustrySpec(type)->behaviour;
+
+ /* Perform land/water check if not disabled */
+ if (!HASBIT(its->slopes_refused, 5) && (IsWaterTile(cur_tile) == !(ind_behav & INDUSTRYBEH_BUILT_ONWATER))) return false;
if (HASBIT(its->callback_flags, CBM_INDT_SHAPE_CHECK)) {
custom_shape = true;
if (!PerformIndustryTileSlopeCheck(tile, cur_tile, its, type, gfx, itspec_index)) return false;
} else {
- if (ind_behav & INDUSTRYBEH_BUILT_ONWATER) {
- /* As soon as the tile is not water, bail out.
- * But that does not mean the search is over. You have
- * to make sure every tile of the industry will be only water*/
- if (!IsClearWaterTile(cur_tile)) return false;
- } else {
- Slope tileh;
-
- if (IsClearWaterTile(cur_tile)) return false;
-
- tileh = GetTileSlope(cur_tile, NULL);
- if (IsSteepSlope(tileh)) return false;
-
- refused_slope |= IsSlopeRefused(tileh, its->slopes_refused);
- }
+ Slope tileh = GetTileSlope(cur_tile, NULL);
+ refused_slope |= IsSlopeRefused(tileh, its->slopes_refused);
}
if (ind_behav & INDUSTRYBEH_ONLY_INTOWN) {
@@ -1591,8 +1582,6 @@
*/
CommandCost CmdBuildIndustry(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
- int num;
- const IndustryTileTable * const *itt;
const IndustrySpec *indspec;
SET_EXPENSES_TYPE(EXPENSES_OTHER);
@@ -1617,11 +1606,15 @@
* is nothing we can really do about that. */
if (Random() <= indspec->prospecting_chance) {
for (int i = 0; i < 5000; i++) {
- uint tilespec_index = RandomRange(indspec->num_table);
- const Industry *ind = CreateNewIndustryHelper(RandomTile(), p1, flags, indspec, tilespec_index);
+ const Industry *ind = CreateNewIndustryHelper(RandomTile(), p1, flags, indspec, RandomRange(indspec->num_table));
if (ind != NULL) {
SetDParam(0, indspec->name);
- SetDParam(1, ind->town->index);
+ if (indspec->new_industry_text > STR_LAST_STRINGID) {
+ SetDParam(1, STR_TOWN);
+ SetDParam(2, ind->town->index);
+ } else {
+ SetDParam(1, ind->town->index);
+ }
AddNewsItem(indspec->new_industry_text,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_OPENCLOSE, 0), ind->xy, 0);
break;
@@ -1630,12 +1623,14 @@
}
}
} else {
- num = indspec->num_table;
- itt = indspec->table;
+ int count = indspec->num_table;
+ const IndustryTileTable * const *itt = indspec->table;
+ int num = RandomRange(count);
-
+ _error_message = STR_0239_SITE_UNSUITABLE;
do {
- if (--num < 0) return_cmd_error(STR_0239_SITE_UNSUITABLE);
+ if (--count < 0) return CMD_ERROR;
+ 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;
@@ -1829,7 +1824,12 @@
}
SetDParam(0, ind_spc->name);
- SetDParam(1, ind->town->index);
+ if (ind_spc->new_industry_text > STR_LAST_STRINGID) {
+ SetDParam(1, STR_TOWN);
+ SetDParam(2, ind->town->index);
+ } else {
+ SetDParam(1, ind->town->index);
+ }
AddNewsItem(ind_spc->new_industry_text,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_OPENCLOSE, 0), ind->xy, 0);
}
@@ -1984,7 +1984,13 @@
}
if (!suppress_message && str != STR_NULL) {
- SetDParam(0, i->index);
+ if (str > STR_LAST_STRINGID) {
+ SetDParam(0, STR_TOWN);
+ SetDParam(1, i->town->index);
+ SetDParam(2, indspec->name);
+ } else {
+ SetDParam(0, i->index);
+ }
AddNewsItem(str,
NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, closeit ? NT_OPENCLOSE : NT_ECONOMY, 0),
i->xy + TileDiffXY(1, 1), 0);
--- a/src/industry_gui.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/industry_gui.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -112,28 +112,23 @@
WP(w, fnd_d).timer_enabled = false;
}
- /* We'll perform two distinct loops, one for secondary industries, and the other one for
- * primary ones. Each loop will fill the _fund_gui structure. */
+ /* Fill the _fund_gui structure with industries.
+ * The tests performed after the enabled allow to load the industries
+ * In the same way they are inserted by grf (if any)
+ */
for (ind = 0; ind < NUM_INDUSTRYTYPES; ind++) {
indsp = GetIndustrySpec(ind);
- if (indsp->enabled && (!indsp->IsRawIndustry() || _game_mode == GM_EDITOR)) {
+ if (indsp->enabled){
+ /* Rule is that editor mode loads all industries.
+ * In game mode, all non raw industries are loaded too
+ * and raw ones are loaded only when setting allows it */
+ if (_game_mode != GM_EDITOR && indsp->IsRawIndustry() && _patches.raw_industry_construction == 0) continue;
_fund_gui.index[_fund_gui.count] = ind;
_fund_gui.enabled[_fund_gui.count] = (_game_mode == GM_EDITOR) || CheckIfCallBackAllowsAvailability(ind, IACT_USERCREATION);
_fund_gui.count++;
}
}
- if (_patches.raw_industry_construction != 0 && _game_mode != GM_EDITOR) {
- for (ind = 0; ind < NUM_INDUSTRYTYPES; ind++) {
- indsp = GetIndustrySpec(ind);
- if (indsp->enabled && indsp->IsRawIndustry()) {
- _fund_gui.index[_fund_gui.count] = ind;
- _fund_gui.enabled[_fund_gui.count] = (_game_mode == GM_EDITOR) || CheckIfCallBackAllowsAvailability(ind, IACT_USERCREATION);
- _fund_gui.count++;
- }
- }
- }
-
/* first indutry type is selected.
* I'll be damned if there are none available ;) */
WP(w, fnd_d).index = 0;
@@ -178,7 +173,7 @@
const IndustrySpec *indsp = GetIndustrySpec(_fund_gui.index[i + w->vscroll.pos]);
/* Draw the name of the industry in white is selected, otherwise, in orange */
- DrawString(20, y + offset, indsp->name, selected ? 12 : 6);
+ DrawStringTruncated(20, y + offset, indsp->name, selected ? 12 : 6, max_width - 25);
GfxFillRect(x, y + 1 + offset, x + 10, y + 7 + offset, selected ? 15 : 0);
GfxFillRect(x + 1, y + 2 + offset, x + 9, y + 6 + offset, indsp->map_colour);
}
@@ -296,6 +291,7 @@
} break;
case WE_PLACE_OBJ: {
+ 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);
@@ -310,17 +306,20 @@
_current_player = OWNER_NONE;
_generating_world = true;
_ignore_restrictions = true;
- if (!TryBuildIndustry(e->we.place.tile, WP(w, fnd_d).select)) {
+ success = TryBuildIndustry(e->we.place.tile, WP(w, fnd_d).select);
+ 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);
}
_ignore_restrictions = false;
_generating_world = false;
- } else DoCommandP(e->we.place.tile, WP(w, fnd_d).select, 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
+ } else {
+ success = DoCommandP(e->we.place.tile, WP(w, fnd_d).select, 0, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
+ }
- /* Whatever the outcome of the actions, just reset the cursor and the system */
- ResetObjectToPlace();
+ /* If an industry has been built, just reset the cursor and the system */
+ if (success) ResetObjectToPlace();
} break;
case WE_TICK:
@@ -504,7 +503,7 @@
if (message != STR_NULL && message != STR_UNDEFINED) {
y += 10;
- PrepareTextRefStackUsage();
+ PrepareTextRefStackUsage(6);
DrawString(2, y, message, 0);
StopTextRefStackUsage();
}
--- a/src/industry_map.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/industry_map.h Sat Oct 20 10:42:28 2007 +0000
@@ -274,7 +274,7 @@
* @param bits the random bits
* @pre IsTileType(tile, MP_INDUSTRY)
*/
-static inline byte GetIndustryRandomBits(TileIndex tile, byte bits)
+static inline void SetIndustryRandomBits(TileIndex tile, byte bits)
{
assert(IsTileType(tile, MP_INDUSTRY));
_me[tile].m7 = bits;
--- a/src/landscape.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/landscape.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -206,6 +206,32 @@
return _tile_type_procs[GetTileType(tile)]->get_slope_z_proc(tile, x, y);
}
+/**
+ * Determine the Z height of the corners of a specific tile edge
+ *
+ * @pre z1 and z2 must be initialized (typ. with TileZ). The corner heights just get added.
+ *
+ * @param tileh The slope of the tile.
+ * @param edge The edge of interest.
+ * @param z1 Gets incremented by the height of the first corner of the edge. (near corner wrt. the camera)
+ * @param z2 Gets incremented by the height of the second corner of the edge. (far corner wrt. the camera)
+ */
+void GetSlopeZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2)
+{
+ static const Slope corners[4][4] = {
+ /* corner | steep slope
+ * z1 z2 | z1 z2 */
+ {SLOPE_E, SLOPE_N, SLOPE_STEEP_E, SLOPE_STEEP_N}, // DIAGDIR_NE, z1 = E, z2 = N
+ {SLOPE_S, SLOPE_E, SLOPE_STEEP_S, SLOPE_STEEP_E}, // DIAGDIR_SE, z1 = S, z2 = E
+ {SLOPE_S, SLOPE_W, SLOPE_STEEP_S, SLOPE_STEEP_W}, // DIAGDIR_SW, z1 = S, z2 = W
+ {SLOPE_W, SLOPE_N, SLOPE_STEEP_W, SLOPE_STEEP_N}, // DIAGDIR_NW, z1 = W, z2 = N
+ };
+
+ 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 == corners[edge][2]) *z1 += TILE_HEIGHT; // z1 is highest corner of a steep slope
+ if (tileh == corners[edge][3]) *z2 += TILE_HEIGHT; // z2 is highest corner of a steep slope
+}
static Slope GetFoundationSlope(TileIndex tile, uint* z)
{
@@ -219,32 +245,34 @@
static bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here)
{
uint z;
- Slope slope = GetFoundationSlope(TILE_ADDXY(tile, 0, -1), &z);
- return
- (
- z_here + (slope_here & SLOPE_N ? TILE_HEIGHT : 0) + (slope_here == SLOPE_STEEP_N ? TILE_HEIGHT : 0) >
- z + (slope & SLOPE_E ? TILE_HEIGHT : 0) + (slope == SLOPE_STEEP_E ? TILE_HEIGHT : 0)
- ) || (
- z_here + (slope_here & SLOPE_W ? TILE_HEIGHT : 0) + (slope_here == SLOPE_STEEP_W ? TILE_HEIGHT : 0) >
- z + (slope & SLOPE_S ? TILE_HEIGHT : 0) + (slope == SLOPE_STEEP_S ? TILE_HEIGHT : 0)
- );
+ int z_W_here = z_here;
+ int z_N_here = z_here;
+ GetSlopeZOnEdge(slope_here, DIAGDIR_NW, &z_W_here, &z_N_here);
+
+ Slope slope = GetFoundationSlope(TILE_ADDXY(tile, 0, -1), &z);
+ int z_W = z;
+ int z_N = z;
+ GetSlopeZOnEdge(slope, DIAGDIR_SE, &z_W, &z_N);
+
+ return (z_N_here > z_N) || (z_W_here > z_W);
}
static bool HasFoundationNE(TileIndex tile, Slope slope_here, uint z_here)
{
uint z;
- Slope slope = GetFoundationSlope(TILE_ADDXY(tile, -1, 0), &z);
- return
- (
- z_here + (slope_here & SLOPE_N ? TILE_HEIGHT : 0) + (slope_here == SLOPE_STEEP_N ? TILE_HEIGHT : 0) >
- z + (slope & SLOPE_W ? TILE_HEIGHT : 0) + (slope == SLOPE_STEEP_W ? TILE_HEIGHT : 0)
- ) || (
- z_here + (slope_here & SLOPE_E ? TILE_HEIGHT : 0) + (slope_here == SLOPE_STEEP_E ? TILE_HEIGHT : 0) >
- z + (slope & SLOPE_S ? TILE_HEIGHT : 0) + (slope == SLOPE_STEEP_S ? TILE_HEIGHT : 0)
- );
+ int z_E_here = z_here;
+ int z_N_here = z_here;
+ GetSlopeZOnEdge(slope_here, DIAGDIR_NE, &z_E_here, &z_N_here);
+
+ Slope slope = GetFoundationSlope(TILE_ADDXY(tile, -1, 0), &z);
+ int z_E = z;
+ int z_N = z;
+ GetSlopeZOnEdge(slope, DIAGDIR_SW, &z_E, &z_N);
+
+ return (z_N_here > z_N) || (z_E_here > z_E);
}
--- a/src/landscape.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/landscape.h Sat Oct 20 10:42:28 2007 +0000
@@ -25,6 +25,7 @@
uint GetPartialZ(int x, int y, Slope corners);
uint GetSlopeZ(int x, int y);
+void GetSlopeZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2);
static inline Point RemapCoords(int x, int y, int z)
{
--- a/src/lang/american.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/american.txt Sat Oct 20 10:42:28 2007 +0000
@@ -860,6 +860,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fund new industry
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...can only be built in towns
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...can only be built in rainforest areas
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...can only be built in desert areas
@@ -1047,6 +1048,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Road vehicle queueing (with quantum effects): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Pan window when mouse is at the edge: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Allow bribing of the local authority: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Allow buying exclusive transport rights: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Allow sending money to other companies: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Nonuniform stations: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}New global pathfinding (NPF, overrides NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Weight multiplier for freight to simulate heavy trains: {ORANGE}{STRING}
@@ -1187,6 +1190,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Proportion of towns that will grow twice as fast: {ORANGE}1 in {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Proportion of towns that will grow twice as fast: {ORANGE}None
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Initial city size multiplier: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Remove absurd road-elements during the road construction
STR_CONFIG_PATCHES_GUI :{BLACK}Interface
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Construction
@@ -2017,6 +2021,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Must demolish tunnel first
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Must demolish bridge first
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Cannot start and end on same position
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Bridge heads not at the same level
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bridge is too low for the terrain
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Start and end must be in line
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Site unsuitable for tunnel entrance
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2777,6 +2783,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}New {STRING} now available! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Can't sell destroyed vehicle...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Can't timetable vehicle...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vehicles can only wait at stations.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}This vehicle is not stopping at this station.
@@ -3380,3 +3388,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospect
STR_BUILD_NEW_INDUSTRY :{BLACK}Build
STR_INDUSTRY_SELECTION_HINT :{BLACK}Choose the appropriate industry from this list
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Advanced
+STR_FACE_ADVANCED_TIP :{BLACK}Advanced face selection.
+STR_FACE_SIMPLE :{BLACK}Simple
+STR_FACE_SIMPLE_TIP :{BLACK}Simple face selection.
+STR_FACE_LOAD :{BLACK}Load
+STR_FACE_LOAD_TIP :{BLACK}Load favorite face
+STR_FACE_LOAD_DONE :{WHITE}Your favorite face has been loaded from the OpenTTD config file.
+STR_FACE_FACECODE :{BLACK}Player face no.
+STR_FACE_FACECODE_TIP :{BLACK}View and/or set player face number
+STR_FACE_FACECODE_CAPTION :{WHITE}View and/or set player face number
+STR_FACE_FACECODE_SET :{WHITE}New face number code has been set.
+STR_FACE_FACECODE_ERR :{WHITE}Couldn't set player face number - must be numeric between 0 and 4,294,967,295!
+STR_FACE_SAVE :{BLACK}Save
+STR_FACE_SAVE_TIP :{BLACK}Save favorite face
+STR_FACE_SAVE_DONE :{WHITE}This face will be saved as your favorite in the OpenTTD config file.
+STR_FACE_EUROPEAN :{BLACK}European
+STR_FACE_SELECT_EUROPEAN :{BLACK}Select European faces
+STR_FACE_AFRICAN :{BLACK}African
+STR_FACE_SELECT_AFRICAN :{BLACK}Select African faces
+STR_FACE_YES :Yes
+STR_FACE_NO :No
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Enable mustache or earring
+STR_FACE_HAIR :Hair:
+STR_FACE_HAIR_TIP :{BLACK}Change hair
+STR_FACE_EYEBROWS :Eyebrows:
+STR_FACE_EYEBROWS_TIP :{BLACK}Change eyebrows
+STR_FACE_EYECOLOUR :Eye color:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Change eyecolor
+STR_FACE_GLASSES :Glasses:
+STR_FACE_GLASSES_TIP :{BLACK}Enable glasses
+STR_FACE_GLASSES_TIP_2 :{BLACK}Change glasses
+STR_FACE_NOSE :Nose:
+STR_FACE_NOSE_TIP :{BLACK}Change nose
+STR_FACE_LIPS :Lips:
+STR_FACE_MOUSTACHE :Mustache:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Change lips or mustache
+STR_FACE_CHIN :Chin:
+STR_FACE_CHIN_TIP :{BLACK}Change chin
+STR_FACE_JACKET :Jacket:
+STR_FACE_JACKET_TIP :{BLACK}Change jacket
+STR_FACE_COLLAR :Collar:
+STR_FACE_COLLAR_TIP :{BLACK}Change collar
+STR_FACE_TIE :Tie:
+STR_FACE_EARRING :Earring:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Change tie or earring
+########
--- a/src/lang/brazilian_portuguese.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/brazilian_portuguese.txt Sat Oct 20 10:42:28 2007 +0000
@@ -862,6 +862,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Financiar nova indústria
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...só pode ser construído em cidades
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...só pode ser construído em zonas florestais
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...só pode ser construído em áreas desérticas
@@ -1049,6 +1050,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Fila de automóveis (com efeitos de quantidade): {ORANGE}{STRING}
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_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}
@@ -1189,6 +1192,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Proporção de cidades que irão crescer duas vezes mais rápido: {ORANGE}1 em {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Proporção de cidades que irão crescer duas vezes mais rápido: {ORANGE}Nenhum
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Multiplicador do tamanho inicial da cidade: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Remover elementos de estrada absurdos ao construir ruas
STR_CONFIG_PATCHES_GUI :{BLACK}Interface
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Construção
@@ -2021,6 +2025,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Necessário demolir o túnel primeiro
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Necessário demolir a ponte primeiro
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Impossível iniciar e terminar no mesmo ponto
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Extremidades da ponte não estão no mesmo nível
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Ponte é muito baixa para o terreno
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Inicio e fim necessitam estar alinhados
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}O local não é adequado para a entrada do túnel
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2781,6 +2787,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novo {STRING} agora disponível! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Impossível vender veículo destruído...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Impossível programar veículo...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Veículos só podem aguardar em estações
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Esse veículo não pára nesta estação
@@ -3384,3 +3392,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prosperir
STR_BUILD_NEW_INDUSTRY :{BLACK}Construir
STR_INDUSTRY_SELECTION_HINT :{BLACK}Escolha a indústria apropriada
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Avançado
+STR_FACE_ADVANCED_TIP :{BLACK}Seleção de face avançada.
+STR_FACE_SIMPLE :{BLACK}Simples
+STR_FACE_SIMPLE_TIP :{BLACK}Seleção de face simples.
+STR_FACE_LOAD :{BLACK}Carregar
+STR_FACE_LOAD_TIP :{BLACK}Carregar face favorita
+STR_FACE_LOAD_DONE :{WHITE}Sua face favorita foi carregada do arquivo de configuração do OpenTTD.
+STR_FACE_FACECODE :{BLACK}Número da face do jogador.
+STR_FACE_FACECODE_TIP :{BLACK}Ver e/ou alterar número da face do jogador
+STR_FACE_FACECODE_CAPTION :{WHITE}Ver e/ou alterar número da face do jogador
+STR_FACE_FACECODE_SET :{WHITE}Novo código de número da face face foi alterado
+STR_FACE_FACECODE_ERR :{WHITE}Não pode alterar o número de face do jogador precisa ser um número entre 0 e 4,294,967,295!
+STR_FACE_SAVE :{BLACK}Salvar
+STR_FACE_SAVE_TIP :{BLACK}Salvar face favorita
+STR_FACE_SAVE_DONE :{WHITE}Esta face irá ser salva como sua face favorita no arquivo de configuração do OpenTTD.
+STR_FACE_EUROPEAN :{BLACK}Europeu
+STR_FACE_SELECT_EUROPEAN :{BLACK}Selecione faces européias
+STR_FACE_AFRICAN :{BLACK}Africano
+STR_FACE_SELECT_AFRICAN :{BLACK}Selecione faces africanas
+STR_FACE_YES :Sim
+STR_FACE_NO :Não
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Ativar bigode ou brinco
+STR_FACE_HAIR :Cabelo:
+STR_FACE_HAIR_TIP :{BLACK}Alterar cabelo
+STR_FACE_EYEBROWS :Sombrancelhas:
+STR_FACE_EYEBROWS_TIP :{BLACK}Alterar sombrancelhas
+STR_FACE_EYECOLOUR :Cor do olho:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Alterar cor do olho
+STR_FACE_GLASSES :Óculos:
+STR_FACE_GLASSES_TIP :{BLACK}Ativar óculos
+STR_FACE_GLASSES_TIP_2 :{BLACK}Alterar óculos
+STR_FACE_NOSE :Nariz:
+STR_FACE_NOSE_TIP :{BLACK}Alterar nariz
+STR_FACE_LIPS :Boca:
+STR_FACE_MOUSTACHE :Bigode:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Alterar boca ou bigode
+STR_FACE_CHIN :Queixo:
+STR_FACE_CHIN_TIP :{BLACK}Alterar queixo
+STR_FACE_JACKET :Casaco:
+STR_FACE_JACKET_TIP :{BLACK}Alterar casaco
+STR_FACE_COLLAR :Colarinho:
+STR_FACE_COLLAR_TIP :{BLACK}Alterar colarinho
+STR_FACE_TIE :Gravata:
+STR_FACE_EARRING :Brinco:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Alterar gravata ou brinco
+########
--- a/src/lang/bulgarian.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/bulgarian.txt Sat Oct 20 10:42:28 2007 +0000
@@ -862,6 +862,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Инвестирай в нова индустрия
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...може да бъде построено само в градовете
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...може да бъде построено само около и в джунглите
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...може да бъде построено само около и в пустините
@@ -1047,6 +1048,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Опашка на колите (със сумарен ефект): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Преместване на прозореца когато мишката е в края: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Подкупване на местната власт: {ORANGE}{STRING}
+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}
@@ -1105,6 +1108,9 @@
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :Изклучен
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Scrollwheel скорост на картата: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU :{LTBLUE}Дясно-щракане емулациа: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_COMMAND :Команда-щракане
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_CONTROL :Контрол-щракане
STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF :Изключен
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Автоматична пауза стартирайки нова игра: {ORANGE}{STRING}
@@ -1390,6 +1396,7 @@
STR_NETWORK_CLIENTS_SELECT :{BLACK}{SKIP}{SKIP}{NUM} клиент{P "" s}
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Макс. клиенти:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Избор на максималния брой клиенти. Не всички слотове трябва да се попълнят
+STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} компани{P а ий}
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Макс. компании:
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Ограничаване на играта до определен брой компании
STR_NETWORK_SPECTATORS_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} зрител{P "" s}
@@ -1626,8 +1633,11 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :ЖП линия с пре-сигнали
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :ЖП линия с изходни сигнали
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Железопътна линиа с комбинирани знаци
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Железопътна линиа с нормални и пре-сигнали
STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Железопътна линиа с нормални и изходни сигнали
STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Железопътна линиа с нормални и комбинирани знаци
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Железопътна линиа с пре- и изходни сигнали
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Железопътна линиа с пре- и комбинирани сигнали
STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Железопътна линиа с изходни и комбинирани знаци
STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Железопътната гара трябва да бъде премахната първо
@@ -2008,6 +2018,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Първо разрушете тунела
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Първо трябва да разрушите моста
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Не може да започва и да свърша на едно и също място
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Мостни начала не са на същото ниво
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Мостът е ту нисък за теренът
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Началото и краят трябва да са на една линия
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Мястото е неподходящо за вход на тунел
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2629,6 +2641,7 @@
STR_TIMETABLE_TRAVEL_FOR :Патувай за {STRING}
STR_TIMETABLE_STAY_FOR :и остани за {STRING}
STR_TIMETABLE_DAYS :{COMMA} ден{P "" s}
+STR_TIMETABLE_TICKS :{COMMA} щракане{P "" та}
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Отиващ към Влаковото депо на {TOWN}
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Отиващ към Влаковото депо на {TOWN}, {VELOCITY}
@@ -2767,6 +2780,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Нов {STRING} е на разположение! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Унищожено превозно средство не може да се продаде...
+
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Превозни средства могат да чакат само на гари.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Това превознот средство не спира на тази гара.
STR_TIMETABLE_CHANGE_TIME :{BLACK}Промени времето
@@ -2826,6 +2841,8 @@
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_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Пътно-транспортно Произшествие!{}Шофьор загина на място при екплозия на МПС след сблъсък с влак
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Пътно-транспортно Произшествие!{}{COMMA} загинаха на място при екплозия на МПС след сблъсък с влак
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Не може да обърнеш МПС-то...
@@ -3366,3 +3383,50 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Перспектива
STR_BUILD_NEW_INDUSTRY :{BLACK}Построи
STR_INDUSTRY_SELECTION_HINT :{BLACK}Избери правилната промишленост от следниат списък
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Hапреднат
+STR_FACE_ADVANCED_TIP :{BLACK}Напредната лице селекциа.
+STR_FACE_SIMPLE :{BLACK}Прост
+STR_FACE_SIMPLE_TIP :{BLACK}Проста лице селекциа.
+STR_FACE_LOAD :{BLACK}Зареди
+STR_FACE_LOAD_TIP :{BLACK}Зареди любимо лице
+STR_FACE_LOAD_DONE :{WHITE}Твоето любимо лице е заредено от OpenTTD config файлът.
+STR_FACE_FACECODE_TIP :{BLACK}Виж и/или избери номер на лицето на играчът
+STR_FACE_FACECODE_CAPTION :{WHITE}Виж и/или избери номер на лицето на играчът
+STR_FACE_FACECODE_SET :{WHITE}Нов номер на лицето е избран.
+STR_FACE_FACECODE_ERR :{WHITE}Нов номер на лицето неможе да бъде избран - трябва да бъде номер между 0 и 4,294,967,295!
+STR_FACE_SAVE :{BLACK}Запази
+STR_FACE_SAVE_TIP :{BLACK}Запази любимо лице
+STR_FACE_SAVE_DONE :{WHITE}Това лице ще бъде запазено като твоето любимо в OpenTTD config файлът.
+STR_FACE_EUROPEAN :{BLACK}Eвропеец
+STR_FACE_SELECT_EUROPEAN :{BLACK}Избери Европейски лица
+STR_FACE_AFRICAN :{BLACK}Aфриканец
+STR_FACE_SELECT_AFRICAN :{BLACK}Избери Африкански лица
+STR_FACE_YES :Дa
+STR_FACE_NO :He
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Позволи мустак или обица
+STR_FACE_HAIR :Kоса:
+STR_FACE_HAIR_TIP :{BLACK}Cмени kocaтa
+STR_FACE_EYEBROWS :Вежди:
+STR_FACE_EYEBROWS_TIP :{BLACK}Смени веждите
+STR_FACE_EYECOLOUR :Цвят на очи:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Смени цветът на очите
+STR_FACE_GLASSES :Oчила:
+STR_FACE_GLASSES_TIP :{BLACK}Позволи oчила
+STR_FACE_GLASSES_TIP_2 :{BLACK}Cмени очилатa
+STR_FACE_NOSE :Hoc:
+STR_FACE_NOSE_TIP :{BLACK}Cмени носът
+STR_FACE_LIPS :Устни:
+STR_FACE_MOUSTACHE :Mустак :
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Cмени устните или mустакът
+STR_FACE_CHIN :Брада:
+STR_FACE_CHIN_TIP :{BLACK}Cмени брадатa
+STR_FACE_JACKET :Cако:
+STR_FACE_JACKET_TIP :{BLACK}Cмени cakoтo
+STR_FACE_COLLAR :Яка:
+STR_FACE_COLLAR_TIP :{BLACK}Cмени якатa
+STR_FACE_TIE :Вратовръзкa:
+STR_FACE_EARRING :Oбица:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Cмени вратовръзкатa или oбицатa
+########
--- a/src/lang/catalan.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/catalan.txt Sat Oct 20 10:42:28 2007 +0000
@@ -860,6 +860,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Financia una nova indústria
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...només es pot construir en poblacions
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...només es pot construir en àrees de selva tropical
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...només es pot construir en àrees de desert
@@ -1047,6 +1048,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Cues d'automòbils (amb efectes quàntics): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Finestra d'avis quan el ratolí és al marc del programa: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Permet subornar a les autoritats locals: {ORANGE}{STRING}
+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}
@@ -1187,6 +1190,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Proporció de ciutats que creixeran el doble de ràpid: {ORANGE}1 de cada {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Proporció de ciutats que creixeran el doble de ràpid: {ORANGE}Cap
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Multiplicador de mida de ciutat inicial: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Treu els elements de carretera absurds durant la reconstrucció de carretera
STR_CONFIG_PATCHES_GUI :{BLACK}Interficie
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Construcció
@@ -2017,6 +2021,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Primer has d'enderrocar el túnel
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Primer has d'enderrocar el pont
STR_5008_CANNOT_START_AND_END_ON :{WHITE}No es pot començar i acabar a la mateixa posició
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Les capçaleres del pont no són al mateix nivell
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}El pont és massa baix pel terreny
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Inici i final han d'estar en línia recta
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Lloc inadequat per l'entrada del túnel
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2777,6 +2783,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nou/Nova {STRING} disponible! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}No es pot vendre el vehicle destruït...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Impossible establir l'horari del vehicle...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Els vehicles només poden esperar a les estacions.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Aquest vehicle no para en aquesta estació.
@@ -3380,3 +3388,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospecciona
STR_BUILD_NEW_INDUSTRY :{BLACK}Construeix
STR_INDUSTRY_SELECTION_HINT :{BLACK}Escolleix el tipus d'indústria adequada d'aquesta llista
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Avançat
+STR_FACE_ADVANCED_TIP :{BLACK}Selecció de cara avançada.
+STR_FACE_SIMPLE :{BLACK}Simple
+STR_FACE_SIMPLE_TIP :{BLACK}Selecció de cara simple.
+STR_FACE_LOAD :{BLACK}Carrega
+STR_FACE_LOAD_TIP :{BLACK}Carrega la cara preferida
+STR_FACE_LOAD_DONE :{WHITE}La teva cara preferida ha estat carregada des de l'arxiu de configuració d'OpenTTD.
+STR_FACE_FACECODE :{BLACK}Cara jugador nu.
+STR_FACE_FACECODE_TIP :{BLACK}Veure i/o assigna la cara del jugador número
+STR_FACE_FACECODE_CAPTION :{WHITE}Veure i/o assigna la cara del jugador número
+STR_FACE_FACECODE_SET :{WHITE}El número de la nova cara ha estat assignat.
+STR_FACE_FACECODE_ERR :{WHITE}No s'ha pogut assignar el número de cara del jugador - ha de ser un nombre entre 0 i 4,294,967,295!
+STR_FACE_SAVE :{BLACK}Desa
+STR_FACE_SAVE_TIP :{BLACK}Desa la cara preferida
+STR_FACE_SAVE_DONE :{WHITE}Aquesta cara serà desada com a preferida a l'arxiu de configuració d'OpenTTD.
+STR_FACE_EUROPEAN :{BLACK}Europea
+STR_FACE_SELECT_EUROPEAN :{BLACK}Selecciona cares europees
+STR_FACE_AFRICAN :{BLACK}Africana
+STR_FACE_SELECT_AFRICAN :{BLACK}Selecciona cares africanes
+STR_FACE_YES :Si
+STR_FACE_NO :No
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Activa el bigoti o les arracades
+STR_FACE_HAIR :Cabell:
+STR_FACE_HAIR_TIP :{BLACK}Canvia el cabell
+STR_FACE_EYEBROWS :Celles
+STR_FACE_EYEBROWS_TIP :{BLACK}Canvia les celles
+STR_FACE_EYECOLOUR :Color dels ulls:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Canvia el color del ulls:
+STR_FACE_GLASSES :Ulleres:
+STR_FACE_GLASSES_TIP :{BLACK}Activa les ulleres
+STR_FACE_GLASSES_TIP_2 :{BLACK}Canvia les ulleres
+STR_FACE_NOSE :Nas:
+STR_FACE_NOSE_TIP :{BLACK}Canvia el nas
+STR_FACE_LIPS :Llavis:
+STR_FACE_MOUSTACHE :Bigoti:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Canvia els llavis o el bigoti
+STR_FACE_CHIN :Barbeta:
+STR_FACE_CHIN_TIP :{BLACK}Canvia la barbeta
+STR_FACE_JACKET :Jaqueta:
+STR_FACE_JACKET_TIP :{BLACK}Canvia la jaqueta
+STR_FACE_COLLAR :Collaret:
+STR_FACE_COLLAR_TIP :{BLACK}Canvia el collaret
+STR_FACE_TIE :Corbata:
+STR_FACE_EARRING :Arracades:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Canvia la corbata o les arracades
+########
--- a/src/lang/croatian.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/croatian.txt Sat Oct 20 10:42:28 2007 +0000
@@ -1049,6 +1049,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Nizanje cestovnih vozila (s kvantnim učincima): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Pomakni prozor kada je miš na rubu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Dopusti potkupljivanje lokalne samouprave: {ORANGE}{STRING}
+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}
@@ -1189,6 +1191,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Omjer gradova koji će postati metropole: {ORANGE}1 u {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Omjer gradova koji će postati metropole: {ORANGE}Nijedan
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Početni množitelj veličine grada: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Ukloni apsurne cestovne elemente tijekom konstrukcije prometnica
STR_CONFIG_PATCHES_GUI :{BLACK}Sučelje
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Izgradnja
@@ -2019,6 +2022,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Najprije moraš srušiti tunel
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Najprije moraš srušiti most
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Početak i kraj ne mogu biti na istom mjestu
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Glave mosta nisu na istoj razini
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je prenizak za teren
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Početak i kraj moraju biti u ravnini
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Neprikladan teren za ulaz u tunel
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2779,6 +2784,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novi {STRING} je sada dostupan! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Ne mogu prodati uništeno vozilo...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Nije moguće rasporediti vozilo...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozila mogu čekati samo na stanicama.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Ovo vozilo se ne zaustavlja na ovoj stanici.
--- a/src/lang/czech.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/czech.txt Sat Oct 20 10:42:28 2007 +0000
@@ -1105,6 +1105,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Silniční vozidla stojí fronty (s kvantovým efektem): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Posouvat okno, když je kurzor na okraji: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Povolit úplatek místní správě: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Umožnit kupování výhradních přepravních práv: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Umožnit zasílání peněz ostatním společnostem: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Nejednolité stanice: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Nový globální algoritmus hledání cesty (NPF, nahradí NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Pro simulaci těžkých vlaků vynásobit hmotnost nákladu: {ORANGE}{STRING}x
@@ -1245,6 +1247,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Podíl měst, které budou růst dvakrát tak rychle: {ORANGE}1 z {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Podíl měst, které budou růst dvakrát tak rychle: {ORANGE}žádné
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Násobitel původní velikosti města: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Odstraňovat nesmyslné prvky vozovky při výstavbě silnic
STR_CONFIG_PATCHES_GUI :{BLACK}Ovládaní
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Výstavba
@@ -2841,6 +2844,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G á ý é} {STRING} k dispozici! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Nelze prodat zničené vozidlo...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Tomuto vozidlu nejde nastavit jízdní řád...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozidla mohou čekat jen ve stanicích.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Toto vozidlo v této stanici nestaví.
@@ -3334,7 +3339,7 @@
STR_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Snížit výšku ploché země o jednu úroveň
STR_FLAT_WORLD_HEIGHT_UP :{BLACK}Zvednout výšku ploché země o jednu úroveň
STR_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Změnit výšku ploché země
-STR_FLAT_WORLD_HEIGHT :{BLACK}Výška ploché zeme:
+STR_FLAT_WORLD_HEIGHT :{BLACK}Výška ploché země:
STR_FLAT_WORLD_HEIGHT_NUM :{NUM}
STR_SMALLMAP_CENTER :{BLACK}Vycentrovat malou mapu na tomto místě
--- a/src/lang/dutch.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/dutch.txt Sat Oct 20 10:42:28 2007 +0000
@@ -860,6 +860,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Betaal nieuwe industrie
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan alleen in steden gebouwd worden
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan alleen in het regenwoud gebouwd worden
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan alleen in woestijngebieden gebouwd worden
@@ -1047,6 +1048,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Rijvorming bij wegvoertuigen (met bijwerkingen): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Verschuif scherm als muis aan de rand is: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Omkopen van de gemeente toestaan: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Kopen van exclusieve transportrechten toestaan: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Geld geven aan andere bedrijven toestaan: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Vrij gevormde stations: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Nieuwe globale routeplanner (NPF, voorkeur over NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Gewichtsverhouding voor vracht om zware treinen te simuleren: {ORANGE}{STRING}
@@ -1187,6 +1190,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Verhouding van steden die twee keer zo snel groeien: {ORANGE}1 in {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Verhouding van steden die twee keer zo snel groeien: {ORANGE}Niet
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Stad groei indicator: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Verwijder rare weg-elementen tijdens het herbouwen van de weg
STR_CONFIG_PATCHES_GUI :{BLACK}Interface
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Constructie
@@ -2017,6 +2021,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Tunnel moet eerst afgebroken worden
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Brug moet eerst afgebroken worden
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Kan niet beginnen en eindigen op dezelfde plaats
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Begin van bruggen niet op hetzelfde niveau
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brug is de laag voor dit terrein
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Begin en einde moeten op een lijn staan
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Locatie ongeschikt voor ingang tunnel
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2777,6 +2783,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nieuw {STRING} nu beschikbaar! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Kan verwoest voertuig niet verkopen...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kan geen dienstregeling opzetten voor dit voertuig...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Voertuigen kunnen alleen wachten op stations.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Dit voertuig stopt niet op dit station
@@ -3380,3 +3388,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Onderzoek
STR_BUILD_NEW_INDUSTRY :{BLACK}Bouw
STR_INDUSTRY_SELECTION_HINT :{BLACK}Kies de aangewezen industrie van de lijst
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Geavanceerd
+STR_FACE_ADVANCED_TIP :{BLACK}Geavanceerde gezichtskeuze
+STR_FACE_SIMPLE :{BLACK}Eenvoudig
+STR_FACE_SIMPLE_TIP :{BLACK}Eenvoudige gezichtskeuze.
+STR_FACE_LOAD :{BLACK}Laden
+STR_FACE_LOAD_TIP :{BLACK}Laad favoriet gezicht
+STR_FACE_LOAD_DONE :{WHITE}Je favoriete gezicfht op geladen van het OpenTTD configuratie bestand.
+STR_FACE_FACECODE :{BLACK}Speler gezichtsnummer.
+STR_FACE_FACECODE_TIP :{BLACK}Bekijk en/of bewaar spelers gezichtsnummer
+STR_FACE_FACECODE_CAPTION :{WHITE}Bekijken en/of bewaar gezichtnummer
+STR_FACE_FACECODE_SET :{WHITE}Nieuw gezicht nummercode is opgeslagen.
+STR_FACE_FACECODE_ERR :{WHITE}Kon gezichtsnummer niet bewaren - het moet een nummer zijn tussen 0 en 4.294.967.295!
+STR_FACE_SAVE :{BLACK}Opslaan
+STR_FACE_SAVE_TIP :{BLACK}Sla favoriet gezicht op
+STR_FACE_SAVE_DONE :{WHITE}Dit gezicht wordt zal worden opgeslagen als jouw favoriet in het OpenTTD configuratie bestand.
+STR_FACE_EUROPEAN :{BLACK}Europeaan
+STR_FACE_SELECT_EUROPEAN :{BLACK}Kies europeaan gezicht
+STR_FACE_AFRICAN :{BLACK}Africaan
+STR_FACE_SELECT_AFRICAN :{BLACK}Kies africaans gezicht
+STR_FACE_YES :Ja
+STR_FACE_NO :Nee
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Activeer snor of oorbel
+STR_FACE_HAIR :Haar:
+STR_FACE_HAIR_TIP :{BLACK}Varander haar
+STR_FACE_EYEBROWS :Wenkbrauwen:
+STR_FACE_EYEBROWS_TIP :{BLACK}Verander wenkbrauwen
+STR_FACE_EYECOLOUR :Kleur ogen
+STR_FACE_EYECOLOUR_TIP :{BLACK}Verander kleur ogen
+STR_FACE_GLASSES :Bril:
+STR_FACE_GLASSES_TIP :{BLACK}Brillen aan
+STR_FACE_GLASSES_TIP_2 :{BLACK}Verander bril
+STR_FACE_NOSE :Neus:
+STR_FACE_NOSE_TIP :{BLACK}Verander neus
+STR_FACE_LIPS :Lippen:
+STR_FACE_MOUSTACHE :Snor:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Verander lippen of snor
+STR_FACE_CHIN :Kin:
+STR_FACE_CHIN_TIP :{BLACK}Verander kin
+STR_FACE_JACKET :Jas:
+STR_FACE_JACKET_TIP :{BLACK}Verander jas
+STR_FACE_COLLAR :Kraag:
+STR_FACE_COLLAR_TIP :{BLACK}Verander kraag
+STR_FACE_TIE :Stropdas:
+STR_FACE_EARRING :Oorbel:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Verander das of oorbel
+########
--- a/src/lang/english.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/english.txt Sat Oct 20 10:42:28 2007 +0000
@@ -860,6 +860,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fund new industry
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...can only be built in towns
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...can only be built in rainforest areas
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...can only be built in desert areas
@@ -2782,6 +2783,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}New {STRING} now available! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Can't sell destroyed vehicle...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Can't timetable vehicle...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vehicles can only wait at stations.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}This vehicle is not stopping at this station.
@@ -3385,3 +3388,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospect
STR_BUILD_NEW_INDUSTRY :{BLACK}Build
STR_INDUSTRY_SELECTION_HINT :{BLACK}Choose the appropriate industry from this list
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Advanced
+STR_FACE_ADVANCED_TIP :{BLACK}Advanced face selection.
+STR_FACE_SIMPLE :{BLACK}Simple
+STR_FACE_SIMPLE_TIP :{BLACK}Simple face selection.
+STR_FACE_LOAD :{BLACK}Load
+STR_FACE_LOAD_TIP :{BLACK}Load favourite face
+STR_FACE_LOAD_DONE :{WHITE}Your favourite face has been loaded from the OpenTTD config file.
+STR_FACE_FACECODE :{BLACK}Player face no.
+STR_FACE_FACECODE_TIP :{BLACK}View and/or set player face number
+STR_FACE_FACECODE_CAPTION :{WHITE}View and/or set player face number
+STR_FACE_FACECODE_SET :{WHITE}New face number code has been set.
+STR_FACE_FACECODE_ERR :{WHITE}Couldn't set player face number - must be numeric between 0 and 4,294,967,295!
+STR_FACE_SAVE :{BLACK}Save
+STR_FACE_SAVE_TIP :{BLACK}Save favourite face
+STR_FACE_SAVE_DONE :{WHITE}This face will be saved as your favourite in the OpenTTD config file.
+STR_FACE_EUROPEAN :{BLACK}European
+STR_FACE_SELECT_EUROPEAN :{BLACK}Select european faces
+STR_FACE_AFRICAN :{BLACK}African
+STR_FACE_SELECT_AFRICAN :{BLACK}Select african faces
+STR_FACE_YES :Yes
+STR_FACE_NO :No
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Enable moustache or earring
+STR_FACE_HAIR :Hair:
+STR_FACE_HAIR_TIP :{BLACK}Change hair
+STR_FACE_EYEBROWS :Eyebrows:
+STR_FACE_EYEBROWS_TIP :{BLACK}Change eyebrows
+STR_FACE_EYECOLOUR :Eye colour:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Change eyecolour
+STR_FACE_GLASSES :Glasses:
+STR_FACE_GLASSES_TIP :{BLACK}Enable glasses
+STR_FACE_GLASSES_TIP_2 :{BLACK}Change glasses
+STR_FACE_NOSE :Nose:
+STR_FACE_NOSE_TIP :{BLACK}Change nose
+STR_FACE_LIPS :Lips:
+STR_FACE_MOUSTACHE :Moustache:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Change lips or moustache
+STR_FACE_CHIN :Chin:
+STR_FACE_CHIN_TIP :{BLACK}Change chin
+STR_FACE_JACKET :Jacket:
+STR_FACE_JACKET_TIP :{BLACK}Change jacket
+STR_FACE_COLLAR :Collar:
+STR_FACE_COLLAR_TIP :{BLACK}Change collar
+STR_FACE_TIE :Tie:
+STR_FACE_EARRING :Earring:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Change tie or earring
+########
--- a/src/lang/estonian.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/estonian.txt Sat Oct 20 10:42:28 2007 +0000
@@ -252,7 +252,7 @@
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
STR_00B0_MAP :{WHITE}Kaart - {STRING}
-STR_00B1_GAME_OPTIONS :{WHITE}Mängu seaded
+STR_00B1_GAME_OPTIONS :{WHITE}Mängu valikud
STR_00B2_MESSAGE :{YELLOW}Sõnum
STR_00B3_MESSAGE_FROM :{YELLOW}{STRING} teatab
STR_POPUP_CAUTION_CAPTION :{WHITE}Ettevaatust!
@@ -407,7 +407,7 @@
STR_2048 :2048
STR_MAPSIZE :{BLACK}Kaardi suurus:
STR_BY :{BLACK}*
-STR_0148_GAME_OPTIONS :{BLACK}Mängu seaded
+STR_0148_GAME_OPTIONS :{BLACK}Mängu valikud
STR_0150_SOMEONE :keegi{SKIP}{SKIP}
STR_0151_MAP_OF_WORLD :Maailmakaart
@@ -551,7 +551,7 @@
STR_0184_BUILD_AIRPORTS :{BLACK}Ehita lennuvälju
STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}Puude istutamine, siltide paigaldamine jne.
STR_0186_LAND_BLOCK_INFORMATION :{BLACK}Maa-ala andmed
-STR_0187_OPTIONS :{BLACK}Seaded
+STR_0187_OPTIONS :{BLACK}Valikud
STR_0188 :{BLACK}{SMALLUPARROW}
STR_0189 :{BLACK}{SMALLDOWNARROW}
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Hooldusperioodi ei saa muuta...
@@ -685,8 +685,8 @@
STR_0200_LAST_MESSAGE_NEWS_REPORT :Viimane teade
STR_0201_MESSAGE_SETTINGS :Teadete seadistused
STR_MESSAGE_HISTORY_MENU :Teadete ajalugu
-STR_0203_SHOW_LAST_MESSAGE_NEWS :{BLACK}Näita viimast teadet, kuva teadete seaded
-STR_0204_MESSAGE_OPTIONS :{WHITE}Teadete seaded
+STR_0203_SHOW_LAST_MESSAGE_NEWS :{BLACK}Näita viimast teadet, kuva teadete valikud
+STR_0204_MESSAGE_OPTIONS :{WHITE}Teadete valikud
STR_0205_MESSAGE_TYPES :{BLACK}Teate tüüp:
STR_0206_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}Mängija jaama saabus esimene veovahend
STR_0207_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}Konkurendi jaama saabus esimene veovahend
@@ -873,10 +873,10 @@
STR_CHECKMARK :{CHECKMARK}
############ range for menu starts
-STR_02C3_GAME_OPTIONS :Mängu seaded
-STR_02C5_DIFFICULTY_SETTINGS :Raskusastme seaded
-STR_02C7_CONFIG_PATCHES :Paranduste seaded
-STR_NEWGRF_SETTINGS :Newgrf seaded
+STR_02C3_GAME_OPTIONS :Mängu valikud
+STR_02C5_DIFFICULTY_SETTINGS :Raskusastme seadistused
+STR_02C7_CONFIG_PATCHES :Seadista paikasid
+STR_NEWGRF_SETTINGS :NewGRF seadistused
STR_TRANSPARENCY_OPTIONS :Läbipaistvuse valikud
STR_GAMEOPTMENU_0A :
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Näidatavad linnanimed
@@ -940,8 +940,8 @@
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Loo oma mängukaart
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Vali üksikmäng
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Vali 2-8 mängijaga mitmikmäng
-STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Näita mängu seadeid
-STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Vaata raskusastmete seadeid
+STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Kuva mängu valikuid
+STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Kuva raskusastmete valikuid
STR_0303_START_A_NEW_GAME_USING :{BLACK}Alusta omatehtud stsenaariumit kasutades uut mängu
STR_0304_QUIT :{BLACK}Välju
STR_0305_QUIT_OPENTTD :{BLACK}Välju 'OpenTTD'st
@@ -1033,18 +1033,18 @@
STR_OPTIONS_LANG :{BLACK}Keel
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_OPTIONS_LANG_TIP :{BLACK}Mängus kasutatava keele valik
+STR_OPTIONS_LANG_TIP :{BLACK}Vali kasutajaliideses kasutatav keel
STR_OPTIONS_FULLSCREEN :{BLACK}Täisekraan
-STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Märgistades selle kasti, toimub mäng täisekraanis
+STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Märgi see kast, et OpenTTD täisekraanirežiimis mängida
-STR_OPTIONS_RES :{BLACK}Kuvari eraldusvõime
+STR_OPTIONS_RES :{BLACK}Ekraanilahutus
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_OPTIONS_RES_TIP :{BLACK}Kuvari eraldusvõime valimine
+STR_OPTIONS_RES_TIP :{BLACK}Ekraanilahutuse valimine
-STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Ekraanitõmmise formaat
+STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Ekraanipildi vorming
STR_OPTIONS_SCREENSHOT_FORMAT_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Valik, millises formaadis salvestatakse ekraanitõmmis
+STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Vali kasutatav ekraanipildi vorming
STR_AUTOSAVE_1_MONTH :Iga kuu
STR_AUTOSAVE_FAILED :{WHITE}Isesalvestus ebaõnnestus
@@ -1112,9 +1112,9 @@
STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Õhusõiduki iseuuendamine ebaõnnestus{COMMA} (rahapiirang)
STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}Rong {COMMA} on peale asendust liiga pikk
-STR_CONFIG_PATCHES :{BLACK}Paranduste seaded
-STR_CONFIG_PATCHES_TIP :{BLACK}Paranduste seadistamine
-STR_CONFIG_PATCHES_CAPTION :{WHITE}Paranduste seaded
+STR_CONFIG_PATCHES :{BLACK}Seadista paikasid
+STR_CONFIG_PATCHES_TIP :{BLACK}Seadista paikasid
+STR_CONFIG_PATCHES_CAPTION :{WHITE}Seadista paikasid
STR_CONFIG_PATCHES_OFF :Väljas
STR_CONFIG_PATCHES_ON :Sees
@@ -1147,6 +1147,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Mootorsõidukite järjekorrad (koos mahueffektidega): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Keri vaadet, kui hiir on viidud ekraani serva: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Luba kohalikule omavalitsusele altkäemaksu maksmine: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Luba eksklusiivseid veoõiguseid osta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Luba teistele ettevõtetele raha saata: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Luba suvalise kujuga jaamad: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Uus trassi otsimise algoritm(NPF asendab NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Raskete rongide simuleerimiseks kasutatav raskuse korrutaja: {ORANGE}{STRING}
@@ -1188,7 +1190,7 @@
STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE :Päevapidi
STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Kõrguse level kui kõrgele lapik kaart läheb: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Suurim jaama ala: {ORANGE}{STRING} {RED}Hoiatus: kõrged seaded aeglustavad mängu
+STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Suurim jaama ala: {ORANGE}{STRING} {RED}Hoiatus: kõrged seadistused aeglustavad mängu
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Hoolda maandumisplatsidel ise helikoptereid: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Liida maastikuriba raudtee/tee/vee/lennujaamade tööriistaribaga: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Kui kerid hiirega, liiguta vaade vastassuunda: {ORANGE}{STRING}
@@ -1287,6 +1289,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Topeltkiirusel kasvavaid linnu: {ORANGE}1 iga {STRING} linna kohta
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Topeltkiirusel kasvavaid linnu: {ORANGE}puudub
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Algne linna suuruse kordaja: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Eemalda teedeehituse ajal esinevad tarbetud elemendid
STR_CONFIG_PATCHES_GUI :{BLACK}Välimus
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Ehitamine
@@ -3144,9 +3147,9 @@
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Selle ettevõtte kogulaen
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Kokku punkte võimalikest punktidest
-STR_NEWGRF_SETTINGS_BUTTON :{BLACK}NewGRF seaded
+STR_NEWGRF_SETTINGS_BUTTON :{BLACK}NewGRF seadistused
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Uue graafika sätted
-STR_NEWGRF_APPLY_CHANGES :{BLACK}Kinnita sätted
+STR_NEWGRF_APPLY_CHANGES :{BLACK}Rakenda muudatused
STR_NEWGRF_SET_PARAMETERS :{BLACK}Vali parameetrid
STR_NEWGRF_TIP :{BLACK}Nimekiri kõikidest uue graafika sätted mida oled installeerinud. Vajuta komplektile et vahetada sätteid
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Sa ei ole installeerinud ühtegi uue graafika komplekti! Vaata õpetust et vaadata juhendit uue graafika installeerimisek
--- a/src/lang/french.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/french.txt Sat Oct 20 10:42:28 2007 +0000
@@ -861,6 +861,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Financer une nouvelle industrie
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...peut seulement être construit en ville
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...peut seulement être construit en forêt tropicale
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...peut seulement être construit dans les endroits désertiques
@@ -1048,6 +1049,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Mise en file Véhicules Routiers (+ effets quantiques): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Défiler la vue horizontalement avec le pointeur: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Permettre la corruption de la municipalité: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Autoriser l'achat des droits de transports exclusifs: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Autoriser l'envoi d'argent aux autres compagnies: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Gares non uniformes: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Nouvelle recherche de chemin global (NPF, écrase NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Multiplier le poid pour les trains fret (simule des trains lourds): {ORANGE}{STRING}
@@ -1188,6 +1191,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Proportion des villes qui deviendront des métropoles: {ORANGE}1 sur {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Proportion des villes qui deviendront des métropoles: {ORANGE}Aucune
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Multiplicateur de taille de ville initial: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Retirer les éléments absurdes pendant la reconstruction des routes
STR_CONFIG_PATCHES_GUI :{BLACK}Interface
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Construction
@@ -2018,6 +2022,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Vous devez d'abord démolir le tunnel
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Vous devez d'abord démolir le pont
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Impossible de commencer et de terminer au même endroit
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Les extrémités du pont ne sont pas au même niveau
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Le pont est trop bas pour le terrain
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Le début et la fin doivent être alignés
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Le site pour l'entrée du tunnel ne convient pas
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2778,6 +2784,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nouv{G eau el elle} {STRING} disponible! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Impossible de vendre le véhicule détruit...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Impossible d'affecter un horaire au véhicule...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Les véhicules ne peuvent attendre qu'aux stations.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Ce véhicule ne s'arrête pas à cette station.
@@ -3381,3 +3389,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospecter
STR_BUILD_NEW_INDUSTRY :{BLACK}Construire
STR_INDUSTRY_SELECTION_HINT :{BLACK}Choisissez l'industrie appropriée dans cette liste
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Avancé
+STR_FACE_ADVANCED_TIP :{BLACK}Sélection avancée du visage.
+STR_FACE_SIMPLE :{BLACK}Simple
+STR_FACE_SIMPLE_TIP :{BLACK}Sélection simple du visage.
+STR_FACE_LOAD :{BLACK}Charger
+STR_FACE_LOAD_TIP :{BLACK}Charger visage favori
+STR_FACE_LOAD_DONE :{WHITE}Votre visage favori a été chargé depuis le fichier de configuration d'OpenTTD.
+STR_FACE_FACECODE :{BLACK}No. de visage
+STR_FACE_FACECODE_TIP :{BLACK}Voir et/ou définir le numéro de visage
+STR_FACE_FACECODE_CAPTION :{WHITE}Voir et/ou définir le numéro de visage
+STR_FACE_FACECODE_SET :{WHITE}Le nouveau numéro de visage a été défini.
+STR_FACE_FACECODE_ERR :{WHITE}Impossibe de définir le numéro de visage - doit être un nombre entre 0 et 4.294.967.295!
+STR_FACE_SAVE :{BLACK}Enregistrer
+STR_FACE_SAVE_TIP :{BLACK}Enregistrer visage favori
+STR_FACE_SAVE_DONE :{WHITE}Ce visage sera enregistré comme favori dans le fichier de configuration d'OpenTTD.
+STR_FACE_EUROPEAN :{BLACK}Européen
+STR_FACE_SELECT_EUROPEAN :{BLACK}Choisir les visages européens
+STR_FACE_AFRICAN :{BLACK}Africain
+STR_FACE_SELECT_AFRICAN :{BLACK}Choisir les visages africains
+STR_FACE_YES :Oui
+STR_FACE_NO :Non
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Activer la moustache ou la boucle d'oreille
+STR_FACE_HAIR :Cheveux:
+STR_FACE_HAIR_TIP :{BLACK}Modifier les cheveux
+STR_FACE_EYEBROWS :Yeux:
+STR_FACE_EYEBROWS_TIP :{BLACK}Modifier les yeux
+STR_FACE_EYECOLOUR :Couleur des yeux:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Modifier la couleur des yeux
+STR_FACE_GLASSES :Lunettes:
+STR_FACE_GLASSES_TIP :{BLACK}Activer les lunettes
+STR_FACE_GLASSES_TIP_2 :{BLACK}Modifier les lunettes
+STR_FACE_NOSE :Nez:
+STR_FACE_NOSE_TIP :{BLACK}Modifier le nez
+STR_FACE_LIPS :Lèvres:
+STR_FACE_MOUSTACHE :Moustache:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Modifier les lèvres ou la moustache
+STR_FACE_CHIN :Menton:
+STR_FACE_CHIN_TIP :{BLACK}Modifier le menton
+STR_FACE_JACKET :Veste:
+STR_FACE_JACKET_TIP :{BLACK}Modifier la veste
+STR_FACE_COLLAR :Col:
+STR_FACE_COLLAR_TIP :{BLACK}Modifier le col
+STR_FACE_TIE :Cravate:
+STR_FACE_EARRING :Boucle d'oreille:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Modifier la cravate ou la boucle d'oreille
+########
--- a/src/lang/hungarian.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/hungarian.txt Sat Oct 20 10:42:28 2007 +0000
@@ -926,6 +926,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Új gazdasági épület
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...csak városban építhető
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...csak esőerdőben építhető
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...csak sivatagban építhető
@@ -1113,6 +1114,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Közúti járművek sorbanállása (quantum effektektus): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Ablakmozgatás, ha az egér a képernyő szélén van: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Önkormányzatok lefizethetősége: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Lehessen exkluzív szállítási jogot venni: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Lehessen más vállalatoknak pénzt küldeni: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Különböző vágánytípusok engedélyezése egy állomáson: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Új útvonalkereső (NPF, felülbírálja az NTP-t): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Tömegszorzó tehervonatoknak (szimulációs célból): {ORANGE}{STRING}
@@ -1253,6 +1256,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Dupla gyorsan növekvő városok aránya: {ORANGE}{STRING} városból 1
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Dupla gyorsan növekvő városok aránya: {ORANGE}Nincsennek
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Kezdeti városméret-szorzó: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Abszurd útrészletek útépítés közbeni eltávolítása
STR_CONFIG_PATCHES_GUI :{BLACK}Megjelenítés
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Építkezés
@@ -2120,6 +2124,7 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Előbb le kell rombolnod az alagutat
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Előbb le kell rombolnod a hidat
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Nem kezdődhet és végződhet ugyanott
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}A híd túl alacsony a terepre
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}A kezdetének és a végének egy vonalban kell lennie
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Nem alkalmas a hely alagút bejáratának
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2880,6 +2885,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Új {STRING} elérhető! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}A megsemmisült jármű nem eladható...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}A jármű nem időzíthető
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}A járművek csak az állomáson várakozhatnak
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Ez a jármű nem áll meg ezen az állomáson
@@ -3483,3 +3490,33 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Támogat
STR_BUILD_NEW_INDUSTRY :{BLACK}Épít
STR_INDUSTRY_SELECTION_HINT :{BLACK}Válaszd ki a megfelelő ipartípust a listából
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Fejlett
+STR_FACE_ADVANCED_TIP :{BLACK}Fejlett arcválasztó.
+STR_FACE_SIMPLE :{BLACK}Egyszerű
+STR_FACE_SIMPLE_TIP :{BLACK}Egyszerű arcválasztó.
+STR_FACE_LOAD :{BLACK}Betölt
+STR_FACE_LOAD_TIP :{BLACK}Kedvenc arcd betöltése
+STR_FACE_LOAD_DONE :{WHITE}A kedvenc arcod az OpenTTD konfig-fájlból be lett töltve.
+STR_FACE_FACECODE :{BLACK}Játékos arc szám
+STR_FACE_SAVE :{BLACK}Mentés
+STR_FACE_SAVE_TIP :{BLACK}Kedvenc arc elmentése
+STR_FACE_SAVE_DONE :{WHITE}Ez az arc mint a kedvenc arcod fog az OpenTTD konfig-fájlba elmentődni.
+STR_FACE_EUROPEAN :{BLACK}Európai
+STR_FACE_AFRICAN :{BLACK}Afrikai
+STR_FACE_YES :Igen
+STR_FACE_NO :Nem
+STR_FACE_HAIR :Haj:
+STR_FACE_HAIR_TIP :{BLACK}Haj váltása
+STR_FACE_GLASSES :Szemüveg:
+STR_FACE_GLASSES_TIP :{BLACK}Szemüveg engedélyezése
+STR_FACE_GLASSES_TIP_2 :{BLACK}Szemüveg váltása
+STR_FACE_NOSE :Orr:
+STR_FACE_NOSE_TIP :{BLACK}Orr váltása
+STR_FACE_LIPS :Ajkak:
+STR_FACE_MOUSTACHE :Bajusz:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Ajkak vagy bajusz váltása
+STR_FACE_CHIN :Ál:
+STR_FACE_CHIN_TIP :{BLACK}Ál váltása
+########
--- a/src/lang/italian.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/italian.txt Sat Oct 20 10:42:28 2007 +0000
@@ -862,6 +862,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Finanzia nuova industria
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...può essere costruita solo in città
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...può essere costruita solo nella foresta pluviale
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...può essere costruita solo in aree desertiche
@@ -1049,6 +1050,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Accodamento automezzi fuori da una stazione occupata: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Scorri la visuale quando il mouse è su un bordo: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Consenti la corruzione dell'autorità locale: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Consenti l'acquisto dell'esclusiva sui trasporti: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Consenti l'invio di denaro ad altre compagnie: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Stazioni non uniformi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Nuovo pathfinding globale (NPF, sovrascrive NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Moltiplicatore di peso per simulare treni merci pesanti: {ORANGE}{STRING}
@@ -1189,6 +1192,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Città che diventeranno metropoli: {ORANGE}1 su {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Città che diventeranno metropoli: {ORANGE}Nessuna
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Moltiplicatore iniziale dimensioni metropoli: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Rimuovi segmenti isolati con la ricostruzione delle strade cittadine
STR_CONFIG_PATCHES_GUI :{BLACK}Interfaccia
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Costruzione
@@ -2019,6 +2023,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Bisogna demolire il tunnel prima
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Bisogna demolire il ponte prima
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Impossibile partire e finire nello stesso punto
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Le estremità del ponte non sono allo stesso livello
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Il ponte è troppo basso per il terreno
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Inizio e fine devono essere allineati
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Sito inadatto per l'entrata del tunnel
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2779,6 +2785,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nuov{G o a} {STRING} disponibile! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Impossibile vendere un veicolo distrutto...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Impossibile dare un orario al veicolo...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}I veicoli possono attendere solo alle stazioni.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Il veicolo non ferma a questa stazione.
@@ -3259,9 +3267,9 @@
STR_WORLD_GENERATION :{BLACK}Generazione mondo
STR_TREE_GENERATION :{BLACK}Generazione alberi
STR_UNMOVABLE_GENERATION :{BLACK}Generazione oggetti inamovibili
-STR_CLEARING_TILES :{BLACK}Generazione di aree brulle e rocciose
+STR_CLEARING_TILES :{BLACK}Generazione aree brulle e rocciose
STR_SETTINGUP_GAME :{BLACK}Impostazione partita
-STR_PREPARING_TILELOOP :{BLACK}Ciclo generazione riquadri del terreno
+STR_PREPARING_TILELOOP :{BLACK}Generazione riquadri del terreno
STR_PREPARING_GAME :{BLACK}Preparazione della partita
STR_DIFFICULTY_TO_CUSTOM :{WHITE}Questa azione ha cambiato il livello di difficolta in 'Personalizzata'
STR_SE_FLAT_WORLD :{WHITE}Pianeggiante
@@ -3382,3 +3390,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Esegui prospezione
STR_BUILD_NEW_INDUSTRY :{BLACK}Costruisci
STR_INDUSTRY_SELECTION_HINT :{BLACK}Selezionare l'industria appropriata dalla lista
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Avanzata
+STR_FACE_ADVANCED_TIP :{BLACK}Selezione avanzata della faccia
+STR_FACE_SIMPLE :{BLACK}Semplice
+STR_FACE_SIMPLE_TIP :{BLACK}Selezione semplice della faccia
+STR_FACE_LOAD :{BLACK}Carica
+STR_FACE_LOAD_TIP :{BLACK}Carica la faccia preferita
+STR_FACE_LOAD_DONE :{WHITE}La faccia preferita è stata caricata dal file di configurazione di OpenTTD
+STR_FACE_FACECODE :{BLACK}Numero faccia
+STR_FACE_FACECODE_TIP :{BLACK}Visualizza e/o imposta il numero della faccia del giocatore
+STR_FACE_FACECODE_CAPTION :{WHITE}Visualizza e/o imposta il numero della faccia
+STR_FACE_FACECODE_SET :{WHITE}Nuovo codice numerico faccia impostato
+STR_FACE_FACECODE_ERR :{WHITE}Impossibile impostare il numero della faccia - deve essere un numero fra 0 e 4.294.967.295!
+STR_FACE_SAVE :{BLACK}Salva
+STR_FACE_SAVE_TIP :{BLACK}Salva come faccia preferita
+STR_FACE_SAVE_DONE :{WHITE}La faccia corrente è stata salvata come preferita nel file di configurazione di OpenTTD
+STR_FACE_EUROPEAN :{BLACK}Europea
+STR_FACE_SELECT_EUROPEAN :{BLACK}Seleziona le facce europee
+STR_FACE_AFRICAN :{BLACK}Africana
+STR_FACE_SELECT_AFRICAN :{BLACK}Seleziona le facce africane
+STR_FACE_YES :Sì
+STR_FACE_NO :No
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Abilita i baffi o l'orecchino
+STR_FACE_HAIR :Capelli:
+STR_FACE_HAIR_TIP :{BLACK}Cambia i capelli
+STR_FACE_EYEBROWS :Sopracciglia:
+STR_FACE_EYEBROWS_TIP :{BLACK}Cambia le sopracciglia
+STR_FACE_EYECOLOUR :Colore occhi:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Cambia il colore degli occhi
+STR_FACE_GLASSES :Occhiali:
+STR_FACE_GLASSES_TIP :{BLACK}Abilita gli occhiali
+STR_FACE_GLASSES_TIP_2 :{BLACK}Cambia gli occhiali
+STR_FACE_NOSE :Naso:
+STR_FACE_NOSE_TIP :{BLACK}Cambia il naso
+STR_FACE_LIPS :Labbra:
+STR_FACE_MOUSTACHE :Baffi:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Cambia le labbra o i baffi
+STR_FACE_CHIN :Mento:
+STR_FACE_CHIN_TIP :{BLACK}Cambia il mento
+STR_FACE_JACKET :Giacca:
+STR_FACE_JACKET_TIP :{BLACK}Cambia la giacca
+STR_FACE_COLLAR :Colletto:
+STR_FACE_COLLAR_TIP :{BLACK}Cambia il colletto
+STR_FACE_TIE :Cravatta:
+STR_FACE_EARRING :Orecchino:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Cambia la cravatta o l'orecchino
+########
--- a/src/lang/norwegian_bokmal.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/norwegian_bokmal.txt Sat Oct 20 10:42:28 2007 +0000
@@ -2,6 +2,7 @@
##ownname Norsk, bokmål
##isocode nb_NO
##plural 0
+##gender masculinum neutrium femininum
#
@@ -860,6 +861,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Finansier ny industri
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan kun bygges i byer
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan kun bygges i regnskogområder
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan kun bygges i ørkenområder
@@ -926,7 +928,7 @@
STR_CURR_SIT :Slovensk tolar (SIT)
STR_CURR_SEK :Svensk krone (SEK)
STR_CURR_YTL :Tyrkiske lire (YTL)
-STR_CURR_SKK :Slovakisk Koruna (SKK)
+STR_CURR_SKK :Slovakisk koruna (SKK)
STR_CURR_BRR :Brasiliansk Real (BRL)
STR_CURR_CUSTOM :Egendefinert...
@@ -1020,12 +1022,13 @@
STR_CONFIG_PATCHES_ON :På
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Vis kjøretøyets hastighet på statuslinja: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Tillat bygging på skråninger og i vannkanten: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AUTOSLOPE :{LTBLUE}Tillat landskapsendring under bygninger, spor, etc.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Mer realistisk størrelse på oppfangingsområder: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Tillat riving av industri, mer vei, etc: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Tillat bygging av veldig lange tog : {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Realistisk akslerasjon for tog: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_FORBID_90_DEG :{LTBLUE}Forby tog og skip mot å gjøre 90-graders svinger: {ORANGE}{STRING} {LTBLUE} (trenger NGR)
-STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Slå sammen stasjoner som blir bygget på siden av hverandre: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_FORBID_90_DEG :{LTBLUE}Forby tog og skip å gjøre 90-graders svinger: {ORANGE}{STRING} {LTBLUE} (trenger NGR)
+STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Slå sammen stasjoner som bygges ved siden av hverandre: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Forlat stasjonen når én type varevogn er full, hvis 'full last' er på: {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Bruk forbedret lastingsalgoritme: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GRADUAL_LOADING :{LTBLUE}Last kjøretøy gradvis: {ORANGE}{STRING}
@@ -1033,6 +1036,10 @@
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Lever varer til en stasjon bare når varen trengs: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Tillat bygging av veldig lange broer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Tillat 'gå til jernbanestall'-ordre: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Konstruksjonsmetode for manuell primærindustri: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ingen
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :som andre næringer
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospekterer
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Tillat flere like industrier i samme by: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Industrier av samme type kan bygges nær hverandre: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Vis alltid lang dato på statuslinjen: {ORANGE}{STRING}
@@ -1042,7 +1049,9 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Kjøretøykø (med kvantumseffekter): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Flytt på bildet hvis pilen er nær ytterkantene av skjermen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Tillat bestikkelser av bystyret: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Ikke-ensartede stasjoner: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Tillat kjøp av eksklusive transportrettigheter: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Tillat pengeoverføring til andre firmaer: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Uensartede stasjoner: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Ny global rutesøking (NGR, overstyrer NTK): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Vektmultiplikator for frakt til å simulere tunge tog: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Tillat gjennomkjøring av stoppesteder på veier som er eid av byene: {ORANGE}{STRING}
@@ -1061,16 +1070,16 @@
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Autoforny når kjøretøy er {ORANGE}{STRING}{LTBLUE} måneder før/etter maks alder
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Autoforny minimum penger trengst for fornying: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Varighet til feilmelding: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Vis byers befolkning i tittel: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Vis byers folketall i tittel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Usynlige trær (med gjennomsiktige bygninger): {ORANGE}{STRING}
STR_CONFIG_PATCHES_LAND_GENERATOR :{LTBLUE}Landskapsgenerator: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL :Orginal
STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
-STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE :{LTBLUE}Maksimum avstand fra kartkant for oljerafinerier {ORANGE}{STRING}
+STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE :{LTBLUE}Maks. avstand fra kartkant for oljeraffinerier: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Snøhøyde: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN :{LTBLUE}Ulendthet på terreng (kun TerraGenesis): {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Veldig levnt
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Veldig jevnt
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH :Jevnt
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH :Ulendt
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Veldig ulendt
@@ -1084,10 +1093,11 @@
STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Høyden et flatt scenariokart får: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maks stasjonspedning: {ORANGE}{STRING} {RED}Advarsel: Høy instilling gir tregere spill
-STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Utfør vedlikehold på helikopter automatisk på helikopterlandingsteder: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Automatisk vedlikehold ved helikopterlandingsteder: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Koble landskapsverktøylinja til tog-/vei-/vann- og flyplassverktøylinjene: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Ved rulling med musen, flytt synsvinkelen i den motsatte retning: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Vis et målings-verktøytips når forskjellige "build-tools" brukes: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Myk scrolling i ekstravindu: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Vis målingsverktøy ved bruk av byggingsverktøy: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Vis firmaovertakelser: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :Ingen
STR_CONFIG_PATCHES_LIVERIES_OWN :Eget firma
@@ -1098,9 +1108,33 @@
STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL :Rull kartet
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :Av
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Rullehjulets hastighet på kartet: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU :{LTBLUE}Høyreklikkemulasjon: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando-klikk
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl-klikk
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF :Av
+
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Pause automatisk ved start av nytt spill: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Bruk den avanserte kjøretøyslisten: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OFF :Av
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :Eget firma
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :Alle firmaer
+STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Bruk lastindikatorer: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LOADING_INDICATORS_OFF :Av
+STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :Eget firma
+STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :Alle firmaer
+STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Slå på tidstabeller for kjøretøyer: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Vis tidstabell i antall tikk heller enn i dager: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Standard jernbanetype: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :Vanlig jernbane
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :Elektrisk jernbane
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Énskinnebane
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :Maglev
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :Først tilgjengelig
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Sist tilgjengelig
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Mest brukt
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Vis byggingsverktøy når det ikke er noen tilgjengelige kjøretøy: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Maks antall tog per spiller: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Maks antall kjøretøy per spiller: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Maks antall fly per spiller: {ORANGE}{STRING}
@@ -1111,8 +1145,8 @@
STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Hindre datamaskinen i å bygge fly: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}Hindre datamaskinen i å bygge skip: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Aktiver ny AI (alfa): {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER :{LTBLUE}Tillat AI-spillere i flerspillermodus (eksperimentelt): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Aktiver ny kunstig intelligens (alfa): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER :{LTBLUE}Tillat ny kunstig intelligens i flerspillermodus (eksperimentelt): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Standard vedlikeholdsintervall for tog: {ORANGE}{STRING} dager
STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Standard vedlikeholdsintervall for tog: {ORANGE}deaktivert
@@ -1130,15 +1164,17 @@
STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}Start spillet i år: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Spillet slutter {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Jevn økonomi (flere mindre endringer)
-STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Tillat kjøping av aksjer i andre selskaper
-STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Ved opptrekking plasser signal hver: {ORANGE}{STRING} rute(r)
+STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Tillat aksjekjøp i andre selskaper
+STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Ved dra-og-slipp, plasser signal på hver {ORANGE}{STRING}. rute
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Bygg signalsystem med mast automatisk før: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID :{WHITE}Byutlegget «ingen flere veier» er ikke gyldig i scenariobyggeren
STR_CONFIG_PATCHES_TOWN_LAYOUT :{LTBLUE}Velg byvei-layout: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS :ingen flere veier
STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT :default
STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS :bedre veier
STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID :2x2 rutenett
+STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID :3x3-rutenett
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Plassering av hovedverktøylinje: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Venstre
@@ -1155,6 +1191,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Andel tettsteder som kommer til å bli byer: {ORANGE}1 av {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Andel tettsted som kommer til å bli byer: {ORANGE}Ingen
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Innledende bystørrelse multiplikator: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Fjern absurde veielementer under veikonstruksjon
STR_CONFIG_PATCHES_GUI :{BLACK}Grensesnitt
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Konstruksjon
@@ -1243,6 +1280,7 @@
STR_BUOY_IS_IN_USE :{WHITE}...bøye er i bruk!
+STR_LANDINFO_COORDS :{BLACK}Koordinater: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kan ikke fjerne del av stasjonen...
STR_CANT_CONVERT_RAIL :{WHITE}Kan ikke konvertere jernbanetype her...
@@ -1293,7 +1331,7 @@
STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Velg hvilken last lokomotivet skal ta
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Bygg om lokomotivet til å frakte den valgte varetypen
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Kan ikke bygge om lokomotiv...
-STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Vedlikeholdsintervaller er i prosent: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Vedlikeholdsintervaller i prosent: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Endre produksjon
TEMP_AI_IN_PROGRESS :{WHITE}Velkommen til denne nye AI, under konstruksjon. Du kan vente deg problemer. Når du finner ett problem, lag ett skjermbilde av det og post det i forumet. Mor deg!
@@ -1353,18 +1391,23 @@
STR_NETWORK_PASSWORD_TIP :{BLACK}Beskytt ditt spill med et passord hvis du ikke vil at hvem som helst skal bli med på det
STR_NETWORK_SELECT_MAP :{BLACK}Velg et kart:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Hvilket kart vil du spille?
-STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maksimalt antall tillatte klienter
-STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Velg maksimalt antall klienter. Alle plassene trenger ikke bli tatt.
+STR_NETWORK_LAN_INTERNET_COMBO :{BLACK}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internett
STR_NETWORK_LAN_INTERNET :LAN / Internett
STR_NETWORK_INTERNET_ADVERTISE :Internett (annonser)
+STR_NETWORK_CLIENTS_SELECT :{BLACK}{SKIP}{SKIP}{NUM} klient{P "" er}
+STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maksimalt antall tillatte klienter
+STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Velg maksimalt antall klienter. Alle plassene trenger ikke bli tatt.
+STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} firma{P "" er}
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Maks. antall firmaer:
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Begrens tjeneren til et bestemt antall firmaer
+STR_NETWORK_SPECTATORS_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} tilskuer{P "" e}
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Maks antall tilskuere
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Begrens tjeneren til et bestemt antall tilskuere
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Språk snakket på tjeneren:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Andre spillere skal kunne vite hvilket språk man snakker på denne tjeneren.
+STR_NETWORK_LANGUAGE_COMBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_START_GAME :{BLACK}Start spill
STR_NETWORK_START_GAME_TIP :{BLACK}Start et nytt nettverksspill fra en tilfeldig bane, eller scenario
STR_NETWORK_LOAD_GAME :{BLACK}Last spill
@@ -1375,12 +1418,20 @@
STR_NETWORK_LANG_ENGLISH :Engelsk
STR_NETWORK_LANG_GERMAN :Tysk
STR_NETWORK_LANG_FRENCH :Fransk
+STR_NETWORK_LANG_BRAZILIAN :Brasiliansk
+STR_NETWORK_LANG_BULGARIAN :Bulgarsk
+STR_NETWORK_LANG_CHINESE :Kinesisk
+STR_NETWORK_LANG_CZECH :Tsjekkisk
+STR_NETWORK_LANG_DANISH :Dansk
+STR_NETWORK_LANG_DUTCH :Nederlandsk
+STR_NETWORK_LANG_ESPERANTO :Esperanto
STR_NETWORK_LANG_FINNISH :Finsk
STR_NETWORK_LANG_HUNGARIAN :Ungarsk
STR_NETWORK_LANG_ICELANDIC :Islandsk
STR_NETWORK_LANG_ITALIAN :Italiensk
STR_NETWORK_LANG_JAPANESE :Japanesisk
STR_NETWORK_LANG_KOREAN :Koreansk
+STR_NETWORK_LANG_LITHUANIAN :Litauisk
STR_NETWORK_LANG_NORWEGIAN :Norsk
STR_NETWORK_LANG_POLISH :Polsk
STR_NETWORK_LANG_PORTUGUESE :Portugisisk
@@ -1584,9 +1635,13 @@
STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS :Jernbanespor med normale signaler
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Jernbanespor med for-signaler
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Jernbanespor med forlat-signaler
+STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Jernbanespor med kombosignaler
STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Togbane med normale og pre-signaler
STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Togbane med normale og utgangs-signaler
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Jernbanespor med normale og kombosignaler
STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Togbane med pre- og utgangs-signaler
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Jernbanespor med pre- og kombosignaler
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Jernbanespor med utgangs- og kombosignaler
STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Må fjerne togbanestasjon først
@@ -1595,22 +1650,39 @@
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Må fjerne vei først
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Veiarbeid i gang
STR_1802_ROAD_CONSTRUCTION :{WHITE}Bygg vei
+STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Trikkekonstruksjon
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Velg brotype
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... enveiskjørte veier kan ikke ha kryss
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan ikke bygge vei her
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kan ikke bygge trikkespor her...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan ikke fjerne vei herfra...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kan ikke fjerne trikkespor herfra...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Retning for garasje
+STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Trikkestallretning
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kan ikke bygge garasje her...
-STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kan ikke bygge busstatsjon...
+STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Kan ikke bygge trikkestall her...
+STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kan ikke bygge busstasjon...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan ikke bygge lasteterminal...
+STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kan ikke bygge trikkestasjon for passasjerer...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kan ikke bygge trikkestasjon for frakt...
STR_180A_ROAD_CONSTRUCTION :Bygg vei
+STR_180A_TRAMWAY_CONSTRUCTION :Trikkesporkonstruksjon
STR_180B_BUILD_ROAD_SECTION :{BLACK}Bygg vei
+STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Bygg trikkestasjon
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bygg garasje (trengs for bygging og vedlikehold av kjøretøy)
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Bygg trikkevognstall (for kjøp og vedlikehold av kjøretøy)
STR_180D_BUILD_BUS_STATION :{BLACK}Bygg bussstasjon
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Bygg lasteterminal
+STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bygg trikkestasjon for passasjerer
+STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Bygg trikkestasjon for frakt
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Bygg bro
+STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Bygg bro for trikkespor
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Bygg tunnel
+STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Bygg tunnel for trikkespor
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Velg mellom bygging/fjerning for veibygging
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Velg mellom bygging/fjerning for trikkesporkonstruksjon
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Velg garasjens retning
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Velg trikkestallens retning
STR_1814_ROAD :Vei
STR_1815_ROAD_WITH_STREETLIGHTS :Vei med gatelykter
STR_1816_TREE_LINED_ROAD :Aveny
@@ -1618,6 +1690,8 @@
STR_1818_ROAD_RAIL_LEVEL_CROSSING :Jernbaneovergang
STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kan ikke fjerne busstasjonen...
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kan ikke fjerne godsstasjonen...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kan ikke fjerne trikkestasjon for passasjerer...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kan ikke fjerne trikkestasjon for frakt...
##id 0x2000
STR_2000_TOWNS :{WHITE}Byer
@@ -1660,16 +1734,16 @@
STR_2023_TRANSPORT_COMPANY_RATINGS :{BLACK}Vurdering av transportfirma:
STR_2024 :{YELLOW}{COMPANY} {COMPANYNUM}: {ORANGE}{STRING}
STR_2025_SUBSIDIES :{WHITE}Subsidier
-STR_2026_SUBSIDIES_ON_OFFER_FOR :{BLACK}Tilbudte subsidier:
+STR_2026_SUBSIDIES_ON_OFFER_FOR :{BLACK}Subsidietilbud:
STR_2027_FROM_TO :{ORANGE}{STRING} fra {STRING} til {STRING}
STR_2028_BY :{YELLOW} (innen {DATE_SHORT})
STR_202A_NONE :{ORANGE}Ingen
-STR_202B_SERVICES_ALREADY_SUBSIDISED :{BLACK}Tjenester som allerede er subsidiert:
+STR_202B_SERVICES_ALREADY_SUBSIDISED :{BLACK}Tjenester som allerede subsidieres:
STR_202C_FROM_TO :{ORANGE}{STRING} fra {STATION} til {STATION}{YELLOW} ({COMPANY}
STR_202D_UNTIL :{YELLOW}, inntil {DATE_SHORT})
-STR_202E_OFFER_OF_SUBSIDY_EXPIRED :{BLACK}{BIGFONT}Tilbud om subsidie har gått ut:{}{}{STRING} fra {STRING} til {STRING} vil ikke lenger være subsidiert.
-STR_202F_SUBSIDY_WITHDRAWN_SERVICE :{BLACK}{BIGFONT}Subsidie trukket tilbake:{}{}Transport av {STRING} fra {STATION} til {STATION} er ikke lenger subsidiert.
-STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Subsidie-tilbud:{}{}Første transport av {STRING} fra {STRING} til {STRING} vil være subsidiert i et år av bystyret!
+STR_202E_OFFER_OF_SUBSIDY_EXPIRED :{BLACK}{BIGFONT}Subsidietilbud har gått ut:{}{}{STRING} fra {STRING} til {STRING} subsidieres ikke lenger.
+STR_202F_SUBSIDY_WITHDRAWN_SERVICE :{BLACK}{BIGFONT}Subsidie trukket tilbake:{}{}Frakt av {STRING} fra {STATION} til {STATION} subsidieres ikke lenger.
+STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Subsidietilbud:{}{}Første frakt av {STRING} fra {STRING} til {STRING} vil subsidieres i et år av bystyret!
STR_2031_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsidie gitt til {COMPANY}!{}{}Transport av {STRING} fra {STATION} til {STATION} vil gi 50% mer inntekt i løpet av ett år!
STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsidie gitt til {COMPANY}!{}{}Transport av {STRING} fra {STATION} til {STATION} vil gi dobbelt så mye inntekt i løpet av et år!
STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsidie gitt til {COMPANY}!{}{}Transport av {STRING} fra {STATION} til {STATION} vil gi tippelt så mye inntekt i løpet av et år!
@@ -1782,8 +1856,12 @@
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} godtar nå {STRING} og {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Retning på bussterminal
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Retning på lasteterminal
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Retning for passasjertrikk
+STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Retning for frakttrikk
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Må rive bussterminal først
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Må rive lasteterminal først
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Må fjerne trikkestasjon for passasjerer først
+STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Må fjerne trikkestasjon for frakt først
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Stasjoner
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
STR_304A_NONE :{YELLOW}- Ingen -
@@ -1795,6 +1873,8 @@
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Velg hvor lang stasjonen skal være
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Velg retning på bussterminal
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Velg retning på lasteterminal
+STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Velg retning på trikkestasjon for passasjerer
+STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Velg retning på trikkestasjon for frakt
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Sentrer bildet på stasjonen
STR_3054_SHOW_STATION_RATINGS :{BLACK}Vis stasjonsvurdering
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Endre navnet til stasjonen
@@ -1816,7 +1896,7 @@
STR_3069_BUOY :Bøye
STR_306A_BUOY_IN_THE_WAY :{WHITE}...bøyen er i veien
STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...stasjonen er spredd for mye
-STR_306D_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...ikke-ensartede stasjoner deaktivert
+STR_306D_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...uensartede stasjoner deaktivert
STR_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold nede CTRL for å velge mer en en ting
STR_UNDEFINED :(udefinert streng)
@@ -1832,6 +1912,7 @@
STR_3805_COAST_OR_RIVERBANK :Kyst eller elvebredd
STR_3806_SHIP_DEPOT :Skipsdepot
STR_3807_CAN_T_BUILD_ON_WATER :{WHITE}...Kan ikke bygge på vann
+STR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}Må fjerne kanal først
##id 0x4000
STR_4000_SAVE_GAME :{WHITE}Lagre spill
@@ -1844,6 +1925,9 @@
STR_4007_GAME_SAVE_FAILED :{WHITE}Lagring av spillet mislyktes{}{STRING}
STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikke slette fil
STR_4009_GAME_LOAD_FAILED :{WHITE}Feil ved fremhenting av spill{}{STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern feil: {STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ødelagt lagret spill - {STRING}
+STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillet er lagret i en nyere versjon
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Kan ikke lese filen
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Kan ikke skrive til filen
STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Liste over disker, mapper og lagrede spill
@@ -1902,6 +1986,13 @@
STR_4829_REQUIRES :{BLACK}Trenger: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
+############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Gods som venter på behandling:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
+STR_4827_PRODUCES :{BLACK}Produserer: {YELLOW}{STRING}
+STR_4828_PRODUCES :{BLACK}Produserer: {YELLOW}{STRING}, {STRING}
+############ range for produces ends
+
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produksjon forrige måned:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA} % transportert)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Sentrer bildet på industriområdet
@@ -1910,9 +2001,9 @@
STR_482F_COST :{BLACK}Koster: {YELLOW}{CURRENCY}
STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Kan ikke bygge denne typen industri her...
STR_4831_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}...skog kan bare plantes over snøgrensen
-STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT}{INDUSTRY} offentliggjør umiddelbar nedleggelse!
-STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}Leveringsproblemer forårsaker {INDUSTRY} til å offentliggjøre umiddelbar nedleggelse!
-STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}Mangel på trær i nærheten får {INDUSTRY} til å offentliggjøre umiddelbar nedleggelse!
+STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT}{INDUSTRY} legger ned!
+STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}{INDUSTRY} legger ned etter leveringsproblemer
+STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}{INDUSTRY} legger ned grunnet tremangel
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{INDUSTRY} øker produksjonen!
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Ny kullåre funnet i {INDUSTRY}!{}En dobling i produksjonen er ventet!
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}Nye oljereserver funnet i {INDUSTRY}!{}En dobling i produksjonen er ventet!
@@ -1921,7 +2012,7 @@
STR_483A_INSECT_INFESTATION_CAUSES :{BLACK}{BIGFONT}Insektinvasjon på {INDUSTRY}!{}Produksjonen synker med 50 %
STR_483B_CAN_ONLY_BE_POSITIONED :{WHITE}...kan kun plasseres i nærheten av kartkanten
STR_INDUSTRY_PROD_GOUP :{BLACK}{BIGFONT}Produksjonen av {STRING} ved {INDUSTRY} øker med {COMMA} %!
-STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}Produksjonen av {STRING} ved {INDUSTRY} synker med {COMMA} %!
+STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}{STRING}produksjon ved {INDUSTRY} synker med {COMMA} %!
##id 0x5000
STR_5000_TRAIN_IN_TUNNEL :{WHITE}Tog i tunnelen
@@ -1931,6 +2022,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Må rive tunnel først
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Må rive bro først
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Kan ikke starte og slutte på samme felt
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Broender er ikke på samme nivå
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Broen er for lav for terrenget
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Start og slutt må være på linje
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Feltet er upassende for tunnelinngang
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2245,6 +2338,8 @@
STR_LIVERY_HELICOPTER :Helikopter
STR_LIVERY_SMALL_PLANE :Lite fly
STR_LIVERY_LARGE_PLANE :Stort fly
+STR_LIVERY_PASSENGER_TRAM :Passasjertrikk
+STR_LIVERY_FREIGHT_TRAM :Frakttrikk
STR_LIVERY_GENERAL_TIP :{BLACK}Vis generelle fargetemaer
STR_LIVERY_TRAIN_TIP :{BLACK}Vis togfargetemaer
@@ -2546,7 +2641,11 @@
STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Vedlikehold (uten å stoppe) ved {TOWN} togstall
STR_TIMETABLE_GO_TO :{STRING} {STRING}
+STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Reise (uten tidstabell)
+STR_TIMETABLE_TRAVEL_FOR :Reise for {STRING}
+STR_TIMETABLE_STAY_FOR :og bli værende i {STRING}
STR_TIMETABLE_DAYS :{COMMA} dag{P "" s}
+STR_TIMETABLE_TICKS :{COMMA} tikk
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Er på vei til {TOWN} togstall
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Er på vei til {TOWN} togstall, {VELOCITY}
@@ -2590,6 +2689,7 @@
STR_REFIT_TIP :{BLACK}Velg varetypen det skal endres til. CTRL-klikk for å omgjøre.
STR_REFIT_ORDER :(Bygg om til {STRING})
STR_TIMETABLE_VIEW :{BLACK}Tidstabell
+STR_TIMETABLE_VIEW_TOOLTIP :{BLACK}Bytt til tidstabellvisning
STR_8829_ORDERS :{WHITE}{VEHICLE} (Ordre)
STR_882A_END_OF_ORDERS :{SETX 10}- - Slutt på ordre - -
STR_FULLLOAD_OR_SERVICE :{SKIP}{SKIP}{STRING}
@@ -2640,11 +2740,16 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Vis kapasiteten til vognene
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Vis en total kapasitet på togene oppdelt etter godstype
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Ordreliste - trykk på en ordre for å velge den
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Hopp over den nåværende ordren og begynn på neste. CTRL + klikk hopper fram til valgte ordre
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Slett den valgte ordren
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Gjør den valgte ordren om til en
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Sett inn en ordre før den valgte ordren, eller i slutten av listen.
STR_8857_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Fyll alltid kjøretøyet ved valgte stasjon
STR_8858_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Tøm alltid kjøretøyet ved valgte stasjon
+STR_TIMETABLE_TOOLTIP :{BLACK}Tidstabell - klikk en ordre for å merke den.
+STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Endre varigheten for valgte ordre
+STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Fjern varigheten for valgte ordre
+STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Nullstill senhetstelleren slik at kjøretøyet ankommer i tide
STR_SERVICE_HINT :{BLACK}Hopp over ordren med mindre vedlikehold trengs.
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Koster: {CURRENCY} Vekt: {WEIGHT_S}{}Fart: {VELOCITY} Kraft: {POWER}{}Driftkostnader: {CURRENCY}/år{}Kapasitet: {CARGO}
STR_885C_BROKEN_DOWN :{RED}Havarert
@@ -2666,6 +2771,8 @@
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Kan ikke gi tog/vogn nytt navn...
STR_886D_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Få den merkede ordren til å tvinge kjøretøyet til å dumpe lasten
STR_886F_TRANSFER :{BLACK}Overfør
+STR_CLEAR_TIME :{BLACK}Nullstill tid
+STR_RESET_LATENESS :{BLACK}Nullstill senhetsteller
STR_TRAIN_STOPPING :{RED}Stopper
STR_TRAIN_STOPPING_VEL :{RED}Stopper, {VELOCITY}
@@ -2677,13 +2784,19 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Ny {STRING} Nå tilgjengelig! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Kan ikke selge ødelagt kjøretøy...
+
+STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kan ikke gi kjøretøy tidstabell...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Kjøretøy kan bare vente på stasjoner.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Dette kjøretøyet stopper ikke på denne stasjonen.
STR_TIMETABLE_CHANGE_TIME :{BLACK}Skift Tid
STR_TIMETABLE_STATUS_ON_TIME :Dette kjøretøyet går på tid
STR_TIMETABLE_STATUS_LATE :Dette kjøretøyet er {STRING} for sent ute
STR_TIMETABLE_STATUS_EARLY :Dette kjøretøyet er {STRING} for tidlig ute
+STR_TIMETABLE_TOTAL_TIME :Det vil ta {STRING} å fullføre tidstabellen
+STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :Det vil ta minst {STRING} å fullføre denne tidstabellen (tidstabell ikke fullstendig)
STR_TIMETABLE_AUTOFILL :{BLACK}Fyll automatisk
+STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fyll tidstabellen automatisk med verdiene fra forrige tur
##id 0x9000
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Kjøretøy i veien
@@ -2734,6 +2847,8 @@
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Navngi kjøretøy
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Innbyggerne jubler . . .{}Første buss ankommer {STATION}!
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Innbyggerne jubler . . .{}Første lastebil ankommer {STATION}!
+STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Borgerne jubler . . .{}Første passasjertrikk ankommer {STATION}!
+STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Borgerne jubler . . .{}Første frakttrikk ankommer {STATION}!
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Kollisjon!{}Sjåfør dør etter kollisjon med tog
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Kollisjon!{}{COMMA} dør etter kollisjon med tog
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Kan ikke snu...
@@ -2983,11 +3098,11 @@
STR_NEWGRF_NOT_FOUND :{RED}Ingen passende fil funnet
STR_NEWGRF_DISABLED :{RED}Deaktivert
-STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Matchende fil ikke funnet(kompatibel GRF lastet)
+STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Tilsvarende fil ikke funnet (kompatibel GRF lastet)
-STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatible GRF(er) lastet for manglene filer
-STR_NEWGRF_DISABLED_WARNING :{WHITE}Manglende GRF fil(er) har blitt avslått
-STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Mangler GRF fil(er) for å kunne laste spill
+STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}Kompatibel GRF lastet for manglende filer
+STR_NEWGRF_DISABLED_WARNING :{WHITE}Manglende GRF-fil(er) har blitt slått av
+STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Mangler GRF-fil(er) nødvendige for å laste spillet
STR_CURRENCY_WINDOW :{WHITE}Vanlig valuta
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Valutakurs: {ORANGE}{CURRENCY} = £ {COMMA}
@@ -3020,6 +3135,7 @@
### depot strings
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Du er nå i ferd med å selge alle kjøretøyene i depoet. Er du sikker på at du vil dette?
+STR_DEPOT_WRONG_DEPOT_TYPE :Gal stalltype
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Selg alle tog i depodet
STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}Selg alle kjøretøy i garasjen
@@ -3136,6 +3252,8 @@
STR_START_DATE_QUERY_CAPT :{WHITE}Endre startår
STR_HEIGHTMAP_SCALE_WARNING_CAPTION :{WHITE}Skalaadvarsel
STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}Å endre kildemapstørrelsen for mye er ikke anbefalt. Fortsette generering?
+STR_TOWN_LAYOUT_WARNING_CAPTION :{WHITE}Byutleggsadvarsel
+STR_TOWN_LAYOUT_WARNING_MESSAGE :{YELLOW}Byutlegget «ingen flere veier» anbefales ikke. Fortsette generering?
STR_SNOW_LINE_HEIGHT_NUM :{NUM}
STR_HEIGHTMAP_NAME :{BLACK}Høydekartnavn:
STR_HEIGHTMAP_SIZE :{BLACK}Størrelse: {ORANGE}{NUM} x {NUM}
@@ -3208,6 +3326,7 @@
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Skru på gjennomsiktighet for stasjoner, depoter, lokalstasjoner og skinner
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Skru på gjennomsiktighet for broer
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Skru på gjennomsiktighet for fyrtårn og antenner
+STR_TRANSPARENT_LOADING_DESC :{BLACK}Velg gjennomsiktighet for lastingsindikatorer
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
@@ -3223,26 +3342,33 @@
STR_GROUP_ALL_ROADS :Alle kjøretøyer
STR_GROUP_ALL_SHIPS :Alle båter
STR_GROUP_ALL_AIRCRAFTS :Alle flyfartøy
+STR_GROUP_DEFAULT_TRAINS :Ugrupperte tog
+STR_GROUP_DEFAULT_ROADS :Ugrupperte biler
+STR_GROUP_DEFAULT_SHIPS :Ugrupperte skip
+STR_GROUP_DEFAULT_AIRCRAFTS :Ugrupperte fly
STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
STR_GROUP_ADD_SHARED_VEHICLE :Legg til delte kjøretøy
STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle kjøretøy
-STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Tog{P "" s}
-STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Kjøretøy{P "" s}
-STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Skip{P "" s}
+STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} tog
+STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} kjøretøy
+STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} skip
STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Luftfartøy
STR_GROUP_RENAME_CAPTION :{BLACK}Gi nytt navn på gruppen
-STR_GROUP_REPLACE_CAPTION :{WHITE}Skift kjøretøyer i "{GROUP}"
+STR_GROUP_REPLACE_CAPTION :{WHITE}Skift ut kjøretøyer i "{GROUP}"
STR_GROUP_CAN_T_CREATE :{WHITE}Kan ikke opprette gruppe...
STR_GROUP_CAN_T_DELETE :{WHITE}Kan ikke slette denne gruppen...
STR_GROUP_CAN_T_RENAME :{WHITE}Kan ikke gi nytt navn på denne gruppen...
STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan ikke fjerne alle kjøretøy fra denne gruppen...
STR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan ikke legge til kjøretøy i denne grupppen...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan ikke legge til delte kjøretøyer i gruppa...
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}Grupper - Klikk en gruppe for å se alle kjøretøy i gruppa
+STR_GROUP_CREATE_TIP :{BLACK}Klikk for å opprette en gruppe
STR_GROUP_DELETE_TIP :{BLACK}Fjern den valgte gruppen
STR_GROUP_RENAME_TIP :{BLACK}Gi nytt navn på den valgte gruppen
-
+STR_GROUP_REPLACE_PROTECTION_TIP :{BLACK}Klikk for å beskytte denne gruppa fra global autoerstatting
STR_COMPANY_NAME :{COMPANY}
STR_ENGINE_NAME :{ENGINE}
@@ -3251,4 +3377,63 @@
STR_SIGN_NAME :{SIGN}
STR_VEHICLE_NAME :{VEHICLE}
+STR_NAME_MUST_BE_UNIQUE :{WHITE}Navn må være unikt
+
+#### Improved sign GUI
+STR_NEXT_SIGN_TOOLTIP :{BLACK}Gå til neste signal
+STR_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gå til forrige signal
+
########
+
+STR_FUND_NEW_INDUSTRY :{BLACK}Fond
+STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospekt
+STR_BUILD_NEW_INDUSTRY :{BLACK}Bygg
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Velg passende industri fra listen
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Avansert
+STR_FACE_ADVANCED_TIP :{BLACK}Avansert ansiktsvalg
+STR_FACE_SIMPLE :{BLACK}Enkelt
+STR_FACE_SIMPLE_TIP :{BLACK}Enkelt ansiktsvalg.
+STR_FACE_LOAD :{BLACK}Last
+STR_FACE_LOAD_TIP :{BLACK}Last favorittansikt
+STR_FACE_LOAD_DONE :{WHITE}Ditt favorittansikt har blitt lastet fra OpenTTDs konfigurasjonsfil.
+STR_FACE_FACECODE :{BLACK}Ansiktsnummer
+STR_FACE_FACECODE_TIP :{BLACK}Vis og/eller endre ansiktsnummer
+STR_FACE_FACECODE_CAPTION :{WHITE}Vis og/eller endre ansiktsnummer
+STR_FACE_FACECODE_SET :{WHITE}Ny ansiktsnummerkode har blitt fastsatt.
+STR_FACE_FACECODE_ERR :{WHITE}Kunne ikke endre ansiktsnummer - må være numerisk mellom 0 og 4 294 967 295!
+STR_FACE_SAVE :{BLACK}Lagre
+STR_FACE_SAVE_TIP :{BLACK}Lagre favorittansikt
+STR_FACE_SAVE_DONE :{WHITE}Dette ansiktet vil bli lagret som din favoritt i OpenTTDs konfigurasjonsfil.
+STR_FACE_EUROPEAN :{BLACK}Europeisk
+STR_FACE_SELECT_EUROPEAN :{BLACK}Velg europeiske ansikter
+STR_FACE_AFRICAN :{BLACK}Afrikansk
+STR_FACE_SELECT_AFRICAN :{BLACK}Velg afrikanske ansikter
+STR_FACE_YES :Ja
+STR_FACE_NO :Nei
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Slå på bart eller ørering
+STR_FACE_HAIR :Hår:
+STR_FACE_HAIR_TIP :{BLACK}Endre hår
+STR_FACE_EYEBROWS :Øyenbryn:
+STR_FACE_EYEBROWS_TIP :{BLACK}Endre øyenbryn
+STR_FACE_EYECOLOUR :Øyefarge:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Endre øyefarge
+STR_FACE_GLASSES :Briller:
+STR_FACE_GLASSES_TIP :{BLACK}Slå på briller
+STR_FACE_GLASSES_TIP_2 :{BLACK}Endre briller
+STR_FACE_NOSE :Nese:
+STR_FACE_NOSE_TIP :{BLACK}Endre nese
+STR_FACE_LIPS :Lepper:
+STR_FACE_MOUSTACHE :Bart:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Endre lepper eller bart
+STR_FACE_CHIN :Hake:
+STR_FACE_CHIN_TIP :{BLACK}Endre hake
+STR_FACE_JACKET :Jakke:
+STR_FACE_JACKET_TIP :{BLACK}Endre jakke
+STR_FACE_COLLAR :Krage:
+STR_FACE_COLLAR_TIP :{BLACK}Endre krage
+STR_FACE_TIE :Slips:
+STR_FACE_EARRING :Ørering:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Endre slips eller ørering
+########
--- a/src/lang/portuguese.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/portuguese.txt Sat Oct 20 10:42:28 2007 +0000
@@ -1103,8 +1103,15 @@
STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL :Percorrer mapa
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :Desligado
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Velocidade do scrollwheel no mapa: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_COMMAND :Clique para comando
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_CONTROL :Clique para controlo
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF :Desligado
+
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Pausa automática ao iniciar 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 :Sua companhia
STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Usar indicadores de carga: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Activar plano de horários para veículos: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Mostrar horário em tics em vez dias: {ORANGE}{STRING}
@@ -2759,6 +2766,7 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novo {STRING} agora disponível! - {ENGINE}
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Impossível programar veículo...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Veículos apenas podem esperar em estações.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Este veículo não pára nesta estação.
@@ -3362,3 +3370,6 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospectar
STR_BUILD_NEW_INDUSTRY :{BLACK}Construir
STR_INDUSTRY_SELECTION_HINT :{BLACK}Escolha a indústria apropriada desta lista
+
+############ Face formatting
+########
--- a/src/lang/russian.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/russian.txt Sat Oct 20 10:42:28 2007 +0000
@@ -862,6 +862,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Создать новое предприятие
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...можно строить только в городах
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...можно строить только в тропиках
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...можно строить только в пустыне
@@ -1022,6 +1023,7 @@
STR_CONFIG_PATCHES_ON :да
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Показывать скорость в панели статуса транспорта: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Разрешить строительство на склонах и на берегу: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AUTOSLOPE :{LTBLUE}Разрешить терраформ. под зданиями, дорогами и т.д.. (автоспуски): {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Зона покрытия зависит от типа станции: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Разрешить снос (почти) всех городских объектов: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Разрешить очень длинные поезда: {ORANGE}{STRING}
@@ -1048,6 +1050,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Автотранспорт строится в очередь у станции: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Смещать обзор, когда курсор находится у края экрана: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Разрешить подкупать муниципальную власть: {ORANGE}{STRING}
+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 (замена оригинального): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Множитель увеличения веса груза для товарных поездов: {ORANGE}{STRING}
@@ -1188,6 +1192,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Соотношение городов, которые растут вдвое быстрее: {ORANGE}1 из {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Соотношение городов, которые растут вдвое быстрее: {ORANGE}Выкл.
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Изначальный множитель размера города: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Удалять абсурдные элементы дорог во время строительства
STR_CONFIG_PATCHES_GUI :{BLACK}Интерфейс
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Строительство
@@ -2018,6 +2023,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Сначала удалите туннель
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Сначала удалите мост
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Не может начинаться и заканчиваться в той же точке
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Опоры мостов должны быть на одном уровне
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Слишком низкий мост
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Начало и конец должны быть на одной линии
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Неподходящее место для строительства туннеля
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2789,6 +2796,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Появился новый {STRING}! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Не могу продать разбитый транспорт ...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Не могу составить расписание для этого транспорта...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Транспорт может только ждать на станции.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Этот транспорт не останавливается на этой станции.
@@ -3392,3 +3401,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Разведать
STR_BUILD_NEW_INDUSTRY :{BLACK}Построить
STR_INDUSTRY_SELECTION_HINT :{BLACK}Выберите тип производства из списка
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Расш.
+STR_FACE_ADVANCED_TIP :{BLACK}Расширенный выбор лиц.
+STR_FACE_SIMPLE :{BLACK}Простые
+STR_FACE_SIMPLE_TIP :{BLACK}Выбор простых лиц.
+STR_FACE_LOAD :{BLACK}Загруз.
+STR_FACE_LOAD_TIP :{BLACK}Загрузить любимое лицо
+STR_FACE_LOAD_DONE :{WHITE}Ваше любимое лицо будет загружено из конфиг-файла.
+STR_FACE_FACECODE :{BLACK}Лицо игрока.
+STR_FACE_FACECODE_TIP :{BLACK}Посмотреть и/или установить номер лица
+STR_FACE_FACECODE_CAPTION :{WHITE}Посмотреть и/или установить номер лица
+STR_FACE_FACECODE_SET :{WHITE}Цифровой код нового лица будет установлен
+STR_FACE_FACECODE_ERR :{WHITE}Не могу установить номер лица - значение должно быть целым и лежать в диапазоне от 0 до 4,294,967,295!
+STR_FACE_SAVE :{BLACK}Сохр.
+STR_FACE_SAVE_TIP :{BLACK}Сохр. любимое лицо
+STR_FACE_SAVE_DONE :{WHITE}Это лицо будет сохранено как ваше любимое в конфиг-файле.
+STR_FACE_EUROPEAN :{BLACK}Европеоидное
+STR_FACE_SELECT_EUROPEAN :{BLACK}Выбор европеоидного типа лица
+STR_FACE_AFRICAN :{BLACK}Африканское
+STR_FACE_SELECT_AFRICAN :{BLACK}Выбор африканского типа лица
+STR_FACE_YES :Да
+STR_FACE_NO :Нет
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Включить усы или серьги
+STR_FACE_HAIR :Волосы:
+STR_FACE_HAIR_TIP :{BLACK}Изменить волосы
+STR_FACE_EYEBROWS :Брови
+STR_FACE_EYEBROWS_TIP :{BLACK}Изменить брови
+STR_FACE_EYECOLOUR :Цвет глаз:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Изменить цвет глаз
+STR_FACE_GLASSES :Очки:
+STR_FACE_GLASSES_TIP :{BLACK}Добавить очки
+STR_FACE_GLASSES_TIP_2 :{BLACK}Изменить очки
+STR_FACE_NOSE :Нос:
+STR_FACE_NOSE_TIP :{BLACK}Изменить нос
+STR_FACE_LIPS :Губы
+STR_FACE_MOUSTACHE :Усы
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Изменить губы или усы
+STR_FACE_CHIN :Подбородок:
+STR_FACE_CHIN_TIP :{BLACK}Изменить подбородок
+STR_FACE_JACKET :Жакет:
+STR_FACE_JACKET_TIP :{BLACK}Изменить жакет
+STR_FACE_COLLAR :Воротник:
+STR_FACE_COLLAR_TIP :{BLACK}Изменить воротник
+STR_FACE_TIE :Галстук:
+STR_FACE_EARRING :Серьга:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Изменить галстук или серьгу
+########
--- a/src/lang/slovak.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/slovak.txt Sat Oct 20 10:42:28 2007 +0000
@@ -924,6 +924,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Financovat novy priemysel
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}... moze byt postavene len v meste
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... moze byt postavene len v dazdovom pralese
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... moze byt postavene len v pusti
@@ -1080,8 +1081,8 @@
STR_CONFIG_PATCHES_TIP :{BLACK}Nastavenia patchov
STR_CONFIG_PATCHES_CAPTION :{WHITE}Nastavenia patchov
-STR_CONFIG_PATCHES_OFF :Vyp.
-STR_CONFIG_PATCHES_ON :Zap.
+STR_CONFIG_PATCHES_OFF :nie
+STR_CONFIG_PATCHES_ON :áno
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Zobrazit rychlost vozidla v stavovej liste: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Umoznit vystavbu na svahoch a na pobrezi: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSLOPE :{LTBLUE}Povolit úpravy terénu pod budovami, kolajami, ... : {ORANGE}{STRING}
@@ -1111,6 +1112,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Radenie cestnych vozidiel (podla mnozstva tovaru): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Posúvat pohlad ked je kurzor myši na okraji okna: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Umoznit podplacanie miestnej spravy: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Povolit zakúpenie exkluzívnych dopravných práv: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Umožnit posielanie penazí ostatným spolocnostiam: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Roznorode stanice: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Novy globalny algoritmus hladania cesty (NPF namiesto NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Váhový násobok pre nákladné vlaky: {ORANGE}{STRING}
@@ -1251,13 +1254,14 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Pomer miest, ktoré sa budú rozvíjat rýchlejšie: {ORANGE}1 z {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Pomer miest, ktoré sa budú rozvíjat rýchlejšie: {ORANGE}Žiadny
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Násobok pociatocnej velkosti mesta: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Odstránit nezmyselné casti pri rekonštrukcii ciest
STR_CONFIG_PATCHES_GUI :{BLACK}Rozhranie
-STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Vystavba
+STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Výstavba
STR_CONFIG_PATCHES_VEHICLES :{BLACK}Vozidlá
STR_CONFIG_PATCHES_STATIONS :{BLACK}Stanice
STR_CONFIG_PATCHES_ECONOMY :{BLACK}Ekonomika
-STR_CONFIG_PATCHES_AI :{BLACK}Protivnici
+STR_CONFIG_PATCHES_AI :{BLACK}Konkurenti
STR_CONFIG_PATCHES_DISABLED :zakazane
STR_CONFIG_PATCHES_INT32 :{NUM}
@@ -1708,7 +1712,7 @@
##id 0x1800
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Cesta musi byt najskor odstranena
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Prebiehaju cestne prace
-STR_1802_ROAD_CONSTRUCTION :{WHITE}Vystavba cesty
+STR_1802_ROAD_CONSTRUCTION :{WHITE}Výstavba cesty
STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Výstavba elektrickovej trate
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Vyber cestny most
STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... na jednosmerných cestách nie sú dovolené križovatky
@@ -1724,7 +1728,7 @@
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nemozno postavit vykladku ...
STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nie je možné postavit elektrickovú osobnú stanicu ...
STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nie je možné postavit elektrickovú nákladnú stanicu ...
-STR_180A_ROAD_CONSTRUCTION :Vystavba cesty
+STR_180A_ROAD_CONSTRUCTION :Výstavba cesty
STR_180A_TRAMWAY_CONSTRUCTION :Výstavba elektrickovej dráhy
STR_180B_BUILD_ROAD_SECTION :{BLACK}Postavit cast cesty
STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Postavit cast elektrickovej dráhy
@@ -2081,6 +2085,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Tunel musi byt najskor zburany
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Most musi byt najskor zburany
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Nemozno zacat a skoncit na tom istom mieste
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Konce mosta nie sú v rovnakej výške
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je príliš nízky pre tento terén
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Zaciatok a koniec musi byt v rovine
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}To miesto je nepouzitelne ako vstup do tunela
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2841,6 +2847,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nové {STRING} dostupné! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Nie je možné predat znicené vozidlo ...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Vozidlu nie je možné zadat cestovný poriadok ...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozidlá možu cakat len v staniciach.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Toto vozidlo nezastavuje v tejto stanici.
@@ -3025,7 +3033,7 @@
STR_A01A_CAPACITY :{BLACK}Kapacita: {LTBLUE}{CARGO}
STR_A01B_AIRCRAFT_MUST_BE_STOPPED :{WHITE}Lietadlo musi byt zastavene v hangari
STR_A01C_CAN_T_SELL_AIRCRAFT :{WHITE}Nie je mozne predat lietadlo ...
-STR_A01D_AIRPORT_CONSTRUCTION :Vystavba letiska
+STR_A01D_AIRPORT_CONSTRUCTION :Výstavba letiska
STR_A01E_BUILD_AIRPORT :{BLACK}Postavit letisko
STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Lietadlo - kliknut pre informacie
STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES :{BLACK}Vyrobit nove lietadlo (potrebne letisko z hangarom)
@@ -3444,3 +3452,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Vyhladat
STR_BUILD_NEW_INDUSTRY :{BLACK}Postavit
STR_INDUSTRY_SELECTION_HINT :{BLACK}Vyberte vhodný typ priemyslu zo zoznamu
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Rozšírený
+STR_FACE_ADVANCED_TIP :{BLACK}Rozšírený výber tváre.
+STR_FACE_SIMPLE :{BLACK}Jednoduchý
+STR_FACE_SIMPLE_TIP :{BLACK}Jednoduchý výber tváre.
+STR_FACE_LOAD :{BLACK}Nahrat
+STR_FACE_LOAD_TIP :{BLACK}Nahrat oblúbenú tvár
+STR_FACE_LOAD_DONE :{WHITE}Vaša oblúbená tvár bola nahratá z kofiguracného súboru.
+STR_FACE_FACECODE :{BLACK}Kód tváre
+STR_FACE_FACECODE_TIP :{BLACK}Zobrazit/nastavit kód tváre
+STR_FACE_FACECODE_CAPTION :{WHITE}Zobrazit/nastavit kód tváre
+STR_FACE_FACECODE_SET :{WHITE}Nový kód tváre bol nastavený.
+STR_FACE_FACECODE_ERR :{WHITE}Nie je možné nastavit kód tváre - povolené je číslo od 0 do 4 294 967 295!
+STR_FACE_SAVE :{BLACK}Uložit
+STR_FACE_SAVE_TIP :{BLACK}Uložit oblúbenú tvár
+STR_FACE_SAVE_DONE :{WHITE}Táto tvár bude uložená ako oblúbená do konfiguracného súboru.
+STR_FACE_EUROPEAN :{BLACK}Európan
+STR_FACE_SELECT_EUROPEAN :{BLACK}Vybrat európske tváre
+STR_FACE_AFRICAN :{BLACK}African
+STR_FACE_SELECT_AFRICAN :{BLACK}Vybrat africké tváre
+STR_FACE_YES :áno
+STR_FACE_NO :nie
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Povolit fúzy alebo náušnicu
+STR_FACE_HAIR :Vlasy:
+STR_FACE_HAIR_TIP :{BLACK}Zmenit vlasy
+STR_FACE_EYEBROWS :Obocie:
+STR_FACE_EYEBROWS_TIP :{BLACK}Zmenit obocie
+STR_FACE_EYECOLOUR :Farba ocí:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Zmenit farbu ocí
+STR_FACE_GLASSES :Okuliare:
+STR_FACE_GLASSES_TIP :{BLACK}Povolit okuliare
+STR_FACE_GLASSES_TIP_2 :{BLACK}Zmenit okuliare
+STR_FACE_NOSE :Nos:
+STR_FACE_NOSE_TIP :{BLACK}Zmenit nos
+STR_FACE_LIPS :Pery:
+STR_FACE_MOUSTACHE :Fúzy:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Zmenit pery alebo fúzy
+STR_FACE_CHIN :Brada:
+STR_FACE_CHIN_TIP :{BLACK}Zmenit bradu
+STR_FACE_JACKET :Sako
+STR_FACE_JACKET_TIP :{BLACK}Zmenit sako
+STR_FACE_COLLAR :Golier:
+STR_FACE_COLLAR_TIP :{BLACK}Zmenit golier
+STR_FACE_TIE :Kravata:
+STR_FACE_EARRING :Náušnica:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Zmenit kravatu alebo náušnicu
+########
--- a/src/lang/slovenian.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/slovenian.txt Sat Oct 20 10:42:28 2007 +0000
@@ -902,6 +902,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Odpri novo industrijo
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE} ... gradnja mogoča samo v mestih
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE} ... gradnja mogoča samo v območju deževnega gozda
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE} ... gradnja mogoča samo v puščavi
@@ -1089,6 +1090,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Cestna vozila v vrsti (s quantum efekti): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Premakni okno, ko je miška na robu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Dovoli podkupovanje mestnih oblasti: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Dovoli nakup ekskluzivnih prevoznih dovoljenj: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Dovoli pošiljanje denarja drugim podjetjem: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Neenake postaje: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Novo skupno iskanje poti (NPF, prevlada NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Koeficient teže tovora za simulacijo težkih vlakov: {ORANGE}{STRING}
@@ -1229,6 +1232,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Razmerje mest, ki bodo rastla z dvakratno hitrostjo: {ORANGE}1 v {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Razmerje mest, ki bodo rastla z dvakratno hitrostjo: {ORANGE}Brez
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Začetni faktor rasti mesta: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Odstrani absurdne cestne elemente med gradnjo cest
STR_CONFIG_PATCHES_GUI :{BLACK}Vmesnik
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Gradnja
@@ -2097,6 +2101,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Najprej moraš porušiti predor
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Najprej moraš porušiti most
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Ni mogoče začeti in končati v isti točki
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Priključki mosta niso na enaki višini
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je prenizek za teren
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Začetek in konec morata biti na isti višini
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Lokacija neprimerna za vhod v predor
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2857,6 +2863,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novo! {STRING} sedaj na razpolago! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Ni mogoča prodaja uničenega vozila...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Nemogoče določiti časa vozilu...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vozila lahko čakajo le na postajah.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}To vozilo se ne ustavlja na tej postaji.
@@ -3460,3 +3468,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Obetajoča
STR_BUILD_NEW_INDUSTRY :{BLACK}Zgradi
STR_INDUSTRY_SELECTION_HINT :{BLACK}Izberi primerno industrijo iz tega seznama
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Napredno
+STR_FACE_ADVANCED_TIP :{BLACK}Napredna izbira obraza.
+STR_FACE_SIMPLE :{BLACK}Enostavno
+STR_FACE_SIMPLE_TIP :{BLACK}Enostavna izbira obraza.
+STR_FACE_LOAD :{BLACK}Naloži
+STR_FACE_LOAD_TIP :{BLACK}Naloži piljubljen obraz
+STR_FACE_LOAD_DONE :{WHITE}Tvoj priljubljen obraz je bil naložen iz OpenTTD konfiguracije.
+STR_FACE_FACECODE :{BLACK}Obraz igralca št.
+STR_FACE_FACECODE_TIP :{BLACK}Prikaži in/ali nastavi številko obraza igralca
+STR_FACE_FACECODE_CAPTION :{WHITE}Prikaži in/ali nastavi številko obraza igralca
+STR_FACE_FACECODE_SET :{WHITE}Nova koda številke obraza je nastavljena.
+STR_FACE_FACECODE_ERR :{WHITE}Nemogoča nastavitev številke obraza igralca - izbor mogoč med 0 in 4,294,967,295!
+STR_FACE_SAVE :{BLACK}Shrani
+STR_FACE_SAVE_TIP :{BLACK}Shrani priljubljen obraz
+STR_FACE_SAVE_DONE :{WHITE}Ta obraz bo shranjen kot tvoj priljubljen v konfiguracijo OpenTTD.
+STR_FACE_EUROPEAN :{BLACK}Evropski
+STR_FACE_SELECT_EUROPEAN :{BLACK}Izbor evropskih obrazov
+STR_FACE_AFRICAN :{BLACK}Afriški
+STR_FACE_SELECT_AFRICAN :{BLACK}Izbor afriških obrazov
+STR_FACE_YES :Da
+STR_FACE_NO :Ne
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Vklop brk ali uhanov
+STR_FACE_HAIR :Lasje:
+STR_FACE_HAIR_TIP :{BLACK}Spremeni lase
+STR_FACE_EYEBROWS :Obrvi:
+STR_FACE_EYEBROWS_TIP :{BLACK}Spremeni obrvi
+STR_FACE_EYECOLOUR :Barva oči:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Spremeni barvo oči
+STR_FACE_GLASSES :Očala:
+STR_FACE_GLASSES_TIP :{BLACK}Vklopi očala
+STR_FACE_GLASSES_TIP_2 :{BLACK}Spremeni očala
+STR_FACE_NOSE :Nos:
+STR_FACE_NOSE_TIP :{BLACK}Spremeni nos
+STR_FACE_LIPS :Ustnice:
+STR_FACE_MOUSTACHE :Brke:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Spremeni ustnice ali brke
+STR_FACE_CHIN :Brada:
+STR_FACE_CHIN_TIP :{BLACK}Spremeni brado
+STR_FACE_JACKET :Jakna:
+STR_FACE_JACKET_TIP :{BLACK}Spremeni jakno
+STR_FACE_COLLAR :Ovratnik:
+STR_FACE_COLLAR_TIP :{BLACK}Spremeni ovratnik
+STR_FACE_TIE :Kravata:
+STR_FACE_EARRING :Uhani:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Spremeni kravato ali uhane
+########
--- a/src/lang/spanish.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/spanish.txt Sat Oct 20 10:42:28 2007 +0000
@@ -861,6 +861,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fundar nueva industria
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...sólo se puede construir en poblaciones
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...sólo se puede construir en áreas de selva
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...sólo se puede construir en áreas desérticas
@@ -1048,6 +1049,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Cola de vehículos de carretera (con efecto cuantificador): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Desplazar ventana mediante el cursor en los bordes: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Permitir sobornos a la autoridad local: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Permitir comprar derechos de transporte exclusivos: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Permitir enviar dinero a otras empresas: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Estaciones no uniformes: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Nuevo sistema de busq. de rutas global (NPF, anula a NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Carga el multiplicador de peso para simular trenes pesados: {ORANGE}{STRING}
@@ -1188,6 +1191,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Proporción de ciudades que crecerán el doble de rápido: {ORANGE}1 de {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Proporción de ciudades que crecerán el doble de rápido: {ORANGE}Ninguna
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Multiplicador inicial tamaño de ciudad: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Quitar elementos absurdos de la carretera durante su construcción
STR_CONFIG_PATCHES_GUI :{BLACK}Interfaz
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Construcción
@@ -2018,6 +2022,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Primero debe demolerse el túnel
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Primero debe demolerse el puente
STR_5008_CANNOT_START_AND_END_ON :{WHITE}No se puede comenzar y acabar en la misma posición
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Las cabeceras del puente no están al mismo nivel
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}El puente es demasiado bajo para el terreno
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Comienzo y final deben estar en línea
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Lugar inapropiado para entrada de túnel
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2778,6 +2784,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nuevo {STRING} ahora disponible! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}No se puede vender un vehículo destruido...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}No se puede ajustar horarios al vehículo...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Los vehículos solo pueden esperar en las estaciones.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Este vehículo no está parando en esta estación.
@@ -3381,3 +3389,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Perspectiva
STR_BUILD_NEW_INDUSTRY :{BLACK}Construir
STR_INDUSTRY_SELECTION_HINT :{BLACK}Seleccione la industria apropiada de la lista
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Avanzado
+STR_FACE_ADVANCED_TIP :{BLACK}Selección avanzada de caras.
+STR_FACE_SIMPLE :{BLACK}Simple
+STR_FACE_SIMPLE_TIP :{BLACK}Selección simple de caras.
+STR_FACE_LOAD :{BLACK}Cargar
+STR_FACE_LOAD_TIP :{BLACK}Cargar cara favorita
+STR_FACE_LOAD_DONE :{WHITE}Tu cara favorita ha sido cargada del fichero de configuración de OpenTTD.
+STR_FACE_FACECODE :{BLACK}Cara del jugador no.
+STR_FACE_FACECODE_TIP :{BLACK}Ver y/o asignar número de cara del jugador
+STR_FACE_FACECODE_CAPTION :{WHITE}Ver y/o asignar número de cara del jugador
+STR_FACE_FACECODE_SET :{WHITE}Nuevo código de cara ha sido asignado.
+STR_FACE_FACECODE_ERR :{WHITE}No se puede asignar código de cara - debe ser un valor numérico de 0 a 4,294,967,295!
+STR_FACE_SAVE :{BLACK}Guardar
+STR_FACE_SAVE_TIP :{BLACK}Guardar cara favorita
+STR_FACE_SAVE_DONE :{WHITE}Esta cara ha sido guardada como tu favorita en el fichero de configuración.
+STR_FACE_EUROPEAN :{BLACK}Europea
+STR_FACE_SELECT_EUROPEAN :{BLACK}Selecciona caras europeas
+STR_FACE_AFRICAN :{BLACK}Africana
+STR_FACE_SELECT_AFRICAN :{BLACK}Selecciona caras africanas
+STR_FACE_YES :Si
+STR_FACE_NO :No
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Activar bigotes o pendientes
+STR_FACE_HAIR :Pelo:
+STR_FACE_HAIR_TIP :{BLACK}Cambiar pelo
+STR_FACE_EYEBROWS :Cejas:
+STR_FACE_EYEBROWS_TIP :{BLACK}Cambiar cejas
+STR_FACE_EYECOLOUR :Color ojos:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Cambiar color de ojos
+STR_FACE_GLASSES :Gafas:
+STR_FACE_GLASSES_TIP :{BLACK}Activar gafas
+STR_FACE_GLASSES_TIP_2 :{BLACK}Cambiar gafas
+STR_FACE_NOSE :Nariz:
+STR_FACE_NOSE_TIP :{BLACK}Cambiar nariz
+STR_FACE_LIPS :Labios:
+STR_FACE_MOUSTACHE :Bigote:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Cambiar labios o bigote
+STR_FACE_CHIN :Barbilla:
+STR_FACE_CHIN_TIP :{BLACK}Cambiar barbilla
+STR_FACE_JACKET :Chaqueta:
+STR_FACE_JACKET_TIP :{BLACK}Cambiar chaqueta
+STR_FACE_COLLAR :Cuello:
+STR_FACE_COLLAR_TIP :{BLACK}Cambiar cuello
+STR_FACE_TIE :Corbata:
+STR_FACE_EARRING :Pendientes:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Cambiar corbata o pendientes
+########
--- a/src/lang/swedish.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/swedish.txt Sat Oct 20 10:42:28 2007 +0000
@@ -860,6 +860,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Bekosta ny industri
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan bara byggas i städer
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan bara byggas i regnskog
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan bara byggas i öken
@@ -1020,6 +1021,7 @@
STR_CONFIG_PATCHES_ON :På
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Visa fordonshastighet i statusfältet: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Tillåt byggnation på sluttningar och kuster: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AUTOSLOPE :{LTBLUE}Tillåt terraformning under byggnader, spår, etc. (autoslope): {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Tillåt mer realistiska uppsamlingsområden för stationer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Tillåt borttagning av mera stadsägda vägar etc.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Tillåt väldigt långa tåg: {ORANGE}{STRING}
@@ -1046,6 +1048,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Vägfordonsköer (med kvanteffekter): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Scrolla vyn när musen är vid kanten: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Tillåt mutning av de lokala myndigheterna: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Tillåt köp av exklusiva transporträttigheter: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Tillåt skicka pengar till andra företag: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Icke-rektangulära stationer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Ny globalt sätt att hitta rutt (NPF, åsidosätter NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Godsfaktor för att simulera tunga tåg: {ORANGE}{STRING}
@@ -1186,6 +1190,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Andel av städerna som kommer växa dubbelt så fort: {ORANGE}1 av {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Andel av städerna som kommer växa dubbelt så fort: {ORANGE}Inga
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Initial stadsstorleks multiplikator: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Ta bort absurda väg-element under vägkonstruktion
STR_CONFIG_PATCHES_GUI :{BLACK}Gränssnitt
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Konstruktion
@@ -2016,6 +2021,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Måste riva tunnel först
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Måste riva bro först
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Kan inte börja och sluta på samma plats
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Broändar ej på samma höjd
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bro är för låg för terrängen
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Start- och slutpunkt måste ligga i linje
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Platsen passar inte för tunnelentré
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2772,10 +2779,12 @@
STR_TRAIN_NO_POWER :{RED}Ingen Kraft
STR_TRAIN_START_NO_CATENARY :Detta spår saknar kedjekurva, så tåget kan inte starta
-STR_NEW_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Nya {STRING} är nu tillgänglig!
+STR_NEW_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Ny {STRING} tillgänglig!
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nya {STRING} är nu tillgänglig - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Kan inte sälja förstört fordon...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kan inte lägga till fordonet i en tidtabell...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Fordon kan enbart vänta vid stationer.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Detta fordon stannar inte vid denna station.
@@ -2783,10 +2792,10 @@
STR_TIMETABLE_STATUS_ON_TIME :Detta fordon ligger efter i tidtabellen
STR_TIMETABLE_STATUS_LATE :Detta fordon är för tillfället {STRING} sen
STR_TIMETABLE_STATUS_EARLY :Detta fordon är för tillfället {STRING} tidig
-STR_TIMETABLE_TOTAL_TIME :Denna tidtabell kommer ta {STRING} att slutföra
+STR_TIMETABLE_TOTAL_TIME :Den här tidtabellen kommer ta {STRING} att slutföra
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :Denna tidtabell kommer att ta åtminstonde {STRING} att slutföra (allt är inte inlagt i en tidtabell)
-STR_TIMETABLE_AUTOFILL :{BLACK}Automatisk ifyllning
-STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fyll tidtabellen automatiskt med värdet från den första resan
+STR_TIMETABLE_AUTOFILL :{BLACK}Autofyll
+STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Fyll tidtabellen automatiskt med värdena från första resan
##id 0x9000
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Vägfordon i vägen
@@ -3304,7 +3313,7 @@
########
-STR_FEEDER_CARGO_VALUE :{BLACK}Överföringingskredit: {LTBLUE}{CURRENCY}
+STR_FEEDER_CARGO_VALUE :{BLACK} Överför kredit: {LTBLUE}{CURRENCY}
STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD :{WHITE}...detta är en stadsägd väg
STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}...vägen pekar i fel riktning
@@ -3350,15 +3359,15 @@
STR_GROUP_CAN_T_CREATE :{WHITE}Kan inte skapa grupp...
STR_GROUP_CAN_T_DELETE :{WHITE}Kan inte ta bort denna grupp...
STR_GROUP_CAN_T_RENAME :{WHITE}Kan inte döpa om grupp...
-STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan inte ta bort alla fordon från denna grupp...
-STR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan inte lägga till fordonet till denna grupp...
-STR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan inte lägga till delade fordon till grupp...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan inte ta bort alla fordon i denna grupp...
+STR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan inte lägga till fordon i denna grupp...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan inte lägga till delade fordon i denna grupp...
-STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}Grupper - Klicka på en grupp för att lista alla fordon i denna grupp
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}Gripper - Klicka på en grupp för att lista alla fordon i gruppen
STR_GROUP_CREATE_TIP :{BLACK}Klicka för att skapa en grupp
-STR_GROUP_DELETE_TIP :{BLACK}Ta bort den valda gruppen
-STR_GROUP_RENAME_TIP :{BLACK}Döp om den valda gruppen
-STR_GROUP_REPLACE_PROTECTION_TIP :{BLACK}Klicka för att skydda denna grupp från globalt autoutbyte
+STR_GROUP_DELETE_TIP :{BLACK}Ta bort vald grupp
+STR_GROUP_RENAME_TIP :{BLACK}Byt namn på vald grupp
+STR_GROUP_REPLACE_PROTECTION_TIP :{BLACK}Klicka för att skydda denna grupp mot allmän autoreplace
STR_COMPANY_NAME :{COMPANY}
STR_ENGINE_NAME :{ENGINE}
@@ -3379,3 +3388,51 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Prospektera
STR_BUILD_NEW_INDUSTRY :{BLACK}Bygga
STR_INDUSTRY_SELECTION_HINT :{BLACK}Välj lämplig industri från denna lista
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Avancerad
+STR_FACE_ADVANCED_TIP :{BLACK}Avancerat ansiktsval.
+STR_FACE_SIMPLE :{BLACK}Enkelt
+STR_FACE_SIMPLE_TIP :{BLACK}Enkelt ansiktsval.
+STR_FACE_LOAD :{BLACK}Ladda
+STR_FACE_LOAD_TIP :{BLACK}Ladda favoritansikte
+STR_FACE_LOAD_DONE :{WHITE}Ditt favoritansikte har laddats från OpenTTDs konfigurationsfil.
+STR_FACE_FACECODE :{BLACK}Spelaransikte nummer.
+STR_FACE_FACECODE_TIP :{BLACK}Visa och/eller välj ansiktsnummer
+STR_FACE_FACECODE_CAPTION :{WHITE}Visa och/eller välj ansiktsnummer
+STR_FACE_FACECODE_SET :{WHITE}Nytt kod för ansiktsnumret har valts
+STR_FACE_FACECODE_ERR :{WHITE}Kunde inte ange ansiktsnumret. Det måste vara en siffra mellan 0 och 4,294,967,295!
+STR_FACE_SAVE :{BLACK}Spara
+STR_FACE_SAVE_TIP :{BLACK}Spara favoritansikte
+STR_FACE_SAVE_DONE :{WHITE}Det här ansiktet kommer att sparas som ditt favoritansikte i OpenTTDs konfigurationsfil.
+STR_FACE_EUROPEAN :{BLACK}Europeisk
+STR_FACE_SELECT_EUROPEAN :{BLACK}Välj europeiska ansikten
+STR_FACE_AFRICAN :{BLACK}Afrikanska
+STR_FACE_SELECT_AFRICAN :{BLACK}Välj afrikanska ansikten
+STR_FACE_YES :Ja
+STR_FACE_NO :Nej
+STR_FACE_MOUSTACHE_EARRING_TIP :{BLACK}Aktivera mustasch eller örhänge
+STR_FACE_HAIR :Hår:
+STR_FACE_HAIR_TIP :{BLACK}Ändra hår
+STR_FACE_EYEBROWS :Ögonbryn:
+STR_FACE_EYEBROWS_TIP :{BLACK}Ändra ögonbryn
+STR_FACE_EYECOLOUR :Ögonfärg:
+STR_FACE_EYECOLOUR_TIP :{BLACK}Ändra ögonfärg
+STR_FACE_GLASSES :Glasögon:
+STR_FACE_GLASSES_TIP :{BLACK}Aktivera glasögon
+STR_FACE_GLASSES_TIP_2 :{BLACK}Ändra glasögon
+STR_FACE_NOSE :Näsa:
+STR_FACE_NOSE_TIP :{BLACK}Ändra näsa
+STR_FACE_LIPS :Läppar:
+STR_FACE_MOUSTACHE :Mustasch:
+STR_FACE_LIPS_MOUSTACHE_TIP :{BLACK}Ändra läppar eller mustasch
+STR_FACE_CHIN :Haka:
+STR_FACE_CHIN_TIP :{BLACK}Ändra haka
+STR_FACE_JACKET :Jacka:
+STR_FACE_JACKET_TIP :{BLACK}Ändra jacka
+STR_FACE_COLLAR :Krage:
+STR_FACE_COLLAR_TIP :{BLACK}Ändra krage
+STR_FACE_TIE :Slips:
+STR_FACE_EARRING :Örhänge:
+STR_FACE_TIE_EARRING_TIP :{BLACK}Ändra slips eller örhänge
+########
--- a/src/lang/turkish.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/turkish.txt Sat Oct 20 10:42:28 2007 +0000
@@ -1046,6 +1046,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Karayolu taşıtları kuyruğa girsin (içiçe geçerek): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Fare kenardayken pencere etkin: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Belediye rüşveti izinli: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Şehrin ulaşım haklarını satın alma izinli: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Diğer şirketlere para gönderme izinli: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Özel istasyonlar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Yeni evrensel yol bulma (NPF, NTP üzerinde): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Ağır yük trenleri için ağırlık çarpanı: {ORANGE}{STRING}
@@ -1111,6 +1113,7 @@
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Yeni bir oyun başlatırken zamanı duraklat: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Gelişmiş araç listesini kullan: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OFF :Kapalı
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :Kendi şirketim
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :Tüm şirketler
STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Araç yükleme bilgisini göster: {ORANGE}{STRING}
@@ -1118,6 +1121,8 @@
STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :Kendi şirketim
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :Tüm şirketler
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Araç zaman çizelgesi açık: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Zaman tablosunda gün yerine işlemci zamanı kullan: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Öntanımlı ray türü (yeni oyundan/oyun yüklemeden sonra): {ORANGE}{STRING}
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :Normal Ray
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :Elektrikli Ray
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Monoray
@@ -1183,6 +1188,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Kasabaların şehir olması için gerekli nüfus: {ORANGE}1 in {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Şehir olacak kasabaların oranı: {ORANGE}Hiçbiri
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Birincil şehir büyüklüğü çarpanı: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Yol yapımı sırasında gerçekçi olmayan yerleri kaldır
STR_CONFIG_PATCHES_GUI :{BLACK}Arayüz
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}İnşaat
@@ -1415,6 +1421,7 @@
STR_NETWORK_LANG_CZECH :Çekce
STR_NETWORK_LANG_DANISH :Danimarkaca
STR_NETWORK_LANG_DUTCH :Hollandaca
+STR_NETWORK_LANG_ESPERANTO :Esperanto
STR_NETWORK_LANG_FINNISH :Fince
STR_NETWORK_LANG_HUNGARIAN :Bulgarca
STR_NETWORK_LANG_ICELANDIC :İzlandaca
@@ -2012,6 +2019,7 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Önce tünel yıkılmalı
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Önce köprü yıkılmalı
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Aynı noktada başlayıp bitemez
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Köprü bu arazi için çok alçakta
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Başlangıç ve bitiş aynı çizgi üzerinde olmalı
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Yer tünel girişi için uygun değil
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2735,6 +2743,8 @@
STR_8857_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Seçili talimatı yaparken tren dolana kadar beklesin
STR_8858_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Seçili talimatı yaparken tren mutlaka yükünü boşaltsın
STR_TIMETABLE_TOOLTIP :{BLACK}Zaman çizelgesi - işaretlemek için bir talimata tıklayın.
+STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Seçili talimatın harcaması gereken süreyi değiştir
+STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Seçili talimatın harcaması gereken süreyi sil
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Geç kalma sayacını sıfırla, böylece araç zamanında gitmiş sayılacak
STR_SERVICE_HINT :{BLACK}Bakım gerekmiyorsa bunu atla
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Fiyat: {CURRENCY} Ağırlık: {WEIGHT_S}{}Hız: {VELOCITY} Güç: {POWER}{}Bakım: {CURRENCY}/sene{}Kapasite: {CARGO}
@@ -2770,6 +2780,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}{STRING} artık kullanılabilir! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Hurda araçlar satılamaz...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Aracın zaman çizelgesi oluşturulamıyor...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Araçlar sadece istasyonlarda bekleyebilir.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Araç bu istasyonda durmuyor.
--- a/src/lang/ukrainian.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/ukrainian.txt Sat Oct 20 10:42:28 2007 +0000
@@ -986,6 +986,7 @@
STR_0314_FUND_NEW_INDUSTRY :{WHITE}Нова промисловість
STR_JUST_STRING :{STRING}
+STR_JUST_INT :{NUM}
STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...можна будувати лише у містах
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...можна будувати лише у джунглях
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...можна будувати лише у пустелі
@@ -1173,6 +1174,8 @@
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Ставати транспорту в чергу: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Прокручувати вікно, коли курсор з краю: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Дозволити підкупляти місцеву владу: {ORANGE}{STRING}
+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}
@@ -1311,6 +1314,7 @@
STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Кількість міст, які будуть рости вдвічі швидше: {ORANGE}1 з {STRING}
STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Кількість міст, які будуть рости вдвічі швидше: {ORANGE}нема
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Початковий коефіцієнт розміру міст: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Прибрати безглузді елементи доріг під час будівництва доріг
STR_CONFIG_PATCHES_GUI :{BLACK}Вигляд
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Споруди
@@ -2178,6 +2182,8 @@
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Спочатку зруйнуйте тунель
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Спочатку зруйнуйте міст
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Початок та кінець не можуть бути в одному місці
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Кінці мостів на різних рівнях
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Міст дуже низький для цього місця
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Початок та кінець мають бути на одній лінії
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Невідповідне місце для початку тунеля
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
@@ -2541,7 +2547,7 @@
STR_8021_GRAIN_HOPPER :Вагон для зерна
STR_8022_WOOD_TRUCK :Вагон для деревини
STR_8023_IRON_ORE_HOPPER :Вагон для залізної руди
-STR_8024_STEEL_TRUCK :Вагон лля сталі
+STR_8024_STEEL_TRUCK :Платформа для сталі
STR_8025_ARMORED_VAN :Броньований вагон
STR_8026_FOOD_VAN :Вагон для продуктів
STR_8027_PAPER_TRUCK :Вагон для паперу
@@ -2866,16 +2872,16 @@
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Неможливо перемістити транспорт...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}задній потяг зажди слідує follow its front counterpart!!!
STR_8838_N_A :немає{SKIP}
-STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Неможливо продати поїзд...
+STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Не можна продати поїзд...
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Неможливо знайти маршрут до місцевого депо
-STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Неможливо зупинити поїзд...
+STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Не можна зупинити/стартувати поїзд...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA} днів{BLACK} Останній техогляд: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA}%{BLACK} Останній техогляд: {LTBLUE}{DATE_LONG}
-STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK} Поїзди - клікніть на поїзді для детальної інформаціїї
+STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Поїзди - клікніть на поїзді для детальної інформаціїї
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Будувати поїзд (потрібне залізничне депо)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Поїзди - клікніть на поїзді для інформації, перетягніть для додавання/вилучення
-STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Будувати новий потяг
-STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE :{BLACK}Перетягніть потяг сюди, щоб продати його
+STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Будувати новий поїзд
+STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE :{BLACK}Перетягніть поїзд сюди, щоб продати його
STR_8842_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Показати депо в центрі головного екрану
STR_8843_TRAIN_VEHICLE_SELECTION :{BLACK}Список поїздів - клікніть на поїзді для інформації
STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Будувати вибраний поїзд
@@ -2938,6 +2944,8 @@
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Став доступним новий {STRING}! - {ENGINE}
+STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Не можна продати знищений транспорт...
+
STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Не можна встановити розклад для транспорту...
STR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Транспорт може чекати тільки на станціях.
STR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Цей транспорт не зупиняється на цій станції.
@@ -2985,9 +2993,9 @@
STR_9020_FORCE_VEHICLE_TO_TURN_AROUND :{BLACK}Розвернути авто
STR_9021_SHOW_ROAD_VEHICLE_DETAILS :{BLACK}Показати авто детально
STR_9022_VEHICLES_CLICK_ON_VEHICLE :{BLACK}Авто - натисніть на авто для інформації
-STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}Будувати нове авто
-STR_9024_DRAG_ROAD_VEHICLE_TO_HERE :{BLACK}Перетягніть авто сюди, щоб продати
-STR_9025_CENTER_MAIN_VIEW_ON_ROAD :{BLACK}Показати авто депо в центрі екрану
+STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}Будувати новий автомобіль
+STR_9024_DRAG_ROAD_VEHICLE_TO_HERE :{BLACK}Перетягніть автомобіль сюди, щоб продати
+STR_9025_CENTER_MAIN_VIEW_ON_ROAD :{BLACK}Показати автомобільне депо в центрі екрану
STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}Список авто - натисніть на авто для інформації
STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Будувати вибране авто
STR_902A_COST_SPEED_RUNNING_COST :{BLACK}Ціна: {CURRENCY}{}Швидкість: {VELOCITY}{}Транспортні витрати: {CURRENCY}/рік{}Місткість: {CARGO}
@@ -3027,9 +3035,9 @@
STR_9805_SHIPS :{WHITE}{COMPANY} - {COMMA} кораб{P ель лі лів}
STR_9808_NEW_SHIPS :{WHITE}Нові кораблі
STR_9809_BUILD_SHIP :{BLACK}Будувати корабель
-STR_CLONE_SHIP :{BLACK}Клонувати корабель
+STR_CLONE_SHIP :{BLACK}Клонувати
STR_CLONE_SHIP_INFO :{BLACK}Будувати копію корабля. Утримуйте CTRL для спільного завдання
-STR_CLONE_SHIP_DEPOT_INFO :{BLACK}Будувати копію корабля. Натисніть на цю кнопку і потім на корабель в депо або ззовні. Утримуйте CTRL для спільного завдання
+STR_CLONE_SHIP_DEPOT_INFO :{BLACK}Будувати копію корабля. Натисніть на цю кнопку, і потім на корабель в депо або ззовні. Утримуйте CTRL для спільного завдання
STR_980B_SHIP_MUST_BE_STOPPED_IN :{WHITE}Корабль має бути в депо
STR_980C_CAN_T_SELL_SHIP :{WHITE}Неможливо продати корабель...
STR_980D_CAN_T_BUILD_SHIP :{WHITE}Неможливо будувати корабель...
@@ -3294,10 +3302,10 @@
STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP :{BLACK}Продати всі кораблі з депо
STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP :{BLACK}Продати всі літаки з ангару
-STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP :{BLACK}Отримати список всих поїздів, що заходять до ангарів
-STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP :{BLACK}Отримати список всих авто, що заходять до ангарів
-STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP :{BLACK}Отримати список всих кораблів, що заходять до ангарів
-STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP :{BLACK}Отримати список всих літаків, що заходять до ангарів
+STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TIP :{BLACK}Отримати список усіх поїздів, що заходять до цього депо
+STR_DEPOT_VEHICLE_ORDER_LIST_ROADVEH_TIP :{BLACK}Отримати список усіх автомобілів, що заходять до цього депо
+STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP :{BLACK}Отримати список усіх кораблів, що заходять до цього депо
+STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP :{BLACK}Отримати список усіх літаків, що заходять до ангарів у цьому аеропорті
STR_DEPOT_AUTOREPLACE_TRAIN_TIP :{BLACK}Оновити всі поїзди в депо
STR_DEPOT_AUTOREPLACE_ROADVEH_TIP :{BLACK}Оновити всі автомобілі в депо
@@ -3336,15 +3344,15 @@
STR_MASS_STOP_DEPOT_TRAIN_TIP :{BLACK}Натисніть для зупинки всіх поїздів, що в депо
STR_MASS_STOP_DEPOT_ROADVEH_TIP :{BLACK}Натисніть для зупинки всіх авто, що в депо
STR_MASS_STOP_DEPOT_SHIP_TIP :{BLACK}Натисніть для зупинки всіх кораблів, що в депо
-STR_MASS_STOP_HANGAR_TIP :{BLACK}Натисніть для зупинки всіх літаків, що в депо
+STR_MASS_STOP_HANGAR_TIP :{BLACK}Натисніть для зупинки всіх літаків, що в ангарі
STR_MASS_START_DEPOT_TRAIN_TIP :{BLACK}Натисніть для виїзду поїздів з депо
-STR_MASS_START_DEPOT_ROADVEH_TIP :{BLACK}Натисніть для виїзду всіх авто з депо
+STR_MASS_START_DEPOT_ROADVEH_TIP :{BLACK}Натисніть для виїзду всіх автомобілів з депо
STR_MASS_START_DEPOT_SHIP_TIP :{BLACK}Натисніть для виїзду всіх кораблів з депо
-STR_MASS_START_HANGAR_TIP :{BLACK}Натисніть для вильоту всіх літаків з депо
+STR_MASS_START_HANGAR_TIP :{BLACK}Натисніть для вильоту всіх літаків з ангару
-STR_MASS_STOP_LIST_TIP :{BLACK}Натисніть для зупинки всіх авто зі списку
-STR_MASS_START_LIST_TIP :{BLACK}Натисніть для виїзду всіх авто зі списку
+STR_MASS_STOP_LIST_TIP :{BLACK}Натисніть для зупинки всіх авто, що у списку
+STR_MASS_START_LIST_TIP :{BLACK}Натисніть для виїзду всього транспорту, що у списку
STR_SHORT_DATE :{WHITE}{DATE_TINY}
STR_SIGN_LIST_CAPTION :{WHITE}Список позначень - {COMMA} Позначен{P ня ня ь}
@@ -3491,12 +3499,12 @@
STR_GROUP_NAME_FORMAT :Група {COMMA}
STR_GROUP_TINY_NAME :{TINYFONT}{GROUP}
STR_GROUP_ALL_TRAINS :Усі поїзди
-STR_GROUP_ALL_ROADS :Усі авто
+STR_GROUP_ALL_ROADS :Усі автомобілі
STR_GROUP_ALL_SHIPS :Усі кораблі
STR_GROUP_ALL_AIRCRAFTS :Усі літаки
STR_GROUP_DEFAULT_TRAINS :Незгруповані поїзди
STR_GROUP_DEFAULT_ROADS :Незгруповані автомобілі
-STR_GROUP_DEFAULT_SHIPS :Незгруповані човни
+STR_GROUP_DEFAULT_SHIPS :Незгруповані кораблі
STR_GROUP_DEFAULT_AIRCRAFTS :Незгруповані літаки
STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
STR_GROUP_ADD_SHARED_VEHICLE :Добавити спільний транспорт
@@ -3541,3 +3549,14 @@
STR_PROSPECT_NEW_INDUSTRY :{BLACK}Огляд
STR_BUILD_NEW_INDUSTRY :{BLACK}Будувати
STR_INDUSTRY_SELECTION_HINT :{BLACK}Виберіть необхідне виробництво
+
+############ Face formatting
+STR_FACE_ADVANCED :{BLACK}Детальний
+STR_FACE_ADVANCED_TIP :{BLACK}Детальний вибір обличчя
+STR_FACE_SIMPLE :{BLACK}Простий
+STR_FACE_SIMPLE_TIP :{BLACK}Простий вибір обличчя
+STR_FACE_LOAD :{BLACK}Завантажити
+STR_FACE_LOAD_TIP :{BLACK}Завантажити обране обличчя
+STR_FACE_LOAD_DONE :{WHITE}Обране обличчя було завантажене з файлу конфігурації OpenTTD.
+STR_FACE_FACECODE :{BLACK}Обличчя №
+########
--- a/src/lang/unfinished/afrikaans.txt Sat Oct 20 10:14:05 2007 +0000
+++ b/src/lang/unfinished/afrikaans.txt Sat Oct 20 10:42:28 2007 +0000
@@ -7,26 +7,26 @@
##id 0x0000
STR_NULL :
-STR_0001_OFF_EDGE_OF_MAP :{WHITE}Oor kant van kaart
-STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Te naby aan kant van kaart
+STR_0001_OFF_EDGE_OF_MAP :{WHITE}Af rand van werfkaart
+STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Te naby aan rand van werfkaart
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}Nie genoeg kontant nie - vereis {CURRENCY}
STR_0004 :{WHITE}{CURRENCY}
STR_EMPTY :
-STR_0007_FLAT_LAND_REQUIRED :{WHITE}Vereis platte land
-STR_0008_WAITING :{BLACK}Wagtend: {WHITE}{STRING}
+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} (op pad van
+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 :
STR_000F_PASSENGERS :Passasiers
-STR_0010_COAL :Steenkool
+STR_0010_COAL :Kool
STR_0011_MAIL :Pos
STR_0012_OIL :Olie
STR_0013_LIVESTOCK :Lewende Hawe
STR_0014_GOODS :Goedere
-STR_0015_GRAIN :Graan
+STR_0015_GRAIN :Korrel
STR_0016_WOOD :Hout
STR_0017_IRON_ORE :Yster Erts
STR_0018_STEEL :Staal
@@ -53,12 +53,12 @@
STR_002D_FIZZY_DRINKS :Koeldranke
STR_002E :
STR_002F_PASSENGER :Passasier
-STR_0030_COAL :Steenkool
+STR_0030_COAL :Kool
STR_0031_MAIL :Pos
STR_0032_OIL :Olie
STR_0033_LIVESTOCK :Lewende Hawe
STR_0034_GOODS :Goedere
-STR_0035_GRAIN :Graan
+STR_0035_GRAIN :Korrel
STR_0036_WOOD :Hout
STR_0037_IRON_ORE :Yster Erts
STR_0038_STEEL :Staal
@@ -151,8 +151,8 @@
STR_ABBREV_ALL :{TINYFONT}ALLE
STR_00AE :{WHITE}{DATE_SHORT}
STR_00AF :{WHITE}{DATE_LONG}
-STR_00B0_MAP :{WHITE}Kaart - {STRING}
-STR_00B1_GAME_OPTIONS :{WHITE}Spel Opsies
+STR_00B0_MAP :{WHITE}Werfkaart - {STRING}
+STR_00B1_GAME_OPTIONS :{WHITE}Speletjie Opsies
STR_00B2_MESSAGE :{YELLOW}Boodskap
STR_00B3_MESSAGE_FROM :{YELLOW}Boodskap van {STRING}
STR_POPUP_CAUTION_CAPTION :{WHITE}Waarskuwing!
@@ -165,10 +165,10 @@
STR_00C5 :{BLACK}{CROSS}
STR_00C6 :{SILVER}{CROSS}
-STR_00C7_QUIT :{WHITE}Verlaat
+STR_00C7_QUIT :{WHITE}Laat vaar
STR_00C8_YES :{BLACK}Ja
STR_00C9_NO :{BLACK}Nee
-STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Is jy seker jy wil die spel verlaat en terug gaan na {STRING}?
+STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Is jy seker u wil hierdie speletjie verlaat en keer terug na {STRING}?
STR_00CB_1 :{BLACK}1
STR_00CC_2 :{BLACK}2
STR_00CD_3 :{BLACK}3
@@ -191,20 +191,20 @@
STR_00DE_BROWN :Bruin
STR_00DF_GREY :Grys
STR_00E0_WHITE :Wit
-STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Te veel voertuie in spel
+STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Te veel voertuie in speletjie
STR_00E2 :{BLACK}{COMMA}
STR_00E3 :{RED}{COMMA}
-STR_00E4_LOCATION :{BLACK}Plek
-STR_00E5_CONTOURS :Hoogtelyne
+STR_00E4_LOCATION :{BLACK}Lokasie
+STR_00E5_CONTOURS :Kantoere
STR_00E6_VEHICLES :Voertuie
-STR_00E7_INDUSTRIES :Nywerheide
+STR_00E7_INDUSTRIES :Nywerhede
STR_00E8_ROUTES :Roete
STR_00E9_VEGETATION :Plantegroei
STR_00EA_OWNERS :Eienaars
STR_00EB_ROADS :{BLACK}{TINYFONT}Paaie
STR_00EC_RAILROADS :{BLACK}{TINYFONT}Spoorwege
STR_00ED_STATIONS_AIRPORTS_DOCKS :{BLACK}{TINYFONT}Stasies/Lughawes/Werfe
-STR_00EE_BUILDINGS_INDUSTRIES :{BLACK}{TINYFONT}Geboue/Nywerheide
+STR_00EE_BUILDINGS_INDUSTRIES :{BLACK}{TINYFONT}Geboue/Nywerhede
STR_00EF_VEHICLES :{BLACK}{TINYFONT}Voertuie
STR_00F0_100M :{BLACK}{TINYFONT}100m
STR_00F1_200M :{BLACK}{TINYFONT}200m
@@ -224,46 +224,46 @@
STR_00FF_FARM :{BLACK}{TINYFONT}Boerdery
STR_0100_FACTORY :{BLACK}{TINYFONT}Fabriek
STR_0101_PRINTING_WORKS :{BLACK}{TINYFONT}Drukwerke
-STR_0102_OIL_WELLS :{BLACK}{TINYFONT}Olie Bron
+STR_0102_OIL_WELLS :{BLACK}{TINYFONT}Olie Spruite
STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Yster Erts Myn
-STR_0104_STEEL_MILL :{BLACK}{TINYFONT}Staalmeul
+STR_0104_STEEL_MILL :{BLACK}{TINYFONT}Staal Meule
STR_0105_BANK :{BLACK}{TINYFONT}Bank
-STR_0106_PAPER_MILL :{BLACK}{TINYFONT}Papiermeul
+STR_0106_PAPER_MILL :{BLACK}{TINYFONT}Papier Meule
STR_0107_GOLD_MINE :{BLACK}{TINYFONT}Goud Myn
STR_0108_FOOD_PROCESSING_PLANT :{BLACK}{TINYFONT}Kos Verwerkings Fabriek
STR_0109_DIAMOND_MINE :{BLACK}{TINYFONT}Diamant Myn
STR_010A_COPPER_ORE_MINE :{BLACK}{TINYFONT}Koper Erts Myn
STR_010B_FRUIT_PLANTATION :{BLACK}{TINYFONT}Vrugte Plantasie
STR_010C_RUBBER_PLANTATION :{BLACK}{TINYFONT}Gomlastiek Plantasie
-STR_010D_WATER_SUPPLY :{BLACK}{TINYFONT}Water Lewering
+STR_010D_WATER_SUPPLY :{BLACK}{TINYFONT}Water Verskaf
STR_010E_WATER_TOWER :{BLACK}{TINYFONT}Water Toring
-STR_010F_LUMBER_MILL :{BLACK}{TINYFONT}Timmerhout Meul
+STR_010F_LUMBER_MILL :{BLACK}{TINYFONT}Timmerhout Meule
STR_0110_COTTON_CANDY_FOREST :{BLACK}{TINYFONT}Spookasem Woud
STR_0111_CANDY_FACTORY :{BLACK}{TINYFONT}Lekker Fabriek
STR_0112_BATTERY_FARM :{BLACK}{TINYFONT}Battery Plaas
-STR_0113_COLA_WELLS :{BLACK}{TINYFONT}Cola Bron
+STR_0113_COLA_WELLS :{BLACK}{TINYFONT}Cola Spruite
STR_0114_TOY_SHOP :{BLACK}{TINYFONT}Speelgoed Winkel
STR_0115_TOY_FACTORY :{BLACK}{TINYFONT}Speelgoed Fabriek
STR_0116_PLASTIC_FOUNTAINS :{BLACK}{TINYFONT}Plastiek Fonteine
STR_0117_FIZZY_DRINK_FACTORY :{BLACK}{TINYFONT}Koeldrank Fabriek
-STR_0118_BUBBLE_GENERATOR :{BLACK}{TINYFONT}Borrel Ontwikkelaar
+STR_0118_BUBBLE_GENERATOR :{BLACK}{TINYFONT}Borrel Genereerder
STR_0119_TOFFEE_QUARRY :{BLACK}{TINYFONT}Tameletjie Prooi
STR_011A_SUGAR_MINE :{BLACK}{TINYFONT}Suiker Myn
STR_011B_RAILROAD_STATION :{BLACK}{TINYFONT}Spoorweg Stasie
-STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Vraagmotor Laai Area
+STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Vragmotor Laai Area
STR_011D_BUS_STATION :{BLACK}{TINYFONT}Bus Stasie
STR_011E_AIRPORT_HELIPORT :{BLACK}{TINYFONT}Lughawe/Helihawe
STR_011F_DOCK :{BLACK}{TINYFONT}Hawe
-STR_0120_ROUGH_LAND :{BLACK}{TINYFONT}Ru Land
-STR_0121_GRASS_LAND :{BLACK}{TINYFONT}Gras Land
-STR_0122_BARE_LAND :{BLACK}{TINYFONT}Kaal Land
+STR_0120_ROUGH_LAND :{BLACK}{TINYFONT}Rof Daal
+STR_0121_GRASS_LAND :{BLACK}{TINYFONT}Gras Daal
+STR_0122_BARE_LAND :{BLACK}{TINYFONT}Hou Daal
STR_0123_FIELDS :{BLACK}{TINYFONT}Velde
STR_0124_TREES :{BLACK}{TINYFONT}Boome
STR_0125_ROCKS :{BLACK}{TINYFONT}Rotse
STR_0126_WATER :{BLACK}{TINYFONT}Water
STR_0127_NO_OWNER :{BLACK}{TINYFONT}Geen Eienaar
-STR_0128_TOWNS :{BLACK}{TINYFONT}Stede
-STR_0129_INDUSTRIES :{BLACK}{TINYFONT}Nywerheide
+STR_0128_TOWNS :{BLACK}{TINYFONT}Dorpe
+STR_0129_INDUSTRIES :{BLACK}{TINYFONT}Nywerhede
STR_012A_DESERT :{BLACK}{TINYFONT}Woestyn
STR_012B_SNOW :{BLACK}{TINYFONT}Sneeu
STR_012C_MESSAGE :{WHITE}Boodskap
@@ -271,8 +271,8 @@
STR_012E_CANCEL :{BLACK}Kanselleer
STR_012F_OK :{BLACK}OK
STR_0130_RENAME :{BLACK}Hernoem
-STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Te veel naame bepaal
-STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Verkieste naam reeds in gebruik
+STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Te veel name gestipuleer
+STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Gekies naam alreeds in gebruik
STR_0133_WINDOWS :Windows
STR_0134_UNIX :Unix
@@ -282,7 +282,7 @@
STR_OSNAME_AMIGAOS :AmigaOS
STR_OSNAME_OS2 :OS/2
-STR_013B_OWNED_BY :{WHITE}...besit by {STRING}
+STR_013B_OWNED_BY :{WHITE}...besit deur {STRING}
STR_013C_CARGO :{BLACK}Vrag
STR_013D_INFORMATION :{BLACK}Inligting
STR_013E_CAPACITIES :{BLACK}Kapasiteite
@@ -292,8 +292,8 @@
STR_013F_TOTAL_CAPACITY_TEXT :{BLACK}Totaale vrag kapasitiet van die trein:
STR_013F_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
-STR_0140_NEW_GAME :{BLACK}Nuwe Spel
-STR_0141_LOAD_GAME :{BLACK}Laai Spel
+STR_0140_NEW_GAME :{BLACK}Nuwe Speletjie
+STR_0141_LOAD_GAME :{BLACK}Laai Speletjie
STR_SINGLE_PLAYER :{BLACK}Enkel speeler
STR_MULTIPLAYER :{BLACK}Veelspeler
STR_SCENARIO_EDITOR :{BLACK}Draaiboek Redakteur
@@ -304,13 +304,13 @@
STR_512 :512
STR_1024 :1024
STR_2048 :2048
-STR_MAPSIZE :{BLACK}Kaart groote:
+STR_MAPSIZE :{BLACK}Werfkaart groote:
STR_BY :{BLACK}*
-STR_0148_GAME_OPTIONS :{BLACK}Spel Opsies
+STR_0148_GAME_OPTIONS :{BLACK}Speletjie Opsies
STR_0150_SOMEONE :iemand{SKIP}{SKIP}
-STR_0151_MAP_OF_WORLD :Kaart van die wêreld
-STR_0152_TOWN_DIRECTORY :Stad index
+STR_0151_MAP_OF_WORLD :Werfkaart van wêreld
+STR_0152_TOWN_DIRECTORY :Dorp gids
STR_0153_SUBSIDIES :Subsidiëe
STR_UNITS_IMPERIAL :Imperiaal
@@ -346,23 +346,23 @@
STR_UNITS_FORCE_SI :{COMMA} kN
############ range for menu starts
-STR_0154_OPERATING_PROFIT_GRAPH :Opereer profyt grafiek
-STR_0155_INCOME_GRAPH :Inkoms grafiek
-STR_0156_DELIVERED_CARGO_GRAPH :Afgelewerde vrag grafiek
-STR_0157_PERFORMANCE_HISTORY_GRAPH :Prestasie geskiedenis grafiek
+STR_0154_OPERATING_PROFIT_GRAPH :Bediening profyt grafiek
+STR_0155_INCOME_GRAPH :Inkomste grafiek
+STR_0156_DELIVERED_CARGO_GRAPH :Gelewer cargo grafiek
+STR_0157_PERFORMANCE_HISTORY_GRAPH :Werkverrigting geskiedenis grafiek
STR_0158_COMPANY_VALUE_GRAPH :Maatskappy waarde grafiek
-STR_0159_CARGO_PAYMENT_RATES :Vrag betaaling grade
-STR_015A_COMPANY_LEAGUE_TABLE :Maatskappy verbond tafel
+STR_0159_CARGO_PAYMENT_RATES :Vrag vergoeding koerse
+STR_015A_COMPANY_LEAGUE_TABLE :Maatskappy verbond tabel
STR_PERFORMANCE_DETAIL_MENU :Omstandig prestasie gradering
############ range for menu ends
STR_015B_OPENTTD :{WHITE}Omtrent OpenTTD
-STR_015C_SAVE_GAME :Bewaar spel
-STR_015D_LOAD_GAME :Laai spel
-STR_015E_QUIT_GAME :Verlaat Spel
-STR_015F_QUIT :Uitgang
-STR_ABANDON_GAME_QUERY :{YELLOW}Is jy seker jy wil die spel verlaat?
-STR_0161_QUIT_GAME :{WHITE}Verlaat Spel
+STR_015C_SAVE_GAME :Spaar Speletjie
+STR_015D_LOAD_GAME :Laai speletjie
+STR_015E_QUIT_GAME :Verlaat Speletjie
+STR_015F_QUIT :Gaan uit
+STR_ABANDON_GAME_QUERY :{YELLOW}Is jy seker jy wil die speletjie verlaat?
+STR_0161_QUIT_GAME :{WHITE}Verlaat Speletjie
STR_SORT_ORDER_TIP :{BLACK}Selekteer sorteer orde (afklimende/klimende)
STR_SORT_CRITERIA_TIP :{BLACK}Selekteer sorteer maatstaf
STR_SORT_BY :{BLACK}Sorteer by
@@ -391,13 +391,14 @@
STR_ENGINE_SORT_POWER :Krag
STR_ENGINE_SORT_INTRO_DATE :Inleiding Datum
STR_ENGINE_SORT_RUNNING_COST :Loopkoste
+STR_ENGINE_SORT_POWER_VS_RUNNING_COST :Krag/Loopkoste
STR_ENGINE_SORT_CARGO_CAPACITY :Vrag Kapasiteit
STR_NO_WAITING_CARGO :{BLACK}Geen vrag van enige tipe is op wag
STR_AVAILABLE_TRAINS :{BLACK}Beskikbaar Treine
STR_AVAILABLE_ROAD_VEHICLES :{BLACK}Beskikbaar Voertuie
STR_AVAILABLE_SHIPS :{BLACK}Beskikbaar Skepe
STR_AVAILABLE_AIRCRAFT :{BLACK}Beskikbaar Vliegtuie
-STR_AVAILABLE_ENGINES_TIP :{BLACK}Wys 'n lys van beskikbaare enjin tipes vir die voertiug tipe.
+STR_AVAILABLE_ENGINES_TIP :{BLACK}Toon 'n lys van beskikbaare enjin tipes vir die voertiug tipe.
STR_MANAGE_LIST :{BLACK}Bestuur lys
STR_MANAGE_LIST_TIP :{BLACK}Stuur instruksies na alle voertuie in die lys
STR_REPLACE_VEHICLES :Vervang voertuie
@@ -425,11 +426,11 @@
STR_016E :{TINYFONT}{STRING}{} {STRING}
STR_016F :{TINYFONT}{STRING}{} {STRING}{}{NUM}
STR_0170 :{TINYFONT}{STRING}-
-STR_0171_PAUSE_GAME :{BLACK}Pouseer spel
-STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}Bewaar spel. verlaat spel, uitgang
+STR_0171_PAUSE_GAME :{BLACK}Pouse speletjie
+STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}Spaar speletjie, verlaat speletjie, laat vaar
STR_0173_DISPLAY_LIST_OF_COMPANY :{BLACK}Vertoon lys van maatskappy se stasies
-STR_0174_DISPLAY_MAP :{BLACK}Vertoon kaart
-STR_0175_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vertoon kaart, stad index
+STR_0174_DISPLAY_MAP :{BLACK}Vertoon werfkaart
+STR_0175_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vertoon werfkaart, dorp gids
STR_0176_DISPLAY_TOWN_DIRECTORY :{BLACK}Vertoon stad index
STR_0177_DISPLAY_COMPANY_FINANCES :{BLACK}Vertoon maatskappy finasi�e inligting
STR_0178_DISPLAY_COMPANY_GENERAL :{BLACK}Vertoon generale maatskappy inligting
@@ -440,51 +441,51 @@
STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}Vertoon lys van maatskappy se skepe
STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}Vertoon lys van maatskappy se vliegtuie
STR_017F_ZOOM_THE_VIEW_IN :{BLACK}Vergroot die skerm
-STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Verklein die skerm
+STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Vergroot die siening uit
STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Bou spoorweg spoor
STR_0182_BUILD_ROADS :{BLACK}Bou Paaie
STR_0183_BUILD_SHIP_DOCKS :{BLACK}Bou skip hawe
STR_0184_BUILD_AIRPORTS :{BLACK}Bou lughawe
STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}Plant boome, plaas tekens ens.
-STR_0186_LAND_BLOCK_INFORMATION :{BLACK}Land area inligting
+STR_0186_LAND_BLOCK_INFORMATION :{BLACK}Daal area informasie
STR_0187_OPTIONS :{BLACK}Opsies
STR_0188 :{BLACK}{SMALLUPARROW}
STR_0189 :{BLACK}{SMALLDOWNARROW}
-STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}kan nie versiening tussentyd verander nie...
+STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}kan nie diens tussentyd verander nie...
STR_018B_CLOSE_WINDOW :{BLACK}Maak venster toe
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Venster titel - sleep die om venster te beweeg
STR_STICKY_BUTTON :{BLACK}Bemerk die venste as ontoemaakbaar by die"Sluit Alle Vensters" sleutel
STR_RESIZE_BUTTON :{BLACK}Kliek en sleep om venster te vergroot
STR_SAVELOAD_HOME_BUTTON :{BLACK}Kliek hier om na die huidige bewaar/laai leer te spring
-STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Breek gebou af ens. op 'n landblokkie
-STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Verlaag 'n hoek van land
-STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Verhoog 'n hoek van land
+STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Vernietig geboue ens. op 'n vierkant van daal
+STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}Laer 'n hoek van daal
+STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}Verhoog 'n hoek van daal
STR_0190_SCROLL_BAR_SCROLLS_LIST :{BLACK}Rol baan - rol die lys op/af
STR_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rol baan - rol die lys op/af
-STR_0191_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Vertoon land hoogtelyne op kaart
-STR_0192_SHOW_VEHICLES_ON_MAP :{BLACK}Vertoon voertuie op kaart
-STR_0193_SHOW_INDUSTRIES_ON_MAP :{BLACK}Vertoon nywerheide op kaart
-STR_0194_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Vertoon vervoer roete op kaart
-STR_0195_SHOW_VEGETATION_ON_MAP :{BLACK}Vertoon plantegroei op kaart
-STR_0196_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Vertoon land eienaars op kaart
-STR_0197_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Skakel stad naame aan/af op kaart
+STR_0191_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Toon daal kontoere op werfkaart
+STR_0192_SHOW_VEHICLES_ON_MAP :{BLACK}Vertoon voertuie op werfkaart
+STR_0193_SHOW_INDUSTRIES_ON_MAP :{BLACK}Vertoon nywerhede op werfkaart
+STR_0194_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Vertoon vervoer roete op werfkaart
+STR_0195_SHOW_VEGETATION_ON_MAP :{BLACK}Vertoon plantegroei op werfkaart
+STR_0196_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Toon daal eienaars op werfkaart
+STR_0197_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Tokkel dorp name on/off op werfkaart
STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}Profyt die jaar: {CURRENCY} (verlede jaar: {CURRENCY})
############ range for service numbers starts
-STR_AGE :{COMMA} jaar{P "" e} ({COMMA})
-STR_AGE_RED :{RED}{COMMA} jaar{P "" e} ({COMMA})
+STR_AGE :{COMMA} ja{P ar re} ({COMMA})
+STR_AGE_RED :{RED}{COMMA} ja{P ar re} ({COMMA})
############ range for service numbers ends
STR_019C_ROAD_VEHICLE :Pad voertuig
STR_019D_AIRCRAFT :Vliegtuig
STR_019E_SHIP :Skip
STR_019F_TRAIN :Trein
-STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA} raak nou oud
-STR_01A1_IS_GETTING_VERY_OLD :{WHITE}{STRING} {COMMA} is besig om baie oud te word
-STR_01A2_IS_GETTING_VERY_OLD_AND :{WHITE}{STRING} {COMMA} is besig om baie oud te word en moet dringend vervang word
-STR_01A3_LAND_AREA_INFORMATION :{WHITE}Land Area Inligting
-STR_01A4_COST_TO_CLEAR_N_A :{BLACK}Prys om te reinig: {LTBLUE}N/A
-STR_01A5_COST_TO_CLEAR :{BLACK}Prys om te reinig: {LTBLUE}{CURRENCY}
+STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA} word ou
+STR_01A1_IS_GETTING_VERY_OLD :{WHITE}{STRING} {COMMA} word baie ou
+STR_01A2_IS_GETTING_VERY_OLD_AND :{WHITE}{STRING} {COMMA} word baie ou en dringend benodig vervang
+STR_01A3_LAND_AREA_INFORMATION :{WHITE}Daal area informasie
+STR_01A4_COST_TO_CLEAR_N_A :{BLACK}Kos om te reinig: {LTBLUE}N/A
+STR_01A5_COST_TO_CLEAR :{BLACK}Kos om te reinig: {LTBLUE}{CURRENCY}
STR_01A6_N_A :N/A
STR_01A7_OWNER :{BLACK}Eienaar: {LTBLUE}{STRING}
STR_01A8_LOCAL_AUTHORITY :{BLACK}Plaaslike raad: {LTBLUE}{STRING}
@@ -562,7 +563,7 @@
STR_01EE_TRACK_INDEX :{TINYFONT}{BLACK}Liedjie Index
STR_01EF_PROGRAM :{TINYFONT}{BLACK}Musiek Lys - '{STRING}'
STR_01F0_CLEAR :{TINYFONT}{BLACK}Reinig
-STR_01F1_SAVE :{TINYFONT}{BLACK}Bewaar
+STR_01F1_SAVE :{TINYFONT}{BLACK}Spaar
STR_01F2_CURRENT_PROGRAM_OF_MUSIC :{BLACK}Huidige musiek keuse
STR_01F3_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Kies 'alle liedjies' musiek lys
STR_01F4_SELECT_OLD_STYLE_MUSIC :{BLACK}Kies 'ou styl musiek' musiek lys
@@ -570,10 +571,10 @@
STR_01F6_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Kies 'Gewoonte 1' (gebruiker-gestel) musiek lys
STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Kies 'Gewoonte 2' (gebruiker-gestel) musiek lys
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Reinig huidige musiek keuse (slegs Gewoonte1 of Gewoonte2)
-STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Bewaar musiek stellings
+STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Spaar musiek stellings
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Kliek op musiek liedjie om by huidige musiek lys in te sit (slegs Gewoonte1 of Gewoonte2)
STR_CLICK_ON_TRACK_TO_REMOVE :{BLACK}Kliek op musiek lied om te verwyder van huidige program (Slegs Gewoonte1 of Gewoonte2)
-STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Skakel musiek lys skuifel aan/af
+STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Tokkel musiek lys skuifel aan/af
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vertoon musiek liedjie keuse venster
STR_01FD_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliek op diens om uitsig te senter op nywerheid/stad
STR_01FE_DIFFICULTY :{BLACK}Moeilikheid ({STRING})
@@ -584,16 +585,16 @@
STR_0203_SHOW_LAST_MESSAGE_NEWS :{BLACK}Vertoon laaste boodskap/nuus verslag, vertoon boodskap opsies
STR_0204_MESSAGE_OPTIONS :{WHITE}Boodskap Opsies
STR_0205_MESSAGE_TYPES :{BLACK}Boodskap tipes:
-STR_0206_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}Aankoms van eerste voetuig by speler se stasie
-STR_0207_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}Aankoms van eerste voertuig by mededinger se stasie
+STR_0206_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}Aankoms van eerste voetuig tot speler se stasie
+STR_0207_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}Aankoms van eerste voertuig tot mededinger se stasie
STR_0208_ACCIDENTS_DISASTERS :{YELLOW}Ongelukke / rampe
-STR_0209_COMPANY_INFORMATION :{YELLOW}Maatkappy inligting
+STR_0209_COMPANY_INFORMATION :{YELLOW}Maatskappy informasie
STR_020A_ECONOMY_CHANGES :{YELLOW}Ekonomie veranderings
-STR_020B_ADVICE_INFORMATION_ON_PLAYER :{YELLOW}Raad / inligting op speler se voertuie
+STR_020B_ADVICE_INFORMATION_ON_PLAYER :{YELLOW}Raad / informasie op speler se voertuie
STR_020C_NEW_VEHICLES :{YELLOW}Nuwe voertuie
STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Veranderings na vrag aanvarde
STR_020E_SUBSIDIES :{YELLOW}Subsidiee
-STR_020F_GENERAL_INFORMATION :{YELLOW}Generale inligting
+STR_020F_GENERAL_INFORMATION :{YELLOW}Generale informasie
STR_MESSAGES_ALL :{YELLOW}Stel alle boodskap tipes na: Af/Opsomming/Volle
STR_MESSAGE_SOUND :{YELLOW}Speel geluid vir opsommige nuus boodskappe
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...te ver van vorige destinasie
@@ -613,36 +614,36 @@
STR_021C_OF_ACHIEVES_STATUS :{WHITE}{BIGFONT}{PLAYERNAME} van {COMPANY} behaal '{STRING}' stand!
STR_021F :{BLUE}{COMMA}
STR_0221_OPENTTD :{YELLOW}OpenTTD
-STR_0222_SCENARIO_EDITOR :{YELLOW}Draaiboek Redakteur
-STR_0223_LAND_GENERATION :{WHITE}Land Ontwikkeling
+STR_0222_SCENARIO_EDITOR :{YELLOW}Draaiboek Redigeerder
+STR_0223_LAND_GENERATION :{WHITE}Daal Generasie
STR_0224 :{BLACK}{UPARROW}
STR_0225 :{BLACK}{DOWNARROW}
STR_0228_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Vergroot land area om te verlaag/verhoog
STR_0229_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Verminder land area om te verlaag/verhoog
-STR_022A_GENERATE_RANDOM_LAND :{BLACK}Ontwikkel lukraak land
-STR_022B_RESET_LANDSCAPE :{BLACK}Herstel landerye
-STR_022C_RESET_LANDSCAPE :{WHITE}Herstel landerye
+STR_022A_GENERATE_RANDOM_LAND :{BLACK}Opwek lukraak daal
+STR_022B_RESET_LANDSCAPE :{BLACK}Herstel landskap
+STR_022C_RESET_LANDSCAPE :{WHITE}Herstel landskap
STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Is jy seker jy wil alle speler-besittend eiendom verwyder?
-STR_022E_LANDSCAPE_GENERATION :{BLACK}Landerye ontwikkeling
-STR_022F_TOWN_GENERATION :{BLACK}Stad ontwikkeling
-STR_0230_INDUSTRY_GENERATION :{BLACK}Nyweheid ontwikkeling
-STR_0231_ROAD_CONSTRUCTION :{BLACK}Pad konstruksie
-STR_0233_TOWN_GENERATION :{WHITE}Stad Ontwikkeling
-STR_0234_NEW_TOWN :{BLACK}Nuwe Stad
-STR_0235_CONSTRUCT_NEW_TOWN :{BLACK}Bou nuwe stad
-STR_0236_CAN_T_BUILD_TOWN_HERE :{WHITE}Stad kan nie hier gebou word nie...
-STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}...te naby aan kant van kaart
-STR_0238_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}...te naby aan 'n ander stad
-STR_0239_SITE_UNSUITABLE :{WHITE}...plek ongeskik
-STR_023A_TOO_MANY_TOWNS :{WHITE}...te veel stede
+STR_022E_LANDSCAPE_GENERATION :{BLACK}Landskap generasie
+STR_022F_TOWN_GENERATION :{BLACK}Dorp generasie
+STR_0230_INDUSTRY_GENERATION :{BLACK}Nyweheid generasie
+STR_0231_ROAD_CONSTRUCTION :{BLACK}Pad samestelling
+STR_0233_TOWN_GENERATION :{WHITE}Dorp Generasie
+STR_0234_NEW_TOWN :{BLACK}Nuwe Dorp
+STR_0235_CONSTRUCT_NEW_TOWN :{BLACK}Bou nuwe dorp
+STR_0236_CAN_T_BUILD_TOWN_HERE :{WHITE}Dorp kan nie hier gebou word nie...
+STR_0237_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}...te naby aan rand van werfkaart
+STR_0238_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}...te naby aan 'n ander dorp
+STR_0239_SITE_UNSUITABLE :{WHITE}...werf nie geskik nie
+STR_023A_TOO_MANY_TOWNS :{WHITE}...te veel dorpe
STR_CANNOT_GENERATE_TOWN :{WHITE}Kan nie enige stede bou nie
STR_NO_SPACE_FOR_TOWN :{WHITE}...daar is nie meer spasie op die kaart nie
-STR_023B_INCREASE_SIZE_OF_TOWN :{BLACK}Vergroot stad
-STR_023C_EXPAND :{BLACK}Uitbrei
-STR_023D_RANDOM_TOWN :{BLACK}Lukraak Stad
-STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION :{BLACK}Bou stad in lukraak plek
-STR_023F_INDUSTRY_GENERATION :{WHITE}Nywerheid Ontwikkeling
-STR_0240_COAL_MINE :{BLACK}Steenkool Myn
+STR_023B_INCREASE_SIZE_OF_TOWN :{BLACK}verhoog grootte van dorp
+STR_023C_EXPAND :{BLACK}Sprei uit
+STR_023D_RANDOM_TOWN :{BLACK}Lukraak Dorp
+STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION :{BLACK}Bou dorp in lukraak lokasie
+STR_023F_INDUSTRY_GENERATION :{WHITE}Nywerheid Generasie
+STR_0240_COAL_MINE :{BLACK}Kool Myn
STR_0241_POWER_STATION :{BLACK}Krag Stasie
STR_0242_SAWMILL :{BLACK}Saagmeul
STR_0243_FOREST :{BLACK}Woud
@@ -658,134 +659,137 @@
STR_024D_FOOD_PROCESSING_PLANT :{BLACK}Kos Verwerking Fabriek
STR_024E_PRINTING_WORKS :{BLACK}Drukwerke
STR_024F_GOLD_MINE :{BLACK}Goud Myn
-STR_0250_LUMBER_MILL :{BLACK}Timmehoutmeul
+STR_0250_LUMBER_MILL :{BLACK}Timmehout Meule
STR_0251_FRUIT_PLANTATION :{BLACK}Vrugte Plantasie
STR_0252_RUBBER_PLANTATION :{BLACK}Gomlastiek Plantasie
-STR_0253_WATER_SUPPLY :{BLACK}Water Lewering
+STR_0253_WATER_SUPPLY :{BLACK}Water Verskaf
STR_0254_WATER_TOWER :{BLACK}Water Toring
STR_0255_DIAMOND_MINE :{BLACK}Diamant Myn
STR_0256_COPPER_ORE_MINE :{BLACK}Koper Erts Myn
STR_0257_COTTON_CANDY_FOREST :{BLACK}Spookasem Woud
STR_0258_CANDY_FACTORY :{BLACK}Lekker Fabriek
STR_0259_BATTERY_FARM :{BLACK}Battery Boerdery
-STR_025A_COLA_WELLS :{BLACK}Cola Bron
+STR_025A_COLA_WELLS :{BLACK}Cola Spruite
STR_025B_TOY_SHOP :{BLACK}Speelgoed Winkel
STR_025C_TOY_FACTORY :{BLACK}Speelgoed Fabriek
STR_025D_PLASTIC_FOUNTAINS :{BLACK}Plastiek Fonteine
STR_025E_FIZZY_DRINK_FACTORY :{BLACK}Koeldrank Fabriek
-STR_025F_BUBBLE_GENERATOR :{BLACK}Borrel Ontwikkelaar
+STR_025F_BUBBLE_GENERATOR :{BLACK}Borrel Genereerder
STR_0260_TOFFEE_QUARRY :{BLACK}Tameletjie Prooi
STR_0261_SUGAR_MINE :{BLACK}Suiker Myn
-STR_0262_CONSTRUCT_COAL_MINE :{BLACK}Bou Steenkool Myn
+STR_0262_CONSTRUCT_COAL_MINE :{BLACK}Bou Kool Myn
STR_0263_CONSTRUCT_POWER_STATION :{BLACK}Bou Krag Stasie
-STR_0264_CONSTRUCT_SAWMILL :{BLACK}Bou Saagmeul
+STR_0264_CONSTRUCT_SAWMILL :{BLACK}Bou Saagmeule
STR_0265_PLANT_FOREST :{BLACK}Beplant Woud
STR_0266_CONSTRUCT_OIL_REFINERY :{BLACK}Bou Olie Raffineerdery
-STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY :{BLACK}Bou Olieboor (Kan slegs naby aan kante van kaart gebou word)
+STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY :{BLACK}Bou Olieboor (Kan slegs naby aan kante van werfkaart gebou word)
STR_0268_CONSTRUCT_FACTORY :{BLACK}Bou Fabriek
-STR_0269_CONSTRUCT_STEEL_MILL :{BLACK}Bou Staalmeul
+STR_0269_CONSTRUCT_STEEL_MILL :{BLACK}Bou Staal Meule
STR_026A_CONSTRUCT_FARM :{BLACK}Bou Boerdery
STR_026B_CONSTRUCT_IRON_ORE_MINE :{BLACK}Bou Yster Erts Myn
-STR_026C_CONSTRUCT_OIL_WELLS :{BLACK}Bou Olie Bron
-STR_026D_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Bou Bank (kan slegs in stede met 'n populasie grooter as 1200 gebou word)
-STR_026E_CONSTRUCT_PAPER_MILL :{BLACK}Bou Papiermeul
+STR_026C_CONSTRUCT_OIL_WELLS :{BLACK}Bou Olie Spruite
+STR_026D_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Bou Bank (kan slegs in dorpe met 'n populasie grooter as 1200 gebou word)
+STR_026E_CONSTRUCT_PAPER_MILL :{BLACK}Bou Papier Meule
STR_026F_CONSTRUCT_FOOD_PROCESSING :{BLACK}Bou Kos Verwerkings Fabriek
STR_0270_CONSTRUCT_PRINTING_WORKS :{BLACK}Bou Drukwerke
STR_0271_CONSTRUCT_GOLD_MINE :{BLACK}Bou Goud Myn
-STR_0272_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Bou Bank (Kan slegs in stede gebou word)
-STR_0273_CONSTRUCT_LUMBER_MILL_TO :{BLACK}Bou Timmerhoutmeul (om reenwoud te reinig en hout te maak)
+STR_0272_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Bou Bank (Kan slegs in dorpe gebou word)
+STR_0273_CONSTRUCT_LUMBER_MILL_TO :{BLACK}Bou Timmerhoutmeul (om reenwoud te reinig en Hout te maak)
STR_0274_PLANT_FRUIT_PLANTATION :{BLACK}Beplant Vrugte Plantasie
STR_0275_PLANT_RUBBER_PLANTATION :{BLACK}Beplant Gomlastiek Plantasie
-STR_0276_CONSTRUCT_WATER_SUPPLY :{BLACK}Bou Water Lewering
-STR_0277_CONSTRUCT_WATER_TOWER_CAN :{BLACK}Bou Water Toring (Kan slegs in stede gebou word)
+STR_0276_CONSTRUCT_WATER_SUPPLY :{BLACK}Bou Water Verskaf
+STR_0277_CONSTRUCT_WATER_TOWER_CAN :{BLACK}Bou Water Toring (Kan slegs in dorpe gebou word)
STR_0278_CONSTRUCT_DIAMOND_MINE :{BLACK}Bou Diamant Myn
STR_0279_CONSTRUCT_COPPER_ORE_MINE :{BLACK}Bou Koper Erts Myn
STR_027A_PLANT_COTTON_CANDY_FOREST :{BLACK}Beplant Spookasem Woud
STR_027B_CONSTRUCT_CANDY_FACTORY :{BLACK}Bou Lekker Fabriek
STR_027C_CONSTRUCT_BATTERY_FARM :{BLACK}Bou Battery Boerdery
-STR_027D_CONSTRUCT_COLA_WELLS :{BLACK}Bou Cola Bron
+STR_027D_CONSTRUCT_COLA_WELLS :{BLACK}Bou Cola Spruite
STR_027E_CONSTRUCT_TOY_SHOP :{BLACK}Bou Speelgoed Winkel
STR_027F_CONSTRUCT_TOY_FACTORY :{BLACK}Bou Speelgoed Fabriek
STR_0280_CONSTRUCT_PLASTIC_FOUNTAINS :{BLACK}Bou Plastiek Fonteine
STR_0281_CONSTRUCT_FIZZY_DRINK_FACTORY :{BLACK}Bou Koeldrank Fabriek
-STR_0282_CONSTRUCT_BUBBLE_GENERATOR :{BLACK}Bou Borrel Ontwikkelaar
+STR_0282_CONSTRUCT_BUBBLE_GENERATOR :{BLACK}Bou Borrel Genereerder
STR_0283_CONSTRUCT_TOFFEE_QUARRY :{BLACK}Bou Tameletjie Prooi
STR_0284_CONSTRUCT_SUGAR_MINE :{BLACK}Bou Suiker Myn
STR_0285_CAN_T_BUILD_HERE :{WHITE}Kan nie {STRING} hier bou nie...
-STR_0286_MUST_BUILD_TOWN_FIRST :{WHITE}...moet eers stad bou
-STR_0287_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}...slegs een toegelaat per stad
+STR_0286_MUST_BUILD_TOWN_FIRST :{WHITE}...moet eers dorp bou
+STR_0287_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}...alleen een toegelaat per dorp
STR_0288_PLANT_TREES :{BLACK}Boome beplant
STR_0289_PLACE_SIGN :{BLACK}Plaas teken
STR_028A_RANDOM_TREES :{BLACK}Lukraak Boome
-STR_028B_PLANT_TREES_RANDOMLY_OVER :{BLACK}Beplant boome lukraake oor laderye
-STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Plaas rotse op landerye
+STR_028B_PLANT_TREES_RANDOMLY_OVER :{BLACK}Beplant bome wildweg oor landskap
+STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Plaas rotse op landskap
STR_028D_PLACE_LIGHTHOUSE :{BLACK}Plaas vuurtoring
STR_028E_PLACE_TRANSMITTER :{BLACK}Plaas sender
STR_028F_DEFINE_DESERT_AREA :{BLACK}Bepaal woestyn area.{}Druk en hou CTRL om te verwyder
-STR_0290_DELETE :{BLACK}Uitwis
-STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Uitwis hele stad
-STR_0292_SAVE_SCENARIO :Bewaar draaiboek
+STR_CREATE_LAKE :{BLACK}Bepaal water area.{}Maak 'n kanaal, tensy CTRL is ingehou teen seevlak, dan sal dit vloed vul die omgewings
+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_0294_QUIT_EDITOR :Verlaat redakteur
+STR_0294_QUIT_EDITOR :Laat vaar redigeerder
STR_0295 :
-STR_0296_QUIT :Verlaat
-STR_0297_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Bewaar draaiboek, laai draaiboek, verlaat draaiboek redakteur, Verlaat
+STR_0296_QUIT :Laat vaar
+STR_0297_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}spaar draaiboek, laai draaiboek, verlaat draaiboek redigeerder, laat vaar
STR_0298_LOAD_SCENARIO :{WHITE}Laai Draaiboek
-STR_0299_SAVE_SCENARIO :{WHITE}Bewaar Draaiboek
+STR_0299_SAVE_SCENARIO :{WHITE}Spaar Draaiboek
STR_029A_PLAY_SCENARIO :{BLACK}Speel Draaiboek
STR_PLAY_HEIGHTMAP :{BLACK}Speel Hoogtekaart
STR_PLAY_HEIGHTMAP_HINT :{BLACK}begin 'n nuwe spel, gebruikend 'n hoogtekaart as oStart a new game, using a heightmap as landscape
STR_QUIT_SCENARIO_QUERY :{YELLOW}Is jy seker jy wil die draaiboek verlaat?
-STR_029C_QUIT_EDITOR :{WHITE}Verlaat Redakteur
-STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan slegs in stede met 'n populasie van te minste 1200 gebou word
+STR_029C_QUIT_EDITOR :{WHITE}Laat vaar redigeerder
+STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan slegs in dorpe met 'n populasie van te minste 1200 gebou word
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}Beweeg die begin datum 1 jaar terug
STR_029F_MOVE_THE_STARTING_DATE :{BLACK}Beweeg die begin datum 1 jaar voor
-STR_02A0_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}...albei einde van brug moet op land wees
+STR_02A0_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}...albei einde van brug moet op daal wees
STR_02A1_SMALL :{BLACK}Klein
STR_02A2_MEDIUM :{BLACK}Middel
STR_02A3_LARGE :{BLACK}Groot
-STR_02A4_SELECT_TOWN_SIZE :{BLACK}Kies stad groote
-STR_02A5_TOWN_SIZE :{YELLOW}Stad groote:
+STR_SCENARIO_EDITOR_CITY :{BLACK}Stad
+STR_02A4_SELECT_TOWN_SIZE :{BLACK}Kies dorp groote
+STR_02A5_TOWN_SIZE :{YELLOW}Dorp groote:
STR_02B6 :{STRING} - {STRING}
-STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS :{BLACK}Wys laaste boodskap of nuus verslag
+STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS :{BLACK}Toon laas boodskap of nuus verslag
STR_OFF :Af
STR_SUMMARY :Opsomming
STR_FULL :Vol
STR_02BA :{SILVER}- - {COMPANY} - -
-STR_02BB_TOWN_DIRECTORY :Stad index
-STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Voertuig ontwerp naame
+STR_02BB_TOWN_DIRECTORY :Dorp gids
+STR_02BC_VEHICLE_DESIGN_NAMES :{BLACK}Voertuig ontwerp name
STR_02BD :{BLACK}{STRING}
-STR_02BE_DEFAULT :Gebrekte
+STR_02BE_DEFAULT :Verstek
STR_02BF_CUSTOM :Gewoonte
-STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Bewaar gewoonte naame
+STR_02C0_SAVE_CUSTOM_NAMES :{BLACK}Spaar gewoonte name
STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION :{BLACK}Voertuig ontwerp name keuse
-STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Bewaar doelgeboude voertuig ontwerp naame
+STR_02C2_SAVE_CUSTOMIZED_VEHICLE :{BLACK}Spaar pasgemaak voertuig ontwerp name
STR_CHECKMARK :{CHECKMARK}
############ range for menu starts
-STR_02C3_GAME_OPTIONS :Spel opsies
-STR_02C5_DIFFICULTY_SETTINGS :Moeilikheid stellings
-STR_02C7_CONFIG_PATCHES :Skep stukke
+STR_02C3_GAME_OPTIONS :Speletjie opsies
+STR_02C5_DIFFICULTY_SETTINGS :Moeite stellings
+STR_02C7_CONFIG_PATCHES :Konfigureer laslappe
STR_NEWGRF_SETTINGS :Newgrf stellings
+STR_TRANSPARENCY_OPTIONS :Deursigtigheid opsies
STR_GAMEOPTMENU_0A :
-STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Stad naame vertoon
-STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Stasie naame vertoon
+STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Dorp name vertoon
+STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Stasie name vertoon
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Tekens vertoon
STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Wegpunte vertoon
STR_02D0_FULL_ANIMATION :{SETX 12}Volle animasie
-STR_02D2_FULL_DETAIL :{SETX 12}Volle aanwyse
+STR_02D2_FULL_DETAIL :{SETX 12}Vol aanwyse
STR_02D4_TRANSPARENT_BUILDINGS :{SETX 12}Deurskynend geboue
STR_TRANSPARENT_SIGNS :{SETX 12}Deurskynend stasie tekens
############ range ends here
############ range for menu starts
-STR_02D5_LAND_BLOCK_INFO :Land area inligting
+STR_02D5_LAND_BLOCK_INFO :Daal area informasie
STR_02D6 :
STR_CONSOLE_SETTING :Skakel troos
-STR_02D7_SCREENSHOT_CTRL_S :Skermskut (Ctrl-S)
-STR_02D8_GIANT_SCREENSHOT_CTRL_G :Reuse Skermskut (Ctrl-G)
+STR_02D7_SCREENSHOT_CTRL_S :Skermskyf (Ctrl-S)
+STR_02D8_GIANT_SCREENSHOT_CTRL_G :Reus Skermskyf (Ctrl-G)
STR_02D9_ABOUT_OPENTTD :Rakend 'OpenTTD'
############ range ends here
@@ -793,31 +797,31 @@
STR_02DA_ON :{BLACK}An
STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Vertoon subsidiee
STR_02DD_SUBSIDIES :Subsidiee
-STR_02DE_MAP_OF_WORLD :Kaart van wêreld
+STR_02DE_MAP_OF_WORLD :Werfkaart van wêreld
STR_EXTRA_VIEW_PORT :Ekstra gesigswerf
STR_SIGN_LIST :Teken lys
-STR_02DF_TOWN_DIRECTORY :Stad indeks
+STR_02DF_TOWN_DIRECTORY :Dorp gids
STR_TOWN_POPULATION :{BLACK}Wereld populasie: {COMMA}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Gesigswerf {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Afskryf na gesigswerf
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Afskryf die lokasie van die wereldwerf na die gesigswerf
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopie na gesigswerf
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopie die lokasie van die wereldwerf na die gesigswerf
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Deeg van gesigswerf
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Deeg die lokasie van die gesigspunt na die hoofskerm
-STR_02E0_CURRENCY_UNITS :{BLACK}Koers eenheide
+STR_02E0_CURRENCY_UNITS :{BLACK}Koers eenhede
STR_02E1 :{BLACK}{SKIP}{STRING}
-STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Koers eendheide keuse
-STR_MEASURING_UNITS :{BLACK}Maatre� eenheide
+STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Koers eendhede keuse
+STR_MEASURING_UNITS :{BLACK}Meet eenhede
STR_02E4 :{BLACK}{SKIP}{SKIP}{STRING}
-STR_MEASURING_UNITS_SELECTION :{BLACK}Maatre� eenheide keuse
+STR_MEASURING_UNITS_SELECTION :{BLACK}Meet eenhede keuse
STR_02E6_ROAD_VEHICLES :{BLACK}Pad voertuie
STR_02E7 :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
STR_02E8_SELECT_SIDE_OF_ROAD_FOR :{BLACK}Kies kant van pad waarop voetuie bestuur
STR_02E9_DRIVE_ON_LEFT :Bestuur op links
STR_02EA_DRIVE_ON_RIGHT :Bestuur op regs
-STR_02EB_TOWN_NAMES :{BLACK}Stad naame
+STR_02EB_TOWN_NAMES :{BLACK}Dorp name
STR_02EC :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_02ED_SELECT_STYLE_OF_TOWN_NAMES :{BLACK}Kies styl van stad naame
+STR_02ED_SELECT_STYLE_OF_TOWN_NAMES :{BLACK}Kies styl van stad name
STR_02F4_AUTOSAVE :{BLACK}Outobewaar
STR_02F5 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
@@ -829,38 +833,38 @@
STR_02FB_START_A_NEW_GAME :{BLACK}Begin nuwe spel
STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Laai 'n bewaarde spel
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Skep 'n doelgeboude spel wêreld/draaiboek
-STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Kies enkel-speler spel
-STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Kies veelspeler spel met 2-8 spelers
-STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Vertoon spel opsies
-STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Vertoon moeilikheid opsies
-STR_0303_START_A_NEW_GAME_USING :{BLACK}Begin 'n nuwe spel, met 'n doelgemaakte draaiboek
-STR_0304_QUIT :{BLACK}Verlaat
-STR_0305_QUIT_OPENTTD :{BLACK}Verlaat 'OpenTTD'
+STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Kies enkel-speler speletjie
+STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Kies multispeler speletjie van 2-8 spelers
+STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Vertoon speletjie opsies
+STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Vertoon moeite opsies
+STR_0303_START_A_NEW_GAME_USING :{BLACK}Begin 'n nuwe speletjie, met 'n pasgemaak draaiboek
+STR_0304_QUIT :{BLACK}Laat vaar
+STR_0305_QUIT_OPENTTD :{BLACK}Laat vaar 'OpenTTD'
STR_0307_OPENTTD :{WHITE}OpenTTD {REV}
-STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan slegs in stede gebou word
-STR_030E_SELECT_TEMPERATE_LANDSCAPE :{BLACK}Kies 'gematig' landerye styl
-STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE :{BLACK}Kies 'onder-noordpool' landerye styl
-STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE :{BLACK}Kies 'onder-tropise' landerye styl
-STR_0311_SELECT_TOYLAND_LANDSCAPE :{BLACK}Kies 'speelgoedland' landerye styl
-STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Befonds gebou van nuwe nywerheid
+STR_030D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan slegs in dorpe gebou word
+STR_030E_SELECT_TEMPERATE_LANDSCAPE :{BLACK}Kies 'matig' landskap styl
+STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE :{BLACK}Kies 'onder-noordpool' landskap styl
+STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE :{BLACK}Kies 'onder-tropise' landskap styl
+STR_0311_SELECT_TOYLAND_LANDSCAPE :{BLACK}Kies 'speelgoedland' landskap styl
+STR_0312_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fonds samestelling van nuwe nywerheid
############ range for menu starts
-STR_INDUSTRY_DIR :Nywerheid Indeks
-STR_0313_FUND_NEW_INDUSTRY :Befonds nuwe nywerheid
+STR_INDUSTRY_DIR :Nywerheid Gids
+STR_0313_FUND_NEW_INDUSTRY :Fonds nuwe nywerheid
############ range ends here
-STR_0314_FUND_NEW_INDUSTRY :{WHITE}Befonds nuwe nywerheid
+STR_0314_FUND_NEW_INDUSTRY :{WHITE}Fonds nuwe nywerheid
STR_JUST_STRING :{STRING}
-STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan slegs in stede gebou word
+STR_0316_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan slegs in dorpe gebou word
STR_0317_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan slegs in reenwoud areas gebou word
STR_0318_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan slegs in woestyn areas gebou word
-STR_0319_PAUSED :{YELLOW}* * POUSEER * *
+STR_0319_PAUSED :{YELLOW}* * GEPOOS * *
-STR_031B_SCREENSHOT_SUCCESSFULLY :{WHITE}Skermskut suksesvollig bewaar as '{STRING}'
-STR_031C_SCREENSHOT_FAILED :{WHITE}Skermskut gedop!
+STR_031B_SCREENSHOT_SUCCESSFULLY :{WHITE}Skermskyf suksesvol gespaar as '{STRING}'
+STR_031C_SCREENSHOT_FAILED :{WHITE}Skermskyf misluk!
-STR_0329_PURCHASE_LAND_FOR_FUTURE :{BLACK}Koop land vir toekomende gebruik
-STR_032F_AUTOSAVE :{RED}OUTOBEWAAR
+STR_0329_PURCHASE_LAND_FOR_FUTURE :{BLACK}Koop daal vir toekoms gebruik
+STR_032F_AUTOSAVE :{RED}OUTOSPAAR
STR_SAVING_GAME :{RED}* * BEWAAR SPEL * *
STR_SAVE_STILL_IN_PROGRESS :{WHITE}Bewaar nog in vorder, wag asb tot dit klaar is!
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Kies 'Ezy Straat styl musiek' musiek lys
@@ -871,6 +875,11 @@
############ start of townname region
STR_TOWNNAME_ORIGINAL_ENGLISH :Engels (Oorspronkilik)
STR_TOWNNAME_FRENCH :Frans
+STR_TOWNNAME_GERMAN :Duits
+STR_TOWNNAME_ADDITIONAL_ENGLISH :Engels (addisioneel)
+STR_TOWNNAME_LATIN_AMERICAN :Latyns-Amerikaans
+STR_TOWNNAME_SILLY :Snaaks
+STR_TOWNNAME_SWEDISH :Sweeds
STR_TOWNNAME_DUTCH :Hollands
STR_TOWNNAME_FINNISH :Finnish
STR_TOWNNAME_POLISH :Polish
@@ -881,6 +890,10 @@
STR_TOWNNAME_ROMANIAN :Romanian
STR_TOWNNAME_CZECH :Czech
STR_TOWNNAME_SWISS :Swiss
+STR_TOWNNAME_DANISH :Deens
+STR_TOWNNAME_TURKISH :Turks
+STR_TOWNNAME_ITALIAN :Italiaans
+STR_TOWNNAME_CATALAN :Catalan
############ end of townname region
STR_CURR_GBP :Pounds ()
@@ -911,19 +924,25 @@
STR_CURR_SKK :Slovak Koruna (SKK)
STR_CURR_BRR :Brazilian Real (BRL)
-STR_CURR_CUSTOM :Gewoonte...
+STR_CURR_CUSTOM :Gebruiklike...
STR_OPTIONS_LANG :{BLACK}Taal
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_OPTIONS_LANG_TIP :{BLACK}Kies die koppelvlak taal om te gebruik
STR_OPTIONS_FULLSCREEN :{BLACK}Volskerm
+STR_OPTIONS_FULLSCREEN_TIP :{BLACK}Kies die blokkie om OpenTTD in volleskerm te speel
+STR_OPTIONS_RES :{BLACK}Skerm resolusie
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_OPTIONS_RES_TIP :{BLACK}Kies die skerm resolusie om te gebruik
+STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skermskyf formaat
STR_OPTIONS_SCREENSHOT_FORMAT_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
+STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Kies die skermskyf formaat om te gebruik
STR_AUTOSAVE_1_MONTH :Elke maand
-STR_AUTOSAVE_FAILED :{WHITE}Outobewaar gedop
+STR_AUTOSAVE_FAILED :{WHITE}Outospaar misluk
STR_MONTH_JAN :Januarie
STR_MONTH_FEB :Februarie
@@ -945,147 +964,203 @@
STR_PASSENGERS :passasiers
STR_BAGS :sakke
+STR_TONS :tonne
STR_LITERS :litres
STR_ITEMS :items
STR_CRATES :hokke
+STR_RES_OTHER :ander
STR_NOTHING :
STR_CANT_SHARE_ORDER_LIST :{WHITE}Kan nie opdraglys deel nie...
-STR_CANT_COPY_ORDER_LIST :{WHITE}Kan nie opdraglys afskryf nie...
-STR_END_OF_SHARED_ORDERS :{SETX 10}- - Einde van Verdeelde Opdrae - -
+STR_CANT_COPY_ORDER_LIST :{WHITE}Kan nie opdrag lys kopie nie...
+STR_END_OF_SHARED_ORDERS :{SETX 10}- - Einde van Gedeel Opdrae - -
STR_EURO_INTRODUCE :{BLACK}{BIGFONT}Europees Geldelik Samesmelting!{}{}Die Euro is ingevoer as die enigste koers vir daagliks transaksies in u land!
# Start of order review system.
# DON'T ADD OR REMOVE LINES HERE
STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}Vliegtuig {COMMA} het te min opdrae in die opgawe
-STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}vliegtuig {COMMA} het 'n nietig opdrag
+STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}vliegtuig {COMMA} het 'n leemte opdrag
STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}Vliegtuig {COMMA} het duplikaat opdrae
-STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}Vliegtuig {COMMA} hen 'n swak opdrag in sy opdrae
+STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}Vliegtuig {COMMA} hen 'n ongeldig stasie in sy opdrae
# end of order system
-STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Outohernuwe gedop op vliegtuig {COMMA} (geldperk)
+STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Outohernuwe misluk op vliegtuig {COMMA} (geld perk)
+STR_CONFIG_PATCHES :{BLACK}Konfigureer Laslappe
+STR_CONFIG_PATCHES_TIP :{BLACK}Konfigureer die laslappe
+STR_CONFIG_PATCHES_CAPTION :{WHITE}konfigureer Laslappe
STR_CONFIG_PATCHES_OFF :Af
STR_CONFIG_PATCHES_ON :Aan
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Wys voertuig spoed in die standbaan: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Toelaat opbou op hellings en strande: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Toelaat meer werklikheide opvanggebied groote: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Laattoe gebou op skuinstes en kusse: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AUTOSLOPE :{LTBLUE}Laattoe terraforming onder geboue, spoore, ens. (autoslope): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Laattoe meer realisties grootte opvanggebied: {ORANGE}{STRING}
STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Toelaat verwydering van meer stad-besite paaie, bruge, ens: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Stel in staat die gebou van baie lang treine: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Stel in staat realistiese versnelling vir treine: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Ontsper gebou van baie lang treine: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Ontsper realistiese versnelling vir treine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FORBID_90_DEG :{LTBLUE}Verbied triene en skepe om 90 graad draaie te maak: {ORANGE}{STRING} {LTBLUE} (benodig NPF)
-STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}Verbind trein stasies wat langsaan gebou is: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_JOINSTATIONS :{LTBLUE}sluit aan trein stasies gebou naby mekaar: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FULLLOADANY :{LTBLUE}Verlaat stasie as enige vrag vol is, as 'volle gelaai': {ORANGE}{STRING}
STR_CONFIG_PATCHES_IMPROVEDLOAD :{LTBLUE}Gebruik verebeterde laai algoritme: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_GRADUAL_LOADING :{LTBLUE}Laai voertuie geleidelik: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INFLATION :{LTBLUE}Inflasie: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SELECTGOODS :{LTBLUE}Aflewer vrag na 'n stasie slegs as daar 'n aanvrag is:: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGBRIDGES :{LTBLUE}Toelaat opbou van baie lank bruge: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Toelaat gaan na depot opdrae: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Toelaat veelvout soortgelyke nywerheide per stad: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Nywerheide van die selfde tipe kan naby aan mekaar gebou word: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Altyd wys lang datum in die standbaan: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Wys seine op die bestuur kant: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}Wys finansies venster op die einde van die jaar: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}TTDPatch bestaanbaar deurgaande behandeling: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_GOTODEPOT :{LTBLUE}Laattoe gaan na depot opdrae: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Manual primêre nywerheid konstruksie metode: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :geen
+STR_CONFIG_PATCHES_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :as ander nywerhede
+STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Laattoe vele soortgelyke nywerhede per dorp: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Nywerhede van die selfde tipe kan naby aan mekaar gebou word: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Toon altyd lang datum in die standbaan: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Toon seine op die bestuur kant: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}Toon finansies venster op die einde van die jaar: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}TTDPatch versoenbaar deurgaande hantering: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Pad voertuig toustaan (met kwantum effekte): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Was skerm as muis by die kant is: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Toelaat die omkooping van plaaslike gesag: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Laattoe die omkooping van plaaslike raad: {ORANGE}{STRING}
+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_ADJACENT_STATIONS :{LTBLUE}Toelaat gebou van teenstandige 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}
-STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Klein lughawe is altyd toegelaat: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Altyd laattoe klein lughawenst: {ORANGE}{STRING}
STR_CONFIG_PATCHES_WARN_LOST_TRAIN :{LTBLUE}Waarsku as trein verloor is: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Bespreek voertuig se opdrae: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :nee
-STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :ja, maar uitsluit gestopde voertuie
+STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :ja, maar sluit uit gestop voertuie
STR_CONFIG_PATCHES_ORDER_REVIEW_ON :van alle voertuie
STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Waarsku as trein inkomste negatief is: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Voertuie verval nooit nie: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Outohernuwe voertuig as hy oud raak
-STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Outohernuwe wanner voertuig is {ORANGE}{STRING}{LTBLUE} maande voor/agter max ouderdom
+STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Outohernuwe wanner voertuig is {ORANGE}{STRING}{LTBLUE} maande voor/agter maks ouderdom
STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Outohernuwe minimum vereisde geld vir hernuwe: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Tydgrens van fout boodskap: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Wys stad populasie in stad naam teken: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Duur van fout boodskap: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Toon dorp populasie in die dorp naam etiket: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Onsigbaar boome (met deurskynend geboue): {ORANGE}{STRING}
-STR_CONFIG_PATCHES_LAND_GENERATOR :{LTBLUE}Land ontwikkelaar: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LAND_GENERATOR :{LTBLUE}Land genereerder: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL :Oorspronklik
STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
-STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE :{LTBLUE}Max afstand van kant vir Olie Raffineerderye {ORANGE}{STRING}
+STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE :{LTBLUE}Maks afstand van kant vir Olie Raffineerderye {ORANGE}{STRING}
STR_CONFIG_PATCHES_SNOWLINE_HEIGHT :{LTBLUE}Sneeu lyn hoogte: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN :{LTBLUE}Ruheid van terrein (slegs TerraGenesis) : {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN :{LTBLUE}Grofheif van terrein (slegs TerraGenesis) : {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Baie Glad
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH :Glad
-STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH :Ru
-STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Baie Ru
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH :Rof
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Baie Rof
STR_CONFIG_PATCHES_TREE_PLACER :{LTBLUE}Boom plaas algoritme: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TREE_PLACER_NONE :Geen
STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL :Oorspronklik
-STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED :Verbeterde
+STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED :Verbeter
STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION :{LTBLUE}Hoogtekaart rotasie: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Die hoogtevlak 'n platte landerye kaart kry: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Teller vooruit
+STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE :Vooruit
+STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Die hoogte vlak 'n plat draaiboek werfkaart word: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Max stasie omvang: {ORANGE}{STRING} {RED}Waarskuwing: Ho�stelling vertraag spel
+STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maks stasie gesprei: {ORANGE}{STRING} {RED}Waarskuwing: hoë stel vertraag speletjie
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Versien helikopters by helihawes outomaties: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Verbind landereye werktuigbaan na spoor/pad/water/lughawe werktuigbaan: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Omkeer rol rigting: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Wys maatskappy lewerye: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Versag kykpoort rollees: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Toon 'n meting wanneer jy verskeie bou-gereedskap gebruik: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Toon maatskappy lewerye: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :Geen
STR_CONFIG_PATCHES_LIVERIES_OWN :Eie maatskappy
STR_CONFIG_PATCHES_LIVERIES_ALL :Alle maatskappye
-STR_CONFIG_PATCHES_PREFER_TEAMCHAT :{LTBLUE}Verkies span gesels met <ENTER>: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_PREFER_TEAMCHAT :{LTBLUE}Verkies span klets met <ENTER>: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :Af
+STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Werfkaart rolwiel spoed: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU :{LTBLUE}Regs-kliek emulasie: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-kliek
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_CONTROL :Control-kliek
+STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF :Af
+STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Outomaties pouse wanneer om te begin 'n nuwe speletjie: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Gebruik die voorloopende voertuiglys: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OFF :Af
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :Eie maatskappy
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :Alle maatskappye
+STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Gebruik laai aanwysers: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Ontsper timetabling vir voertuie: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Toon rooster in ticks liewer as dae: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Verstek spoor tipe (na nuwe spel/spel laai): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_RAIL :Gewone Spoor
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_ELRAIL :Elektrifiseerde Spoor
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Eenspoor
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :Maglev
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :Eers beskikbaar
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Laas beskikbaar
+STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Meeste gebruik
+STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Toon gebou gereedskap wanneer geen geskik voertuie is beskikbaar : {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Max treine per speler: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Max pad voertuie per speler: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Max vliegtuie per speler: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_SHIPS :{LTBLUE}Max skepe per speler: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_BUILDS_TRAINS :{LTBLUE}Vermink treine vir rekenaar: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}Vermink pad voertuie vir rekenaar: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Vermink vliegtuie vir rekenaar: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}Vermink skepe vir rekenaar: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_BUILDS_TRAINS :{LTBLUE}Sper treine vir rekenaar: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}Sper pad voertuie vir rekenaar: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT :{LTBLUE}Sper vliegtuie vir rekenaar: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_BUILDS_SHIPS :{LTBLUE}Sper skepe vir rekenaar: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Stel nuwe AI (alpha) in staat: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER :{LTBLUE}Toelaat AIe in veelspeeler (proefondervindelik): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AINEW_ACTIVE :{LTBLUE}Ontsper nuwe AI (alpha) in staat: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER :{LTBLUE}Laattoe AIe in multispeler (eksperimentele): {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Gebrekte versien tussentyd vir treine: {ORANGE}{STRING} dae/%
-STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Gebrekte versien tussentyd vir treine: {ORANGE}gestrem
-STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Gebrekte versien tussentyd vir pad voertuie: {ORANGE}{STRING} dae/%
-STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Gebrekte versien tussentyd vir pad voertuie: {ORANGE}gestrem
+STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Verstek diens pouse vir treine: {ORANGE}{STRING} dae/%
+STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Verstek diens pouse vir treine: {ORANGE}strem
+STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Verstek diens pouse vir pad voertuie: {ORANGE}{STRING} dae/%
+STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Verstek diens pouse vir pad voertuie: {ORANGE}strem
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Gebrekte versien tussentyd vir vlietuie: {ORANGE}{STRING} dae/%
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Gebrekte versien tussentyd vir vlietuie: {ORANGE}gestrem
-STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Gebrekte versien tussentyd vir skepe: {ORANGE}{STRING} dae/%
-STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Gebrekte versien tussentyd vir skepe: {ORANGE}gestrem
-STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Gestrem versiening wanneer oponthoude is na geen gestel: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Verstek diens pouse vir skepe: {ORANGE}{STRING} dae/%
+STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Verstek diens pouse vir skepe: {ORANGE}strem
+STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Sper diens wanneer komplikasies is na geen gestel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_WAGONSPEEDLIMITS :{LTBLUE}Stel wa spoed limite in staak: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DISABLE_ELRAILS :{LTBLUE}Gestrem elektriese spoore: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}Gekleurde nuus verskyn in: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}Begins datum: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Eindig spel in: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Stel vloeiende ekonomie in staak (meer, kleiner veranderings)
-STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Toelaat deele aankoop van ander maatskappye
-STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Wanneer sleeping, plaas seine elke: {ORANGE}{STRING} teel(e)
+STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}Jaar om te begin: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Eindig speletjie in: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Ontsper versag ekonomie (meer, kleiner veranderings)
+STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Laattoe deele aankoop van ander maatskappye
+STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Wanneer sleep, plaas seine elke: {ORANGE}{STRING} teel(e)
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Outomaties bou semaphores voor: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID :{WHITE}Die dorp uitleg "niks meer paaie" is nie geldig in die draaiboek redigeerder
+STR_CONFIG_PATCHES_TOWN_LAYOUT :{LTBLUE}Kies dorp-pad uitleg: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS :niks meer paaie
+STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT :verstek
+STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS :beter paaie
+STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID :2x2 grid
+STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID :3x3 grid
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posisie van hoof werktuigbaan: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Links
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Senter
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Regs
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Venster slag straal: {ORANGE}{STRING} px
-STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Venster slag straal: {ORANGE}gestrem
+STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Venster slag straal: {ORANGE}strem
+STR_CONFIG_PATCHES_TOWN_GROWTH :{LTBLUE}Dorp groei spoed: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_GROWTH_NONE :Geen
+STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW :Stadig
+STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL :Normaal
+STR_CONFIG_PATCHES_TOWN_GROWTH_FAST :Vinnig
+STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST :Baie vinnig
+STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Gedeelte van dorpe wat sal stede word: {ORANGE}1 in {STRING}
+STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Gedeelte van dorpe wat sal stede word: {ORANGE}None
+STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Aanvanklike stad grootte multiplier: {ORANGE}{STRING}
+STR_CONFIG_MODIFIED_ROAD_REBUILD :{LTBLUE}Verwyder verspot pad-elemente gedurende die pad konstruksie
+STR_CONFIG_PATCHES_GUI :{BLACK}koppelvlak
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Konstruksie
STR_CONFIG_PATCHES_VEHICLES :{BLACK}Voertuie
STR_CONFIG_PATCHES_STATIONS :{BLACK}Stasies
@@ -1096,25 +1171,25 @@
STR_CONFIG_PATCHES_INT32 :{NUM}
STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
-STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Verander stelling waarde
-STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Party of almal van die gebrekte versien tussentyd(e) onder is onbestaanbaar met die verkiesde stelling! 5-90% en 30-800 dae is geldig
+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_CHEATS :{WHITE}Bedriege
-STR_CHEATS_TIP :{BLACK}Tikblokkies aanwys as jy die bedreig vroe� gebruik het
-STR_CHEATS_WARNING :{BLACK}Waarskuwing! Jy gaan omtrent jou genoote mededingers verrai. Hou in gemoed dat so 'n skande sal vir ewig onhout word.
+STR_CHEATS :{WHITE}Kullery
+STR_CHEATS_TIP :{BLACK}Tikblokkies wys ann as jy die bedreig vroeë gebruik het
+STR_CHEATS_WARNING :{BLACK}Waarskuwing! U staan op die punt om jou mededinger te verrai. Hou in gedagte dat so 'n skande sal vir ewigheid onthou word.
STR_CHEAT_MONEY :{LTBLUE}Vermeerder geld by {CURRENCY}
STR_CHEAT_CHANGE_PLAYER :{LTBLUE}Speel as speler: {ORANGE}{COMMA}
-STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Tower stootskraper (uitwis nywerheide, onbeweegbares): {ORANGE}{STRING}
+STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Tower stootskraper (uitwis nywerhede, onbeweegbares): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tonnels mag vir mekaar kruis: {ORANGE}{STRING}
-STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Bou terwyl in pouseer: {ORANGE}{STRING}
+STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Bou terwyl in pouse modus: {ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}Straalvliegtuie sal nie (dikwels) op klein lughawe bots nie: {ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Skakel klimaat: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Verander datum: {ORANGE} {DATE_SHORT}
-STR_CHEAT_SETUP_PROD :{LTBLUE}Stel modifikasie van produksie waarde in staak: {ORANGE}{STRING}
+STR_CHEAT_SETUP_PROD :{LTBLUE}Ontsper modifisering van produksie waardes: {ORANGE}{STRING}
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Op pad na {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Op pad na {WAYPOINT}, {VELOCITY}
@@ -1137,13 +1212,13 @@
STR_NO_TOWN_IN_SCENARIO :{WHITE}...daar is geen stad in die draaiboek
STR_GENERATE_RANDOM_LANDSCAPE :{WHITE}Is jy seker jy wil 'n lukraake landeryke skep?
-STR_MANY_RANDOM_TOWNS :{BLACK}Baie lukraak stede
-STR_MANY_RANDOM_INDUSTRIES :Baie luraak nyweheide
-STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan nie nywerheide ontwikkel nie...
+STR_MANY_RANDOM_TOWNS :{BLACK}Baie lukraak dorpe
+STR_MANY_RANDOM_INDUSTRIES :Baie luraak nywehede
+STR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan nie nywerhede opwek nie...
STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Oppe die landargitekteur werktuigbaan om land te verhoog/verlaag, boome beplant, ens.
STR_LANDSCAPING_TOOLBAR :{WHITE}Landargitekteur
-STR_LEVEL_LAND_TOOLTIP :{BLACK}Vlakte land
+STR_LEVEL_LAND_TOOLTIP :{BLACK}Vlakte daal
@@ -1157,6 +1232,7 @@
STR_BUOY_IS_IN_USE :{WHITE}...baken is in gebruik!
+STR_LANDINFO_COORDS :{BLACK}Koördineer: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING})
STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Kan nie deel van stasie verwyder nie...
STR_CANT_CONVERT_RAIL :{WHITE}Kan nie spoor tipe hier verdoel nie...
@@ -1169,43 +1245,43 @@
STR_FAST_FORWARD :{BLACK}Vinnig vooruit die spel
STR_MESSAGE_HISTORY :{WHITE}Boodskap Geskidenis
STR_MESSAGE_HISTORY_TIP :{BLACK}'n Lys van al die onlangs nuus boodskappe
-STR_MESSAGES_DISABLE_ALL :{BLACK}Gestrem alle
-STR_MESSAGES_ENABLE_ALL :{BLACK}Stel alle in staak
+STR_MESSAGES_DISABLE_ALL :{BLACK}Sper alle
+STR_MESSAGES_ENABLE_ALL :{BLACK}Ontsper alle
-STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Bou Steenkool Myn
+STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Bou Kool Myn
STR_CONSTRUCT_FOREST_TIP :{BLACK}Wout Beplant
STR_CONSTRUCT_OIL_RIG_TIP :{BLACK}Bou Olieboor
-STR_CONSTRUCT_FARM_TIP :{BLACK}Befonds Plaas
+STR_CONSTRUCT_FARM_TIP :{BLACK}Fonds Boerdery
STR_CONSTRUCT_COPPER_ORE_MINE_TIP :{BLACK}Bou Koper Erts Myn
STR_CONSTRUCT_OIL_WELLS_TIP :{BLACK}Boor vir Olie
STR_CONSTRUCT_GOLD_MINE_TIP :{BLACK}Bou Goud Myn
STR_CONSTRUCT_DIAMOND_MINE_TIP :{BLACK}Bou Diamant Myn
STR_CONSTRUCT_IRON_ORE_MINE_TIP :{BLACK}Bou Yster Erts Myn
-STR_CONSTRUCT_FRUIT_PLANTATION_TIP :{BLACK}Befonds Vrugte Plantasie
-STR_CONSTRUCT_RUBBER_PLANTATION_TIP :{BLACK}Befonds Gomlastiek Plantasie
-STR_CONSTRUCT_WATER_SUPPLY_TIP :{BLACK}Befonds Water Lewering
+STR_CONSTRUCT_FRUIT_PLANTATION_TIP :{BLACK}Fonds Vrugte Plantasie
+STR_CONSTRUCT_RUBBER_PLANTATION_TIP :{BLACK}Fonds Gomlastiek Plantasie
+STR_CONSTRUCT_WATER_SUPPLY_TIP :{BLACK}Fonds Water Verskaf
STR_CONSTRUCT_COTTON_CANDY_TIP :{BLACK}Beplant Spookasem Woud
-STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}Befonds Battery Plaas
+STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}Befonds Battery Boerdery
STR_CONSTRUCT_COLA_WELLS_TIP :{BLACK}Boor vir Cola
-STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP :{BLACK}Befonds Plastiek Fonteine
-STR_CONSTRUCT_BUBBLE_GENERATOR_TIP :{BLACK}Bou Borrel Ontwikkelaar
-STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Befonds Tameletjie Prooi
+STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP :{BLACK}Fonds Plastiek Fonteine
+STR_CONSTRUCT_BUBBLE_GENERATOR_TIP :{BLACK}Bou Borrel Genereerder
+STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Fonds Tameletjie Prooi
STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Bou Suiker Myn
-STR_INDUSTRYDIR_CAPTION :{WHITE}Nywerheide
+STR_INDUSTRYDIR_CAPTION :{WHITE}Nywerhede
STR_INDUSTRYDIR_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}){YELLOW} ({COMMA}% uitgevoer)
STR_INDUSTRYDIR_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}/{CARGO}){YELLOW} ({COMMA}%/{COMMA}% uitgevoer)
STR_INDUSTRYDIR_ITEM_NOPROD :{ORANGE}{INDUSTRY}
STR_INDUSTRY_TOO_CLOSE :{WHITE}...te naby aan 'n ander nywerheid
-STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Versien tussentye is in persente: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Diens pouse is in persente: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Verander produksie
############ network gui strings
-STR_NETWORK_MULTIPLAYER :{WHITE}Veelspeler
+STR_NETWORK_MULTIPLAYER :{WHITE}Multispeler
STR_NETWORK_PLAYER_NAME :{BLACK}Speler naam:
STR_NETWORK_ENTER_NAME_TIP :{BLACK}Die is die naam waarmee ander spelers sal jou aanwys
@@ -1216,25 +1292,25 @@
STR_NETWORK_START_SERVER_TIP :{BLACK}Begin u eie bediender
STR_NETWORK_GAME_NAME :{BLACK}Naam
-STR_NETWORK_GAME_NAME_TIP :{BLACK}Naam van die spel
+STR_NETWORK_GAME_NAME_TIP :{BLACK}Naam van die speletjie
STR_NETWORK_INFO_ICONS_TIP :{BLACK}Taal, bediender verwerking, ens.
-STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}kliek 'n naam op die lys om dit te kies
+STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Kliek 'n speletjie van die lys om dit te selekteer
-STR_NETWORK_FIND_SERVER :{BLACK}Versoek bediender
-STR_NETWORK_FIND_SERVER_TIP :{BLACK}Versoek netwerk vir 'n bediender
+STR_NETWORK_FIND_SERVER :{BLACK}Versoek verskaffer
+STR_NETWORK_FIND_SERVER_TIP :{BLACK}Versoek netwerk vir 'n verskaffer
STR_NETWORK_ADD_SERVER :{BLACK}Byvoeg Bediender
-STR_NETWORK_ADD_SERVER_TIP :{BLACK}Byvoeg 'n bediender na die lys wat sal altyd nagaan vir lopende spele
+STR_NETWORK_ADD_SERVER_TIP :{BLACK}Voeg 'n verskaffer tot die lys wat sal altyd wees gemerk vir loopende speletjies.
STR_NETWORK_ENTER_IP :{BLACK}Invoeg die adres van die gasheer
STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Kliente
-STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Kliente oplyn / Kliente max{}Maatskappye oplyn / Maatskappye max
-STR_NETWORK_GAME_INFO :{SILVER}SPEL INLIGTING
+STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Kliente oplyn / Kliente maks{}Maatskappye oplyn / Maatskappye maks
+STR_NETWORK_GAME_INFO :{SILVER}SPEL INFORMASIE
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Kliente: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Taal: {WHITE}{STRING}
STR_NETWORK_TILESET :{SILVER}Blokkiestel: {WHITE}{STRING}
-STR_NETWORK_MAP_SIZE :{SILVER}Kaart groote: {WHITE}{COMMA}x{COMMA}
+STR_NETWORK_MAP_SIZE :{SILVER}Werfkaart groote: {WHITE}{COMMA}x{COMMA}
STR_NETWORK_SERVER_VERSION :{SILVER}Bediender hersiening: {WHITE}{STRING}
STR_NETWORK_SERVER_ADDRESS :{SILVER}Bediender adres: {WHITE}{STRING} : {NUM}
STR_NETWORK_START_DATE :{SILVER}Begin datum: {WHITE}{DATE_SHORT}
@@ -1243,6 +1319,7 @@
STR_NETWORK_SERVER_OFFLINE :{SILVER}BEDIENDER AFLYN
STR_NETWORK_SERVER_FULL :{SILVER}BEDIENDER VOL
STR_NETWORK_VERSION_MISMATCH :{SILVER}HERSIENING ONGELYK
+STR_NETWORK_GRF_MISMATCH :{SILVER}NEWGRF MISPAS
STR_NETWORK_JOIN_GAME :{BLACK}Verbind spel
@@ -1250,39 +1327,67 @@
STR_NETWORK_START_GAME_WINDOW :{WHITE}Begin nuwe veelspeler spel
STR_NETWORK_NEW_GAME_NAME :{BLACK}Spel naam:
-STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Die spel naam sal vertoon word na ander spelers in die veelspeler keuse
+STR_NETWORK_NEW_GAME_NAME_TIP :{BLACK}Die spel naam sal vertoon word na ander spelers in die multispeler keuse
STR_NETWORK_SET_PASSWORD :{BLACK}Stel wagwoord
STR_NETWORK_PASSWORD_TIP :{BLACK}Beskerm jou spel met 'n wagwoord as jy wil dit nie publieke toepassing laat wees nie
STR_NETWORK_SELECT_MAP :{BLACK}Kies 'n kaart
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Watter kaart wil jy speel?
+STR_NETWORK_LAN_INTERNET_COMBO :{BLACK}{SKIP}{STRING}
STR_NETWORK_LAN :LAN
STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :LAN / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (adverteer)
-STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Max kliente:
+STR_NETWORK_CLIENTS_SELECT :{BLACK}{SKIP}{SKIP}{NUM} Klient{P "" e}
+STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maks kliente:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Kies die maksimum nommer van kielnte. Alle gleufe hoef nie om vol te wees nie
-STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Max maatskappye:
-STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Beperk die bedinder na 'n sekere bedrag van maatskappye
-STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Max aanskouers:
-STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Beperk die bediender na 'n sekere bedrag van aanskouers
+STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} Maatskap{P py pye}
+STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Maks maatskappye:
+STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Beperk die verskaffer na 'n sekere bedrag van maatskappye
+STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Maks aanskouers:
+STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Beperk die verskaffer na 'n sekere bedrag van aanskouers
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Taal gepraat:
-STR_NETWORK_LANGUAGE_TIP :{BLACK}Ander spelers sal weet watter taal op die bediender gepraat is
+STR_NETWORK_LANGUAGE_TIP :{BLACK}Ander spelers sal weet watter taal op die verskaffer gepraat is
STR_NETWORK_START_GAME :{BLACK}Begin Spel
STR_NETWORK_START_GAME_TIP :{BLACK}Begin 'n nuwe netwerk spel van 'n lukraak kaart, of draaiboek
-STR_NETWORK_LOAD_GAME :{BLACK}Laai Spel
-STR_NETWORK_LOAD_GAME_TIP :{BLACK}Vervolg 'n vroe� bewaarde veelspeler spel (wees seker om te verbind as die korrekte speler)
+STR_NETWORK_LOAD_GAME :{BLACK}Laai Speletjie
+STR_NETWORK_LOAD_GAME_TIP :{BLACK}Hervat 'n vroeër gespaar multispeler speletjie (wees seker om te konnekteer as die korrekte speler)
############ Leave those lines in this order!!
STR_NETWORK_LANG_ANY :Enige
STR_NETWORK_LANG_ENGLISH :Engels
STR_NETWORK_LANG_GERMAN :Duits
STR_NETWORK_LANG_FRENCH :Frans
+STR_NETWORK_LANG_BRAZILIAN :Brazilian
+STR_NETWORK_LANG_BULGARIAN :Bulgarian
+STR_NETWORK_LANG_CHINESE :Chinese
+STR_NETWORK_LANG_CZECH :Czech
+STR_NETWORK_LANG_DANISH :Danish
+STR_NETWORK_LANG_DUTCH :Dutch
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finnish
+STR_NETWORK_LANG_HUNGARIAN :Hungarian
+STR_NETWORK_LANG_ICELANDIC :Icelandic
+STR_NETWORK_LANG_ITALIAN :Italian
+STR_NETWORK_LANG_JAPANESE :Japanese
+STR_NETWORK_LANG_KOREAN :Korean
+STR_NETWORK_LANG_LITHUANIAN :Lithuanian
+STR_NETWORK_LANG_NORWEGIAN :Norwegian
+STR_NETWORK_LANG_POLISH :Polish
+STR_NETWORK_LANG_PORTUGUESE :Portuguese
+STR_NETWORK_LANG_ROMANIAN :Romanian
+STR_NETWORK_LANG_RUSSIAN :Russian
+STR_NETWORK_LANG_SLOVAK :Slovak
+STR_NETWORK_LANG_SLOVENIAN :Slovenian
+STR_NETWORK_LANG_SPANISH :Spanish
+STR_NETWORK_LANG_SWEDISH :Swedish
+STR_NETWORK_LANG_TURKISH :Turkish
+STR_NETWORK_LANG_UKRAINIAN :Ukrainian
############ End of leave-in-this-order
-STR_NETWORK_GAME_LOBBY :{WHITE}Veelspeler spel tuiste
+STR_NETWORK_GAME_LOBBY :{WHITE}Multispeler spel tuiste
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Voorberei om te verbind: {ORANGE}{STRING}
-STR_NETWORK_COMPANY_LIST_TIP :{BLACK}'n Lys van alle maatskappye huiding in die spel. Of kan jy een verbind of as daar 'n vry maatskappy gleuf is 'n nuwe ene begin
+STR_NETWORK_COMPANY_LIST_TIP :{BLACK}'n Lys van alle ondernemings tans in hierdie speletjie. U kan een van beide sluit aan een of begin 'n nuwe een indien daar is 'n vry maatskappy gleuf
STR_NETWORK_NEW_COMPANY :{BLACK}Nuwe Maatskappy
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Skep 'n nuwe maatskappy
STR_NETWORK_SPECTATE_GAME :{BLACK}Aanskou spel
@@ -1292,7 +1397,7 @@
STR_NETWORK_REFRESH :{BLACK}Vervris bediender
STR_NETWORK_REFRESH_TIP :{BLACK}Vervris die bediender inligting
-STR_NETWORK_COMPANY_INFO :{SILVER}MAATSKAPPY INLIGTING
+STR_NETWORK_COMPANY_INFO :{SILVER}MAATSKAPPY INFORMASIE
STR_NETWORK_COMPANY_NAME :{SILVER}Maatskappy naam: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Inwyding: {WHITE}{NUM}
@@ -1305,18 +1410,18 @@
STR_NETWORK_STATIONS :{SILVER}Stasies: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
STR_NETWORK_PLAYERS :{SILVER}Spelers: {WHITE}{STRING}
-STR_NETWORK_CONNECTING :{WHITE}Aansluit...
+STR_NETWORK_CONNECTING :{WHITE}Besig om the konnek...
############ Leave those lines in this order!!
-STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Aansluit..
+STR_NETWORK_CONNECTING_1 :{BLACK}(1/6) Konnek...
STR_NETWORK_CONNECTING_2 :{BLACK}(2/6) Gemagtiging...
STR_NETWORK_CONNECTING_3 :{BLACK}(3/6) Opwagting...
-STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Kaart aflaai..
+STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) Werfkaart aflaai..
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Verwerk Data...
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registreer...
-STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Haal spel inligting...
-STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Haal maatskappy inligting...
+STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Haal speletjie informasie...
+STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Haal maatskappy informasie...
############ End of leave-in-this-order
STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} Klient{P "" e} voor jou
STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} / {NUM} kbytes afgelaai dusver
@@ -1324,26 +1429,27 @@
STR_NETWORK_DISCONNECT :{BLACK}Loskoppel
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Invoeg die bedrag van geld jy wil gee
-STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Bediender is beskerm. Invoeg wagwoord
+STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Verskaffer is beskerm. Invoeg wagwoord
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Maatskappy is beskerm. Invoeg wagwoord
STR_NETWORK_CLIENT_LIST :{WHITE}Klient Lys
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Geen netwerk ontwerp gevind of voldoen sonder ENABLE_NETWORK
STR_NETWORK_ERR_NOSERVER :{WHITE} Kan nie enige netwerk spele vind nie
-STR_NETWORK_ERR_NOCONNECTION :{WHITE} Die bedinder het nie die versoek geantwoord nie
+STR_NETWORK_ERR_NOCONNECTION :{WHITE} Die verskaffer het nie die versoek geantwoord nie
+STR_NETWORK_ERR_NEWGRF_MISMATCH :{WHITE} Kan nie konnekteer te danke aan newgrf mispas nie
STR_NETWORK_ERR_DESYNC :{WHITE} Netwerk-Spel sinchroniseering gedop
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Netwerk-Spel verbinding verloor
-STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Kan nie bewaarespel laai nie
-STR_NETWORK_ERR_SERVER_START :{WHITE} Bediender kan nie aangesit word nie
+STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Kan nie spaarspel laai nie
+STR_NETWORK_ERR_SERVER_START :{WHITE} Verskaffer kan nie aangesit word nie
STR_NETWORK_ERR_CLIENT_START :{WHITE} Kan nie verbinding kry nie
STR_NETWORK_ERR_TIMEOUT :{WHITE} Verbinding #{NUM} het betyds uitgeloop
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} A protokol-fout was gemaak en die verbinding was verlore
-STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Die hersiening van die klient is nie gelyk aan die bediender se hersiening nie
+STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Die hersiening van die klient is nie gelyk aan die verskaffer se hersiening nie
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Verkeerde wagwoord
-STR_NETWORK_ERR_SERVER_FULL :{WHITE} Die bediender is vol
-STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Jy is van die bediender verban
+STR_NETWORK_ERR_SERVER_FULL :{WHITE} Die verskaffer is vol
+STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Jy is van die verskaffer verban
STR_NETWORK_ERR_KICKED :{WHITE} Jy is van die spel geskop
-STR_NETWORK_ERR_CHEATER :{WHITE} Bedreiging is nie op die bediender toegelaat
+STR_NETWORK_ERR_CHEATER :{WHITE} Bedrieg is nie toegelaat op hierdie verskaffer
STR_NETWORK_ERR_LEFT :het die spel verlaat
############ Leave those lines in this order!!
@@ -1352,27 +1458,28 @@
STR_NETWORK_ERR_CLIENT_SAVEGAME :kan nie kaart laai nie
STR_NETWORK_ERR_CLIENT_CONNECTION_LOST :verbinding verloor
STR_NETWORK_ERR_CLIENT_PROTOCOL_ERROR :protokol fout
+STR_NETWORK_ERR_CLIENT_NEWGRF_MISMATCH :NewGRF mispas
STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :nie gemagtig nie
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :vreemde pakket aanvaar
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :verkeerde hersiening
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :naam reeds in gebruik
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :verkeerde wagwoord
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :verkeerde speler-id in DoCommand
-STR_NETWORK_ERR_CLIENT_KICKED :geskop by bediender
-STR_NETWORK_ERR_CLIENT_CHEATER :was op die proef stel om 'n bereig te gebruik
-STR_NETWORK_ERR_CLIENT_SERVER_FULL :bediender vol
+STR_NETWORK_ERR_CLIENT_KICKED :geskop by verskaffer
+STR_NETWORK_ERR_CLIENT_CHEATER :het probeer om 'n bedreig te gebruik
+STR_NETWORK_ERR_CLIENT_SERVER_FULL :verskaffer vol
############ End of leave-in-this-order
-STR_NETWORK_CLIENT_JOINED :het die spel verbind
+STR_NETWORK_CLIENT_JOINED :het die speletjie verbind
STR_NETWORK_GIVE_MONEY :het vir u maatskappy geld gegee ({CURRENCY})
STR_NETWORK_GAVE_MONEY_AWAY :u het vir {STRING} geld ({CURRENCY}) gegee
STR_NETWORK_CHAT_COMPANY_CAPTION :[Span] :
-STR_NETWORK_CHAT_COMPANY :[Span] {STRING}:
+STR_NETWORK_CHAT_COMPANY :[Span] {STRING}: {GRAY}{STRING}
STR_NETWORK_CHAT_TO_COMPANY :[Span] Na {STRING}:
STR_NETWORK_CHAT_CLIENT_CAPTION :[Privaat] :
-STR_NETWORK_CHAT_CLIENT :[Privaat] {STRING}:
+STR_NETWORK_CHAT_CLIENT :[Privaat] {STRING}: {GRAY}{STRING}
STR_NETWORK_CHAT_TO_CLIENT :[Privaat] Na {STRING}:
STR_NETWORK_CHAT_ALL_CAPTION :[All] :
-STR_NETWORK_CHAT_ALL :[All] {STRING}:
+STR_NETWORK_CHAT_ALL :[All] {STRING}: {GRAY}{STRING}
STR_NETWORK_NAME_CHANGE :het hy/sy naam verander na
STR_NETWORK_SERVER_SHUTDOWN :{WHITE} Die bediender het die sessie toegemaak
STR_NETWORK_SERVER_REBOOT :{WHITE} Die bediender is besig om te weerbegin...{}Wag asb...
@@ -1393,15 +1500,15 @@
############ end network gui strings
-STR_CONFIG_PATCHES_MAP_X :{LTBLUE}X-groote van kaart: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAP_Y :{LTBLUE}Y-groote van kaart: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAP_X :{LTBLUE}X-groote van werfkaart: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAP_Y :{LTBLUE}Y-groote van werfkaart: {ORANGE}{STRING}
##### PNG-MAP-Loader
-STR_BMPMAP_ERROR :{WHITE}Kan nie landerye van BMP laai nie...
-STR_BMPMAP_ERR_IMAGE_TYPE :{WHITE}...kan nie prent tipe verdoel nie.
+STR_BMPMAP_ERROR :{WHITE}Kan nie landskap van BMP laai nie...
+STR_BMPMAP_ERR_IMAGE_TYPE :{WHITE}...kan nie beeld tipe verdoel nie.
##id 0x0800
STR_0800_COST :{TINYFONT}{RED}Koste: {CURRENCY}
@@ -1410,25 +1517,25 @@
STR_0803_INCOME :{GREEN}Inkome: {CURRENCY}
STR_FEEDER_TINY :{TINYFONT}{YELLOW}Oorplaas: {CURRENCY}
STR_FEEDER :{YELLOW}Oorplaas: {CURRENCY}
-STR_0805_ESTIMATED_COST :{WHITE}Geraamde Koste: {CURRENCY}
-STR_0807_ESTIMATED_INCOME :{WHITE}Geraamde Inkome: {CURRENCY}
-STR_0808_CAN_T_RAISE_LAND_HERE :{WHITE}Kan nie land verhoog hier nie...
-STR_0809_CAN_T_LOWER_LAND_HERE :{WHITE}Kan nie land verlaag hier nie...
+STR_0805_ESTIMATED_COST :{WHITE}Beraamde Koste: {CURRENCY}
+STR_0807_ESTIMATED_INCOME :{WHITE}Beraamde Inkome: {CURRENCY}
+STR_0808_CAN_T_RAISE_LAND_HERE :{WHITE}kan nie daal hier verhoog nie...
+STR_0809_CAN_T_LOWER_LAND_HERE :{WHITE}Kan nie daal hier verlaag nie...
STR_080A_ROCKS :Rotse
-STR_080B_ROUGH_LAND :Ru land
-STR_080C_BARE_LAND :Kaal land
+STR_080B_ROUGH_LAND :Rof daal
+STR_080C_BARE_LAND :hou daal
STR_080D_GRASS :Gras
STR_080E_FIELDS :Velde
STR_080F_SNOW_COVERED_LAND :Sneeu-bedekte land
STR_0810_DESERT :Woestyn
##id 0x1000
-STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Land skuins in verkeerde rigting
-STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Onmoontlike spoor kombinasie
+STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Daal skuins in verkeerde rigting
+STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Onmoontlik spoor kombinasie
STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}Uitgrawing sal tonnel beskadig
STR_1003_ALREADY_AT_SEA_LEVEL :{WHITE}Reeds op seevlak
STR_1004_TOO_HIGH :{WHITE}Te hoog
-STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Geen paslik spoorweg spoor
+STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Geen geskik spoorweg spoor
STR_1007_ALREADY_BUILT :{WHITE}...reeds gebou
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Moet eers spoorweg spoor verwyder
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Spoorweg Kostruksie
@@ -1441,28 +1548,29 @@
STR_1011_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kan nie spoorweg spoor hier bou nie...
STR_1012_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan nie spoorweg spoor van hier af verwyder nie...
STR_1013_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kan nie seine van hier verwyder nie...
-STR_1014_TRAIN_DEPOT_ORIENTATION :{WHITE}Trein Depot Ori�tering
+STR_1014_TRAIN_DEPOT_ORIENTATION :{WHITE}Trein Depot Orientasie
STR_1015_RAILROAD_CONSTRUCTION :Spoorweg konstruksie
STR_1016_MONORAIL_CONSTRUCTION :Eenspoor konstruksie
STR_1017_MAGLEV_CONSTRUCTION :MagLev konstruksie
STR_1018_BUILD_RAILROAD_TRACK :{BLACK}Bou spoorweg spoor
-STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bou trein depot (vir gebou en diens van treine)
+STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bou trein depot (vir die bou en diens van treine)
STR_101A_BUILD_RAILROAD_STATION :{BLACK}Bou spoorweg stasie
STR_101B_BUILD_RAILROAD_SIGNALS :{BLACK}Bou spoorweg seine
STR_101C_BUILD_RAILROAD_BRIDGE :{BLACK}Bou spoorweg brug
STR_101D_BUILD_RAILROAD_TUNNEL :{BLACK}Bou spoorweg tonnel
-STR_101E_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Skakel bou/verwyder vir spoorweg spoor en seine
-STR_101F_BRIDGE_SELECTION_CLICK :{BLACK}Brug keuse - kliek op jou verkiesde brug om dit te bou
-STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO :{BLACK}Kies spoorweg depot ori�tering
+STR_101E_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Tokkel bou/verwyder vir spoorweg spoor en seine
+STR_101F_BRIDGE_SELECTION_CLICK :{BLACK}Brug keuse - kliek op jou verkies brug om dit te bou
+STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO :{BLACK}Kies spoorweg depot orientasie
STR_1021_RAILROAD_TRACK :Spoorweg spoor
STR_1023_RAILROAD_TRAIN_DEPOT :Spoorweg trein depot
-STR_1024_AREA_IS_OWNED_BY_ANOTHER :{WHITE}...area is besit by 'n ander maatskappy
+STR_1024_AREA_IS_OWNED_BY_ANOTHER :{WHITE}...area is besit deur 'n ander maatskappy
##id 0x1800
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Moet pad eers verwyder
STR_1802_ROAD_CONSTRUCTION :{WHITE}Pad Konstruksie
+STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Tremweg Konstruksie
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Kies Pad Brug
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan nie pad hier bou nie...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan nie pad van hier verwyder nie...
@@ -1470,13 +1578,14 @@
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_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kan nie bus stasie hier bou nie...
-STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan nie vraagmotor stasie bou nie...
-STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kan nie vrag trem 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_180A_ROAD_CONSTRUCTION :Pad konstruksie
STR_180A_TRAMWAY_CONSTRUCTION :Tremweg konstruksie
STR_180B_BUILD_ROAD_SECTION :{BLACK}Bou pad afdeling
STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Bou tremweg gedeelte
-STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bou pad voertuig depot (vir bou en versiening van voertuie)
+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_180D_BUILD_BUS_STATION :{BLACK}Bou bus stasie
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Bou vraagmotor laai area
@@ -1486,35 +1595,35 @@
STR_180F_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_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Skakel bou/verwyder vir pad bou
-STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Skakel bou/verwyder vir tremweg konstruksie
-STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Kies pad voertuig depot ori�tering
-STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Kies trem voertuig depot ori�tering
+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_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Kies pad voertuig depot orientasie
+STR_1813_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
STR_1817_ROAD_VEHICLE_DEPOT :Pad voertuig depot
-STR_1818_ROAD_RAIL_LEVEL_CROSSING :Pad/spoor gelyk oorgang
+STR_1818_ROAD_RAIL_LEVEL_CROSSING :Pad/spoor vlak kruising
STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kan nie bus stasie verwyder nie...
-STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kan nie vraagmotor stasie verwyder stasie...
+STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kan nie vragmotor stasie verwyder stasie...
STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kan nie passasier stasie verwyder nie...
STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kan nie vrag stasie verwyder nie...
##id 0x2000
-STR_2000_TOWNS :{WHITE}Stede
+STR_2000_TOWNS :{WHITE}Dorpe
STR_2002 :{TINYFONT}{BLACK}{SIGN}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Gebou moet eers afgebreek word
STR_2005 :{WHITE}{TOWN}
STR_2006_POPULATION :{BLACK}Populasie: {ORANGE}{COMMA}{BLACK} Huise: {ORANGE}{COMMA}
-STR_2007_RENAME_TOWN :Hernoem Stad
-STR_2008_CAN_T_RENAME_TOWN :{WHITE}Kan nie stad hernoem nie...
+STR_2007_RENAME_TOWN :Hernoem Dorp
+STR_2008_CAN_T_RENAME_TOWN :{WHITE}Kan nie dorp hernoem nie...
STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} plaaslike raad weier om dit te toelaat
-STR_200A_TOWN_NAMES_CLICK_ON_NAME :{BLACK}Stad naame - kliek naam om skerm op stad te senter
-STR_200B_CENTER_THE_MAIN_VIEW_ON :{BLACK}Senter skerm op stad
-STR_200C_CHANGE_TOWN_NAME :{BLACK}Verander stad naam
+STR_200A_TOWN_NAMES_CLICK_ON_NAME :{BLACK}Dorp naam - kliek naam om skerm op stad te senter
+STR_200B_CENTER_THE_MAIN_VIEW_ON :{BLACK}Senter skerm op dorp lokasie
+STR_200C_CHANGE_TOWN_NAME :{BLACK}Verander dorp naam
STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passasiers verlede maand: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Pos verlede maand: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_200F_TALL_OFFICE_BLOCK :Lank kantoor blok
+STR_200F_TALL_OFFICE_BLOCK :hoog kantoor blok
STR_2010_OFFICE_BLOCK :Kantoor blok
STR_2011_SMALL_BLOCK_OF_FLATS :Klein blok van woonstelle
STR_2012_CHURCH :Kerk
@@ -1532,7 +1641,7 @@
STR_201E_STADIUM :Stadion
STR_201F_OLD_HOUSES :Ou huise
STR_2020_LOCAL_AUTHORITY :{BLACK}Plaaslike raad
-STR_2021_SHOW_INFORMATION_ON_LOCAL :{BLACK}Wys inlingting oor plaaslike raad
+STR_2021_SHOW_INFORMATION_ON_LOCAL :{BLACK}Wys informasie oor plaaslike raad
STR_2022_LOCAL_AUTHORITY :{WHITE}{TOWN} plaaslike raad
STR_2023_TRANSPORT_COMPANY_RATINGS :{BLACK}Vervoer maatskappy graderings:
STR_2024 :{YELLOW}{COMPANY} {COMPANYNUM}: {ORANGE}{STRING}
@@ -1551,11 +1660,11 @@
STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Diens subsidie toeken aan {COMPANY}!{}{}{STRING} diens van {STATION} tot {STATION} sal nou dubbel pryse vir die volgende jaar betaal!
STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Diens subsidie toeken aan {COMPANY}!{}{}{STRING} diens van {STATION} tot {STATION} sal nou driemaal pryse vir die volgende jaar betaal!
STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Diens subsidie toeken aan {COMPANY}!{}{}{STRING} diens van {STATION} tot {STATION} sal nou viervoud pryse vir die volgende jaar betaal!
-STR_2035_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} plaaslike raad weier om nog 'n lughawe in die stad gebou te laat word
+STR_2035_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} plaaslike raad weier om nog ‘n lighawe te bou in hierdie stad
STR_2036_COTTAGES :Kothuise
STR_2037_HOUSES :Huise
STR_2038_FLATS :Woonstelle
-STR_2039_TALL_OFFICE_BLOCK :Lank kantoor blok
+STR_2039_TALL_OFFICE_BLOCK :Hoog kantoor blok
STR_203A_SHOPS_AND_OFFICES :Winkels en kantoore
STR_203B_SHOPS_AND_OFFICES :Winkels en kantoore
STR_203C_THEATER :Teatre
@@ -1565,8 +1674,8 @@
STR_2040_CINEMA :Kinema
STR_2041_SHOPPING_MALL :Inkoopies winkelplein
STR_2042_DO_IT :{BLACK}Doen dit
-STR_2043_LIST_OF_THINGS_TO_DO_AT :{BLACK}Lys van dinge te doen by die stad - kliek op item vir meer besonderheide
-STR_2044_CARRY_OUT_THE_HIGHLIGHTED :{BLACK}Voeg die beklemtoonde aksie in die lys bo uit
+STR_2043_LIST_OF_THINGS_TO_DO_AT :{BLACK}Lys van dinge om te doen by hierdie dorp - kliek op item vir meer besonderhede
+STR_2044_CARRY_OUT_THE_HIGHLIGHTED :{BLACK}Voeg die verlig aksie in die lys bo uit
STR_2045_ACTIONS_AVAILABLE :{BLACK}Aksies beskikbaar:
STR_2046_SMALL_ADVERTISING_CAMPAIGN :Klein adverteer kampeer
STR_2047_MEDIUM_ADVERTISING_CAMPAIGN :Medium adverteer kampeer
@@ -1575,14 +1684,14 @@
STR_204A_BUILD_STATUE_OF_COMPANY :Bou standbeeld van maatskappy eienaar
STR_204B_FUND_NEW_BUILDINGS :Befonds nuwe geboue
STR_204C_BUY_EXCLUSIVE_TRANSPORT :Koop eksklusief vervoer regte
-STR_204D_INITIATE_A_SMALL_LOCAL :{WHITE}{STRING}{}{YELLOW} Inlei 'n klein plaaslike adverteer kampeer, om meer passasiers en vrag na jou vervoer dienste te aantrek.{} Prys: {CURRENCY}
-STR_204E_INITIATE_A_MEDIUM_LOCAL :{WHITE}{STRING}{}{YELLOW} Inlei 'n medium plaaslike adverteer kampeer, om meer passasiers en vrag na jou vervoer dienste te aantrek.{} Prys: {CURRENCY}
-STR_204F_INITIATE_A_LARGE_LOCAL :{WHITE}{STRING}{}{YELLOW} Inlei 'n groot plaaslike adverteer kampeer, om meer passasiers en vrag na jou vervoer dienste te aantrek.{} Prys: {CURRENCY}
-STR_2050_FUND_THE_RECONSTRUCTION :{WHITE}{STRING}{}{YELLOW} Befonds die heropbou van die stedelike pad netwerk. Veroorsaak aanmerklike ontwrigging na pad verkeer vir omtrent 6 maande.{} Prys: {CURRENCY}
+STR_204D_INITIATE_A_SMALL_LOCAL :{WHITE}{STRING}{}{YELLOW} Inwy 'n klein plaaslik advertering veldtog, om te lok meer passasiers en cargo tot jou vervoer dienste.{} Prys: {CURRENCY}
+STR_204E_INITIATE_A_MEDIUM_LOCAL :{WHITE}{STRING}{}{YELLOW} Inwy 'n medium plaaslik advertering veldtog, om te lok meer passasiers en cargo tot jou vervoer dienste.{} Prys: {CURRENCY}
+STR_204F_INITIATE_A_LARGE_LOCAL :{WHITE}{STRING}{}{YELLOW} Inwy 'n groot plaaslik advertering veldtog, om te lok meer passasiers en cargo tot jou vervoer dienste.{} Prys: {CURRENCY}
+STR_2050_FUND_THE_RECONSTRUCTION :{WHITE}{STRING}{}{YELLOW} Fonds die herkonstruksie van die stedelik pad netwerk. Veroorsaak aansienlike skeuring to pad verkeer vir op tot 6 maande.{} Prys: {CURRENCY}
STR_2051_BUILD_A_STATUE_IN_HONOR :{WHITE}{STRING}{}{YELLOW} Bou 'n standbeeld in eer van u maatskappy.{} Prys: {CURRENCY}
-STR_2052_FUND_THE_CONSTRUCTION_OF :{WHITE}{STRING}{}{YELLOW} Befonds die bou van nuwe kommersieel geboue in die stad.{} Prys: {CURRENCY}
-STR_2053_BUY_1_YEAR_S_EXCLUSIVE :{WHITE}{STRING}{}{YELLOW} Koop 1 jaar se ekslusief vervoer regte in stad. Stad raad sal passasiers en vrag slegs toelaat om jou maatskappy se stasies te gebruik.{} Prys: {CURRENCY}
-STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING :{BIGFONT}{BLACK}Verkeer warboel in {TOWN}!{}{}Pad heropbou program befonds by {COMPANY} bring 6 maande van narigheid na motoriste!
+STR_2052_FUND_THE_CONSTRUCTION_OF :{WHITE}{STRING}{}{YELLOW} Fonds die bou van nuwe kommersieel geboue in die stad.{} Prys: {CURRENCY}
+STR_2053_BUY_1_YEAR_S_EXCLUSIVE :{WHITE}{STRING}{}{YELLOW} Koop 1 jare eksklusief vervoer regte in dorp. Dorp raad sal alleen laattoe passasiers en cargo om jou maatskappy se stasies te gebruik.{} Prys: {CURRENCY}
+STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING :{BIGFONT}{BLACK}Verkeer warboel in {TOWN}!{}{}Pad heropbou program befonds deur {COMPANY} bring 6 maande van ellende na motoriste!
STR_2056 :{TINYFONT}{WHITE}{TOWN}
STR_2057 :{ORANGE}{TOWN}{BLACK} ({COMMA})
STR_2058_UNDER_CONSTRUCTION :{STRING} (onder opbou)
@@ -1606,8 +1715,8 @@
STR_2808_TOO_MANY_SIGNS :{WHITE}...te veel tekens
STR_2809_CAN_T_PLACE_SIGN_HERE :{WHITE}Kan nie teken hier plaas nie...
STR_280A_SIGN :Teken
-STR_280B_EDIT_SIGN_TEXT :{WHITE}Verander teken teks
-STR_280C_CAN_T_CHANGE_SIGN_NAME :{WHITE}Teken naam kan nie verander word nie...
+STR_280B_EDIT_SIGN_TEXT :{WHITE}Redigeer teken teks
+STR_280C_CAN_T_CHANGE_SIGN_NAME :{WHITE}Kan nie teken naam verander nie...
STR_280D_SELECT_TREE_TYPE_TO_PLANT :{BLACK}Kies boom tipe om te beplant
STR_280E_TREES :Boome
STR_280F_RAINFOREST :Reenwoud
@@ -1616,7 +1725,7 @@
##id 0x3000
STR_3000_RAIL_STATION_SELECTION :{WHITE}Spoor Stasie Keuse
STR_3001_AIRPORT_SELECTION :{WHITE}Lughawe Keuse
-STR_3002_ORIENTATION :{BLACK}Ori�tering
+STR_3002_ORIENTATION :{BLACK}Orientasie
STR_3003_NUMBER_OF_TRACKS :{BLACK}Nommer van spoore
STR_3004_PLATFORM_LENGTH :{BLACK}Verhoog lengte
STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD :{WHITE}Te naby aan 'n ander spoorweg stasie
@@ -1624,7 +1733,7 @@
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 vraagmotor stasies
+STR_3008B_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
@@ -1653,12 +1762,12 @@
STR_303F_NO_LONGER_ACCEPTS_OR :{WHITE}{STATION} aanvaar nie meer {STRING} of {STRING} nie
STR_3040_NOW_ACCEPTS :{WHITE}{STATION} aanvaar nou {STRING}
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} aanvaar nou {STRING} en {STRING}
-STR_3042_BUS_STATION_ORIENTATION :{WHITE}Bus Stasie Ori�tering
-STR_3043_TRUCK_STATION_ORIENT :{WHITE}Vraagmotor Stasie Ori�tering
-STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Passasier Trem Ori�tering
-STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Vrag Trem Ori�tering
+STR_3042_BUS_STATION_ORIENTATION :{WHITE}Bus Stasie Orientasie
+STR_3043_TRUCK_STATION_ORIENT :{WHITE}Vraagmotor Stasie Orientasie
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Passasier Trem Orientasie
+STR_3043_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 vraagmotor 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_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Stasie{P "" s}
@@ -1667,13 +1776,13 @@
STR_304B_SITE_UNSUITABLE :{WHITE}...plek ongeskik
STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Te naby aan 'n ander werf
STR_304D_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Moet eers werf afbreek
-STR_304E_SELECT_RAILROAD_STATION :{BLACK}Kies spoorweg stasie ori�tering
+STR_304E_SELECT_RAILROAD_STATION :{BLACK}Kies spoorweg stasie orientasie
STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}Kies nommer van verhoogte vir spoorweg stasie
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Kies lengte van spoorweg stasie
-STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Kies bus stasie ori�tering
-STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Kies vraagmotor laai area ori�tering
-STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Kies passasier trem stasie ori�tering
-STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Kies vrag trem stasie ori�tering
+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_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Senter skerm op stasie
STR_3054_SHOW_STATION_RATINGS :{BLACK}Wys stasie graderings
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Verander naam van stasie
@@ -1684,53 +1793,58 @@
STR_305E_RAILROAD_STATION :Spoorweg stasie
STR_305F_AIRCRAFT_HANGAR :Vliegtuig hangar
STR_3060_AIRPORT :Lughawe
-STR_3061_TRUCK_LOADING_AREA :Vraagmotor laai area
+STR_3061_TRUCK_LOADING_AREA :Vragmotor laai area
STR_3062_BUS_STATION :Bus stasie
STR_3063_SHIP_DOCK :Skip werf
-STR_3064_HIGHLIGHT_COVERAGE_AREA :{BLACK}Beklemtoon dekkingsarea van die voorgestelde bouterrein
-STR_3065_DON_T_HIGHLIGHT_COVERAGE :{BLACK}Moenie die dekkingsarea van die voorgestelde bouterrein beklemtoon nie
-STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}Dekkingsarea beklemtoon
+STR_3064_HIGHLIGHT_COVERAGE_AREA :{BLACK}Verlig dekking area van die voorgestelde bouterrein
+STR_3065_DON_T_HIGHLIGHT_COVERAGE :{BLACK}Moenie die dekking area van die voorgestelde bouterrein verlig nie
+STR_3066_COVERAGE_AREA_HIGHLIGHT :{BLACK}Dekking area verlig
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 gestrem
+STR_306D_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...ongelyk stasies is versper
##id 0x3800
-STR_3800_SHIP_DEPOT_ORIENTATION :{WHITE}Skip Depot Ori�tering
+STR_3800_SHIP_DEPOT_ORIENTATION :{WHITE}Skip Depot Orientasie
STR_3801_MUST_BE_BUILT_ON_WATER :{WHITE}...moet op water gebou word
STR_3802_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Skip depot kan nie hier gebou word nie...
-STR_3803_SELECT_SHIP_DEPOT_ORIENTATION :{BLACK}Kies skip depot ori�tering
+STR_3803_SELECT_SHIP_DEPOT_ORIENTATION :{BLACK}Kies skip depot orientasie
STR_3804_WATER :Water
-STR_3805_COAST_OR_RIVERBANK :Strand of oewer
+STR_3805_COAST_OR_RIVERBANK :Kus of oewer
STR_3806_SHIP_DEPOT :Skip depot
STR_3807_CAN_T_BUILD_ON_WATER :{WHITE}...Kan nie op water bou nie
##id 0x4000
-STR_4000_SAVE_GAME :{WHITE}Bewar Spel
-STR_4001_LOAD_GAME :{WHITE}Laai Spel
-STR_4002_SAVE :{BLACK}Bewaar
-STR_4003_DELETE :{BLACK}Uitwis
+STR_4000_SAVE_GAME :{WHITE}Spaar Speletjie
+STR_4001_LOAD_GAME :{WHITE}Laai Speletjie
+STR_4002_SAVE :{BLACK}Spaar
+STR_4003_DELETE :{BLACK}Uitvee
STR_4004 :{COMPANY}, {DATE_LONG}
STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte{P "" s} vry
STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Kan nie skyf lees nie
-STR_4007_GAME_SAVE_FAILED :{WHITE}Spel Bewaar Gedop{}{STRING}
-STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Kan nie l�r uitwis nie
-STR_4009_GAME_LOAD_FAILED :{WHITE}Spel Laai Gedop{}{STRING}
-STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lys van skywe, voublaaie en spel-bewaar l�rs
-STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Huidige naam vir bewaarde-spel
-STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Uitwis die verkieste bewaarde-spel
-STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Bewaar die huidige spel, met die verkieste naame
-STR_400E_SELECT_NEW_GAME_TYPE :{WHITE}Kies Nuwe Spel Tipe
-STR_400F_SELECT_SCENARIO_GREEN_PRE :{BLACK}Kies draaiboek (groen), voor-gestelde spel (blou), of lukraak nuwe spel
-STR_4010_GENERATE_RANDOM_NEW_GAME :Onwikkel lukraak nuwe spel
+STR_4007_GAME_SAVE_FAILED :{WHITE}Speletjie Spaar Misluk{}{STRING}
+STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Onbekwaam om lêer te uitvee
+STR_4009_GAME_LOAD_FAILED :{WHITE}Speletjie Laai Misluk{}{STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne fout: {STRING}
+STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Gebreek spaarspeletjie - {STRING}
+STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spaarspeletjie is gemaak met nuwer uitgawe
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Lêer nie leesbare
+STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Lêer nie skryfbaar
+STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lys van skywe, gidse en spaar-speletjie lêers
+STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Huidige naam vir spaar-speletjie
+STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Vee uit die huidige verkieste spaar-speletjie
+STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Spaar die huidige speletjie, met die verkieste naame
+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
##id 0x4800
STR_4800_IN_THE_WAY :{WHITE}{STRING} in die pad
STR_4801 :{WHITE}{INDUSTRY}
-STR_4802_COAL_MINE :Steenkool Myn
+STR_4802_COAL_MINE :Kool Myn
STR_4803_POWER_STATION :Krag Stasie
STR_4804_SAWMILL :Saagmeul
STR_4805_FOREST :Woud
@@ -1738,7 +1852,7 @@
STR_4807_OIL_RIG :Olieboor
STR_4808_FACTORY :Fabriek
STR_4809_PRINTING_WORKS :Drukwerke
-STR_480A_STEEL_MILL :Staalmeul
+STR_480A_STEEL_MILL :Staal Meule
STR_480B_FARM :Boerdery
STR_480C_COPPER_ORE_MINE :Koper Erts Myn
STR_480D_OIL_WELLS :Olie Bron
@@ -1751,20 +1865,20 @@
STR_4814_IRON_ORE_MINE :Yster Erts Myn
STR_4815_FRUIT_PLANTATION :Vrugte Plantasie
STR_4816_RUBBER_PLANTATION :Gomlastiek Plantasie
-STR_4817_WATER_SUPPLY :Water Lewering
+STR_4817_WATER_SUPPLY :Water Verskaf
STR_4818_WATER_TOWER :Water Toring
STR_4819_FACTORY :Fabriek
STR_481A_FARM :Boerdery
-STR_481B_LUMBER_MILL :Timmerhoutmeul
+STR_481B_LUMBER_MILL :Timmerhout Meule
STR_481C_COTTON_CANDY_FOREST :Spookasem Woud
STR_481D_CANDY_FACTORY :Lekker Fabriek
STR_481E_BATTERY_FARM :Battery Boerdery
-STR_481F_COLA_WELLS :Cola Bron
+STR_481F_COLA_WELLS :Cola Spruite
STR_4820_TOY_SHOP :Speelgoed Winkel
STR_4821_TOY_FACTORY :Speelgoed Fabriek
STR_4822_PLASTIC_FOUNTAINS :Plastiek Fonteine
STR_4823_FIZZY_DRINK_FACTORY :Koeldrank Fabriek
-STR_4824_BUBBLE_GENERATOR :Borrel Ontwikkelaar
+STR_4824_BUBBLE_GENERATOR :Borrel Genereerder
STR_4825_TOFFEE_QUARRY :Tamletjie Prooi
STR_4826_SUGAR_MINE :Suiker Myn
@@ -1775,6 +1889,8 @@
############ range for requires ends
############ range for produces starts
+STR_INDUSTRY_WINDOW_WAITING_FOR_PROCESSING :{BLACK}Vrag wag om geprosesseer te wees:
+STR_INDUSTRY_WINDOW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO}{BLACK}
STR_4827_PRODUCES :{BLACK}Produseer: {YELLOW}{STRING}
STR_4828_PRODUCES :{BLACK}Produseer: {YELLOW}{STRING}, {STRING}
############ range for produces ends
@@ -1791,12 +1907,12 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}Lewering probleme veroorsaak {INDUSTRY} om dreigend sluting te aankondig!
STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}Gemis van naby boome veroorsaak {INDUSTRY} om dreigend sluiting te aankondig!
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{INDUSTRY} vermeerder produksie!
-STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Nuwe steenkool laag gevind by {INDUSTRY}!{}Produksie is verwag om te verdubbel!
+STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Nuwe kool laag gevind by {INDUSTRY}!{}Produksie is verwag om te verdubbel!
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}Nuwe olie reserwes gevind by {INDUSTRY}!{}Produksie is verwag om te verdubbel!
STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}Verbeterde boerdery metodes by {INDUSTRY} sal produksie verdubbel!
STR_4839_PRODUCTION_DOWN_BY_50 :{BLACK}{BIGFONT}{INDUSTRY} produksie verminder 50%
STR_483A_INSECT_INFESTATION_CAUSES :{BLACK}{BIGFONT}Insek vervuiling oorsaak verwoesting by {INDUSTRY}!{}Produksie verminder 50%
-STR_483B_CAN_ONLY_BE_POSITIONED :{WHITE}...kan net naby aan kant van kaart geplaas word
+STR_483B_CAN_ONLY_BE_POSITIONED :{WHITE}...kan net naby aan kant van werfkaart geplaas word
STR_INDUSTRY_PROD_GOUP :{BLACK}{BIGFONT}{STRING} produksie by {INDUSTRY} vermeerder {COMMA}%!
STR_INDUSTRY_PROD_GODOWN :{BLACK}{BIGFONT}{STRING} produksie by {INDUSTRY} verminder {COMMA}%!
@@ -1804,17 +1920,19 @@
STR_5000_TRAIN_IN_TUNNEL :{WHITE}Trein in tonnel
STR_5001_ROAD_VEHICLE_IN_TUNNEL :{WHITE}Pad voetuig in tonnel
STR_5003_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}Ander tonnel in die pad
-STR_5005_UNABLE_TO_EXCAVATE_LAND :{WHITE}Kan nie land vir ander einde van tonnel te uitgrawe nie
+STR_5005_UNABLE_TO_EXCAVATE_LAND :{WHITE}Kan nie daal vir ander einde van tonnel te uitgrawe nie
STR_5006_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}Moet eers tonnel afbreek
STR_5007_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Moet eers brug afbreek
STR_5008_CANNOT_START_AND_END_ON :{WHITE}Kan nie in die selfde plek begin en eindig nie
+STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Brug hoofde is nie op die selfde vlak nie
+STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brug is te laag vie die daal
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Begin en einde moet in lyn wees
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Plek ongeskik vir tonnel ingang
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
-STR_500E_SUSPENSION_STEEL :Staking, Staal
-STR_500F_GIRDER_STEEL :Staaf, Staal
+STR_500E_SUSPENSION_STEEL :Suspensie, Staal
+STR_500F_GIRDER_STEEL :Balk, Staal
STR_5010_CANTILEVER_STEEL :Vrydraer, Staal
-STR_5011_SUSPENSION_CONCRETE :Staking, Beton
+STR_5011_SUSPENSION_CONCRETE :Suspensie, Beton
STR_5012_WOODEN :Houterig
STR_5013_CONCRETE :Beton
STR_5014_TUBULAR_STEEL : Buis, Staal
@@ -1823,16 +1941,16 @@
STR_5016_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Tonnel kan nie daar gebou word nie...
STR_5017_RAILROAD_TUNNEL :Spoorweg tonnel
STR_5018_ROAD_TUNNEL :Pad tonnel
-STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Staal staking spoor brug
-STR_501C_STEEL_GIRDER_RAIL_BRIDGE :Staal staaf spoor brug
+STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Staal stuspensie spoor brug
+STR_501C_STEEL_GIRDER_RAIL_BRIDGE :Staal balk spoor brug
STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE :Staal vrydraer spoor brug
-STR_501E_REINFORCED_CONCRETE_SUSPENSION :Gewapende beton staking spoor brug
+STR_501E_REINFORCED_CONCRETE_SUSPENSION :Versterk beton suspensie spoor brug
STR_501F_WOODEN_RAIL_BRIDGE :Houterig spoor brug
STR_5020_CONCRETE_RAIL_BRIDGE :Beton spoor brug
-STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Staal staking pad brug
-STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Staal staaf pad brug
+STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Staal suspensie pad brug
+STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Staal balk pad brug
STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE :Staal vrydraer pad brug
-STR_5024_REINFORCED_CONCRETE_SUSPENSION :Gewapende beton staking pad brug
+STR_5024_REINFORCED_CONCRETE_SUSPENSION :Versterk beton suspensie pad brug
STR_5025_WOODEN_ROAD_BRIDGE :Houterig pad brug
STR_5026_CONCRETE_ROAD_BRIDGE :Beton pad brug
STR_5027_TUBULAR_RAIL_BRIDGE :Buis spoor brug
@@ -1842,8 +1960,8 @@
STR_5800_OBJECT_IN_THE_WAY :{WHITE}Voorwerp in die pad
STR_5801_TRANSMITTER :Sender
STR_5802_LIGHTHOUSE :Vuurtoring
-STR_5803_COMPANY_HEADQUARTERS :Maatskappy Hoofkwartiers
-STR_5804_COMPANY_HEADQUARTERS_IN :{WHITE}...maatskappy hoofkwartiers in die pad
+STR_5803_COMPANY_HEADQUARTERS :Maatskappy Hoofkwartier
+STR_5804_COMPANY_HEADQUARTERS_IN :{WHITE}...maatskappy hoofkwartier in die weg
STR_5805_COMPANY_OWNED_LAND :Maatskappy-besitte land
STR_5806_CAN_T_PURCHASE_THIS_LAND :{WHITE}Die land area kan nie aangekoop word nie...
STR_5807_YOU_ALREADY_OWN_IT :{WHITE}...jy besit dit alreeds!
@@ -1885,7 +2003,7 @@
############ end of savegame specific region!
##id 0x6800
-STR_6800_DIFFICULTY_LEVEL :{WHITE}Moeilikheid Vlak
+STR_6800_DIFFICULTY_LEVEL :{WHITE}Moeite Vlak
STR_OPTIONS_SAVE_CHANGES :{BLACK}Bewaar
############ range for difficulty levels starts
@@ -1898,17 +2016,17 @@
############ range for difficulty settings starts
STR_6805_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksimum no. mededingers: {ORANGE}{COMMA}
STR_6806_COMPETITOR_START_TIME :{LTBLUE}Mededinger begin tyd: {ORANGE}{STRING}
-STR_6807_NO_OF_TOWNS :{LTBLUE}No. van stede: {ORANGE}{STRING}
-STR_6808_NO_OF_INDUSTRIES :{LTBLUE}No. van nywerheide: {ORANGE}{STRING}
+STR_6807_NO_OF_TOWNS :{LTBLUE}No. van dorpe: {ORANGE}{STRING}
+STR_6808_NO_OF_INDUSTRIES :{LTBLUE}No. van nywerhede: {ORANGE}{STRING}
STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Maksimum inisieele lening: {ORANGE}{CURRENCY}
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Inisieele rente koers: {ORANGE}{COMMA}%
STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Voertuig loopkoste: {ORANGE}{STRING}
STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Konstruksie spoed van mededinge: {ORANGE}{STRING}
STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Intelligensie van mededinge: {ORANGE}{STRING}
-STR_680E_VEHICLE_BREAKDOWNS :{LTBLUE}Voertuig oponthoude: {ORANGE}{STRING}
+STR_680E_VEHICLE_BREAKDOWNS :{LTBLUE}Voertuig komplikasies: {ORANGE}{STRING}
STR_680F_SUBSIDY_MULTIPLIER :{LTBLUE}Subsidie vermenigvuld: {ORANGE}{STRING}
STR_6810_COST_OF_CONSTRUCTION :{LTBLUE}koste van konstruksie: {ORANGE}{STRING}
-STR_6811_TERRAIN_TYPE :{LTBLUE}Landerye tipe: {ORANGE}{STRING}
+STR_6811_TERRAIN_TYPE :{LTBLUE}Landskap tipe: {ORANGE}{STRING}
STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Hoeveelheid see/panne: {ORANGE}{STRING}
STR_6813_ECONOMY :{LTBLUE}Ekonomie: {ORANGE}{STRING}
STR_6814_TRAIN_REVERSING :{LTBLUE}Trein omkeer: {ORANGE}{STRING}
@@ -1994,10 +2112,10 @@
STR_7022_INCOME_GRAPH :{WHITE}Inkome Grafiek
STR_CURRCOMPACT :{CURRCOMPACT}
STR_7024 :{COMMA}
-STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}Bewerking Profyt Grafiek
+STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}Bediening Profyt Grafiek
STR_7026_BANK_BALANCE :{WHITE}Bank Balans
STR_7027_LOAN :{WHITE}Lening
-STR_MAX_LOAN :{WHITE}Max Lening: {BLACK}{CURRENCY}
+STR_MAX_LOAN :{WHITE}Maks Lening: {BLACK}{CURRENCY}
STR_7028 :{BLACK}{CURRENCY}
STR_7029_BORROW :{BLACK}Leen {SKIP}{SKIP}{CURRENCY}
STR_702A_REPAY :{BLACK}Terugbetaal {SKIP}{SKIP}{CURRENCY}
@@ -2030,10 +2148,10 @@
STR_7048_ACCEPT_NEW_FACE_SELECTION :{BLACK}Aanvar nuwe gesig keuse
STR_7049_SELECT_MALE_FACES :{BLACK}Kies manlik gesige
STR_704A_SELECT_FEMALE_FACES :{BLACK}Kies vroulik gesige
-STR_704B_GENERATE_RANDOM_NEW_FACE :{BLACK}Ontwikkel lukrake nuwe gesig
+STR_704B_GENERATE_RANDOM_NEW_FACE :{BLACK}Opwek lukrake nuwe gesig
STR_704C_KEY :{BLACK}Sleutel
STR_704D_SHOW_KEY_TO_GRAPHS :{BLACK}Wys sleutel na grafieke
-STR_704E_KEY_TO_COMPANY_GRAPHS :{WHITE}Sleutel na maatskappy grafieke
+STR_704E_KEY_TO_COMPANY_GRAPHS :{WHITE}Sleutel vir maatskappy grafieke
STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY :{BLACK}Kliek hier om maatskappy se intrede op grafiek aan/af te skakel
STR_7050_UNITS_OF_CARGO_DELIVERED :{WHITE}Eenheide van vrag afgelewer
STR_7051_COMPANY_PERFORMANCE_RATINGS :{WHITE}Maatskappy prestasie graderings (maksimum gradering=1000)
@@ -2076,8 +2194,8 @@
STR_COMPANY_PASSWORD_TOOLTIP :{BLACK}Wagwoord-beskerm jou maatskappy om onmagtig gebruikers te belet van verbinding
STR_SET_COMPANY_PASSWORD :Stel maatskappy wagwoord
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}W�eld Insinking!{}{}Finansieel eksperte vrees ergste as ekonomie inmekaar sak!
-STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Insinking Oor!{}{}Oplewing in sake gee vertroue na nywerheide as ekonomie versterk!
-STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Skakel groot/klein venster groote
+STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Insinking Oor!{}{}Oplewing in sake gee vertroue na nywerhede as ekonomie versterk!
+STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Tokkel groot/klein venster groote
STR_7076_COMPANY_VALUE :{GOLD}Maatskappy waarde: {WHITE}{CURRENCY}
STR_7077_BUY_25_SHARE_IN_COMPANY :{BLACK}Koop 25% aandeel in maatskappy
STR_7078_SELL_25_SHARE_IN_COMPANY :{BLACK}Verkoop 25% aandeel in maatskappy
@@ -2103,18 +2221,20 @@
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passasier Rytuig (Elektries)
STR_LIVERY_FREIGHT_WAGON :Vraag Wa
STR_LIVERY_BUS :Bus
-STR_LIVERY_TRUCK :Vraagmotor
+STR_LIVERY_TRUCK :Vragmotor
STR_LIVERY_PASSENGER_SHIP :Passasier Veer
STR_LIVERY_FREIGHT_SHIP :Vraag Skip
STR_LIVERY_HELICOPTER :Helikopter
STR_LIVERY_SMALL_PLANE :Klein Vliegtuig
STR_LIVERY_LARGE_PLANE :Groot Vliegtuig
+STR_LIVERY_PASSENGER_TRAM :Passasier Trem
+STR_LIVERY_FREIGHT_TRAM :Vrag Trem
-STR_LIVERY_GENERAL_TIP :{BLACK}Wys generaal kleur skemas
+STR_LIVERY_GENERAL_TIP :{BLACK}Toon generaal kleur skemas
STR_LIVERY_TRAIN_TIP :{BLACK}Wys trein kleur skemas
-STR_LIVERY_ROADVEH_TIP :{BLACK}Wys pad voertuig kleur skemas
-STR_LIVERY_SHIP_TIP :{BLACK}Wys skip kleur skemas
-STR_LIVERY_AIRCRAFT_TIP :{BLACK}Wys vliegtuig kleurskemas
+STR_LIVERY_ROADVEH_TIP :{BLACK}Toon pad voertuig kleur skemas
+STR_LIVERY_SHIP_TIP :{BLACK}Toon skip kleur skemas
+STR_LIVERY_AIRCRAFT_TIP :{BLACK}Toon vliegtuig kleurskemas
STR_LIVERY_PRIMARY_TIP :{BLACK}Kies die premere kleur vir die verkieste skema
STR_LIVERY_SECONDARY_TIP :{BLACK}Kies die sekondere kleur vir die verkieste skema
STR_LIVERY_PANEL_TIP :{BLACK}Kies 'n kleur skema te verander, of veelvoud skemas met CTRL+kliek. Kliek op die boks te skakel gebruik van skema
@@ -2149,7 +2269,7 @@
STR_801A_ASIASTAR_ELECTRIC :'AsiaStar' (Elektries)
STR_801B_PASSENGER_CAR :Passasier Rytuig
STR_801C_MAIL_VAN :Pos Wa
-STR_801D_COAL_CAR :Steenkool Wa
+STR_801D_COAL_CAR :Kool Wa
STR_801E_OIL_TANKER :Olie Tenkwa
STR_801F_LIVESTOCK_VAN :Lewende Hawe Wa
STR_8020_GOODS_VAN :Goedere Wa
@@ -2179,7 +2299,7 @@
STR_8038_WIZZOWOW_Z99 :Wizzowow Z99
STR_8039_PASSENGER_CAR :Passasier Rytuig
STR_803A_MAIL_VAN :Pos Wa
-STR_803B_COAL_CAR :Steenkool Trok
+STR_803B_COAL_CAR :Kool Trok
STR_803C_OIL_TANKER :Olie Tenkwa
STR_803D_LIVESTOCK_VAN :Lewende Hawe Wa
STR_803E_GOODS_VAN :Goedere Wa
@@ -2211,7 +2331,7 @@
STR_8058_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer
STR_8059_PASSENGER_CAR :Passasier Rytuig
STR_805A_MAIL_VAN :Pos Wa
-STR_805B_COAL_CAR :Steenkool Trok
+STR_805B_COAL_CAR :Kool Trok
STR_805C_OIL_TANKER :Olie Tenkwa
STR_805D_LIVESTOCK_VAN :Lewende Hawe Wa
STR_805E_GOODS_VAN :Goedere Wa
@@ -2243,9 +2363,9 @@
STR_8078_PLODDYPHUT_MKI_BUS :Ploddyphut MkI Bus
STR_8079_PLODDYPHUT_MKII_BUS :Ploddyphut MkII Bus
STR_807A_PLODDYPHUT_MKIII_BUS :Ploddyphut MkIII Bus
-STR_807B_BALOGH_COAL_TRUCK :Balogh Steenkool Trok
-STR_807C_UHL_COAL_TRUCK :Uhl Steenkool Trok
-STR_807D_DW_COAL_TRUCK :DW Steenkool Trok
+STR_807B_BALOGH_COAL_TRUCK :Balogh Kool Trok
+STR_807C_UHL_COAL_TRUCK :Uhl Kool Trok
+STR_807D_DW_COAL_TRUCK :DW Kool Trok
STR_807E_MPS_MAIL_TRUCK :MPS Pos Trok
STR_807F_REYNARD_MAIL_TRUCK :Reynard Pos Trok
STR_8080_PERRY_MAIL_TRUCK :Perry Pos Trok
@@ -2377,7 +2497,7 @@
STR_80FE_GURU_X2_HELICOPTER :Guru X2 Helikopter
STR_80FF_POWERNAUT_HELICOPTER :Powernaut Helikopter
STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE :{WHITE}Boodskap van voertuig fabrikant
-STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Ons het juis 'n nuwe {STRING} ontwerp - sal jy in 'n jaar se eksklusief gebruik van die voertuig belang stel, dus kan ons sien hoe hy uitvoer voor dit algemeen beskikbaar is?
+STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Ons het sopas ‘n nuwe {STRING} ontwerp, sal jy belangstel om hierdie voertuig eksklusief vir ‘n jaar te gebruik. Hierdie word gedoen om te kyk hoe die voertuig doen voordat hy wereld wyd in produksie gesit word?
STR_8102_RAILROAD_LOCOMOTIVE :spoorweg lokomotief
STR_8103_ROAD_VEHICLE :pad voertuig
STR_8104_AIRCRAFT :vliegtuig
@@ -2389,7 +2509,7 @@
STR_8800_TRAIN_DEPOT :{WHITE}{TOWN} Trein Depot
STR_8801_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Burgers herdenk . . .{}Eerste trein arriveer by {STATION}!
STR_8802_DETAILS :{WHITE}{VEHICLE} (Aanwyse)
-STR_8803_TRAIN_IN_THE_WAY :{WHITE}Trein in die pad
+STR_8803_TRAIN_IN_THE_WAY :{WHITE}Trein in die weg
STR_8804 :{SETX 10}{COMMA}: {STRING} {STRING}
STR_8805 :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
STR_8806_GO_TO :Gaan na {STATION}
@@ -2399,11 +2519,11 @@
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} (Oordrag en vat vrag)
+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} (Oordrag en verlaat leeg)
+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} (Oordrag en wag vir volle lading)
+STR_8811_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
@@ -2415,10 +2535,10 @@
STR_HEADING_FOR_TRAIN_DEPOT_SERVICE :{LTBLUE}Diens by {TOWN} Trein Depot
STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL :{LTBLUE}Diens by {TOWN} Trein Depot, {VELOCITY}
-STR_INVALID_ORDER :{RED} (Swak Opdrag)
+STR_INVALID_ORDER :{RED} (Ongeldig Opdrag)
STR_UNKNOWN_DESTINATION :onbekende destinasie
-STR_8812_EMPTY :{LTBLUE}Leeg
+STR_8812_EMPTY :{LTBLUE}Leë
STR_8813_FROM :{LTBLUE}{CARGO} vanaf {STATION}
STR_FROM_MULT :{LTBLUE}{CARGO} van {STATION} (x{NUM})
STR_8814_TRAIN_IS_WAITING_IN_DEPOT :{WHITE}Trein {COMMA} wag in depot
@@ -2436,14 +2556,14 @@
STR_881F_BUILD_VEHICLE :{BLACK}Bou Voertuig
STR_CLONE_ROAD_VEHICLE :{BLACK}Kloon Voertuig
-STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}Dit sal 'n afskrywing van die pad voertuig bou. Control-kliek sal die opdrae deel
-STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Dit sal 'n afskrywing van 'n pad voertuig bou. Kliek die knoppie en dan op 'n pad voertuig binne of buite die depot. Control-kliek sal die opdrae deel
+STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}Dit sal 'n kopie van die pad voertuig bou. Control-kliek sal die opdrae deel
+STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Dit sal 'n kopie van 'n pad voertuig bou. Kliek die knoppie en dan op 'n pad voertuig binne of buite die depot. Control-kliek sal die opdrae deel
STR_CLONE_TRAIN :{BLACK}Kloon Trein
-STR_CLONE_TRAIN_INFO :{BLACK}Dit sa 'n afskrywing van die trein bou insluitend alle trokke. Control-kliek sal die opdrae deel
-STR_CLONE_TRAIN_DEPOT_INFO :{BLACK}Dit sal 'n afskrywing van 'n trein bou insluitend alle trokke. Kliek die knoppie en dan op 'n trein binne of buite die depot. Control-kliek sal die opdrae deel
+STR_CLONE_TRAIN_INFO :{BLACK}Dit sa 'n kopie van die trein bou insluitend alle trokke. Control-kliek sal die opdrae deel
+STR_CLONE_TRAIN_DEPOT_INFO :{BLACK}Dit sal 'n kopie van 'n trein bou insluitend alle trokke. Kliek die knoppie en dan op 'n trein binne of buite die depot. Control-kliek sal die opdrae deel
STR_8820_RENAME :{BLACK}Hernoem
STR_8823_SKIP :{BLACK}Sprong
-STR_8824_DELETE :{BLACK}Uitwis
+STR_8824_DELETE :{BLACK}Uit vee
STR_8825_NON_STOP :{BLACK}Deurgaande
STR_8826_GO_TO :{BLACK}Gaan Na
STR_8827_FULL_LOAD :{BLACK}Volle Lading
@@ -2465,57 +2585,57 @@
STR_8831_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Geen spasie vir nog opdrae
STR_8832_TOO_MANY_ORDERS :{WHITE}Te veel opdrae
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Kan nie nuwe opdrag invoeg nie...
-STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Kan nie die opdrag verwyder nie...
+STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Kan nie die opdrag uitvee nie...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Die opdrag kan nie verander word nie...
STR_CAN_T_MOVE_THIS_ORDER :{WHITE}Kan nie opdrag beweeg nie...
STR_CAN_T_SKIP_ORDER :{WHITE}Kan nie huidige opdrag sprong nie...
STR_CAN_T_SKIP_TO_ORDER :{WHITE}Kan nie verkieste opdrag sprong nie...
-STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Voertuig kan nie beweeg nie...
+STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Kan nie voertuig beweeg nie...
STR_8838_N_A :N/A{SKIP}
STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Kan nie spoorweg voertuig verkoop nie...
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan nie roete na plaaslike depot vind nie
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Trein kan nie stop/aanvang word nie...
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Diens tussentyd: {LTBLUE}{COMMA}dae{BLACK} Laaste diens: {LTBLUE}{DATE_LONG}
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Versiens tussentyd: {LTBLUE}{COMMA}%{BLACK} Laaste versiening: {LTBLUE}{DATE_LONG}
-STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Treine - kliek op trein vir inligting
+STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Treine - kliek op trein vir informasie
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Bou nuwe treine (vereis trein depot)
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Treine - kliek op trein vir info., sleep voertuig om te bysit/verwyder van trein
STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Bou nuwe trein voertuig
STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE :{BLACK}Sleep trein voertuig hier om dit te verkoop
STR_8842_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Senter skerm op trein depot
STR_8843_TRAIN_VEHICLE_SELECTION :{BLACK}Trein voertuig keuse lys - kliek op voertuig vir inligting
-STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Bou die beklemtoonde trein voertuig
+STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Bou die verlig trein voertuig
STR_8845_RENAME_TRAIN_VEHICLE_TYPE :{BLACK}Hernoem trein voertuig tipe
-STR_8846_CURRENT_TRAIN_ACTION_CLICK :{BLACK}Huidige trein aksie - kliek hier om trein te stop/aanvang trein
-STR_8847_SHOW_TRAIN_S_ORDERS :{BLACK}Wys trein se opdrae
+STR_8846_CURRENT_TRAIN_ACTION_CLICK :{BLACK}Huidige trein aksie - kliek hier om trein te stop/aanskakel
+STR_8847_SHOW_TRAIN_S_ORDERS :{BLACK}Toon trein se opdrae
STR_8848_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Senter skerm op trein
STR_8849_SEND_TRAIN_TO_DEPOT :{BLACK}Stuur trein na depot. CTRL+kliek sal net diens
-STR_884A_FORCE_TRAIN_TO_PROCEED :{BLACK}Dwing trein om voort te gaan sonder om vir seine te wag
+STR_884A_FORCE_TRAIN_TO_PROCEED :{BLACK}Forseer trein om voort te gaan sonder om vir sien die uit te klaar
STR_884B_REVERSE_DIRECTION_OF_TRAIN :{BLACK}Omkeer rigting van trein
-STR_884C_SHOW_TRAIN_DETAILS :{BLACK}Wys trein se aanwyse
+STR_884C_SHOW_TRAIN_DETAILS :{BLACK}Toon trein besonderhede
STR_884D_INCREASE_SERVICING_INTERVAL :{BLACK}Vergroot diens tussentyd
STR_884E_DECREASE_SERVICING_INTERVAL :{BLACK}Verminder diens tussentyd
-STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Wys aanwyse van vrag gedra
-STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Wys aanwyse van trein voertuie
-STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Wys kapasiteite van elke voertuig
-STR_8852_SHOW_TOTAL_CARGO :{BLACK}Wys totaale kapasitiet van trein, verdeel by vrag tipe
-STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Opdraglys - kliek op 'n opdrag om dit te beklemtoon. CTRL + kliek senter op stasie
+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_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}Uitwis die beklemtoonde opdrag
-STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Maak die beklemtoonde opdrag deurgaande
-STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Invoeg 'n nuwe opdrag voor die beklemtoonde opdrag, of byvoeg na einde van lys
-STR_8857_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Maak die beklemtoonde opdrag dwing die voertuig om vir 'n volle lading te wag
-STR_8858_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Maak die beklemtoonde opdrag dwing die voertuig te aflaai
+STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Vee uit die verlig opdrag
+STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Maak die verlig opdrag deurgaande
+STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Invoeg 'n nuwe opdrag voor die verlig opdrag, of byvoeg na einde van lys
+STR_8857_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Maak die verlig opdrag forseer die voertuig om vir 'n volle laai te wag
+STR_8858_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Maak die verlig opdrag forseer die voertuig te aflaai
STR_SERVICE_HINT :{BLACK}Sprong die opdraag tensy 'n versiening nodig is
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Koste: {CURRENCY} Gewig: {WEIGHT_S}{}Spoed: {VELOCITY} Krag: {POWER}{}Loopkoste: {CURRENCY}/jr{}Kapasitiet: {CARGO}
-STR_885C_BROKEN_DOWN :{RED}Oponthoud
+STR_885C_BROKEN_DOWN :{RED}Komplikasies
STR_885D_AGE_RUNNING_COST_YR :{BLACK}Ouderdom: {LTBLUE}{STRING}{BLACK} Loopkoste: {LTBLUE}{CURRENCY}/Jr
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Gewig: {LTBLUE}{WEIGHT_S} {BLACK}Krag: {LTBLUE}{POWER}{BLACK} Max. spoed: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Gewig: {LTBLUE}{WEIGHT_S} {BLACK}Krag: {LTBLUE}{POWER}{BLACK} Max. spoed: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE}
STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Profyt die jaar: {LTBLUE}{CURRENCY} (verlede jaar: {CURRENCY})
-STR_8860_RELIABILITY_BREAKDOWNS :{BLACK}Deeglikheid: {LTBLUE}{COMMA}% {BLACK}Oponthoude sedert laaste diens: {LTBLUE}{COMMA}
+STR_8860_RELIABILITY_BREAKDOWNS :{BLACK}Betroubaarheid: {LTBLUE}{COMMA}% {BLACK}Komplikasies na laaste diens: {LTBLUE}{COMMA}
STR_8861_STOPPED :{RED}Gestop
-STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan nie trein dwing om sein te vermy op gevaar...
+STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan nie trein forseer om sein te vermy op gevaar...
STR_8863_CRASHED :{RED}Botsing!
STR_8865_NAME_TRAIN :{WHITE}Benaam trein
@@ -2525,8 +2645,8 @@
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 beklemtoonde opdrag dwing die voertuig om sy vrag te stort
-STR_886F_TRANSFER :{BLACK}Oordrag
+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_CLEAR_TIME :{BLACK}Reinig Tyd
STR_TRAIN_STOPPING :{RED}Ophou
@@ -2535,11 +2655,12 @@
STR_TRAIN_NO_POWER :{RED}Geen Krag
-STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kan nie voertuig tydtafel nie...
+
+STR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kan nie rooster voertuig nie...
##id 0x9000
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Pad voertuig in die pad
-STR_9001_ROAD_VEHICLES :{WHITE}{COMPANY} - {COMMA} Pad voertuig{P "" s}
+STR_9001_ROAD_VEHICLES :{WHITE}{COMPANY} - {COMMA} Pad voert{P uig uie}
STR_9002 :{WHITE}{VEHICLE}
STR_9003_ROAD_VEHICLE_DEPOT :{WHITE}{TOWN} Pad Voertuig Depot
STR_9004_NEW_VEHICLES :{BLACK}Nuwe Voertuie
@@ -2550,12 +2671,12 @@
STR_900D_AGE_RUNNING_COST_YR :{BLACK}Ouderdom: {LTBLUE}{STRING}{BLACK} Loopkoste: {LTBLUE}{CURRENCY}/Jr
STR_900E_MAX_SPEED :{BLACK}Max. spoed: {LTBLUE}{VELOCITY}
STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Profyt die jaar: {LTBLUE}{CURRENCY} (verlede jaar: {CURRENCY})
-STR_9010_RELIABILITY_BREAKDOWNS :{BLACK}Deeglikheid: {LTBLUE}{COMMA}% {BLACK}Oponthoude sedert laaste diens: {LTBLUE}{COMMA}
+STR_9010_RELIABILITY_BREAKDOWNS :{BLACK}Betroubaarheid: {LTBLUE}{COMMA}% {BLACK}Komplikasies na laaste diens: {LTBLUE}{COMMA}
STR_9011_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Gebou: {LTBLUE}{NUM}{BLACK} Waarde: {LTBLUE}{CURRENCY}
STR_9012_CAPACITY :{BLACK}Kapasitiet: {LTBLUE}{CARGO}
STR_9013_MUST_BE_STOPPED_INSIDE :{WHITE}...moet gestop binne 'n pad voertuig depot wees
STR_9014_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Kan nie pad voertuig verkoop nie
-STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Kani nie pad voertuig stop/aanvang nie...
+STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Kani nie pad voertuig stop/aanskakel nie...
STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}Pad voertuig {COMMA} wag in depot
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Op pad na {TOWN} Pad Depot
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Op pad na {TOWN} Pad Depot, {VELOCITY}
@@ -2565,18 +2686,18 @@
STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kan nie plaaslike depot vind nie
STR_901A_ROAD_VEHICLES_CLICK_ON :{BLACK}Pad voertuie - kliek op voertuig vir inligting
STR_901B_BUILD_NEW_ROAD_VEHICLES :{BLACK}Bou nuwe pad voertuie (vereis pad voertuig depot)
-STR_901C_CURRENT_VEHICLE_ACTION :{BLACK}Huidige voertuig aksie - kliek hier om voertuig to stop/aanvang
-STR_901D_SHOW_VEHICLE_S_ORDERS :{BLACK}Wys voertuig se opdrae
+STR_901C_CURRENT_VEHICLE_ACTION :{BLACK}Huidige voertuig aksie - kliek hier om voertuig to stop/aanskakel
+STR_901D_SHOW_VEHICLE_S_ORDERS :{BLACK}Toon voertuig se opdrae
STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE :{BLACK}Senter skerm op voertuig
STR_901F_SEND_VEHICLE_TO_DEPOT :{BLACK}Stuur voertuig na depot. CTRL+kliek sal net diens
-STR_9020_FORCE_VEHICLE_TO_TURN_AROUND :{BLACK}Dwing voertuig om te draai om
+STR_9020_FORCE_VEHICLE_TO_TURN_AROUND :{BLACK}Forseer voertuig om te draai om
STR_9021_SHOW_ROAD_VEHICLE_DETAILS :{BLACK}Wys pad voertuig aanwyse
STR_9022_VEHICLES_CLICK_ON_VEHICLE :{BLACK}Voertuie - kliek op voertuig vir inligting
STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}Bou nuwe pad voertuig
STR_9024_DRAG_ROAD_VEHICLE_TO_HERE :{BLACK}Sleep pad voertuig hier om dit te verkoop
STR_9025_CENTER_MAIN_VIEW_ON_ROAD :{BLACK}Senter skerm op pad voertuig depot
STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}Pad voertuig keuse lys - kliek op voertuig vir inligting
-STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Bou die beklemtoonde pad voertuig
+STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Bou die verlig pad voertuig
STR_902A_COST_SPEED_RUNNING_COST :{BLACK}Koste: {CURRENCY}{}Spoed: {VELOCITY}{}Loopkoste: {CURRENCY}/jr{}Kapasitiet: {CARGO}
STR_ARTICULATED_RV_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}
STR_BARE_CARGO :{CARGO}
@@ -2590,7 +2711,7 @@
STR_9030_CITIZENS_CELEBRATE_FIRST_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 dwing om te omdraai nie
+STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Kan nie voertuig forseer om te omdraai nie...
STR_ONLY_TURN_SINGLE_UNIT :{WHITE}Kan nie voertuie van veel deele draai nie
STR_9034_RENAME :{BLACK}Hernoem
STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Hernoem pad voertuig tipe
@@ -2613,8 +2734,8 @@
STR_9808_NEW_SHIPS :{WHITE}Nuwe Skepe
STR_9809_BUILD_SHIP :{BLACK}Bou Skip
STR_CLONE_SHIP :{BLACK}Kloon Skip
-STR_CLONE_SHIP_INFO :{BLACK}Dit sal 'n afskrywing van die skip bou. Control-kliek sal die opdrae deel
-STR_CLONE_SHIP_DEPOT_INFO :{BLACK}Dit sal 'n afskrywing van 'n skip bou. Kliek die knoppie en dan op 'n skip binne of buite die depot. Control-kliek sal die opdrae deel
+STR_CLONE_SHIP_INFO :{BLACK}Dit sal 'n kopie van die skip bou. Control-kliek sal die opdrae deel
+STR_CLONE_SHIP_DEPOT_INFO :{BLACK}Dit sal 'n kopie van 'n skip bou. Kliek die knoppie en dan op 'n skip binne of buite die depot. Control-kliek sal die opdrae deel
STR_980B_SHIP_MUST_BE_STOPPED_IN :{WHITE}Skip moet in 'n depot gestop wees
STR_980C_CAN_T_SELL_SHIP :{WHITE}Skip kan nie verkoop word nie...
STR_980D_CAN_T_BUILD_SHIP :{WHITE}Kan nie skip bou nie...
@@ -2624,10 +2745,10 @@
STR_9812_AGE_RUNNING_COST_YR :{BLACK}Ouderdom: {LTBLUE}{STRING}{BLACK} Loopkoste: {LTBLUE}{CURRENCY}/Jr
STR_9813_MAX_SPEED :{BLACK}Max. spoed: {LTBLUE}{VELOCITY}
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Profyt die jaar: {LTBLUE}{CURRENCY} (verlede jaar: {CURRENCY})
-STR_9815_RELIABILITY_BREAKDOWNS :{BLACK}Deeglikheid: {LTBLUE}{COMMA}% {BLACK}Oponthoude sedert laaste diens: {LTBLUE}{COMMA}
+STR_9815_RELIABILITY_BREAKDOWNS :{BLACK}Betroubaarheid: {LTBLUE}{COMMA}% {BLACK}Komplikasies na laaste diens: {LTBLUE}{COMMA}
STR_9816_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Gebou: {LTBLUE}{NUM}{BLACK} Waarde: {LTBLUE}{CURRENCY}
STR_9817_CAPACITY :{BLACK}Kapasitiet: {LTBLUE}{CARGO}
-STR_9818_CAN_T_STOP_START_SHIP :{WHITE}Kan nie skip stop/aanvang nie
+STR_9818_CAN_T_STOP_START_SHIP :{WHITE}Kan nie skip stop/aanskakel nie
STR_9819_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Kan nie skip na depot stuur nie...
STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kan nie plaaslike depot vind nie
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Op pad na {TOWN} Skip Depot
@@ -2641,11 +2762,11 @@
STR_9820_BUILD_NEW_SHIP :{BLACK}Bou nuwe skip
STR_9821_DRAG_SHIP_TO_HERE_TO_SELL :{BLACK}Sleep skip hier om dit te verkoop
STR_9822_CENTER_MAIN_VIEW_ON_SHIP :{BLACK}Senter skerm op skip depot
-STR_9823_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}Skepe - kliek op skip vir inligting
+STR_9823_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}Skepe - kliek op skip vir informasie
STR_9824_BUILD_NEW_SHIPS_REQUIRES :{BLACK}Bou nuwe skepe (vereis skip depot)
STR_9825_SHIP_SELECTION_LIST_CLICK :{BLACK}Skip keuse lys - kliek op skip vir inligting
-STR_9826_BUILD_THE_HIGHLIGHTED_SHIP :{BLACK}Bou die beklemtoonde skip
-STR_9827_CURRENT_SHIP_ACTION_CLICK :{BLACK}Huidige skip aksie - kliek hier om skip te stop/aanvang
+STR_9826_BUILD_THE_HIGHLIGHTED_SHIP :{BLACK}Bou die verlig skip
+STR_9827_CURRENT_SHIP_ACTION_CLICK :{BLACK}Huidige skip aksie - kliek hier om skip te stop/aanskakel
STR_9828_SHOW_SHIP_S_ORDERS :{BLACK}Wys skip se opdrae
STR_9829_CENTER_MAIN_VIEW_ON_SHIP :{BLACK}Senter skerm op skip
STR_982A_SEND_SHIP_TO_DEPOT :{BLACK}Stuur skip na depot
@@ -2666,13 +2787,13 @@
STR_983B_REFIT :{WHITE}{VEHICLE} (Herstel)
STR_983C_REFIT_SHIP :{BLACK}Herstel skip
STR_983D_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Kies vrag tipe vir skip te ontvoer
-STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED :{BLACK}Herstel skip om die beklemtoonde vrag tipe te ontvoer
+STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED :{BLACK}Herstel skip om die verlig vrag tipe te ontvoer
STR_983F_SELECT_CARGO_TYPE_TO_CARRY :{GOLD}Kies vrag tipe vir skip te ontvoer:
STR_9840_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nuwe kapasiteit: {GOLD}{CARGO}{}{BLACK}Herstelkoste: {GOLD}{CURRENCY}
STR_9841_CAN_T_REFIT_SHIP :{WHITE}Skip kan nie herstel word nie...
STR_9842_REFITTABLE :(herstelbaar)
STR_GO_TO_SHIP_DEPOT :Gaan na {TOWN} Skip Depot
-SERVICE_AT_SHIP_DEPOT :Versiening by {TOWN} Skip Depot
+SERVICE_AT_SHIP_DEPOT :Diens by {TOWN} Skip Depot
##id 0xA000
STR_A000_AIRPORTS :{WHITE}Lughawe
@@ -2680,8 +2801,8 @@
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Vliegtuig Hangar
STR_A003_NEW_AIRCRAFT :{BLACK}Nuwe Vliegtuig
STR_CLONE_AIRCRAFT :{BLACK}Kloon Vliegtuig
-STR_CLONE_AIRCRAFT_INFO :{BLACK}Dit sal 'n afskrywing van die vliegtuig bou. Control-kliek sal die opdrae deel
-STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Dit sal 'n afskrywing van 'n vliegtuig bou. Kliek die knoppie en dan op 'n vliegtuig binne of buite die hangar. Control-kliek sal die opdrae deel
+STR_CLONE_AIRCRAFT_INFO :{BLACK}Dit sal 'n kopie van die vliegtuig bou. Control-kliek sal die opdrae deel
+STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Dit sal 'n kopie van 'n vliegtuig bou. Kliek die knoppie en dan op 'n vliegtuig binne of buite die hangar. Control-kliek sal die opdrae deel
STR_A005_NEW_AIRCRAFT :{WHITE}Nuwe Vliegtuig
STR_A006_BUILD_AIRCRAFT :{BLACK}Bou Vliegtuig
STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}Kan nie vliegtuig bou nie...
@@ -2692,7 +2813,7 @@
STR_A00D_AGE_RUNNING_COST_YR :{BLACK}Ouderdom: {LTBLUE}{STRING}{BLACK} Loopkoste: {LTBLUE}{CURRENCY}/Jr
STR_A00E_MAX_SPEED :{BLACK}Max. spoed: {LTBLUE}{VELOCITY}
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Profyt die jaar: {LTBLUE}{CURRENCY} (verlede jaar: {CURRENCY})
-STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Deeglikheid: {LTBLUE}{COMMA}% {BLACK}Oponthoude sedert laaste diens: {LTBLUE}{COMMA}
+STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Betroubaarheid: {LTBLUE}{COMMA}% {BLACK}Komplikasies na laaste diens: {LTBLUE}{COMMA}
STR_A011_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Gebou: {LTBLUE}{NUM}{BLACK} Waarde: {LTBLUE}{CURRENCY}
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Kan nie vlietuig na hangar stuur nie...
STR_HEADING_FOR_HANGAR :{ORANGE}Op pad na {STATION} Hangar
@@ -2701,7 +2822,7 @@
STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Diens by {STATION} Hangar, {VELOCITY}
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Vliegtuig {COMMA} wag in die vliegtuig hangar
STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Vliegtuig in die pad
-STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Kan nie vliegtuig stop/aanvang nie...
+STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Kan nie vliegtuig stop/aanskakel nie...
STR_A017_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Vliegtuig is opvlug
STR_A019_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO}, {CARGO}
STR_A01A_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO}
@@ -2709,19 +2830,19 @@
STR_A01C_CAN_T_SELL_AIRCRAFT :{WHITE}Vliegtuig kan nie verkoop word nie...
STR_A01D_AIRPORT_CONSTRUCTION :Lughawe konstruksie
STR_A01E_BUILD_AIRPORT :{BLACK}Bou lughawe
-STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Vliegtuie - kliek op vliegtuig vir inligting
+STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Vliegtuie - kliek op vliegtuig vir informasie
STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES :{BLACK}Bou nuwe vliegtuig (vereis lughawe met hangar)
-STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Vliegtuie - kliek op vliegtuig vir inligting
+STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Vliegtuie - kliek op vliegtuig vir informasie
STR_A022_BUILD_NEW_AIRCRAFT :{BLACK}Bou nuwe vliegtuig
STR_A023_DRAG_AIRCRAFT_TO_HERE_TO :{BLACK}Sleep vliegtuig hier om dit te verkoop
STR_A024_CENTER_MAIN_VIEW_ON_HANGAR :{BLACK}Senter skerm op hangar
STR_A025_AIRCRAFT_SELECTION_LIST :{BLACK}Vliegtuig keuse lys - kliek op vliegtuig vir inligting
-STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT :{BLACK}Bou die beklemtoonde vliegtuig
-STR_A027_CURRENT_AIRCRAFT_ACTION :{BLACK}Huidige vliegtuig aksie - kliek hier on vliegtuig te stop/aanvang
-STR_A028_SHOW_AIRCRAFT_S_ORDERS :{BLACK}Wys vliegtuig se opdrae
+STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT :{BLACK}Bou die verlig vliegtuig
+STR_A027_CURRENT_AIRCRAFT_ACTION :{BLACK}Huidige vliegtuig aksie - kliek hier on vliegtuig te stop/aanskakel
+STR_A028_SHOW_AIRCRAFT_S_ORDERS :{BLACK}Toon vliegtuig se opdrae
STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT :{BLACK}Senter skerm op vliegtuig
STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Stuur vliegtuig na hangar. CTRL+kliek sal net diens
-STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Wys vliegtuig aanwyse
+STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Toon vliegtuig aanwyse
STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Koste: {CURRENCY} Max. Spoed: {VELOCITY}{}Kapasiteit: {COMMA} passasiers, {COMMA} sakke van pos{}Loopkoste: {CURRENCY}/Jr
STR_A030_NAME_AIRCRAFT :{WHITE}Benaam vliegtuig
@@ -2738,22 +2859,22 @@
STR_A03C_REFIT :{WHITE}{VEHICLE} (Herstel)
STR_A03D_REFIT_AIRCRAFT :{BLACK}Herstel vliegtuig
STR_A03E_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Kies vrag tipe vir vliegtuig om te ontvoer
-STR_A03F_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Herstel vliegtuig om beklemtoonde vrag tipe te ontvoer
+STR_A03F_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Herstel vliegtuig om verlig vrag tipe te ontvoer
STR_A040_SELECT_CARGO_TYPE_TO_CARRY :{GOLD}Kies vrag tipe om te ontvoer:
STR_A041_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nuwe kapasiteit: {GOLD}{STRING}{}{BLACK}Herstelkoste: {GOLD}{CURRENCY}
STR_A042_CAN_T_REFIT_AIRCRAFT :{WHITE}Vliegtuig kan nie herstel word nie...
STR_GO_TO_AIRPORT_HANGAR :Gaan na {STATION} Hangar
-SERVICE_AT_AIRPORT_HANGAR :Versiening by {STATION} Hangar
+SERVICE_AT_AIRPORT_HANGAR :Diens by {STATION} Hangar
##id 0xB000
STR_B000_ZEPPELIN_DISASTER_AT :{BLACK}{BIGFONT}Zeppelin ramp by {STATION}!
STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Pad voertuig vernietig in 'VVV' botsing!
STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Olie raffineerdery ontploffing naby {TOWN}!
-STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fabriek vernietig in verdage omstandighede naby {TOWN}!
+STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}fabriek vernietig in agterdogtig omstandighede naby {TOWN}!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}'VVV' beland naby {TOWN}!
-STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Steenkool myn bedaaring los spoor van vernietiging naby {TOWN}!
-STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Vloede!{}Te minste {COMMA} verlore, vermoede dood agter beduidend vloeding!
+STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Kool myn bedaaring los spoor van vernietiging naby {TOWN}!
+STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Oorstroom!{}Te minste {COMMA} vermis, aangeneem dood na beduidende oorstroom!
STR_BRIBE_FAILED :{WHITE}Jou omkooping onderneeming is deur
STR_BRIBE_FAILED_2 :{WHITE}'n streek navorser uitgevind
@@ -2795,14 +2916,14 @@
STR_CURRENCY_WINDOW :{WHITE}Gewoonte koers
-STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Wisselkoers: {ORANGE}{CURRENCY} = {COMMA}
+STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Wissel koers: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Afskeier
STR_CURRENCY_PREFIX :{LTBLUE}Vervoegsel:
STR_CURRENCY_SUFFIX :{LTBLUE}Agtervoegsel:
STR_CURRENCY_SWITCH_TO_EURO :{LTBLUE}Verwissel na Euro: {ORANGE}{NUM}
STR_CURRENCY_SWITCH_TO_EURO_NEVER :{LTBLUE}Verwissel na Euro: {ORANGE}nooit
STR_CURRENCY_PREVIEW :{LTBLUE}Voorskou: {ORANGE}{CURRENCY}
-STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Verander gewoonte koers stelling
+STR_CURRENCY_CHANGE_PARAMETER :{BLACK}verander gebruiklike koers parameter
STR_BUS :{BLACK}{BUS}
STR_LORRY :{BLACK}{LORRY}
@@ -2812,7 +2933,8 @@
### depot strings
-STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Is jy seker jy wil al die voertuie in die depot nou verkoop?
+STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}U staan op die punt om al die voertuie in die depot te verkoop. Is jy seker?
+STR_DEPOT_WRONG_DEPOT_TYPE :Verkeerde depot tipe
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Verkoop allep treine in die depot
STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}Verkoop alle pad voertuie in die depot
@@ -2841,13 +2963,13 @@
STR_MASS_STOP_DEPOT_SHIP_TIP :{BLACK}Kliek om alle skepe in die depot te stop
STR_MASS_STOP_HANGAR_TIP :{BLACK}Kliek om alle vlietuie in die hangar te stop
-STR_MASS_START_DEPOT_TRAIN_TIP :{BLACK}Kliek om alle treine in die depot te laat ry
-STR_MASS_START_DEPOT_ROADVEH_TIP :{BLACK}Kliek om alle pad voertuie in die depot te laayt ry
-STR_MASS_START_DEPOT_SHIP_TIP :{BLACK}Kliek om alle skepe in die depot te laat ry
-STR_MASS_START_HANGAR_TIP :{BLACK}Kliek om alle vliegtuie in die hangar te laat ry
+STR_MASS_START_DEPOT_TRAIN_TIP :{BLACK}Kliek om alle treine in die depot te aanskakel
+STR_MASS_START_DEPOT_ROADVEH_TIP :{BLACK}Kliek om alle pad voertuie in die depot te aanskakel
+STR_MASS_START_DEPOT_SHIP_TIP :{BLACK}Kliek om alle skepe in die depot te aanskakel
+STR_MASS_START_HANGAR_TIP :{BLACK}Kliek om alle vliegtuie in die hangar te aanskakel
STR_MASS_STOP_LIST_TIP :{BLACK}Kliek om alle voertuie in die lys te stop
-STR_MASS_START_LIST_TIP :{BLACK}Kliek om aller voertuie in die lys te laat ry
+STR_MASS_START_LIST_TIP :{BLACK}Kliek om aller voertuie in die lys te aanskakel
@@ -2863,31 +2985,31 @@
########### String for New Landscape Generator
-STR_GENERATE :{WHITE}Ontwikkel
-STR_LAND_GENERATOR :{BLACK}Land ontwikkelaar:
+STR_GENERATE :{WHITE}Opwek
+STR_LAND_GENERATOR :{BLACK}Daal genereerder:
STR_HEIGHTMAP_ROTATION :{BLACK}Hoogtekaart rotasie:
STR_DATE :{BLACK}Date:
STR_GENERATE_DATE :{BLACK}{DATE_LONG}
STR_HEIGHTMAP_SCALE_WARNING_CAPTION :{WHITE}Skaal waaskuwing
-STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}Te veel afskaaling van oorpsrong kaart is nie goedgekeur nie. Gaan aan met ontwikkeling?
+STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}Om te verstel oorsprong werfkaart te is nie aanbeveel. Voortgaan met die generasie?
STR_HEIGHTMAP_NAME :{BLACK}Hoogtekaart name:
STR_HEIGHTMAP_SIZE :{BLACK}Groote: {ORANGE}{NUM} x {NUM}
-STR_GENERATION_WORLD :{WHITE}Wereld Ontwikkeling...
+STR_GENERATION_WORLD :{WHITE}Genereer wêreld...
STR_GENERATION_ABORT :{BLACK}Verlaat
-STR_GENERATION_ABORT_CAPTION :{WHITE}Verlaat Wereld Ontwikkeling
-STR_GENERATION_ABORT_MESSAGE :{YELLOW}Wil jy rerig die ontwikkeling verlaat?
+STR_GENERATION_ABORT_CAPTION :{WHITE}Verlaat Wêreld Generasie
+STR_GENERATION_ABORT_MESSAGE :{YELLOW}Wil jy rerig die generasie verlaat?
STR_GENERATION_PROGRESS :{BLACK}{NUM} / {NUM}
STR_CLEARING_TILES :{BLACK}Ru en rotserig area ontwikkeling
-STR_DIFFICULTY_TO_CUSTOM :{WHITE}Die aksie het die moeilikheids vlak na gewoonte verander
-STR_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Beweeg die hoogte van platte land een af
-STR_FLAT_WORLD_HEIGHT_UP :{BLACK}Beweeg die hoogte van platte land bo een
-STR_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Verander die hoogte van platte land
-STR_FLAT_WORLD_HEIGHT :{BLACK}Hoogte van platte land:
+STR_DIFFICULTY_TO_CUSTOM :{WHITE}Hierdie aksie verander die moeite vlak to gebruiklike
+STR_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Beweeg die hoogte van platte daal een af
+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}
########### String for new airports
-STR_CITY_AIRPORT :{BLACK}Stad
+STR_CITY_AIRPORT :{BLACK}Dorp
STR_METRO_AIRPORT :{BLACK}Metropolitaans lughawe
STR_INTERNATIONAL_AIRPORT :{BLACK}Internasionaale lughawe
STR_COMMUTER_AIRPORT :{BLACK}Pendelaar
@@ -2908,22 +3030,62 @@
STR_MEASURE_AREA_HEIGHTDIFF :{BLACK}Area: {NUM} x {NUM}{}Hoogte verskil: {NUM} m
############ Date formatting
+STR_DATE_TINY :{STRING}-{STRING}-{NUM}
+STR_DATE_SHORT :{STRING} {NUM}
+STR_DATE_LONG :{STRING} {STRING} {NUM}
########
+STR_FEEDER_CARGO_VALUE :{BLACK}oordra Krediete: {LTBLUE}{CURRENCY}
+STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD :{WHITE}...hierdie is 'n dorp besit pad
+STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}...pad teenoor in die verkeerde rigting
##### Mass Order
+STR_GROUP_NAME_FORMAT :Groep {COMMA}
+STR_GROUP_TINY_NAME :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS :Alle triene
+STR_GROUP_ALL_ROADS :Alle pad voertuie
+STR_GROUP_ALL_SHIPS :Alle skepe
+STR_GROUP_ALL_AIRCRAFTS :Alle vliegtuie
+STR_GROUP_DEFAULT_TRAINS :Ongegroepeerde treine
+STR_GROUP_DEFAULT_ROADS :Ongegroepeerde pad voertuie
+STR_GROUP_DEFAULT_SHIPS :Ongegroepeerde skepe
+STR_GROUP_DEFAULT_AIRCRAFTS :Ongegroepeerde vliegtuig
+STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE :Voeg gedeel voertuie
+STR_GROUP_REMOVE_ALL_VEHICLES :Verwyder alle voertuie
+STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Trein{P "" e}
+STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Pad Voer{P tuig tuie}
+STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Sk{P ip epe}
+STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Vliegtuie
+STR_GROUP_RENAME_CAPTION :{BLACK}Hernoem groep
+STR_GROUP_REPLACE_CAPTION :{WHITE}Vervang Voertuie van "{GROUP}"
+STR_GROUP_CAN_T_CREATE :{WHITE}Kan nie groep skep nie...
+STR_GROUP_CAN_T_DELETE :{WHITE}Kan nie groep uitvee nie...
+STR_GROUP_CAN_T_RENAME :{WHITE}Kan nie groep hernoem nie...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan nie alle voertuie van groep verwyder nie...
+STR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan nie voeg die voertuig tot hierdie groep nie...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan nie gedeel voertuie na groep byvoeg...
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}Groepe - Kliek op 'n groep om te lys alle voertuie van hierdie groep
+STR_GROUP_CREATE_TIP :{BLACK}kliek om groep te skep
+STR_GROUP_DELETE_TIP :{BLACK}Vee uit die gekose groep
+STR_GROUP_RENAME_TIP :{BLACK}Hernoem die gekose groep
+STR_GROUP_REPLACE_PROTECTION_TIP :{BLACK}Kliek om te beskerm hierdie groep van wêreldwyd outovervang
STR_COMPANY_NAME :{COMPANY}
+STR_ENGINE_NAME :{ENGINE}
+STR_GROUP_NAME :{GROUP}
#### Improved sign GUI
########
+STR_FUND_NEW_INDUSTRY :{BLACK}Fonds
STR_BUILD_NEW_INDUSTRY :{BLACK}Bou
+STR_INDUSTRY_SELECTION_HINT :{BLACK}Kies die paslike nywerheid van hierdie lys
--- a/src/misc_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/misc_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -390,7 +390,7 @@
if (flags & DC_EXEC) {
if (p1 != (uint32)-1L) {
- ((int*)&_opt_ptr->diff)[p1] = p2;
+ ((GDType*)&_opt_ptr->diff)[p1] = p2;
_opt_ptr->diff_level = 3; // custom difficulty level
} else {
_opt_ptr->diff_level = p2;
--- a/src/misc_gui.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/misc_gui.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -9,6 +9,7 @@
#include "functions.h"
#include "landscape.h"
#include "newgrf.h"
+#include "newgrf_text.h"
#include "saveload.h"
#include "strings.h"
#include "table/sprites.h"
@@ -505,6 +506,13 @@
CopyInDParam(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
DrawWindowWidgets(w);
CopyInDParam(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
+
+ /* If the error message comes from a NewGRF, we must use the text ref. stack reserved for error messages.
+ * If the message doesn't come from a NewGRF, it won't use the TTDP-style text ref. stack, so we won't hurt anything
+ */
+ SwitchToErrorRefStack();
+ RewindTextRefStack();
+
if (!IsWindowOfPrototype(w, _errmsg_face_widgets)) {
DrawStringMultiCenter(
120,
@@ -533,6 +541,9 @@
_errmsg_message_1,
w->width - 2);
}
+
+ /* Switch back to the normal text ref. stack for NewGRF texts */
+ SwitchToNormalRefStack();
break;
case WE_MOUSELOOP:
--- a/src/music_gui.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/music_gui.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -118,7 +118,8 @@
}
} while (_playlists[msf.playlist][i++] != 0 && i < lengthof(_cur_playlist) - 1);
- if (msf.shuffle) {
+ /* Do not shuffle when on the intro-start window, as the song to play has to be the original TTD Theme*/
+ if (msf.shuffle && _game_mode != GM_MENU) {
i = 500;
do {
uint32 r = InteractiveRandom();
--- a/src/network/core/packet.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/network/core/packet.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -133,7 +133,8 @@
void Packet::Send_string(const char* data)
{
assert(data != NULL);
- assert(this->size < sizeof(this->buffer) - strlen(data) - 1);
+ /* The <= *is* valid due to the fact that we are comparing sizes and not the index. */
+ assert(this->size + strlen(data) + 1 <= sizeof(this->buffer));
while ((this->buffer[this->size++] = *data++) != '\0') {}
}
--- a/src/newgrf.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/newgrf.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -1541,8 +1541,8 @@
switch (prop) {
case 0x08: /* Bit number of cargo */
cs->bitnum = grf_load_byte(&buf);
- cs->grfid = _cur_grffile->grfid;
if (cs->IsValid()) {
+ cs->grfid = _cur_grffile->grfid;
SETBIT(_cargo_mask, cid + i);
} else {
CLRBIT(_cargo_mask, cid + i);
@@ -1755,7 +1755,6 @@
return false;
}
- tsp->grf_prop.override = ovrid;
_industile_mngr.Add(indtid + i, ovrid);
} break;
@@ -1854,6 +1853,9 @@
indsp->grf_prop.local_id = indid + i;
indsp->grf_prop.subst_id = subs_id;
indsp->grf_prop.grffile = _cur_grffile;
+ /* If the grf industry needs to check its surounding upon creation, it should
+ * rely on callbacks, not on the original placement functions */
+ indsp->check_proc = CHECK_NOTHING;
}
} break;
@@ -1888,8 +1890,7 @@
copy_from = (IndustryTileTable*)_origin_industry_specs[type].table[laynbr];
for (size = 1;; size++) {
- if (_origin_industry_specs[type].table[laynbr + (size - 1)]->ti.x == -0x80 &&
- _origin_industry_specs[type].table[laynbr + (size - 1)]->ti.y == 0) break;
+ if (copy_from[size - 1].ti.x == -0x80 && copy_from[size - 1].ti.y == 0) break;
}
break;
}
@@ -2007,7 +2008,7 @@
break;
case 0x1A: // Special industry flags to define special behavior
- indsp->behaviour = (IndustyBehaviour)grf_load_dword(&buf);
+ indsp->behaviour = (IndustryBehaviour)grf_load_dword(&buf);
break;
case 0x1B: // New industry text ID
@@ -2865,6 +2866,12 @@
for (uint i = 0; i < idcount; i++) {
uint8 stid = buf[3 + i];
StationSpec *statspec = _cur_grffile->stations[stid];
+
+ if (statspec == NULL) {
+ grfmsg(1, "StationMapSpriteGroup: Station with ID 0x%02X does not exist, skipping", stid);
+ return;
+ }
+
byte *bp = &buf[4 + idcount];
for (uint c = 0; c < cidcount; c++) {
@@ -2897,6 +2904,10 @@
for (uint i = 0; i < idcount; i++) {
uint8 stid = buf[3 + i];
StationSpec *statspec = _cur_grffile->stations[stid];
+ if (statspec == NULL) {
+ grfmsg(1, "StationMapSpriteGroup: Station with ID 0x%02X does not exist, skipping", stid);
+ continue;
+ }
statspec->spritegroup[CT_DEFAULT] = _cur_grffile->spritegroups[groupid];
statspec->grffile = _cur_grffile;
@@ -4060,7 +4071,8 @@
break;
case 0x0B: // Cargo
- src1 = PerformGRM(_grm_cargos, NUM_CARGO, count, op, target, "cargos");
+ /* There are two ranges: one for cargo IDs and one for cargo bitmasks */
+ src1 = PerformGRM(_grm_cargos, NUM_CARGO * 2, count, op, target, "cargos");
if (_skip_sprites == -1) return;
break;
@@ -4179,8 +4191,19 @@
_traininfo_vehicle_pitch = res;
break;
+ case 0x8F: // Rail track type cost factors
+ _railtype_cost_multiplier[0] = GB(res, 0, 8);
+ if (_patches.disable_elrails) {
+ _railtype_cost_multiplier[1] = GB(res, 0, 8);
+ _railtype_cost_multiplier[2] = GB(res, 8, 8);
+ } else {
+ _railtype_cost_multiplier[1] = GB(res, 8, 8);
+ _railtype_cost_multiplier[2] = GB(res, 16, 8);
+ }
+ _railtype_cost_multiplier[3] = GB(res, 16, 8);
+ break;
+
/* @todo implement */
- case 0x8F: // Rail track type cost factors
case 0x93: // Tile refresh offset to left
case 0x94: // Tile refresh offset to right
case 0x95: // Tile refresh offset upwards
@@ -4683,7 +4706,7 @@
| (1 << 0x19) // newships
| (1 << 0x1A) // newplanes
| ((_patches.signal_side ? 1 : 0) << 0x1B) // signalsontrafficside
- | (1 << 0x1C); // electrifiedrailway
+ | ((_patches.disable_elrails ? 0 : 1) << 0x1C); // electrifiedrailway
_ttdpatch_flags[2] = (1 << 0x01) // loadallgraphics - obsolote
| (1 << 0x03) // semaphores
@@ -4695,7 +4718,7 @@
| (0 << 0x10) // moreindustriesperclimate - obsolete
| (0 << 0x11) // moretoylandfeatures
| (1 << 0x12) // newstations
- | (0 << 0x13) // tracktypecostdiff
+ | (1 << 0x13) // tracktypecostdiff
| (1 << 0x14) // manualconvert
| ((_patches.build_on_slopes ? 1 : 0) << 0x15) // buildoncoasts
| (1 << 0x16) // canals
@@ -4704,7 +4727,7 @@
| (1 << 0x19) // newhouses
| (1 << 0x1A) // newbridges
| (1 << 0x1B) // newtownnames
- | (0 << 0x1C) // moreanimations
+ | (1 << 0x1C) // moreanimation
| ((_patches.wagon_speed_limits ? 1 : 0) << 0x1D) // wagonspeedlimits
| (1 << 0x1E) // newshistory
| (0 << 0x1F); // custombridgeheads
@@ -4955,6 +4978,9 @@
_traininfo_vehicle_pitch = 0;
_traininfo_vehicle_width = 29;
+ /* Reset track cost multipliers. */
+ memcpy(&_railtype_cost_multiplier, &_default_railtype_cost_multiplier, sizeof(_default_railtype_cost_multiplier));
+
_loaded_newgrf_features.has_2CC = false;
_loaded_newgrf_features.has_newhouses = false;
_loaded_newgrf_features.has_newindustries = false;
@@ -5258,7 +5284,7 @@
for (CargoID c = 0; c < NUM_CARGO; c++) {
CargoSpec *cs = &_cargo[c];
/* Don't map if the cargo is unavailable or not from NewGRF */
- if (!cs->IsValid() || cs->grfid == 0) continue;
+ if (cs->grfid == 0) continue;
cs->name = MapGRFStringID(cs->grfid, cs->name);
cs->name_single = MapGRFStringID(cs->grfid, cs->name_single);
--- a/src/newgrf_cargo.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/newgrf_cargo.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -98,17 +98,19 @@
}
-CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile)
+CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile, bool usebit)
{
/* Pre-version 7 uses the 'climate dependent' ID, i.e. cargo is the cargo ID */
- if (grffile->grf_version < 7) return HASBIT(_cargo_mask, cargo) ? cargo : (CargoID) CT_INVALID;
-
- /* If the GRF contains a translation table (and the cargo is in bounds)
- * then get the cargo ID for the label */
- if (cargo < grffile->cargo_max) return GetCargoIDByLabel(grffile->cargo_list[cargo]);
-
- /* Else the cargo value is a 'climate independent' 'bitnum' */
- return GetCargoIDByBitnum(cargo);
+ if (grffile->grf_version < 7) {
+ if (!usebit) return cargo;
+ /* Else the cargo value is a 'climate independent' 'bitnum' */
+ if (HASBIT(_cargo_mask, cargo)) return GetCargoIDByBitnum(cargo);
+ } else {
+ /* If the GRF contains a translation table (and the cargo is in bounds)
+ * then get the cargo ID for the label */
+ if (cargo < grffile->cargo_max) return GetCargoIDByLabel(grffile->cargo_list[cargo]);
+ }
+ return CT_INVALID;
}
uint8 GetReverseCargoTranslation(CargoID cargo, const GRFFile *grffile)
--- a/src/newgrf_cargo.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/newgrf_cargo.h Sat Oct 20 10:42:28 2007 +0000
@@ -29,7 +29,7 @@
SpriteID GetCustomCargoSprite(const CargoSpec *cs);
uint16 GetCargoCallback(CallbackID callback, uint32 param1, uint32 param2, const CargoSpec *cs);
-CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile);
+CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile, bool usebit = false);
uint8 GetReverseCargoTranslation(CargoID cargo, const GRFFile *grffile);
#endif /* NEWGRF_CARGO_H */
--- a/src/newgrf_commons.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/newgrf_commons.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -195,10 +195,10 @@
if (ind_id == invalid_ID) { // not found? So this is the introduction of a new industry
/* Second step is dealing with the override. */
- if (inds->grf_prop.override != invalid_ID && _industry_specs[inds->grf_prop.override].grf_prop.override == invalid_ID) {
+ if (inds->grf_prop.override != invalid_ID && _industry_specs[inds->grf_prop.override].grf_prop.grffile == NULL) {
/* this is an override, which means it will take the place of the industry it is
* designed to replace. Before we conclude that the override is allowed,
- * we first need to verify that the slot is not holding another override
+ * we first need to verify that the slot is not holding another industry from a grf
* If it's the case,it will be considered as a normal substitute */
ind_id = inds->grf_prop.override;
} else {
--- a/src/newgrf_gui.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/newgrf_gui.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -342,6 +342,7 @@
if (i >= w->vscroll.pos && i < w->vscroll.pos + w->vscroll.cap) {
const char *text = (c->name != NULL && !StrEmpty(c->name)) ? c->name : c->filename;
SpriteID pal;
+ byte txtoffset;
/* Pick a colour */
switch (c->status) {
@@ -365,7 +366,8 @@
DrawSprite(SPR_SQUARE, pal, 5, y + 2);
if (c->error != NULL) DrawSprite(SPR_WARNING_SIGN, 0, 20, y + 2);
- DoDrawString(text, c->error != NULL ? 35 : 25, y + 3, WP(w, newgrf_d).sel == c ? 0xC : 0x10);
+ txtoffset = c->error != NULL ? 35 : 25;
+ DoDrawStringTruncated(text, txtoffset, y + 3, WP(w, newgrf_d).sel == c ? 0xC : 0x10, w->width - txtoffset - 10);
y += 14;
}
}
--- a/src/newgrf_house.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/newgrf_house.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -346,7 +346,7 @@
HASBIT(_transparent_opt, TO_HOUSES)
);
} else {
- AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y, HASBIT(_transparent_opt, TO_HOUSES));
+ AddChildSpriteScreen(image, pal, (byte)dtss->delta_x, (byte)dtss->delta_y, HASBIT(_transparent_opt, TO_HOUSES));
}
}
}
--- a/src/newgrf_industries.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/newgrf_industries.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -83,7 +83,7 @@
* @return value encoded as per NFO specs */
uint32 GetIndustryIDAtOffset(TileIndex tile, const Industry *i)
{
- if (!IsTileType(tile, MP_INDUSTRY) || GetIndustryIndex(tile) == i->index) {
+ if (!IsTileType(tile, MP_INDUSTRY) || GetIndustryIndex(tile) != i->index) {
/* No industry and/or the tile does not have the same industry as the one we match it with */
return 0xFFFF;
}
@@ -458,6 +458,11 @@
* the building of the industry, as that's how it's done in TTDP. */
if (group == NULL || group->type != SGT_CALLBACK) return true;
+ /* Copy some parameters from the registers to the error message text ref. stack */
+ SwitchToErrorRefStack();
+ PrepareTextRefStackUsage(4);
+ SwitchToNormalRefStack();
+
switch (group->g.callback.result) {
case 0x400: return true;
case 0x401: _error_message = STR_0239_SITE_UNSUITABLE; break;
--- a/src/newgrf_industrytiles.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/newgrf_industrytiles.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -196,7 +196,7 @@
!HASBIT(image, SPRITE_MODIFIER_OPAQUE) && HASBIT(_transparent_opt, TO_INDUSTRIES)
);
} else {
- AddChildSpriteScreen(image, pal, dtss->delta_x, dtss->delta_y, HASBIT(_transparent_opt, TO_INDUSTRIES));
+ AddChildSpriteScreen(image, pal, (byte)dtss->delta_x, (byte)dtss->delta_y, HASBIT(_transparent_opt, TO_INDUSTRIES));
}
}
}
@@ -265,6 +265,11 @@
return callback_res != 0;
}
+ /* Copy some parameters from the registers to the error message text ref. stack */
+ SwitchToErrorRefStack();
+ PrepareTextRefStackUsage(4);
+ SwitchToNormalRefStack();
+
switch (callback_res) {
case 0x400: return true;
case 0x401: _error_message = STR_0239_SITE_UNSUITABLE; return false;
@@ -294,7 +299,7 @@
bool frame_set_by_callback = false;
byte frame = GetIndustryAnimationState(tile);
- uint16 num_frames = GB(itspec->animation_info, 0, 8) + 1;
+ uint16 num_frames = GB(itspec->animation_info, 0, 8);
if (HASBIT(itspec->callback_flags, CBM_INDT_ANIM_NEXT_FRAME)) {
uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_ANIM_NEXT_FRAME, HASBIT(itspec->animation_special_flags, 0) ? Random() : 0, 0, gfx, ind, tile);
--- a/src/newgrf_text.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/newgrf_text.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -538,30 +538,52 @@
this->stack[this->position + 1] = GB(word, 8, 8);
}
- void ResetStack() { this->used = true; this->position = 0; }
+ void ResetStack() { this->position = 0; this->used = true; }
+ void RewindStack() { this->position = 0; }
};
+static TextRefStack _newgrf_normal_textrefstack;
+static TextRefStack _newgrf_error_textrefstack;
+
/** The stack that is used for TTDP compatible string code parsing */
-static TextRefStack _newgrf_textrefstack;
+static TextRefStack *_newgrf_textrefstack = &_newgrf_normal_textrefstack;
-/** Prepare the TTDP compatible string code parsing */
-void PrepareTextRefStackUsage()
+/**
+ * Prepare the TTDP compatible string code parsing
+ * @param numEntries number of entries to copy from the registers
+ */
+void PrepareTextRefStackUsage(byte numEntries)
{
extern TemporaryStorageArray<uint32, 0x110> _temp_store;
- _newgrf_textrefstack.ResetStack();
+ _newgrf_textrefstack->ResetStack();
- byte *p = _newgrf_textrefstack.stack;
- for (uint i = 0; i < 6; i++) {
+ byte *p = _newgrf_textrefstack->stack;
+ for (uint i = 0; i < numEntries; i++) {
for (uint j = 0; j < 32; j += 8) {
- *p = GB(_temp_store.Get(0x100 + i), 32 - j, 8);
+ *p = GB(_temp_store.Get(0x100 + i), j, 8);
p++;
}
}
}
/** Stop using the TTDP compatible string code parsing */
-void StopTextRefStackUsage() { _newgrf_textrefstack.used = false; }
+void StopTextRefStackUsage() { _newgrf_textrefstack->used = false; }
+
+void SwitchToNormalRefStack()
+{
+ _newgrf_textrefstack = &_newgrf_normal_textrefstack;
+}
+
+void SwitchToErrorRefStack()
+{
+ _newgrf_textrefstack = &_newgrf_error_textrefstack;
+}
+
+void RewindTextRefStack()
+{
+ _newgrf_textrefstack->RewindStack();
+}
/**
* FormatString for NewGRF specific "magic" string control codes
@@ -571,31 +593,31 @@
*/
uint RemapNewGRFStringControlCode(uint scc, char **buff, const char **str, int64 *argv)
{
- if (_newgrf_textrefstack.used) {
+ if (_newgrf_textrefstack->used) {
switch (scc) {
default: NOT_REACHED();
- case SCC_NEWGRF_PRINT_SIGNED_BYTE: *argv = _newgrf_textrefstack.PopSignedByte(); break;
- case SCC_NEWGRF_PRINT_SIGNED_WORD: *argv = _newgrf_textrefstack.PopSignedWord(); break;
- case SCC_NEWGRF_PRINT_QWORD_CURRENCY: *argv = _newgrf_textrefstack.PopUnsignedQWord(); break;
+ case SCC_NEWGRF_PRINT_SIGNED_BYTE: *argv = _newgrf_textrefstack->PopSignedByte(); break;
+ case SCC_NEWGRF_PRINT_SIGNED_WORD: *argv = _newgrf_textrefstack->PopSignedWord(); break;
+ case SCC_NEWGRF_PRINT_QWORD_CURRENCY: *argv = _newgrf_textrefstack->PopUnsignedQWord(); break;
case SCC_NEWGRF_PRINT_DWORD_CURRENCY:
- case SCC_NEWGRF_PRINT_DWORD: *argv = _newgrf_textrefstack.PopSignedDWord(); break;
+ case SCC_NEWGRF_PRINT_DWORD: *argv = _newgrf_textrefstack->PopSignedDWord(); break;
case SCC_NEWGRF_PRINT_WORD_SPEED:
case SCC_NEWGRF_PRINT_WORD_LITRES:
- case SCC_NEWGRF_PRINT_UNSIGNED_WORD: *argv = _newgrf_textrefstack.PopUnsignedWord(); break;
+ case SCC_NEWGRF_PRINT_UNSIGNED_WORD: *argv = _newgrf_textrefstack->PopUnsignedWord(); break;
case SCC_NEWGRF_PRINT_DATE:
- case SCC_NEWGRF_PRINT_MONTH_YEAR: *argv = _newgrf_textrefstack.PopSignedWord() + DAYS_TILL_ORIGINAL_BASE_YEAR; break;
+ case SCC_NEWGRF_PRINT_MONTH_YEAR: *argv = _newgrf_textrefstack->PopSignedWord() + DAYS_TILL_ORIGINAL_BASE_YEAR; break;
- case SCC_NEWGRF_DISCARD_WORD: _newgrf_textrefstack.PopUnsignedWord(); break;
+ case SCC_NEWGRF_DISCARD_WORD: _newgrf_textrefstack->PopUnsignedWord(); break;
- case SCC_NEWGRF_ROTATE_TOP_4_WORDS: _newgrf_textrefstack.RotateTop4Words(); break;
- case SCC_NEWGRF_PUSH_WORD: _newgrf_textrefstack.PushWord(Utf8Consume(str)); break;
+ case SCC_NEWGRF_ROTATE_TOP_4_WORDS: _newgrf_textrefstack->RotateTop4Words(); break;
+ case SCC_NEWGRF_PUSH_WORD: _newgrf_textrefstack->PushWord(Utf8Consume(str)); break;
case SCC_NEWGRF_UNPRINT: *buff -= Utf8Consume(str); break;
case SCC_NEWGRF_PRINT_STRING_ID:
- *argv = _newgrf_textrefstack.PopUnsignedWord();
+ *argv = _newgrf_textrefstack->PopUnsignedWord();
if (*argv == STR_NULL) *argv = STR_EMPTY;
break;
}
@@ -614,7 +636,7 @@
return SCC_CURRENCY;
case SCC_NEWGRF_PRINT_STRING_ID:
- return SCC_STRING;
+ return SCC_STRING1;
case SCC_NEWGRF_PRINT_DATE:
return SCC_DATE_LONG;
--- a/src/newgrf_text.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/newgrf_text.h Sat Oct 20 10:42:28 2007 +0000
@@ -15,8 +15,11 @@
bool CheckGrfLangID(byte lang_id, byte grf_version);
-void PrepareTextRefStackUsage();
+void PrepareTextRefStackUsage(byte numEntries);
void StopTextRefStackUsage();
+void SwitchToNormalRefStack();
+void SwitchToErrorRefStack();
+void RewindTextRefStack();
uint RemapNewGRFStringControlCode(uint scc, char **buff, const char **str, int64 *argv);
#endif /* NEWGRF_TEXT_H */
--- a/src/oldloader.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/oldloader.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -224,7 +224,7 @@
default: break;
}
} else {
- uint32 res = 0;
+ uint64 res = 0;
/* Reading from the file: bits 16 to 23 have the FILE type */
switch (GetOldChunkFileType(chunk->type)) {
@@ -376,7 +376,8 @@
#define REMAP_TOWN_IDX(x) ((x) - (0x0459154 - 0x0458EF0)) / 94
#define REMAP_ORDER_IDX(x) ((x) - (0x045AB08 - 0x0458EF0)) / 2
-extern TileIndex _animated_tile_list[256];
+extern TileIndex *_animated_tile_list;
+extern uint _animated_tile_count;
extern char _name_array[512][32];
static byte _old_vehicle_multiplier;
@@ -501,6 +502,29 @@
return true;
}
+static bool LoadOldAnimTileList(LoadgameState *ls, int num)
+{
+ /* This is sligthly hackish - we must load a chunk into an array whose
+ * address isn't static, but instead pointed to by _animated_tile_list.
+ * To achieve that, create an OldChunks list on the stack on the fly.
+ * The list cannot be static because the value of _animated_tile_list
+ * can change between calls. */
+
+ const OldChunks anim_chunk[] = {
+ OCL_VAR ( OC_TILE, 256, _animated_tile_list ),
+ OCL_END ()
+ };
+
+ if (!LoadChunk(ls, NULL, anim_chunk)) return false;
+
+ /* Update the animated tile counter by counting till the first zero in the array */
+ for (_animated_tile_count = 0; _animated_tile_count < 256; _animated_tile_count++) {
+ if (_animated_tile_list[_animated_tile_count] == 0) break;
+ }
+
+ return true;
+}
+
static const OldChunks depot_chunk[] = {
OCL_SVAR( OC_TILE, Depot, xy ),
OCL_VAR ( OC_UINT32, 1, &_old_town_index ),
@@ -706,6 +730,7 @@
if (i->IsValid()) {
i->town = GetTown(REMAP_TOWN_IDX(_old_town_index));
+ IncIndustryTypeCount(i->type);
}
return true;
@@ -734,8 +759,8 @@
}
static const OldChunks player_economy_chunk[] = {
- OCL_SVAR( OC_INT32, PlayerEconomyEntry, income ),
- OCL_SVAR( OC_INT32, PlayerEconomyEntry, expenses ),
+ OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, PlayerEconomyEntry, income ),
+ OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, PlayerEconomyEntry, expenses ),
OCL_SVAR( OC_INT32, PlayerEconomyEntry, delivered_cargo ),
OCL_SVAR( OC_INT32, PlayerEconomyEntry, performance_history ),
OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, PlayerEconomyEntry, company_value ),
@@ -778,7 +803,7 @@
OCL_SVAR( OC_UINT8, Player, player_money_fraction ),
OCL_SVAR( OC_UINT8, Player, quarters_of_bankrupcy ),
OCL_SVAR( OC_UINT8, Player, bankrupt_asked ),
- OCL_SVAR( OC_UINT32, Player, bankrupt_value ),
+ OCL_SVAR( OC_FILE_U32 | OC_VAR_I64, Player, bankrupt_value ),
OCL_SVAR( OC_UINT16, Player, bankrupt_timeout ),
OCL_SVAR( OC_FILE_U32 | OC_VAR_U16, Player, cargo_types ),
@@ -1012,8 +1037,8 @@
OCL_SVAR( OC_UINT16, Vehicle, reliability ),
OCL_SVAR( OC_UINT16, Vehicle, reliability_spd_dec ),
- OCL_SVAR( OC_INT32, Vehicle, profit_this_year ),
- OCL_SVAR( OC_INT32, Vehicle, profit_last_year ),
+ OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, Vehicle, profit_this_year ),
+ OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, Vehicle, profit_last_year ),
OCL_VAR ( OC_UINT16, 1, &_old_next_ptr ),
@@ -1059,7 +1084,7 @@
default: v->spritenum >>= 1; break;
}
- if (_old_next_ptr != 0xFFFF) v->next = GetVehicle(_old_next_ptr);
+ if (_old_next_ptr != 0xFFFF) v->next = GetVehiclePoolSize() <= _old_next_ptr ? new (_old_next_ptr) InvalidVehicle() : GetVehicle(_old_next_ptr);
v->string_id = RemapOldStringID(_old_string_id);
@@ -1141,23 +1166,23 @@
}
static const OldChunks game_difficulty_chunk[] = {
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, max_no_competitors ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, competitor_start_time ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, number_towns ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, number_industries ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, max_loan ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, initial_interest ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, vehicle_costs ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, competitor_speed ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, competitor_intelligence ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, vehicle_breakdowns ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, subsidy_multiplier ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, construction_cost ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, terrain_type ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, quantity_sea_lakes ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, economy ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, line_reverse_mode ),
- OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, GameDifficulty, disasters ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, max_no_competitors ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, competitor_start_time ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, number_towns ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, number_industries ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, max_loan ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, initial_interest ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, vehicle_costs ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, competitor_speed ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, competitor_intelligence ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, vehicle_breakdowns ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, subsidy_multiplier ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, construction_cost ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, terrain_type ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, quantity_sea_lakes ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, economy ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, line_reverse_mode ),
+ OCL_SVAR( OC_UINT16, GameDifficulty, disasters ),
OCL_END()
};
@@ -1275,7 +1300,7 @@
OCL_CHUNK(5000, LoadOldOrder ),
OCL_ASSERT( 0x4328 ),
- OCL_VAR ( OC_TILE, 256, &_animated_tile_list[0] ),
+ OCL_CHUNK( 1, LoadOldAnimTileList ),
OCL_NULL( 4 ), ///< old end-of-order-list-pointer, no longer in use
OCL_CHUNK( 255, LoadOldDepot ),
@@ -1324,9 +1349,9 @@
OCL_VAR ( OC_FILE_I16 | OC_VAR_I32, 1, &_saved_scrollpos_y ),
OCL_VAR ( OC_FILE_U16 | OC_VAR_U8, 1, &_saved_scrollpos_zoom ),
- OCL_VAR ( OC_UINT32, 1, &_economy.max_loan ),
- OCL_VAR ( OC_UINT32, 1, &_economy.max_loan_unround ),
- OCL_VAR ( OC_FILE_U16 | OC_VAR_U32, 1, &_economy.fluct ),
+ OCL_VAR ( OC_FILE_U32 | OC_VAR_I64, 1, &_economy.max_loan ),
+ OCL_VAR ( OC_FILE_U32 | OC_VAR_I64, 1, &_economy.max_loan_unround ),
+ OCL_VAR ( OC_FILE_U16 | OC_VAR_U32, 1, &_economy.fluct ),
OCL_VAR ( OC_UINT16, 1, &_disaster_delay ),
@@ -1445,6 +1470,16 @@
}
}
+ /* Make sure the available engines are really available, otherwise
+ * we will get a "new vehicle"-spree. */
+ for (Engine *e = _engines; e != endof(_engines); e++) {
+ if (_date >= (e->intro_date + 365)) {
+ e->flags = (e->flags & ~ENGINE_EXCLUSIVE_PREVIEW) | ENGINE_AVAILABLE;
+ AddRemoveEngineFromAutoreplaceAndBuildWindows(e->type);
+ e->player_avail = (byte)-1;
+ }
+ }
+
/* Fix the game to be compatible with OpenTTD */
FixOldTowns();
FixOldStations();
--- a/src/openttd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/openttd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -77,6 +77,7 @@
#include "water_map.h"
#include "industry_map.h"
#include "unmovable_map.h"
+#include "tree_map.h"
#include <stdarg.h>
@@ -1456,9 +1457,9 @@
* an oil rig which got shut down, but not completly removed from
* the map
*/
- TileIndex t1 = TILE_ADDXY(t, 1, 0);
+ TileIndex t1 = TILE_ADDXY(t, 0, 1);
if (IsTileType(t1, MP_INDUSTRY) &&
- GetIndustryGfx(t1) == GFX_OILRIG_3) {
+ GetIndustryGfx(t1) == GFX_OILRIG_1) {
/* The internal encoding of oil rigs was changed twice.
* It was 3 (till 2.2) and later 5 (till 5.1).
* Setting it unconditionally does not hurt.
@@ -1634,7 +1635,7 @@
if (GB(_m[t].m5, 3, 2) == 0) {
MakeClear(t, CLEAR_GRASS, 3);
} else {
- MakeCanal(t, GetTileOwner(t));
+ MakeCanal(t, (GetTileOwner(t) == OWNER_WATER) ? OWNER_NONE : GetTileOwner(t));
}
}
SetBridgeMiddle(t, axis);
@@ -2168,6 +2169,19 @@
FOR_ALL_INDUSTRIES(i) i->founder = OWNER_NONE;
}
+ /* From version 82, old style canals (above sealevel (0), WATER owner) are no longer supported.
+ Replace the owner for those by OWNER_NONE. */
+ if (CheckSavegameVersion(82)) {
+ for (TileIndex t = 0; t < map_size; t++) {
+ if (IsTileType(t, MP_WATER) &&
+ GetWaterTileType(t) == WATER_TILE_CLEAR &&
+ GetTileOwner(t) == OWNER_WATER &&
+ TileHeight(t) != 0) {
+ SetTileOwner(t, OWNER_NONE);
+ }
+ }
+ }
+
/* Recalculate */
Group *g;
FOR_ALL_GROUPS(g) {
@@ -2205,6 +2219,19 @@
}
}
+ /* Before version 81, the density of grass was always stored as zero, and
+ * grassy trees were always drawn fully grassy. Furthermore, trees on rough
+ * land used to have zero density, now they have full density. Therefore,
+ * make all grassy/rough land trees have a density of 3. */
+ if (CheckSavegameVersion(81)) {
+ for (TileIndex t = 0; t < map_size; t++) {
+ if (GetTileType(t) == MP_TREES) {
+ TreeGround groundType = GetTreeGround(t);
+ if (groundType != TREE_GROUND_SNOW_DESERT) SetTreeGroundDensity(t, groundType, 3);
+ }
+ }
+ }
+
return true;
}
--- a/src/openttd.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/openttd.h Sat Oct 20 10:42:28 2007 +0000
@@ -88,6 +88,7 @@
typedef int32 Year;
typedef int32 Date;
+typedef uint32 PlayerFace; ///< player face bits, info see in player_face.h
enum SwitchModes {
SM_NONE = 0,
@@ -279,25 +280,27 @@
#define GAME_DIFFICULTY_NUM 18
+/** Specific type for Game Difficulty to ease changing the type */
+typedef uint16 GDType;
struct GameDifficulty {
- int max_no_competitors;
- int competitor_start_time;
- int number_towns;
- int number_industries;
- int max_loan;
- int initial_interest;
- int vehicle_costs;
- int competitor_speed;
- int competitor_intelligence; // no longer in use
- int vehicle_breakdowns;
- int subsidy_multiplier;
- int construction_cost;
- int terrain_type;
- int quantity_sea_lakes;
- int economy;
- int line_reverse_mode;
- int disasters;
- int town_council_tolerance; // minimum required town ratings to be allowed to demolish stuff
+ GDType max_no_competitors;
+ GDType competitor_start_time;
+ GDType number_towns;
+ GDType number_industries;
+ GDType max_loan;
+ GDType initial_interest;
+ GDType vehicle_costs;
+ GDType competitor_speed;
+ GDType competitor_intelligence; // no longer in use
+ GDType vehicle_breakdowns;
+ GDType subsidy_multiplier;
+ GDType construction_cost;
+ GDType terrain_type;
+ GDType quantity_sea_lakes;
+ GDType economy;
+ GDType line_reverse_mode;
+ GDType disasters;
+ GDType town_council_tolerance; // minimum required town ratings to be allowed to demolish stuff
};
enum {
--- a/src/player.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/player.h Sat Oct 20 10:42:28 2007 +0000
@@ -24,8 +24,6 @@
LOAN_INTERVAL = 10000,
};
-typedef uint32 PlayerFace;
-
struct Player {
uint32 name_2;
uint16 name_1;
--- a/src/player_face.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/player_face.h Sat Oct 20 10:42:28 2007 +0000
@@ -59,7 +59,7 @@
/* PFV_HAS_MOUSTACHE */ { 3, 1, { 2, 0, 2, 0 }, { 0, 0, 0, 0 } }, ///< Females do not have a moustache
/* PFV_HAS_TIE_EARRING */ { 3, 1, { 0, 2, 0, 2 }, { 0, 0, 0, 0 } }, ///< Draw the earring for females or not. For males the tie is always drawn.
/* PFV_HAS_GLASSES */ { 4, 1, { 2, 2, 2, 2 }, { 0, 0, 0, 0 } }, ///< Whether to draw glasses or not
- /* PFV_EYE_COLOUR */ { 5, 2, { 3, 3, 3, 3 }, { 0, 0, 0, 0 } }, ///< Palette modification
+ /* PFV_EYE_COLOUR */ { 5, 2, { 3, 3, 1, 1 }, { 0, 0, 0, 0 } }, ///< Palette modification
/* PFV_CHEEKS */ { 0, 0, { 1, 1, 1, 1 }, { 0x325, 0x326, 0x390, 0x3B0 } }, ///< Cheeks are only indexed by their gender/ethnicity
/* PFV_CHIN */ { 7, 2, { 4, 1, 2, 2 }, { 0x327, 0x327, 0x391, 0x3B1 } },
/* PFV_EYEBROWS */ { 9, 4, { 12, 16, 11, 16 }, { 0x32B, 0x337, 0x39A, 0x3B8 } },
@@ -105,6 +105,32 @@
}
/**
+ * Increase/Decrease the player face variable by the given amount.
+ * If the new value greater than the max value for this variable it will be set to 0.
+ * Or is it negativ (< 0) it will be set to max value.
+ *
+ * @param pf the player face to write the bits to
+ * @param pfv the player face variable to write the data of
+ * @param ge the gender and ethnicity of the player face
+ * @param amount the amount which change the value
+ *
+ * @pre 0 <= val < _pf_info[pfv].valid_values[ge]
+ */
+static inline void IncreasePlayerFaceBits(PlayerFace &pf, PlayerFaceVariable pfv, GenderEthnicity ge, int8 amount)
+{
+ int8 val = GetPlayerFaceBits(pf, pfv, ge) + amount; // the new value for the pfv
+
+ /* scales the new value to the correct scope */
+ if (val >= _pf_info[pfv].valid_values[ge]) {
+ val = 0;
+ } else if (val < 0) {
+ val = _pf_info[pfv].valid_values[ge] - 1;
+ }
+
+ SetPlayerFaceBits(pf, pfv, ge, val); // save the new value
+}
+
+/**
* Checks whether the player bits have a valid range
* @param pf the face to extract the bits from
* @param pfv the face variable to get the data of
@@ -132,6 +158,58 @@
}
/**
+ * Scales all player face bits to the correct scope
+ *
+ * @param pf the player face to write the bits to
+ */
+static inline void ScaleAllPlayerFaceBits(PlayerFace &pf)
+{
+ IncreasePlayerFaceBits(pf, PFV_ETHNICITY, GE_WM, 0); // scales the ethnicity
+
+ GenderEthnicity ge = (GenderEthnicity)GB(pf, _pf_info[PFV_GEN_ETHN].offset, _pf_info[PFV_GEN_ETHN].length); // gender & ethnicity of the face
+
+ /* Is a male face with moustache. Need to reduce CPU load in the loop. */
+ bool is_moust_male = !HASBIT(ge, GENDER_FEMALE) && GetPlayerFaceBits(pf, PFV_HAS_MOUSTACHE, ge) != 0;
+
+ for (PlayerFaceVariable pfv = PFV_EYE_COLOUR; pfv < PFV_END; pfv++) { // scales all other variables
+
+ /* The moustache variable will be scaled only if it is a male face with has a moustache */
+ if (pfv != PFV_MOUSTACHE || is_moust_male) {
+ IncreasePlayerFaceBits(pf, pfv, ge, 0);
+ }
+ }
+}
+
+/**
+ * Make a random new face.
+ * If it is for the advanced player face window then the new face have the same gender
+ * and ethnicity as the old one, else the gender is equal and the ethnicity is random.
+ *
+ * @param pf the player face to write the bits to
+ * @param ge the gender and ethnicity of the old player face
+ * @param adv if it for the advanced player face window
+ *
+ * @pre scale 'ge' to a valid gender/ethnicity combination
+ */
+static inline void RandomPlayerFaceBits(PlayerFace &pf, GenderEthnicity ge, bool adv)
+{
+ pf = InteractiveRandom(); // random all player face bits
+
+ /* scale ge: 0 == GE_WM, 1 == GE_WF, 2 == GE_BM, 3 == GE_BF (and maybe in future: ...) */
+ ge = (GenderEthnicity)((uint)ge % GE_END);
+
+ /* set the gender (and ethnicity) for the new player face */
+ if (adv) {
+ SetPlayerFaceBits(pf, PFV_GEN_ETHN, ge, ge);
+ } else {
+ SetPlayerFaceBits(pf, PFV_GENDER, ge, HASBIT(ge, GENDER_FEMALE));
+ }
+
+ /* scales all player face bits to the correct scope */
+ ScaleAllPlayerFaceBits(pf);
+}
+
+/**
* Gets the sprite to draw for the given player face variable
* @param pf the face to extract the data from
* @param pfv the face variable to get the sprite of
@@ -149,5 +227,6 @@
void DrawPlayerFace(PlayerFace face, int color, int x, int y);
PlayerFace ConvertFromOldPlayerFace(uint32 face);
bool IsValidPlayerFace(PlayerFace pf);
+void DrawFaceStringLabel(const Window *w, byte widget_index, StringID str, uint8 val, bool is_bool_widget);
#endif /* PLAYER_FACE_H */
--- a/src/player_gui.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/player_gui.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -28,6 +28,7 @@
#include "player_face.h"
static void DoShowPlayerFinances(PlayerID player, bool show_small, bool show_stickied);
+static void DoSelectPlayerFace(PlayerID player, bool show_big);
static void DrawPlayerEconomyStats(const Player *p, byte mode)
{
@@ -493,11 +494,17 @@
bool has_tie_earring = !HASBIT(ge, GENDER_FEMALE) || GetPlayerFaceBits(pf, PFV_HAS_TIE_EARRING, ge) != 0;
bool has_glasses = GetPlayerFaceBits(pf, PFV_HAS_GLASSES, ge) != 0;
SpriteID pal;
- switch (GetPlayerFaceBits(pf, PFV_EYE_COLOUR, ge)) {
- default: NOT_REACHED();
- case 0: pal = PALETTE_TO_BROWN; break;
- case 1: pal = PALETTE_TO_BLUE; break;
- case 2: pal = PALETTE_TO_GREEN; break;
+
+ /* Modify eye colour palette only if 2 or more valid values exist */
+ if (_pf_info[PFV_EYE_COLOUR].valid_values[ge] < 2) {
+ pal = PAL_NONE;
+ } else {
+ switch (GetPlayerFaceBits(pf, PFV_EYE_COLOUR, ge)) {
+ default: NOT_REACHED();
+ case 0: pal = PALETTE_TO_BROWN; break;
+ case 1: pal = PALETTE_TO_BLUE; break;
+ case 2: pal = PALETTE_TO_GREEN; break;
+ }
}
/* Draw the gradient (background) */
@@ -516,60 +523,426 @@
}
}
-static void SelectPlayerFaceWndProc(Window *w, WindowEvent *e)
-{
- switch (e->event) {
- case WE_PAINT: {
- Player *p;
- LowerWindowWidget(w, WP(w, facesel_d).gender + 5);
- DrawWindowWidgets(w);
- p = GetPlayer((PlayerID)w->window_number);
- DrawPlayerFace(WP(w, facesel_d).face, p->player_color, 2, 16);
- } break;
+/**
+ * Names of the widgets. Keep them in the same order as in the widget array.
+ * Do not change the order of the widgets from PFW_WIDGET_HAS_MOUSTACHE_EARRING to PFW_WIDGET_GLASSES_R,
+ * this order is needed for the WE_CLICK event of DrawFaceStringLabel().
+ */
+enum PlayerFaceWindowWidgets {
+ PFW_WIDGET_CLOSEBOX = 0,
+ PFW_WIDGET_CAPTION,
+ PFW_WIDGET_TOGGLE_LARGE_SMALL,
+ PFW_WIDGET_SELECT_FACE,
+ PFW_WIDGET_CANCEL,
+ PFW_WIDGET_ACCEPT,
+ PFW_WIDGET_MALE,
+ PFW_WIDGET_FEMALE,
+ PFW_WIDGET_RANDOM_NEW_FACE,
+ PFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON,
+ /* from here is the advanced player face selection window */
+ PFW_WIDGET_LOAD,
+ PFW_WIDGET_FACECODE,
+ PFW_WIDGET_SAVE,
+ PFW_WIDGET_ETHNICITY_EUR,
+ PFW_WIDGET_ETHNICITY_AFR,
+ PFW_WIDGET_HAS_MOUSTACHE_EARRING,
+ PFW_WIDGET_HAS_GLASSES,
+ PFW_WIDGET_EYECOLOUR_L,
+ PFW_WIDGET_EYECOLOUR,
+ PFW_WIDGET_EYECOLOUR_R,
+ PFW_WIDGET_CHIN_L,
+ PFW_WIDGET_CHIN,
+ PFW_WIDGET_CHIN_R,
+ PFW_WIDGET_EYEBROWS_L,
+ PFW_WIDGET_EYEBROWS,
+ PFW_WIDGET_EYEBROWS_R,
+ PFW_WIDGET_LIPS_MOUSTACHE_L,
+ PFW_WIDGET_LIPS_MOUSTACHE,
+ PFW_WIDGET_LIPS_MOUSTACHE_R,
+ PFW_WIDGET_NOSE_L,
+ PFW_WIDGET_NOSE,
+ PFW_WIDGET_NOSE_R,
+ PFW_WIDGET_HAIR_L,
+ PFW_WIDGET_HAIR,
+ PFW_WIDGET_HAIR_R,
+ PFW_WIDGET_JACKET_L,
+ PFW_WIDGET_JACKET,
+ PFW_WIDGET_JACKET_R,
+ PFW_WIDGET_COLLAR_L,
+ PFW_WIDGET_COLLAR,
+ PFW_WIDGET_COLLAR_R,
+ PFW_WIDGET_TIE_EARRING_L,
+ PFW_WIDGET_TIE_EARRING,
+ PFW_WIDGET_TIE_EARRING_R,
+ PFW_WIDGET_GLASSES_L,
+ PFW_WIDGET_GLASSES,
+ PFW_WIDGET_GLASSES_R,
+};
- case WE_CLICK:
- switch (e->we.click.widget) {
- case 3: DeleteWindow(w); break;
- case 4: /* ok click */
- DoCommandP(0, 0, WP(w, facesel_d).face, NULL, CMD_SET_PLAYER_FACE);
- DeleteWindow(w);
- break;
- case 5: /* male click */
- case 6: /* female click */
- RaiseWindowWidget(w, WP(w, facesel_d).gender + 5);
- WP(w, facesel_d).gender = e->we.click.widget - 5;
- LowerWindowWidget(w, WP(w, facesel_d).gender + 5);
- SetWindowDirty(w);
- break;
- case 7:
- WP(w, facesel_d).face = ConvertFromOldPlayerFace((WP(w, facesel_d).gender << 31) + GB(InteractiveRandom(), 0, 31));
- SetWindowDirty(w);
- break;
+/** Widget description for the normal/simple player face selection dialog */
+static const Widget _select_player_face_widgets[] = {
+{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // PFW_WIDGET_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 14, 11, 174, 0, 13, STR_7043_FACE_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // PFW_WIDGET_CAPTION
+{ WWT_IMGBTN, RESIZE_NONE, 14, 175, 189, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_FACE_ADVANCED_TIP}, // PFW_WIDGET_TOGGLE_LARGE_SMALL
+{ WWT_PANEL, RESIZE_NONE, 14, 0, 189, 14, 150, 0x0, STR_NULL}, // PFW_WIDGET_SELECT_FACE
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 94, 151, 162, STR_012E_CANCEL, STR_7047_CANCEL_NEW_FACE_SELECTION}, // PFW_WIDGET_CANCEL
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 95, 189, 151, 162, STR_012F_OK, STR_7048_ACCEPT_NEW_FACE_SELECTION}, // PFW_WIDGET_ACCEPT
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 95, 187, 75, 86, STR_7044_MALE, STR_7049_SELECT_MALE_FACES}, // PFW_WIDGET_MALE
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 95, 187, 87, 98, STR_7045_FEMALE, STR_704A_SELECT_FEMALE_FACES}, // PFW_WIDGET_FEMALE
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 2, 93, 137, 148, STR_7046_NEW_FACE, STR_704B_GENERATE_RANDOM_NEW_FACE}, // PFW_WIDGET_RANDOM_NEW_FACE
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 95, 187, 16, 27, STR_FACE_ADVANCED, STR_FACE_ADVANCED_TIP}, // PFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON
+{ WIDGETS_END},
+};
+
+/** Widget description for the advanced player face selection dialog */
+static const Widget _select_player_face_adv_widgets[] = {
+{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // PFW_WIDGET_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 14, 11, 204, 0, 13, STR_7043_FACE_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // PFW_WIDGET_CAPTION
+{ WWT_IMGBTN, RESIZE_NONE, 14, 205, 219, 0, 13, SPR_LARGE_SMALL_WINDOW, STR_FACE_SIMPLE_TIP}, // PFW_WIDGET_TOGGLE_LARGE_SMALL
+{ WWT_PANEL, RESIZE_NONE, 14, 0, 219, 14, 207, 0x0, STR_NULL}, // PFW_WIDGET_SELECT_FACE
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 94, 208, 219, STR_012E_CANCEL, STR_7047_CANCEL_NEW_FACE_SELECTION}, // PFW_WIDGET_CANCEL
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 95, 219, 208, 219, STR_012F_OK, STR_7048_ACCEPT_NEW_FACE_SELECTION}, // PFW_WIDGET_ACCEPT
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 96, 156, 32, 43, STR_7044_MALE, STR_7049_SELECT_MALE_FACES}, // PFW_WIDGET_MALE
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 157, 217, 32, 43, STR_7045_FEMALE, STR_704A_SELECT_FEMALE_FACES}, // PFW_WIDGET_FEMALE
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 2, 93, 137, 148, STR_RANDOM, STR_704B_GENERATE_RANDOM_NEW_FACE}, // PFW_WIDGET_RANDOM_NEW_FACE
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 95, 217, 16, 27, STR_FACE_SIMPLE, STR_FACE_SIMPLE_TIP}, // PFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 2, 93, 158, 169, STR_FACE_LOAD, STR_FACE_LOAD_TIP}, // PFW_WIDGET_LOAD
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 2, 93, 170, 181, STR_FACE_FACECODE, STR_FACE_FACECODE_TIP}, // PFW_WIDGET_FACECODE
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 2, 93, 182, 193, STR_FACE_SAVE, STR_FACE_SAVE_TIP}, // PFW_WIDGET_SAVE
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 96, 156, 46, 57, STR_FACE_EUROPEAN, STR_FACE_SELECT_EUROPEAN}, // PFW_WIDGET_ETHNICITY_EUR
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 157, 217, 46, 57, STR_FACE_AFRICAN, STR_FACE_SELECT_AFRICAN}, // PFW_WIDGET_ETHNICITY_AFR
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 175, 217, 60, 71, STR_EMPTY, STR_FACE_MOUSTACHE_EARRING_TIP}, // PFW_WIDGET_HAS_MOUSTACHE_EARRING
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 175, 217, 72, 83, STR_EMPTY, STR_FACE_GLASSES_TIP}, // PFW_WIDGET_HAS_GLASSES
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 175, 183, 110, 121, SPR_ARROW_LEFT, STR_FACE_EYECOLOUR_TIP}, // PFW_WIDGET_EYECOLOUR_L
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 184, 208, 110, 121, STR_EMPTY, STR_FACE_EYECOLOUR_TIP}, // PFW_WIDGET_EYECOLOUR
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 209, 217, 110, 121, SPR_ARROW_RIGHT, STR_FACE_EYECOLOUR_TIP}, // PFW_WIDGET_EYECOLOUR_R
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 175, 183, 158, 169, SPR_ARROW_LEFT, STR_FACE_CHIN_TIP}, // PFW_WIDGET_CHIN_L
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 184, 208, 158, 169, STR_EMPTY, STR_FACE_CHIN_TIP}, // PFW_WIDGET_CHIN
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 209, 217, 158, 169, SPR_ARROW_RIGHT, STR_FACE_CHIN_TIP}, // PFW_WIDGET_CHIN_R
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 175, 183, 98, 109, SPR_ARROW_LEFT, STR_FACE_EYEBROWS_TIP}, // PFW_WIDGET_EYEBROWS_L
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 184, 208, 98, 109, STR_EMPTY, STR_FACE_EYEBROWS_TIP}, // PFW_WIDGET_EYEBROWS
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 209, 217, 98, 109, SPR_ARROW_RIGHT, STR_FACE_EYEBROWS_TIP}, // PFW_WIDGET_EYEBROWS_R
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 175, 183, 146, 157, SPR_ARROW_LEFT, STR_FACE_LIPS_MOUSTACHE_TIP}, // PFW_WIDGET_LIPS_MOUSTACHE_L
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 184, 208, 146, 157, STR_EMPTY, STR_FACE_LIPS_MOUSTACHE_TIP}, // PFW_WIDGET_LIPS_MOUSTACHE
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 209, 217, 146, 157, SPR_ARROW_RIGHT, STR_FACE_LIPS_MOUSTACHE_TIP}, // PFW_WIDGET_LIPS_MOUSTACHE_R
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 175, 183, 134, 145, SPR_ARROW_LEFT, STR_FACE_NOSE_TIP}, // PFW_WIDGET_NOSE_L
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 184, 208, 134, 145, STR_EMPTY, STR_FACE_NOSE_TIP}, // PFW_WIDGET_NOSE
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 209, 217, 134, 145, SPR_ARROW_RIGHT, STR_FACE_NOSE_TIP}, // PFW_WIDGET_NOSE_R
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 175, 183, 86, 97, SPR_ARROW_LEFT, STR_FACE_HAIR_TIP}, // PFW_WIDGET_HAIR_L
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 184, 208, 86, 97, STR_EMPTY, STR_FACE_HAIR_TIP}, // PFW_WIDGET_HAIR
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 209, 217, 86, 97, SPR_ARROW_RIGHT, STR_FACE_HAIR_TIP}, // PFW_WIDGET_HAIR_R
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 175, 183, 170, 181, SPR_ARROW_LEFT, STR_FACE_JACKET_TIP}, // PFW_WIDGET_JACKET_L
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 184, 208, 170, 181, STR_EMPTY, STR_FACE_JACKET_TIP}, // PFW_WIDGET_JACKET
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 209, 217, 170, 181, SPR_ARROW_RIGHT, STR_FACE_JACKET_TIP}, // PFW_WIDGET_JACKET_R
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 175, 183, 182, 193, SPR_ARROW_LEFT, STR_FACE_COLLAR_TIP}, // PFW_WIDGET_COLLAR_L
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 184, 208, 182, 193, STR_EMPTY, STR_FACE_COLLAR_TIP}, // PFW_WIDGET_COLLAR
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 209, 217, 182, 193, SPR_ARROW_RIGHT, STR_FACE_COLLAR_TIP}, // PFW_WIDGET_COLLAR_R
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 175, 183, 194, 205, SPR_ARROW_LEFT, STR_FACE_TIE_EARRING_TIP}, // PFW_WIDGET_TIE_EARRING_L
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 184, 208, 194, 205, STR_EMPTY, STR_FACE_TIE_EARRING_TIP}, // PFW_WIDGET_TIE_EARRING
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 209, 217, 194, 205, SPR_ARROW_RIGHT, STR_FACE_TIE_EARRING_TIP}, // PFW_WIDGET_TIE_EARRING_R
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 175, 183, 122, 133, SPR_ARROW_LEFT, STR_FACE_GLASSES_TIP_2}, // PFW_WIDGET_GLASSES_L
+{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 184, 208, 122, 133, STR_EMPTY, STR_FACE_GLASSES_TIP_2}, // PFW_WIDGET_GLASSES
+{ WWT_PUSHIMGBTN, RESIZE_NONE, 14, 209, 217, 122, 133, SPR_ARROW_RIGHT, STR_FACE_GLASSES_TIP_2}, // PFW_WIDGET_GLASSES_R
+{ WIDGETS_END},
+};
+
+/**
+ * Draw dynamic a label to the left of the button and a value in the button
+ *
+ * @param w Window on which the widget is located
+ * @param widget_index index of this widget in the window
+ * @param str the label which will be draw
+ * @param val the value which will be draw
+ * @param is_bool_widget is it a bool button
+ */
+void DrawFaceStringLabel(const Window *w, byte widget_index, StringID str, uint8 val, bool is_bool_widget)
+{
+ /* Write the label in gold (0x2) to the left of the button. */
+ DrawStringRightAligned(w->widget[widget_index].left - (is_bool_widget ? 5 : 14), w->widget[widget_index].top + 1, str, 0x2);
+
+ if (!IsWindowWidgetDisabled(w, widget_index)) {
+ if (is_bool_widget) {
+ /* if it a bool button write yes or no */
+ str = (val != 0) ? STR_FACE_YES : STR_FACE_NO;
+ } else {
+ /* else write the value + 1 */
+ SetDParam(0, val + 1);
+ str = STR_JUST_INT;
}
- break;
+
+ /* Draw the value/bool in white (0xC). If the button clicked adds 1px to x and y text coordinates (IsWindowWidgetLowered()). */
+ DrawStringCentered(w->widget[widget_index].left + (w->widget[widget_index].right - w->widget[widget_index].left) / 2 +
+ IsWindowWidgetLowered(w, widget_index), w->widget[widget_index].top + 1 + IsWindowWidgetLowered(w, widget_index), str, 0xC);
}
}
-static const Widget _select_player_face_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 14, 11, 189, 0, 13, STR_7043_FACE_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 14, 0, 189, 14, 136, 0x0, STR_NULL},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 94, 137, 148, STR_012E_CANCEL, STR_7047_CANCEL_NEW_FACE_SELECTION},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 95, 189, 137, 148, STR_012F_OK, STR_7048_ACCEPT_NEW_FACE_SELECTION},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 95, 187, 25, 36, STR_7044_MALE, STR_7049_SELECT_MALE_FACES},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 95, 187, 37, 48, STR_7045_FEMALE, STR_704A_SELECT_FEMALE_FACES},
-{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 95, 187, 79, 90, STR_7046_NEW_FACE, STR_704B_GENERATE_RANDOM_NEW_FACE},
-{ WIDGETS_END},
-};
+/**
+ * Player face selection window event definition
+ *
+ * @param w window pointer
+ * @param e event been triggered
+ */
+static void SelectPlayerFaceWndProc(Window *w, WindowEvent *e)
+{
+ PlayerFace *pf = &WP(w, facesel_d).face; // pointer to the player face bits
+ GenderEthnicity ge = (GenderEthnicity)GB(*pf, _pf_info[PFV_GEN_ETHN].offset, _pf_info[PFV_GEN_ETHN].length); // get the gender and ethnicity
+ bool is_female = HASBIT(ge, GENDER_FEMALE); // get the gender: 0 == male and 1 == female
+ bool is_moust_male = !is_female && GetPlayerFaceBits(*pf, PFV_HAS_MOUSTACHE, ge) != 0; // is a male face with moustache
+ switch (e->event) {
+ case WE_PAINT:
+ /* lower the non-selected gender button */
+ SetWindowWidgetLoweredState(w, PFW_WIDGET_MALE, !is_female);
+ SetWindowWidgetLoweredState(w, PFW_WIDGET_FEMALE, is_female);
+
+ /* advanced player face selection window */
+ if (WP(w, facesel_d).advanced) {
+ /* lower the non-selected ethnicity button */
+ SetWindowWidgetLoweredState(w, PFW_WIDGET_ETHNICITY_EUR, !HASBIT(ge, ETHNICITY_BLACK));
+ SetWindowWidgetLoweredState(w, PFW_WIDGET_ETHNICITY_AFR, HASBIT(ge, ETHNICITY_BLACK));
+
+
+ /* Disable dynamically the widgets which PlayerFaceVariable has less than 2 options
+ * (or in other words you haven't any choice).
+ * If the widgets depend on a HAS-variable and this is false the widgets will be disabled, too. */
+
+ /* Eye colour buttons */
+ SetWindowWidgetsDisabledState(w, _pf_info[PFV_EYE_COLOUR].valid_values[ge] < 2,
+ PFW_WIDGET_EYECOLOUR, PFW_WIDGET_EYECOLOUR_L, PFW_WIDGET_EYECOLOUR_R, WIDGET_LIST_END);
+
+ /* Chin buttons */
+ SetWindowWidgetsDisabledState(w, _pf_info[PFV_CHIN].valid_values[ge] < 2,
+ PFW_WIDGET_CHIN, PFW_WIDGET_CHIN_L, PFW_WIDGET_CHIN_R, WIDGET_LIST_END);
+
+ /* Eyebrows buttons */
+ SetWindowWidgetsDisabledState(w, _pf_info[PFV_EYEBROWS].valid_values[ge] < 2,
+ PFW_WIDGET_EYEBROWS, PFW_WIDGET_EYEBROWS_L, PFW_WIDGET_EYEBROWS_R, WIDGET_LIST_END);
+
+ /* Lips or (if it a male face with a moustache) moustache buttons */
+ SetWindowWidgetsDisabledState(w, _pf_info[is_moust_male ? PFV_MOUSTACHE : PFV_LIPS].valid_values[ge] < 2,
+ PFW_WIDGET_LIPS_MOUSTACHE, PFW_WIDGET_LIPS_MOUSTACHE_L, PFW_WIDGET_LIPS_MOUSTACHE_R, WIDGET_LIST_END);
+
+ /* Nose buttons | male faces with moustache haven't any nose options */
+ SetWindowWidgetsDisabledState(w, _pf_info[PFV_NOSE].valid_values[ge] < 2 || is_moust_male,
+ PFW_WIDGET_NOSE, PFW_WIDGET_NOSE_L, PFW_WIDGET_NOSE_R, WIDGET_LIST_END);
+
+ /* Hair buttons */
+ SetWindowWidgetsDisabledState(w, _pf_info[PFV_HAIR].valid_values[ge] < 2,
+ PFW_WIDGET_HAIR, PFW_WIDGET_HAIR_L, PFW_WIDGET_HAIR_R, WIDGET_LIST_END);
+
+ /* Jacket buttons */
+ SetWindowWidgetsDisabledState(w, _pf_info[PFV_JACKET].valid_values[ge] < 2,
+ PFW_WIDGET_JACKET, PFW_WIDGET_JACKET_L, PFW_WIDGET_JACKET_R, WIDGET_LIST_END);
+
+ /* Collar buttons */
+ SetWindowWidgetsDisabledState(w, _pf_info[PFV_COLLAR].valid_values[ge] < 2,
+ PFW_WIDGET_COLLAR, PFW_WIDGET_COLLAR_L, PFW_WIDGET_COLLAR_R, WIDGET_LIST_END);
+
+ /* Tie/earring buttons | female faces without earring haven't any earring options */
+ SetWindowWidgetsDisabledState(w, _pf_info[PFV_TIE_EARRING].valid_values[ge] < 2 ||
+ (is_female && GetPlayerFaceBits(*pf, PFV_HAS_TIE_EARRING, ge) == 0),
+ PFW_WIDGET_TIE_EARRING, PFW_WIDGET_TIE_EARRING_L, PFW_WIDGET_TIE_EARRING_R, WIDGET_LIST_END);
+
+ /* Glasses buttons | faces without glasses haven't any glasses options */
+ SetWindowWidgetsDisabledState(w, _pf_info[PFV_GLASSES].valid_values[ge] < 2 || GetPlayerFaceBits(*pf, PFV_HAS_GLASSES, ge) == 0,
+ PFW_WIDGET_GLASSES, PFW_WIDGET_GLASSES_L, PFW_WIDGET_GLASSES_R, WIDGET_LIST_END);
+ }
+
+ DrawWindowWidgets(w);
+
+ /* Draw dynamic button value and labels for the advanced player face selection window */
+ if (WP(w, facesel_d).advanced) {
+ if (is_female) {
+ /* Only for female faces */
+ DrawFaceStringLabel(w, PFW_WIDGET_HAS_MOUSTACHE_EARRING, STR_FACE_EARRING, GetPlayerFaceBits(*pf, PFV_HAS_TIE_EARRING, ge), true );
+ DrawFaceStringLabel(w, PFW_WIDGET_TIE_EARRING, STR_FACE_EARRING, GetPlayerFaceBits(*pf, PFV_TIE_EARRING, ge), false);
+ } else {
+ /* Only for male faces */
+ DrawFaceStringLabel(w, PFW_WIDGET_HAS_MOUSTACHE_EARRING, STR_FACE_MOUSTACHE, GetPlayerFaceBits(*pf, PFV_HAS_MOUSTACHE, ge), true );
+ DrawFaceStringLabel(w, PFW_WIDGET_TIE_EARRING, STR_FACE_TIE, GetPlayerFaceBits(*pf, PFV_TIE_EARRING, ge), false);
+ }
+ if (is_moust_male) {
+ /* Only for male faces with moustache */
+ DrawFaceStringLabel(w, PFW_WIDGET_LIPS_MOUSTACHE, STR_FACE_MOUSTACHE, GetPlayerFaceBits(*pf, PFV_MOUSTACHE, ge), false);
+ } else {
+ /* Only for female faces or male faces without moustache */
+ DrawFaceStringLabel(w, PFW_WIDGET_LIPS_MOUSTACHE, STR_FACE_LIPS, GetPlayerFaceBits(*pf, PFV_LIPS, ge), false);
+ }
+ /* For all faces */
+ DrawFaceStringLabel(w, PFW_WIDGET_HAS_GLASSES, STR_FACE_GLASSES, GetPlayerFaceBits(*pf, PFV_HAS_GLASSES, ge), true );
+ DrawFaceStringLabel(w, PFW_WIDGET_HAIR, STR_FACE_HAIR, GetPlayerFaceBits(*pf, PFV_HAIR, ge), false);
+ DrawFaceStringLabel(w, PFW_WIDGET_EYEBROWS, STR_FACE_EYEBROWS, GetPlayerFaceBits(*pf, PFV_EYEBROWS, ge), false);
+ DrawFaceStringLabel(w, PFW_WIDGET_EYECOLOUR, STR_FACE_EYECOLOUR, GetPlayerFaceBits(*pf, PFV_EYE_COLOUR, ge), false);
+ DrawFaceStringLabel(w, PFW_WIDGET_GLASSES, STR_FACE_GLASSES, GetPlayerFaceBits(*pf, PFV_GLASSES, ge), false);
+ DrawFaceStringLabel(w, PFW_WIDGET_NOSE, STR_FACE_NOSE, GetPlayerFaceBits(*pf, PFV_NOSE, ge), false);
+ DrawFaceStringLabel(w, PFW_WIDGET_CHIN, STR_FACE_CHIN, GetPlayerFaceBits(*pf, PFV_CHIN, ge), false);
+ DrawFaceStringLabel(w, PFW_WIDGET_JACKET, STR_FACE_JACKET, GetPlayerFaceBits(*pf, PFV_JACKET, ge), false);
+ DrawFaceStringLabel(w, PFW_WIDGET_COLLAR, STR_FACE_COLLAR, GetPlayerFaceBits(*pf, PFV_COLLAR, ge), false);
+ }
+
+ /* Draw the player face picture */
+ DrawPlayerFace(*pf, GetPlayer((PlayerID)w->window_number)->player_color, 2, 16);
+ break;
+
+ case WE_CLICK:
+ switch (e->we.click.widget) {
+ /* Toggle size, advanced/simple face selection */
+ case PFW_WIDGET_TOGGLE_LARGE_SMALL:
+ case PFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON:
+ DoCommandP(0, 0, *pf, NULL, CMD_SET_PLAYER_FACE);
+ DeleteWindow(w);
+ DoSelectPlayerFace((PlayerID)w->window_number, !WP(w, facesel_d).advanced);
+ break;
+
+ /* Cancel button */
+ case PFW_WIDGET_CANCEL:
+ DeleteWindow(w);
+ break;
+
+ /* OK button */
+ case PFW_WIDGET_ACCEPT:
+ DoCommandP(0, 0, *pf, NULL, CMD_SET_PLAYER_FACE);
+ DeleteWindow(w);
+ break;
+
+ /* Load button */
+ case PFW_WIDGET_LOAD:
+ *pf = _player_face;
+ ScaleAllPlayerFaceBits(*pf);
+ ShowErrorMessage(INVALID_STRING_ID, STR_FACE_LOAD_DONE, 0, 0);
+ SetWindowDirty(w);
+ break;
+
+ /* 'Player face number' button, view and/or set player face number */
+ case PFW_WIDGET_FACECODE:
+ SetDParam(0, *pf);
+ ShowQueryString(STR_JUST_INT, STR_FACE_FACECODE_CAPTION, 10 + 1, 0, w, CS_NUMERAL);
+ break;
+
+ /* Save button */
+ case PFW_WIDGET_SAVE:
+ _player_face = *pf;
+ ShowErrorMessage(INVALID_STRING_ID, STR_FACE_SAVE_DONE, 0, 0);
+ break;
+
+ /* Toggle gender (male/female) button */
+ case PFW_WIDGET_MALE:
+ case PFW_WIDGET_FEMALE:
+ SetPlayerFaceBits(*pf, PFV_GENDER, ge, e->we.click.widget - PFW_WIDGET_MALE);
+ ScaleAllPlayerFaceBits(*pf);
+ SetWindowDirty(w);
+ break;
+
+ /* Randomize face button */
+ case PFW_WIDGET_RANDOM_NEW_FACE:
+ RandomPlayerFaceBits(*pf, ge, WP(w, facesel_d).advanced);
+ SetWindowDirty(w);
+ break;
+
+ /* Toggle ethnicity (european/african) button */
+ case PFW_WIDGET_ETHNICITY_EUR:
+ case PFW_WIDGET_ETHNICITY_AFR:
+ SetPlayerFaceBits(*pf, PFV_ETHNICITY, ge, e->we.click.widget - PFW_WIDGET_ETHNICITY_EUR);
+ ScaleAllPlayerFaceBits(*pf);
+ SetWindowDirty(w);
+ break;
+
+ default:
+ /* For all buttons from PFW_WIDGET_HAS_MOUSTACHE_EARRING to PFW_WIDGET_GLASSES_R is the same function.
+ * Therefor is this combined function.
+ * First it checks which PlayerFaceVariable will be change and then
+ * a: invert the value for boolean variables
+ * or b: it checks inside of IncreasePlayerFaceBits() if a left (_L) butten is pressed and then decrease else increase the variable */
+ if (WP(w, facesel_d).advanced && e->we.click.widget >= PFW_WIDGET_HAS_MOUSTACHE_EARRING && e->we.click.widget <= PFW_WIDGET_GLASSES_R) {
+ PlayerFaceVariable pfv; // which PlayerFaceVariable shall be edited
+
+ if (e->we.click.widget < PFW_WIDGET_EYECOLOUR_L) { // Bool buttons
+ switch (e->we.click.widget - PFW_WIDGET_HAS_MOUSTACHE_EARRING) {
+ default: NOT_REACHED();
+ case 0: pfv = is_female ? PFV_HAS_TIE_EARRING : PFV_HAS_MOUSTACHE; break; // Has earring/moustache button
+ case 1: pfv = PFV_HAS_GLASSES; break; // Has glasses button
+ }
+ SetPlayerFaceBits(*pf, pfv, ge, !GetPlayerFaceBits(*pf, pfv, ge));
+ ScaleAllPlayerFaceBits(*pf);
+
+ } else { // Value buttons
+ switch ((e->we.click.widget - PFW_WIDGET_EYECOLOUR_L) / 3) {
+ default: NOT_REACHED();
+ case 0: pfv = PFV_EYE_COLOUR; break; // Eye colour buttons
+ case 1: pfv = PFV_CHIN; break; // Chin buttons
+ case 2: pfv = PFV_EYEBROWS; break; // Eyebrows buttons
+ case 3: pfv = is_moust_male ? PFV_MOUSTACHE : PFV_LIPS; break; // Moustache or lips buttons
+ case 4: pfv = PFV_NOSE; break; // Nose buttons
+ case 5: pfv = PFV_HAIR; break; // Hair buttons
+ case 6: pfv = PFV_JACKET; break; // Jacket buttons
+ case 7: pfv = PFV_COLLAR; break; // Collar buttons
+ case 8: pfv = PFV_TIE_EARRING; break; // Tie/earring buttons
+ case 9: pfv = PFV_GLASSES; break; // Glasses buttons
+ }
+ /* 0 == left (_L), 1 == middle or 2 == right (_R) - button click */
+ IncreasePlayerFaceBits(*pf, pfv, ge, (((e->we.click.widget - PFW_WIDGET_EYECOLOUR_L) % 3) != 0) ? 1 : -1);
+ }
+
+ SetWindowDirty(w);
+ }
+ break;
+ }
+ break;
+
+ case WE_ON_EDIT_TEXT:
+ /* Set a new player face number */
+ if (!StrEmpty(e->we.edittext.str)) {
+ *pf = strtoul(e->we.edittext.str, NULL, 10);
+ ScaleAllPlayerFaceBits(*pf);
+ ShowErrorMessage(INVALID_STRING_ID, STR_FACE_FACECODE_SET, 0, 0);
+ SetWindowDirty(w);
+ } else {
+ ShowErrorMessage(INVALID_STRING_ID, STR_FACE_FACECODE_ERR, 0, 0);
+ }
+ break;
+ }
+}
+
+/** normal/simple player face selection window description */
static const WindowDesc _select_player_face_desc = {
- WDP_AUTO, WDP_AUTO, 190, 149, 190, 149,
+ WDP_AUTO, WDP_AUTO, 190, 163, 190, 163,
WC_PLAYER_FACE, WC_NONE,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
_select_player_face_widgets,
SelectPlayerFaceWndProc
};
+/** advanced player face selection window description */
+static const WindowDesc _select_player_face_adv_desc = {
+ WDP_AUTO, WDP_AUTO, 220, 220, 220, 220,
+ WC_PLAYER_FACE, WC_NONE,
+ WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
+ _select_player_face_adv_widgets,
+ SelectPlayerFaceWndProc
+};
+
+/**
+ * Open the simple/advanced player face selection window
+ *
+ * @param player the player which face shall be edited
+ * @param adv simple or advanced player face selection window
+ *
+ * @pre is player a valid player
+ */
+static void DoSelectPlayerFace(PlayerID player, bool adv)
+{
+ if (!IsValidPlayer(player)) return;
+
+ Window *w = AllocateWindowDescFront(adv ? &_select_player_face_adv_desc : &_select_player_face_desc, player); // simple or advanced window
+
+ if (w != NULL) {
+ w->caption_color = w->window_number;
+ WP(w, facesel_d).face = GetPlayer((PlayerID)w->window_number)->face;
+ WP(w, facesel_d).advanced = adv;
+ }
+}
+
+
/* Names of the widgets. Keep them in the same order as in the widget array */
enum PlayerCompanyWindowWidgets {
PCW_WIDGET_CLOSEBOX = 0,
@@ -682,6 +1055,12 @@
if (num >= 0) DrawString(120, 124, STR_707D_OWNED_BY + num, 0);
}
+/**
+ * Player company window event definition
+ *
+ * @param w window pointer
+ * @param e event been triggered
+ */
static void PlayerCompanyWndProc(Window *w, WindowEvent *e)
{
switch (e->event) {
@@ -749,15 +1128,7 @@
case WE_CLICK:
switch (e->we.click.widget) {
- case PCW_WIDGET_NEW_FACE: {
- Window *wf = AllocateWindowDescFront(&_select_player_face_desc, w->window_number);
- if (wf != NULL) {
- wf->caption_color = w->window_number;
- WP(wf, facesel_d).face = GetPlayer((PlayerID)wf->window_number)->face;
- WP(wf, facesel_d).gender = 0;
- }
- break;
- }
+ case PCW_WIDGET_NEW_FACE: DoSelectPlayerFace((PlayerID)w->window_number, false); break;
case PCW_WIDGET_COLOR_SCHEME: {
Window *wf = AllocateWindowDescFront(_loaded_newgrf_features.has_2CC ? &_select_player_livery_2cc_desc : &_select_player_livery_desc, w->window_number);
--- a/src/players.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/players.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -94,7 +94,7 @@
SetPlayerFaceBits(pf, PFV_GEN_ETHN, ge, ge);
SetPlayerFaceBits(pf, PFV_HAS_GLASSES, ge, GB(face, 28, 3) <= 1);
- SetPlayerFaceBits(pf, PFV_EYE_COLOUR, ge, clampu(GB(face, 20, 3), 5, 7) - 5);
+ SetPlayerFaceBits(pf, PFV_EYE_COLOUR, ge, HASBIT(ge, ETHNICITY_BLACK) ? 0 : clampu(GB(face, 20, 3), 5, 7) - 5);
SetPlayerFaceBits(pf, PFV_CHIN, ge, ScalePlayerFaceValue(PFV_CHIN, ge, GB(face, 4, 2)));
SetPlayerFaceBits(pf, PFV_EYEBROWS, ge, ScalePlayerFaceValue(PFV_EYEBROWS, ge, GB(face, 6, 4)));
SetPlayerFaceBits(pf, PFV_HAIR, ge, ScalePlayerFaceValue(PFV_HAIR, ge, GB(face, 16, 4)));
@@ -456,6 +456,12 @@
}
}
+/**
+ * Create a new player and sets all player variables default values
+ *
+ * @param is_ai is a ai player?
+ * @return the player struct
+ */
Player *DoStartupNewPlayer(bool is_ai)
{
Player *p;
@@ -478,7 +484,7 @@
p->avail_railtypes = GetPlayerRailtypes(p->index);
p->avail_roadtypes = GetPlayerRoadtypes(p->index);
p->inaugurated_year = _cur_year;
- p->face = ConvertFromOldPlayerFace(Random());
+ RandomPlayerFaceBits(p->face, (GenderEthnicity)Random(), false); // create a random player face
/* Engine renewal settings */
p->engine_renew_list = NULL;
--- a/src/rail.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/rail.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -103,6 +103,16 @@
TRACKDIR_X_NE, TRACKDIR_Y_SE, TRACKDIR_X_SW, TRACKDIR_Y_NW,
};
+extern const TrackBits _corner_to_trackbits[] = {
+ TRACK_BIT_LEFT, TRACK_BIT_LOWER, TRACK_BIT_RIGHT, TRACK_BIT_UPPER,
+};
+
+/* The default multiplier for the cost of building different types of railway
+ * track, which will be divided by 8. Can be changed by newgrf files. */
+const int _default_railtype_cost_multiplier[RAILTYPE_END] = {
+ 8, 12, 16, 24,
+};
+int _railtype_cost_multiplier[RAILTYPE_END];
RailType GetTileRailType(TileIndex tile)
{
--- a/src/rail.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/rail.h Sat Oct 20 10:42:28 2007 +0000
@@ -8,6 +8,7 @@
#include "gfx.h"
#include "direction.h"
#include "tile.h"
+#include "variables.h"
/**
* Enumeration for all possible railtypes.
@@ -120,6 +121,19 @@
return TrackToTrackBits(AxisToTrack(a));
}
+/**
+ * Returns a single horizontal/vertical trackbit, that is in a specific tile corner.
+ *
+ * @param corner The corner of a tile.
+ * @return The TrackBits of the track in the corner.
+ */
+static inline TrackBits CornerToTrackBits(Corner corner)
+{
+ extern const TrackBits _corner_to_trackbits[];
+ assert(IsValidCorner(corner));
+ return _corner_to_trackbits[corner];
+}
+
/**
* Enumeration for tracks and directions.
@@ -778,6 +792,21 @@
return bits != TRACK_BIT_HORZ && bits != TRACK_BIT_VERT;
}
+
+extern int _railtype_cost_multiplier[RAILTYPE_END];
+extern const int _default_railtype_cost_multiplier[RAILTYPE_END];
+
+/**
+ * Returns the cost of building the specified railtype.
+ * @param railtype The railtype being built.
+ * @return The cost multiplier.
+ */
+static inline Money RailBuildCost(RailType railtype)
+{
+ assert(railtype < RAILTYPE_END);
+ return (_price.build_rail * _railtype_cost_multiplier[railtype]) >> 3;
+}
+
void *UpdateTrainPowerProc(Vehicle *v, void *data);
void DrawTrainDepotSprite(int x, int y, int image, RailType railtype);
void DrawDefaultWaypointSprite(int x, int y, RailType railtype);
--- a/src/rail_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/rail_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -150,10 +150,8 @@
}
-static const TrackBits _valid_tileh_slopes[][15] = {
-
-/* set of normal ones */
-{
+/** Valid TrackBits on a specific (non-steep)-slope without foundation */
+static const TrackBits _valid_tracks_without_foundation[15] = {
TRACK_BIT_ALL,
TRACK_BIT_RIGHT,
TRACK_BIT_UPPER,
@@ -172,10 +170,10 @@
TRACK_BIT_X,
TRACK_BIT_UPPER,
TRACK_BIT_RIGHT,
-},
+};
-/* allowed rail for an evenly raised platform */
-{
+/** Valid TrackBits on a specific (non-steep)-slope with leveled foundation */
+static const TrackBits _valid_tracks_on_leveled_foundation[15] = {
TRACK_BIT_NONE,
TRACK_BIT_LEFT,
TRACK_BIT_LOWER,
@@ -194,62 +192,82 @@
TRACK_BIT_Y | TRACK_BIT_UPPER | TRACK_BIT_RIGHT,
TRACK_BIT_ALL,
TRACK_BIT_ALL
-}
};
+/**
+ * Checks if a track combination is valid on a specific slope and returns the needed foundation.
+ *
+ * @param tileh Tile slope.
+ * @param bits Trackbits.
+ * @return Needed foundation or FOUNDATION_INVALID if track/slope combination is not allowed.
+ */
Foundation GetRailFoundation(Slope tileh, TrackBits bits)
{
- if (!IsSteepSlope(tileh)) {
- if ((~_valid_tileh_slopes[0][tileh] & bits) == 0) return FOUNDATION_NONE;
- if ((~_valid_tileh_slopes[1][tileh] & bits) == 0) return FOUNDATION_LEVELED;
- }
+ if (bits == TRACK_BIT_NONE) return FOUNDATION_NONE;
- switch (bits) {
- default: NOT_REACHED();
- case TRACK_BIT_X: return FOUNDATION_INCLINED_X;
- case TRACK_BIT_Y: return FOUNDATION_INCLINED_Y;
- case TRACK_BIT_LEFT: return (tileh == SLOPE_STEEP_W ? FOUNDATION_STEEP_HIGHER : FOUNDATION_STEEP_LOWER);
- case TRACK_BIT_LOWER: return (tileh == SLOPE_STEEP_S ? FOUNDATION_STEEP_HIGHER : FOUNDATION_STEEP_LOWER);
- case TRACK_BIT_RIGHT: return (tileh == SLOPE_STEEP_E ? FOUNDATION_STEEP_HIGHER : FOUNDATION_STEEP_LOWER);
- case TRACK_BIT_UPPER: return (tileh == SLOPE_STEEP_N ? FOUNDATION_STEEP_HIGHER : FOUNDATION_STEEP_LOWER);
+ if (IsSteepSlope(tileh)) {
+ /* Test for inclined foundations */
+ if (bits == TRACK_BIT_X) return FOUNDATION_INCLINED_X;
+ if (bits == TRACK_BIT_Y) return FOUNDATION_INCLINED_Y;
+
+ /* Get higher track */
+ Corner highest_corner = GetHighestSlopeCorner(tileh);
+ TrackBits higher_track = CornerToTrackBits(highest_corner);
+
+ /* Only higher track? */
+ if (bits == higher_track) return FOUNDATION_STEEP_HIGHER;
+
+ /* Overlap with higher track? */
+ if (TracksOverlap(bits | higher_track)) return FOUNDATION_INVALID;
+
+ /* either lower track or both higher and lower track */
+ return ((bits & higher_track) != 0 ? FOUNDATION_INVALID : FOUNDATION_STEEP_LOWER);
+ } else {
+ if ((~_valid_tracks_without_foundation[tileh] & bits) == 0) return FOUNDATION_NONE;
+
+ bool valid_on_leveled = ((~_valid_tracks_on_leveled_foundation[tileh] & bits) == 0);
+
+ switch (bits) {
+ case TRACK_BIT_X:
+ if (HasSlopeHighestCorner(tileh)) return FOUNDATION_INCLINED_X;
+ return (valid_on_leveled ? FOUNDATION_LEVELED : FOUNDATION_INVALID);
+
+ case TRACK_BIT_Y:
+ if (HasSlopeHighestCorner(tileh)) return FOUNDATION_INCLINED_Y;
+ return (valid_on_leveled ? FOUNDATION_LEVELED : FOUNDATION_INVALID);
+
+ default:
+ return (valid_on_leveled ? FOUNDATION_LEVELED : FOUNDATION_INVALID);
+ }
}
}
+/**
+ * Tests if a track can be build on a tile.
+ *
+ * @param tileh Tile slope.
+ * @param rail_bits Tracks to build.
+ * @param existing Tracks already built.
+ * @param tile Tile (used for water test)
+ * @return Error message or cost for foundation building.
+ */
static CommandCost CheckRailSlope(Slope tileh, TrackBits rail_bits, TrackBits existing, TileIndex tile)
{
- if (IsSteepSlope(tileh)) {
- if (_patches.build_on_slopes && existing == 0) {
- /* There may only be one track on steep slopes. (Autoslope calls with multiple bits in rail_bits) */
- if (KILL_FIRST_BIT(rail_bits & TRACK_BIT_MASK) == 0) {
- TrackBits valid = TRACK_BIT_CROSS | (HASBIT(1 << SLOPE_STEEP_W | 1 << SLOPE_STEEP_E, tileh) ? TRACK_BIT_VERT : TRACK_BIT_HORZ);
- if (valid & rail_bits) return _price.terraform;
- }
- }
- } else {
- rail_bits |= existing;
+ /* don't allow building on the lower side of a coast */
+ if (IsTileType(tile, MP_WATER)) {
+ if (!IsSteepSlope(tileh) && ((~_valid_tracks_on_leveled_foundation[tileh] & (rail_bits | existing)) != 0)) return_cmd_error(STR_3807_CAN_T_BUILD_ON_WATER);
+ }
- /* don't allow building on the lower side of a coast */
- if (IsTileType(tile, MP_WATER) &&
- ~_valid_tileh_slopes[1][tileh] & rail_bits) {
- return_cmd_error(STR_3807_CAN_T_BUILD_ON_WATER);
- }
+ Foundation f_new = GetRailFoundation(tileh, rail_bits | existing);
- /* no special foundation */
- if ((~_valid_tileh_slopes[0][tileh] & rail_bits) == 0) {
- return CommandCost();
- } else if (!_patches.build_on_slopes) {
- return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
- }
+ /* check track/slope combination */
+ if ((f_new == FOUNDATION_INVALID) ||
+ ((f_new != FOUNDATION_NONE) && (!_patches.build_on_slopes))
+ ) return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
- if ((~_valid_tileh_slopes[1][tileh] & rail_bits) == 0 || ( // whole tile is leveled up
- (rail_bits == TRACK_BIT_X || rail_bits == TRACK_BIT_Y) &&
- (tileh == SLOPE_W || tileh == SLOPE_S || tileh == SLOPE_E || tileh == SLOPE_N)
- )) { // partly up
- return CommandCost((existing != 0) ? 0 : _price.terraform);
- }
- }
- return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
+ Foundation f_old = GetRailFoundation(tileh, existing);
+ return CommandCost(f_new != f_old ? _price.terraform : 0);
}
/* Validate functions for rail building */
@@ -376,7 +394,7 @@
YapfNotifyTrackLayoutChange(tile, track);
}
- return cost.AddCost(_price.build_rail);
+ return cost.AddCost(RailBuildCost(railtype));
}
/** Remove a single piece of track
@@ -1073,7 +1091,7 @@
VehicleFromPos(tile, &tile, UpdateTrainPowerProc);
}
- return CommandCost(_price.build_rail / 2);
+ return CommandCost(RailBuildCost(totype) / 2);
}
extern CommandCost DoConvertStationRail(TileIndex tile, RailType totype, bool exec);
--- a/src/rail_gui.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/rail_gui.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -235,25 +235,27 @@
/** Enum referring to the widgets of the build rail toolbar */
-enum {
- RTW_CAPTION = 1,
- RTW_BUILD_NS = 4,
- RTW_BUILD_X = 5,
- RTW_BUILD_EW = 6,
- RTW_BUILD_Y = 7,
- RTW_AUTORAIL = 8,
- RTW_DEMOLISH = 9,
- RTW_BUILD_DEPOT = 10,
- RTW_BUILD_WAYPOINT = 11,
- RTW_BUILD_STATION = 12,
- RTW_BUILD_SIGNALS = 13,
- RTW_BUILD_BRIDGE = 14,
- RTW_BUILD_TUNNEL = 15,
- RTW_REMOVE = 16,
- RTW_CONVERT_RAIL = 17
+enum RailToolbarWidgets {
+ RTW_CLOSEBOX = 0,
+ RTW_CAPTION,
+ RTW_STICKY,
+ RTW_SPACER,
+ RTW_BUILD_NS,
+ RTW_BUILD_X,
+ RTW_BUILD_EW,
+ RTW_BUILD_Y,
+ RTW_AUTORAIL,
+ RTW_DEMOLISH,
+ RTW_BUILD_DEPOT,
+ RTW_BUILD_WAYPOINT,
+ RTW_BUILD_STATION,
+ RTW_BUILD_SIGNALS,
+ RTW_BUILD_BRIDGE,
+ RTW_BUILD_TUNNEL,
+ RTW_REMOVE,
+ RTW_CONVERT_RAIL,
};
-
static void BuildRailClick_N(Window *w)
{
HandlePlacePushButton(w, RTW_BUILD_NS, GetRailTypeInfo(_cur_railtype)->cursor.rail_ns, 1, PlaceRail_N);
@@ -433,11 +435,12 @@
static void UpdateRemoveWidgetStatus(Window *w, int clicked_widget)
{
- /* If it is the removal button that has been clicked, do nothing,
- * as it is up to the other buttons to drive removal status */
- if (clicked_widget == RTW_REMOVE) return;
-
switch (clicked_widget) {
+ case RTW_REMOVE:
+ /* If it is the removal button that has been clicked, do nothing,
+ * as it is up to the other buttons to drive removal status */
+ return;
+ break;
case RTW_BUILD_NS:
case RTW_BUILD_X:
case RTW_BUILD_EW:
@@ -453,7 +456,7 @@
default:
/* When any other buttons than rail/signal/waypoint/station, raise and
- * disable the removal button*/
+ * disable the removal button */
DisableWindowWidget(w, RTW_REMOVE);
RaiseWindowWidget(w, RTW_REMOVE);
break;
@@ -468,28 +471,25 @@
case WE_PAINT: DrawWindowWidgets(w); break;
case WE_CLICK:
- if (e->we.click.widget >= 4) {
+ if (e->we.click.widget >= RTW_BUILD_NS) {
_remove_button_clicked = false;
- _build_railroad_button_proc[e->we.click.widget - 4](w);
+ _build_railroad_button_proc[e->we.click.widget - RTW_BUILD_NS](w);
}
UpdateRemoveWidgetStatus(w, e->we.click.widget);
break;
- case WE_KEYPRESS: {
- uint i;
-
- for (i = 0; i != lengthof(_rail_keycodes); i++) {
+ case WE_KEYPRESS:
+ for (uint8 i = 0; i != lengthof(_rail_keycodes); i++) {
if (e->we.keypress.keycode == _rail_keycodes[i]) {
e->we.keypress.cont = false;
_remove_button_clicked = false;
_build_railroad_button_proc[i](w);
- UpdateRemoveWidgetStatus(w, i + 4);
+ UpdateRemoveWidgetStatus(w, i + RTW_BUILD_NS);
break;
}
}
MarkTileDirty(_thd.pos.x, _thd.pos.y); // redraw tile selection
break;
- }
case WE_PLACE_OBJ:
_place_proc(e->we.place.tile);
@@ -571,30 +571,30 @@
}
}
-
+/** Widget definition for the rail toolbar */
static const Widget _build_rail_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 337, 0, 13, STR_100A_RAILROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_STICKYBOX, RESIZE_NONE, 7, 338, 349, 0, 13, 0x0, STR_STICKY_BUTTON},
-
-{ WWT_PANEL, RESIZE_NONE, 7, 110, 113, 14, 35, 0x0, STR_NULL},
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // RTW_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 7, 11, 337, 0, 13, STR_100A_RAILROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION
+{ WWT_STICKYBOX, RESIZE_NONE, 7, 338, 349, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY
-{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_RAIL_NS, STR_1018_BUILD_RAILROAD_TRACK},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_RAIL_NE, STR_1018_BUILD_RAILROAD_TRACK},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_RAIL_EW, STR_1018_BUILD_RAILROAD_TRACK},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_RAIL_NW, STR_1018_BUILD_RAILROAD_TRACK},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_AUTORAIL, STR_BUILD_AUTORAIL_TIP},
+{ WWT_PANEL, RESIZE_NONE, 7, 110, 113, 14, 35, 0x0, STR_NULL}, // RTW_SPACER
-{ WWT_IMGBTN, RESIZE_NONE, 7, 114, 135, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 136, 157, 14, 35, SPR_IMG_DEPOT_RAIL, STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 158, 179, 14, 35, SPR_IMG_WAYPOINT, STR_CONVERT_RAIL_TO_WAYPOINT_TIP},
+{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_RAIL_NS, STR_1018_BUILD_RAILROAD_TRACK}, // RTW_BUILD_NS
+{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_RAIL_NE, STR_1018_BUILD_RAILROAD_TRACK}, // RTW_BUILD_X
+{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_RAIL_EW, STR_1018_BUILD_RAILROAD_TRACK}, // RTW_BUILD_EW
+{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_RAIL_NW, STR_1018_BUILD_RAILROAD_TRACK}, // RTW_BUILD_Y
+{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_AUTORAIL, STR_BUILD_AUTORAIL_TIP}, // RTW_AUTORAIL
-{ WWT_IMGBTN, RESIZE_NONE, 7, 180, 221, 14, 35, SPR_IMG_RAIL_STATION, STR_101A_BUILD_RAILROAD_STATION},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 222, 243, 14, 35, SPR_IMG_RAIL_SIGNALS, STR_101B_BUILD_RAILROAD_SIGNALS},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 244, 285, 14, 35, SPR_IMG_BRIDGE, STR_101C_BUILD_RAILROAD_BRIDGE},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 286, 305, 14, 35, SPR_IMG_TUNNEL_RAIL, STR_101D_BUILD_RAILROAD_TUNNEL},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 306, 327, 14, 35, SPR_IMG_REMOVE, STR_101E_TOGGLE_BUILD_REMOVE_FOR},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 328, 349, 14, 35, SPR_IMG_CONVERT_RAIL, STR_CONVERT_RAIL_TIP},
+{ WWT_IMGBTN, RESIZE_NONE, 7, 114, 135, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // RTW_DEMOLISH
+{ WWT_IMGBTN, RESIZE_NONE, 7, 136, 157, 14, 35, SPR_IMG_DEPOT_RAIL, STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING}, // RTW_BUILD_DEPOT
+{ WWT_IMGBTN, RESIZE_NONE, 7, 158, 179, 14, 35, SPR_IMG_WAYPOINT, STR_CONVERT_RAIL_TO_WAYPOINT_TIP}, // RTW_BUILD_WAYPOINT
+
+{ WWT_IMGBTN, RESIZE_NONE, 7, 180, 221, 14, 35, SPR_IMG_RAIL_STATION, STR_101A_BUILD_RAILROAD_STATION}, // RTW_BUILD_STATION
+{ WWT_IMGBTN, RESIZE_NONE, 7, 222, 243, 14, 35, SPR_IMG_RAIL_SIGNALS, STR_101B_BUILD_RAILROAD_SIGNALS}, // RTW_BUILD_SIGNALS
+{ WWT_IMGBTN, RESIZE_NONE, 7, 244, 285, 14, 35, SPR_IMG_BRIDGE, STR_101C_BUILD_RAILROAD_BRIDGE}, // RTW_BUILD_BRIDGE
+{ WWT_IMGBTN, RESIZE_NONE, 7, 286, 305, 14, 35, SPR_IMG_TUNNEL_RAIL, STR_101D_BUILD_RAILROAD_TUNNEL}, // RTW_BUILD_TUNNEL
+{ WWT_IMGBTN, RESIZE_NONE, 7, 306, 327, 14, 35, SPR_IMG_REMOVE, STR_101E_TOGGLE_BUILD_REMOVE_FOR}, // RTW_REMOVE
+{ WWT_IMGBTN, RESIZE_NONE, 7, 328, 349, 14, 35, SPR_IMG_CONVERT_RAIL, STR_CONVERT_RAIL_TIP}, // RTW_CONVERT_RAIL
{ WIDGETS_END},
};
@@ -644,13 +644,51 @@
}
_remove_button_clicked = false;
- if (w != NULL && button >= 0) {
+ if (w != NULL && button >= RTW_CLOSEBOX) {
_build_railroad_button_proc[button](w);
- UpdateRemoveWidgetStatus(w, button + 4);
+ UpdateRemoveWidgetStatus(w, button + RTW_BUILD_NS);
}
if (_patches.link_terraform_toolbar) ShowTerraformToolbar(w);
}
+/** Enum referring to the widgets of the rail stations window */
+enum BuildRailStationWidgets {
+ BRSW_CLOSEBOX = 0,
+ BRSW_CAPTION,
+ BRSW_BACKGROUND,
+
+ BRSW_PLATFORM_DIR_X,
+ BRSW_PLATFORM_DIR_Y,
+
+ BRSW_PLATFORM_NUM_BEGIN = BRSW_PLATFORM_DIR_Y,
+ BRSW_PLATFORM_NUM_1,
+ BRSW_PLATFORM_NUM_2,
+ BRSW_PLATFORM_NUM_3,
+ BRSW_PLATFORM_NUM_4,
+ BRSW_PLATFORM_NUM_5,
+ BRSW_PLATFORM_NUM_6,
+ BRSW_PLATFORM_NUM_7,
+
+ BRSW_PLATFORM_LEN_BEGIN = BRSW_PLATFORM_NUM_7,
+ BRSW_PLATFORM_LEN_1,
+ BRSW_PLATFORM_LEN_2,
+ BRSW_PLATFORM_LEN_3,
+ BRSW_PLATFORM_LEN_4,
+ BRSW_PLATFORM_LEN_5,
+ BRSW_PLATFORM_LEN_6,
+ BRSW_PLATFORM_LEN_7,
+
+ BRSW_PLATFORM_DRAG_N_DROP,
+
+ BRSW_HIGHLIGHT_OFF,
+ BRSW_HIGHLIGHT_ON,
+
+ BRSW_NEWST_DROPDOWN,
+ BRSW_NEWST_DROPDOWN_TEXT,
+ BRSW_NEWST_LIST,
+ BRSW_NEWST_SCROLL
+};
+
/* TODO: For custom stations, respect their allowed platforms/lengths bitmasks!
* --pasky */
@@ -680,21 +718,21 @@
if (statspec == NULL || _railstation.dragdrop) return;
if (HASBIT(statspec->disallowed_platforms, _railstation.numtracks - 1)) {
- RaiseWindowWidget(w, _railstation.numtracks + 4);
+ RaiseWindowWidget(w, _railstation.numtracks + BRSW_PLATFORM_NUM_BEGIN);
_railstation.numtracks = 1;
while (HASBIT(statspec->disallowed_platforms, _railstation.numtracks - 1)) {
_railstation.numtracks++;
}
- LowerWindowWidget(w, _railstation.numtracks + 4);
+ LowerWindowWidget(w, _railstation.numtracks + BRSW_PLATFORM_NUM_BEGIN);
}
if (HASBIT(statspec->disallowed_lengths, _railstation.platlength - 1)) {
- RaiseWindowWidget(w, _railstation.platlength + 11);
+ RaiseWindowWidget(w, _railstation.platlength + BRSW_PLATFORM_LEN_BEGIN);
_railstation.platlength = 1;
while (HASBIT(statspec->disallowed_lengths, _railstation.platlength - 1)) {
_railstation.platlength++;
}
- LowerWindowWidget(w, _railstation.platlength + 11);
+ LowerWindowWidget(w, _railstation.platlength + BRSW_PLATFORM_LEN_BEGIN);
}
}
@@ -702,22 +740,19 @@
{
switch (e->event) {
case WE_CREATE:
- LowerWindowWidget(w, _railstation.orientation + 3);
+ LowerWindowWidget(w, _railstation.orientation + BRSW_PLATFORM_DIR_X);
if (_railstation.dragdrop) {
- LowerWindowWidget(w, 19);
+ LowerWindowWidget(w, BRSW_PLATFORM_DRAG_N_DROP);
} else {
- LowerWindowWidget(w, _railstation.numtracks + 4);
- LowerWindowWidget(w, _railstation.platlength + 11);
+ LowerWindowWidget(w, _railstation.numtracks + BRSW_PLATFORM_NUM_BEGIN);
+ LowerWindowWidget(w, _railstation.platlength + BRSW_PLATFORM_LEN_BEGIN);
}
- SetWindowWidgetLoweredState(w, 20, !_station_show_coverage);
- SetWindowWidgetLoweredState(w, 21, _station_show_coverage);
+ SetWindowWidgetLoweredState(w, BRSW_HIGHLIGHT_OFF, !_station_show_coverage);
+ SetWindowWidgetLoweredState(w, BRSW_HIGHLIGHT_ON, _station_show_coverage);
break;
case WE_PAINT: {
- int rad;
- uint bits;
bool newstations = _railstation.newstations;
- int y_offset;
DrawPixelInfo tmp_dpi, *old_dpi;
const StationSpec *statspec = newstations ? GetCustomStationSpec(_railstation.station_class, _railstation.station_type) : NULL;
@@ -733,26 +768,26 @@
SetTileSelectSize(x, y);
}
- rad = (_patches.modified_catchment) ? CA_TRAIN : 4;
+ int rad = (_patches.modified_catchment) ? CA_TRAIN : 4;
if (_station_show_coverage)
SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
- for (bits = 0; bits < 7; bits++) {
+ for (uint bits = 0; bits < 7; bits++) {
bool disable = bits >= _patches.station_spread;
if (statspec == NULL) {
- SetWindowWidgetDisabledState(w, bits + 5, disable);
- SetWindowWidgetDisabledState(w, bits + 12, disable);
+ SetWindowWidgetDisabledState(w, bits + BRSW_PLATFORM_NUM_1, disable);
+ SetWindowWidgetDisabledState(w, bits + BRSW_PLATFORM_LEN_1, disable);
} else {
- SetWindowWidgetDisabledState(w, bits + 5, HASBIT(statspec->disallowed_platforms, bits) || disable);
- SetWindowWidgetDisabledState(w, bits + 12, HASBIT(statspec->disallowed_lengths, bits) || disable);
+ SetWindowWidgetDisabledState(w, bits + BRSW_PLATFORM_NUM_1, HASBIT(statspec->disallowed_platforms, bits) || disable);
+ SetWindowWidgetDisabledState(w, bits + BRSW_PLATFORM_LEN_1, HASBIT(statspec->disallowed_lengths, bits) || disable);
}
}
SetDParam(0, GetStationClassName(_railstation.station_class));
DrawWindowWidgets(w);
- y_offset = newstations ? 90 : 0;
+ int y_offset = newstations ? 90 : 0;
/* Set up a clipping area for the '/' station preview */
if (FillDrawPixelInfo(&tmp_dpi, 7, 26 + y_offset, 66, 48)) {
@@ -782,10 +817,9 @@
DrawStationCoverageAreaText(2, 166 + y_offset, SCT_ALL, rad);
if (newstations) {
- uint16 i;
uint y = 35;
- for (i = w->vscroll.pos; i < _railstation.station_count && i < (uint)(w->vscroll.pos + w->vscroll.cap); i++) {
+ for (uint16 i = w->vscroll.pos; i < _railstation.station_count && i < (uint)(w->vscroll.pos + w->vscroll.cap); i++) {
const StationSpec *statspec = GetCustomStationSpec(_railstation.station_class, i);
if (statspec != NULL && statspec->name != 0) {
@@ -805,26 +839,26 @@
case WE_CLICK: {
switch (e->we.click.widget) {
- case 3:
- case 4:
- RaiseWindowWidget(w, _railstation.orientation + 3);
- _railstation.orientation = e->we.click.widget - 3;
- LowerWindowWidget(w, _railstation.orientation + 3);
+ case BRSW_PLATFORM_DIR_X:
+ case BRSW_PLATFORM_DIR_Y:
+ RaiseWindowWidget(w, _railstation.orientation + BRSW_PLATFORM_DIR_X);
+ _railstation.orientation = e->we.click.widget - BRSW_PLATFORM_DIR_X;
+ LowerWindowWidget(w, _railstation.orientation + BRSW_PLATFORM_DIR_X);
SndPlayFx(SND_15_BEEP);
SetWindowDirty(w);
break;
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11: {
- RaiseWindowWidget(w, _railstation.numtracks + 4);
- RaiseWindowWidget(w, 19);
+ case BRSW_PLATFORM_NUM_1:
+ case BRSW_PLATFORM_NUM_2:
+ case BRSW_PLATFORM_NUM_3:
+ case BRSW_PLATFORM_NUM_4:
+ case BRSW_PLATFORM_NUM_5:
+ case BRSW_PLATFORM_NUM_6:
+ case BRSW_PLATFORM_NUM_7: {
+ RaiseWindowWidget(w, _railstation.numtracks + BRSW_PLATFORM_NUM_BEGIN);
+ RaiseWindowWidget(w, BRSW_PLATFORM_DRAG_N_DROP);
- _railstation.numtracks = (e->we.click.widget - 5) + 1;
+ _railstation.numtracks = e->we.click.widget - BRSW_PLATFORM_NUM_BEGIN;
_railstation.dragdrop = false;
const StationSpec *statspec = _railstation.newstations ? GetCustomStationSpec(_railstation.station_class, _railstation.station_type) : NULL;
@@ -832,31 +866,31 @@
/* The previously selected number of platforms in invalid */
for (uint i = 0; i < 7; i++) {
if (!HASBIT(statspec->disallowed_lengths, i)) {
- RaiseWindowWidget(w, _railstation.platlength + 11);
+ RaiseWindowWidget(w, _railstation.platlength + BRSW_PLATFORM_LEN_BEGIN);
_railstation.platlength = i + 1;
break;
}
}
}
- LowerWindowWidget(w, _railstation.platlength + 11);
- LowerWindowWidget(w, _railstation.numtracks + 4);
+ LowerWindowWidget(w, _railstation.numtracks + BRSW_PLATFORM_NUM_BEGIN);
+ LowerWindowWidget(w, _railstation.platlength + BRSW_PLATFORM_LEN_BEGIN);
SndPlayFx(SND_15_BEEP);
SetWindowDirty(w);
break;
}
- case 12:
- case 13:
- case 14:
- case 15:
- case 16:
- case 17:
- case 18: {
- RaiseWindowWidget(w, _railstation.platlength + 11);
- RaiseWindowWidget(w, 19);
+ case BRSW_PLATFORM_LEN_1:
+ case BRSW_PLATFORM_LEN_2:
+ case BRSW_PLATFORM_LEN_3:
+ case BRSW_PLATFORM_LEN_4:
+ case BRSW_PLATFORM_LEN_5:
+ case BRSW_PLATFORM_LEN_6:
+ case BRSW_PLATFORM_LEN_7: {
+ RaiseWindowWidget(w, _railstation.platlength + BRSW_PLATFORM_LEN_BEGIN);
+ RaiseWindowWidget(w, BRSW_PLATFORM_DRAG_N_DROP);
- _railstation.platlength = (e->we.click.widget - 12) + 1;
+ _railstation.platlength = e->we.click.widget - BRSW_PLATFORM_LEN_BEGIN;
_railstation.dragdrop = false;
const StationSpec *statspec = _railstation.newstations ? GetCustomStationSpec(_railstation.station_class, _railstation.station_type) : NULL;
@@ -864,44 +898,44 @@
/* The previously selected number of tracks in invalid */
for (uint i = 0; i < 7; i++) {
if (!HASBIT(statspec->disallowed_platforms, i)) {
- RaiseWindowWidget(w, _railstation.numtracks + 4);
+ RaiseWindowWidget(w, _railstation.numtracks + BRSW_PLATFORM_NUM_BEGIN);
_railstation.numtracks = i + 1;
break;
}
}
}
- LowerWindowWidget(w, _railstation.platlength + 11);
- LowerWindowWidget(w, _railstation.numtracks + 4);
+ LowerWindowWidget(w, _railstation.numtracks + BRSW_PLATFORM_NUM_BEGIN);
+ LowerWindowWidget(w, _railstation.platlength + BRSW_PLATFORM_LEN_BEGIN);
SndPlayFx(SND_15_BEEP);
SetWindowDirty(w);
break;
}
- case 19:
+ case BRSW_PLATFORM_DRAG_N_DROP:
_railstation.dragdrop ^= true;
- ToggleWidgetLoweredState(w, 19);
- SetWindowWidgetLoweredState(w, _railstation.numtracks + 4, !_railstation.dragdrop);
- SetWindowWidgetLoweredState(w, _railstation.platlength + 11, !_railstation.dragdrop);
+ ToggleWidgetLoweredState(w, BRSW_PLATFORM_DRAG_N_DROP);
+ SetWindowWidgetLoweredState(w, _railstation.numtracks + BRSW_PLATFORM_NUM_BEGIN, !_railstation.dragdrop);
+ SetWindowWidgetLoweredState(w, _railstation.platlength + BRSW_PLATFORM_LEN_BEGIN, !_railstation.dragdrop);
SndPlayFx(SND_15_BEEP);
SetWindowDirty(w);
break;
- case 20:
- case 21:
- _station_show_coverage = (e->we.click.widget != 20);
- SetWindowWidgetLoweredState(w, 20, !_station_show_coverage);
- SetWindowWidgetLoweredState(w, 21, _station_show_coverage);
+ case BRSW_HIGHLIGHT_OFF:
+ case BRSW_HIGHLIGHT_ON:
+ _station_show_coverage = (e->we.click.widget != BRSW_HIGHLIGHT_OFF);
+ SetWindowWidgetLoweredState(w, BRSW_HIGHLIGHT_OFF, !_station_show_coverage);
+ SetWindowWidgetLoweredState(w, BRSW_HIGHLIGHT_ON, _station_show_coverage);
SndPlayFx(SND_15_BEEP);
SetWindowDirty(w);
break;
- case 22:
- case 23:
+ case BRSW_NEWST_DROPDOWN:
+ case BRSW_NEWST_DROPDOWN_TEXT:
ShowDropDownMenu(w, BuildStationClassDropdown(), _railstation.station_class, 23, 0, 1 << STAT_CLASS_WAYP);
break;
- case 24: {
+ case BRSW_NEWST_LIST: {
const StationSpec *statspec;
int y = (e->we.click.pt.y - 32) / 14;
@@ -956,67 +990,69 @@
}
}
+/** Widget definition of the standard build rail station window */
static const Widget _station_builder_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_3000_RAIL_STATION_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 147, 14, 199, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 7, 72, 26, 73, 0x0, STR_304E_SELECT_RAILROAD_STATION},
-{ WWT_PANEL, RESIZE_NONE, 14, 75, 140, 26, 73, 0x0, STR_304E_SELECT_RAILROAD_STATION},
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRSW_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_3000_RAIL_STATION_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRSW_CAPTION
+{ WWT_PANEL, RESIZE_NONE, 7, 0, 147, 14, 199, 0x0, STR_NULL}, // BRSW_BACKGROUND
+{ WWT_PANEL, RESIZE_NONE, 14, 7, 72, 26, 73, 0x0, STR_304E_SELECT_RAILROAD_STATION}, // BRSW_PLATFORM_DIR_X
+{ WWT_PANEL, RESIZE_NONE, 14, 75, 140, 26, 73, 0x0, STR_304E_SELECT_RAILROAD_STATION}, // BRSW_PLATFORM_DIR_Y
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 22, 36, 87, 98, STR_00CB_1, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 51, 87, 98, STR_00CC_2, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 52, 66, 87, 98, STR_00CD_3, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 67, 81, 87, 98, STR_00CE_4, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 82, 96, 87, 98, STR_00CF_5, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 97, 111, 87, 98, STR_0335_6, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 112, 126, 87, 98, STR_0336_7, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 22, 36, 87, 98, STR_00CB_1, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_1
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 51, 87, 98, STR_00CC_2, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_2
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 52, 66, 87, 98, STR_00CD_3, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_3
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 67, 81, 87, 98, STR_00CE_4, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_4
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 82, 96, 87, 98, STR_00CF_5, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_5
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 97, 111, 87, 98, STR_0335_6, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_6
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 112, 126, 87, 98, STR_0336_7, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_7
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 22, 36, 112, 123, STR_00CB_1, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 51, 112, 123, STR_00CC_2, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 52, 66, 112, 123, STR_00CD_3, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 67, 81, 112, 123, STR_00CE_4, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 82, 96, 112, 123, STR_00CF_5, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 97, 111, 112, 123, STR_0335_6, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 112, 126, 112, 123, STR_0336_7, STR_3050_SELECT_LENGTH_OF_RAILROAD},
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 22, 36, 112, 123, STR_00CB_1, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_1
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 51, 112, 123, STR_00CC_2, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_2
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 52, 66, 112, 123, STR_00CD_3, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_3
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 67, 81, 112, 123, STR_00CE_4, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_4
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 82, 96, 112, 123, STR_00CF_5, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_5
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 97, 111, 112, 123, STR_0335_6, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_6
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 112, 126, 112, 123, STR_0336_7, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_7
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 111, 126, 137, STR_DRAG_DROP, STR_STATION_DRAG_DROP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 14, 73, 152, 163, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 74, 133, 152, 163, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 111, 126, 137, STR_DRAG_DROP, STR_STATION_DRAG_DROP}, // BRSW_PLATFORM_DRAG_N_DROP
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 14, 73, 152, 163, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE}, // BRSW_HIGHLIGHT_OFF
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 74, 133, 152, 163, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA}, // BRSW_HIGHLIGHT_ON
{ WIDGETS_END},
};
+/** Widget definition of the build NewGRF rail station window */
static const Widget _newstation_builder_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_3000_RAIL_STATION_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 147, 14, 289, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 7, 72, 116, 163, 0x0, STR_304E_SELECT_RAILROAD_STATION},
-{ WWT_PANEL, RESIZE_NONE, 14, 75, 140, 116, 163, 0x0, STR_304E_SELECT_RAILROAD_STATION},
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRSW_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 7, 11, 147, 0, 13, STR_3000_RAIL_STATION_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRSW_CAPTION
+{ WWT_PANEL, RESIZE_NONE, 7, 0, 147, 14, 289, 0x0, STR_NULL}, // BRSW_BACKGROUND
+{ WWT_PANEL, RESIZE_NONE, 14, 7, 72, 116, 163, 0x0, STR_304E_SELECT_RAILROAD_STATION}, // BRSW_PLATFORM_DIR_X
+{ WWT_PANEL, RESIZE_NONE, 14, 75, 140, 116, 163, 0x0, STR_304E_SELECT_RAILROAD_STATION}, // BRSW_PLATFORM_DIR_Y
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 22, 36, 177, 188, STR_00CB_1, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 51, 177, 188, STR_00CC_2, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 52, 66, 177, 188, STR_00CD_3, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 67, 81, 177, 188, STR_00CE_4, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 82, 96, 177, 188, STR_00CF_5, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 97, 111, 177, 188, STR_0335_6, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 112, 126, 177, 188, STR_0336_7, STR_304F_SELECT_NUMBER_OF_PLATFORMS},
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 22, 36, 177, 188, STR_00CB_1, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_1
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 51, 177, 188, STR_00CC_2, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_2
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 52, 66, 177, 188, STR_00CD_3, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_3
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 67, 81, 177, 188, STR_00CE_4, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_4
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 82, 96, 177, 188, STR_00CF_5, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_5
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 97, 111, 177, 188, STR_0335_6, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_6
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 112, 126, 177, 188, STR_0336_7, STR_304F_SELECT_NUMBER_OF_PLATFORMS}, // BRSW_PLATFORM_NUM_7
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 22, 36, 202, 213, STR_00CB_1, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 51, 202, 213, STR_00CC_2, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 52, 66, 202, 213, STR_00CD_3, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 67, 81, 202, 213, STR_00CE_4, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 82, 96, 202, 213, STR_00CF_5, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 97, 111, 202, 213, STR_0335_6, STR_3050_SELECT_LENGTH_OF_RAILROAD},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 112, 126, 202, 213, STR_0336_7, STR_3050_SELECT_LENGTH_OF_RAILROAD},
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 22, 36, 202, 213, STR_00CB_1, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_1
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 51, 202, 213, STR_00CC_2, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_2
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 52, 66, 202, 213, STR_00CD_3, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_3
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 67, 81, 202, 213, STR_00CE_4, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_4
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 82, 96, 202, 213, STR_00CF_5, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_5
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 97, 111, 202, 213, STR_0335_6, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_6
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 112, 126, 202, 213, STR_0336_7, STR_3050_SELECT_LENGTH_OF_RAILROAD}, // BRSW_PLATFORM_LEN_7
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 111, 216, 227, STR_DRAG_DROP, STR_STATION_DRAG_DROP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 14, 73, 242, 253, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 74, 133, 242, 253, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 37, 111, 216, 227, STR_DRAG_DROP, STR_STATION_DRAG_DROP}, // BRSW_PLATFORM_DRAG_N_DROP
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 14, 73, 242, 253, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE}, // BRSW_HIGHLIGHT_OFF
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 74, 133, 242, 253, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA}, // BRSW_HIGHLIGHT_ON
/* newstations gui additions */
-{ WWT_INSET, RESIZE_NONE, 14, 7, 140, 17, 28, STR_02BD, STR_SELECT_STATION_CLASS_TIP},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 129, 139, 18, 27, STR_0225, STR_SELECT_STATION_CLASS_TIP},
-{ WWT_MATRIX, RESIZE_NONE, 14, 7, 128, 32, 102, 0x501, STR_SELECT_STATION_TYPE_TIP},
-{ WWT_SCROLLBAR, RESIZE_NONE, 14, 129, 140, 32, 102, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{ WWT_INSET, RESIZE_NONE, 14, 7, 140, 17, 28, STR_02BD, STR_SELECT_STATION_CLASS_TIP}, // BRSW_NEWST_DROPDOWN
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 129, 139, 18, 27, STR_0225, STR_SELECT_STATION_CLASS_TIP}, // BRSW_NEWST_DROPDOWN_TEXT
+{ WWT_MATRIX, RESIZE_NONE, 14, 7, 128, 32, 102, 0x501, STR_SELECT_STATION_TYPE_TIP}, // BRSW_NEWST_LIST
+{ WWT_SCROLLBAR, RESIZE_NONE, 14, 129, 140, 32, 102, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // BRSW_NEWST_SCROLL
{ WIDGETS_END},
};
@@ -1053,33 +1089,41 @@
}
}
+/** Enum referring to the widgets of the build rail depot window */
+enum BuildRailDepotWidgets {
+ BRDW_CLOSEBOX = 0,
+ BRDW_CAPTION,
+ BRDW_BACKGROUND,
+ BRDW_DEPOT_NE,
+ BRDW_DEPOT_SE,
+ BRDW_DEPOT_SW,
+ BRDW_DEPOT_NW,
+};
+
static void BuildTrainDepotWndProc(Window *w, WindowEvent *e)
{
switch (e->event) {
- case WE_CREATE: LowerWindowWidget(w, _build_depot_direction + 3); break;
+ case WE_CREATE: LowerWindowWidget(w, _build_depot_direction + BRDW_DEPOT_NE); break;
case WE_PAINT: {
- RailType r;
-
DrawWindowWidgets(w);
- r = _cur_railtype;
- DrawTrainDepotSprite(70, 17, 0, r);
- DrawTrainDepotSprite(70, 69, 1, r);
- DrawTrainDepotSprite( 2, 69, 2, r);
- DrawTrainDepotSprite( 2, 17, 3, r);
+ DrawTrainDepotSprite(70, 17, DIAGDIR_NE, _cur_railtype);
+ DrawTrainDepotSprite(70, 69, DIAGDIR_SE, _cur_railtype);
+ DrawTrainDepotSprite( 2, 69, DIAGDIR_SW, _cur_railtype);
+ DrawTrainDepotSprite( 2, 17, DIAGDIR_NW, _cur_railtype);
break;
}
case WE_CLICK:
switch (e->we.click.widget) {
- case 3:
- case 4:
- case 5:
- case 6:
- RaiseWindowWidget(w, _build_depot_direction + 3);
- _build_depot_direction = (DiagDirection)(e->we.click.widget - 3);
- LowerWindowWidget(w, _build_depot_direction + 3);
+ case BRDW_DEPOT_NE:
+ case BRDW_DEPOT_SE:
+ case BRDW_DEPOT_SW:
+ case BRDW_DEPOT_NW:
+ RaiseWindowWidget(w, _build_depot_direction + BRDW_DEPOT_NE);
+ _build_depot_direction = (DiagDirection)(e->we.click.widget - BRDW_DEPOT_NE);
+ LowerWindowWidget(w, _build_depot_direction + BRDW_DEPOT_NE);
SndPlayFx(SND_15_BEEP);
SetWindowDirty(w);
break;
@@ -1096,14 +1140,15 @@
}
}
+/** Widget definition of the build rail depot window */
static const Widget _build_depot_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1014_TRAIN_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO},
-{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO},
-{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO},
-{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO},
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRDW_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1014_TRAIN_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRDW_CAPTION
+{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL}, // BRDW_BACKGROUND
+{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO}, // BRDW_DEPOT_NE
+{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO}, // BRDW_DEPOT_SE
+{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO}, // BRDW_DEPOT_SW
+{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO}, // BRDW_DEPOT_NW
{ WIDGETS_END},
};
@@ -1120,6 +1165,18 @@
AllocateWindowDesc(&_build_depot_desc);
}
+/** Enum referring to the widgets of the build NewGRF rail waypoint window */
+enum BuildRailWaypointWidgets {
+ BRWW_CLOSEBOX = 0,
+ BRWW_CAPTION,
+ BRWW_BACKGROUND,
+ BRWW_WAYPOINT_1,
+ BRWW_WAYPOINT_2,
+ BRWW_WAYPOINT_3,
+ BRWW_WAYPOINT_4,
+ BRWW_WAYPOINT_5,
+ BRWW_SCROLL,
+};
static void BuildWaypointWndProc(Window *w, WindowEvent *e)
{
@@ -1128,7 +1185,7 @@
uint i;
for (i = 0; i < w->hscroll.cap; i++) {
- SetWindowWidgetLoweredState(w, i + 3, (w->hscroll.pos + i) == _cur_waypoint_type);
+ SetWindowWidgetLoweredState(w, i + BRWW_WAYPOINT_1, (w->hscroll.pos + i) == _cur_waypoint_type);
}
DrawWindowWidgets(w);
@@ -1150,20 +1207,24 @@
}
case WE_CLICK: {
switch (e->we.click.widget) {
- case 3: case 4: case 5: case 6: case 7: {
- byte type = e->we.click.widget - 3 + w->hscroll.pos;
+ case BRWW_WAYPOINT_1:
+ case BRWW_WAYPOINT_2:
+ case BRWW_WAYPOINT_3:
+ case BRWW_WAYPOINT_4:
+ case BRWW_WAYPOINT_5: {
+ byte type = e->we.click.widget - BRWW_WAYPOINT_1 + w->hscroll.pos;
- /* Check station availability callback */
- const StationSpec *statspec = GetCustomStationSpec(STAT_CLASS_WAYP, type);
- if (statspec != NULL &&
- HASBIT(statspec->callbackmask, CBM_STATION_AVAIL) &&
- GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE) == 0) return;
+ /* Check station availability callback */
+ const StationSpec *statspec = GetCustomStationSpec(STAT_CLASS_WAYP, type);
+ if (statspec != NULL &&
+ HASBIT(statspec->callbackmask, CBM_STATION_AVAIL) &&
+ GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE) == 0) return;
- _cur_waypoint_type = type;
- SndPlayFx(SND_15_BEEP);
- SetWindowDirty(w);
- break;
- }
+ _cur_waypoint_type = type;
+ SndPlayFx(SND_15_BEEP);
+ SetWindowDirty(w);
+ break;
+ }
}
break;
}
@@ -1178,18 +1239,19 @@
}
}
+/** Widget definition for the build NewGRF rail waypoint window */
static const Widget _build_waypoint_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 343, 0, 13, STR_WAYPOINT, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 343, 14, 91, 0x0, 0},
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRWW_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 7, 11, 343, 0, 13, STR_WAYPOINT, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRWW_CAPTION
+{ WWT_PANEL, RESIZE_NONE, 7, 0, 343, 14, 91, 0x0, STR_NULL}, // BRWW_BACKGROUND
-{ WWT_PANEL, RESIZE_NONE, 7, 3, 68, 17, 76, 0x0, STR_WAYPOINT_GRAPHICS_TIP},
-{ WWT_PANEL, RESIZE_NONE, 7, 71, 136, 17, 76, 0x0, STR_WAYPOINT_GRAPHICS_TIP},
-{ WWT_PANEL, RESIZE_NONE, 7, 139, 204, 17, 76, 0x0, STR_WAYPOINT_GRAPHICS_TIP},
-{ WWT_PANEL, RESIZE_NONE, 7, 207, 272, 17, 76, 0x0, STR_WAYPOINT_GRAPHICS_TIP},
-{ WWT_PANEL, RESIZE_NONE, 7, 275, 340, 17, 76, 0x0, STR_WAYPOINT_GRAPHICS_TIP},
+{ WWT_PANEL, RESIZE_NONE, 7, 3, 68, 17, 76, 0x0, STR_WAYPOINT_GRAPHICS_TIP}, // BRWW_WAYPOINT_1
+{ WWT_PANEL, RESIZE_NONE, 7, 71, 136, 17, 76, 0x0, STR_WAYPOINT_GRAPHICS_TIP}, // BRWW_WAYPOINT_2
+{ WWT_PANEL, RESIZE_NONE, 7, 139, 204, 17, 76, 0x0, STR_WAYPOINT_GRAPHICS_TIP}, // BRWW_WAYPOINT_3
+{ WWT_PANEL, RESIZE_NONE, 7, 207, 272, 17, 76, 0x0, STR_WAYPOINT_GRAPHICS_TIP}, // BRWW_WAYPOINT_4
+{ WWT_PANEL, RESIZE_NONE, 7, 275, 340, 17, 76, 0x0, STR_WAYPOINT_GRAPHICS_TIP}, // BRWW_WAYPOINT_5
-{ WWT_HSCROLLBAR, RESIZE_NONE, 7, 1, 343, 80, 91, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
+{ WWT_HSCROLLBAR, RESIZE_NONE, 7, 1, 343, 80, 91, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // BRWW_SCROLL
{ WIDGETS_END},
};
--- a/src/road_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/road_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -605,7 +605,7 @@
VehicleFromPos(tile, &tile, UpdateTrainPowerProc);
}
- return CommandCost(_price.build_rail / 2);
+ return CommandCost(RailBuildCost(totype) / 2);
}
@@ -820,7 +820,7 @@
if (!CheckTileOwnership(tile) && _current_player != OWNER_WATER)
return CMD_ERROR;
- if (!EnsureNoVehicle(tile)) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
if (flags & DC_EXEC) {
DoClearSquare(tile);
--- a/src/road_gui.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/road_gui.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -180,20 +180,22 @@
VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_DEMOLISH_AREA);
}
-
-enum {
- RTW_ROAD_X = 3,
- RTW_ROAD_Y = 4,
- RTW_DEMOLISH = 5,
- RTW_DEPOT = 6,
- RTW_BUS_STATION = 7,
- RTW_TRUCK_STATION = 8,
- RTW_BUILD_BRIDGE = 9,
- RTW_BUILD_TUNNEL = 10,
- RTW_REMOVE = 11
+/** Enum referring to the widgets of the build road toolbar */
+enum RoadToolbarWidgets {
+ RTW_CLOSEBOX = 0,
+ RTW_CAPTION,
+ RTW_STICKY,
+ RTW_ROAD_X,
+ RTW_ROAD_Y,
+ RTW_DEMOLISH,
+ RTW_DEPOT,
+ RTW_BUS_STATION,
+ RTW_TRUCK_STATION,
+ RTW_BUILD_BRIDGE,
+ RTW_BUILD_TUNNEL,
+ RTW_REMOVE,
};
-
typedef void OnButtonClick(Window *w);
static void BuildRoadClick_NE(Window *w)
@@ -249,7 +251,6 @@
SetSelectionRed(IsWindowWidgetLowered(w, RTW_REMOVE));
}
-
static OnButtonClick* const _build_road_button_proc[] = {
BuildRoadClick_NE,
BuildRoadClick_NW,
@@ -262,38 +263,83 @@
BuildRoadClick_Remove
};
+static const uint16 _road_keycodes[] = {
+ '1',
+ '2',
+ '3',
+ '4',
+ '5',
+ '6',
+ 'B',
+ 'T',
+ 'R',
+};
+
+/**
+ * Update the remove button lowered state of the road toolbar
+ *
+ * @param w The toolbar window
+ * @param clicked_widget The widget which the player clicked just now
+ */
+static void UpdateRemoveWidgetStatus(Window *w, int clicked_widget)
+{
+ switch (clicked_widget) {
+ case RTW_REMOVE:
+ /* If it is the removal button that has been clicked, do nothing,
+ * as it is up to the other buttons to drive removal status */
+ return;
+ break;
+ case RTW_ROAD_X:
+ case RTW_ROAD_Y:
+ case RTW_BUS_STATION:
+ case RTW_TRUCK_STATION:
+ /* Removal button is enabled only if the road/station
+ * button is still lowered. Once raised, it has to be disabled */
+ SetWindowWidgetDisabledState(w, RTW_REMOVE, !IsWindowWidgetLowered(w, clicked_widget));
+ break;
+
+ default:
+ /* When any other buttons than road/station, raise and
+ * disable the removal button */
+ DisableWindowWidget(w, RTW_REMOVE);
+ RaiseWindowWidget(w, RTW_REMOVE);
+ break;
+ }
+}
+
static void BuildRoadToolbWndProc(Window *w, WindowEvent *e)
{
switch (e->event) {
case WE_CREATE: DisableWindowWidget(w, RTW_REMOVE); break;
case WE_PAINT:
- if (IsWindowWidgetLowered(w, RTW_ROAD_X) || IsWindowWidgetLowered(w, RTW_ROAD_Y) || IsWindowWidgetLowered(w, RTW_BUS_STATION) || IsWindowWidgetLowered(w, RTW_TRUCK_STATION)) {
- EnableWindowWidget(w, RTW_REMOVE);
- }
- SetWindowWidgetsDisabledState(w, !CanBuildVehicleInfrastructure(VEH_ROAD), 6, 7, 8, WIDGET_LIST_END);
+ SetWindowWidgetsDisabledState(w, !CanBuildVehicleInfrastructure(VEH_ROAD),
+ RTW_DEPOT,
+ RTW_BUS_STATION,
+ RTW_TRUCK_STATION,
+ WIDGET_LIST_END);
DrawWindowWidgets(w);
break;
- case WE_CLICK: {
- if (e->we.click.widget >= 3) _build_road_button_proc[e->we.click.widget - 3](w);
- } break;
+ case WE_CLICK:
+ if (e->we.click.widget >= RTW_ROAD_X) {
+ _remove_button_clicked = false;
+ _build_road_button_proc[e->we.click.widget - RTW_ROAD_X](w);
+ }
+ UpdateRemoveWidgetStatus(w, e->we.click.widget);
+ break;
case WE_KEYPRESS:
- switch (e->we.keypress.keycode) {
- case '1': BuildRoadClick_NE(w); break;
- case '2': BuildRoadClick_NW(w); break;
- case '3': BuildRoadClick_Demolish(w); break;
- case '4': BuildRoadClick_Depot(w); break;
- case '5': BuildRoadClick_BusStation(w); break;
- case '6': BuildRoadClick_TruckStation(w); break;
- case 'B': BuildRoadClick_Bridge(w); break;
- case 'T': BuildRoadClick_Tunnel(w); break;
- case 'R': BuildRoadClick_Remove(w); break;
- default: return;
+ for (uint8 i = 0; i != lengthof(_road_keycodes); i++) {
+ if (e->we.keypress.keycode == _road_keycodes[i]) {
+ e->we.keypress.cont = false;
+ _remove_button_clicked = false;
+ _build_road_button_proc[i](w);
+ UpdateRemoveWidgetStatus(w, i + RTW_ROAD_X);
+ break;
+ }
}
MarkTileDirty(_thd.pos.x, _thd.pos.y); // redraw tile selection
- e->we.keypress.cont = false;
break;
case WE_PLACE_OBJ:
@@ -368,20 +414,21 @@
}
}
+/** Widget definition of the build road toolbar */
static const Widget _build_road_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 205, 0, 13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_STICKYBOX, RESIZE_NONE, 7, 206, 217, 0, 13, 0x0, STR_STICKY_BUTTON},
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // RTW_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 7, 11, 205, 0, 13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION
+{ WWT_STICKYBOX, RESIZE_NONE, 7, 206, 217, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY
-{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_ROAD_NW, STR_180B_BUILD_ROAD_SECTION},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_ROAD_NE, STR_180B_BUILD_ROAD_SECTION},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_ROAD_DEPOT, STR_180C_BUILD_ROAD_VEHICLE_DEPOT},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_BUS_STATION, STR_180D_BUILD_BUS_STATION},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 131, 14, 35, SPR_IMG_TRUCK_BAY, STR_180E_BUILD_TRUCK_LOADING_BAY},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 132, 173, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_ROAD_BRIDGE},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 174, 195, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_ROAD_TUNNEL},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 196, 217, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR},
+{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_ROAD_NW, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_X
+{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_ROAD_NE, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_Y
+{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // RTW_DEMOLISH
+{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_ROAD_DEPOT, STR_180C_BUILD_ROAD_VEHICLE_DEPOT}, // RTW_DEPOT
+{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_BUS_STATION, STR_180D_BUILD_BUS_STATION}, // RTW_BUS_STATION
+{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 131, 14, 35, SPR_IMG_TRUCK_BAY, STR_180E_BUILD_TRUCK_LOADING_BAY}, // RTW_TRUCK_STATION
+{ WWT_IMGBTN, RESIZE_NONE, 7, 132, 173, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_ROAD_BRIDGE}, // RTW_BUILD_BRIDGE
+{ WWT_IMGBTN, RESIZE_NONE, 7, 174, 195, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_ROAD_TUNNEL}, // RTW_BUILD_TUNNEL
+{ WWT_IMGBTN, RESIZE_NONE, 7, 196, 217, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR}, // RTW_REMOVE
{ WIDGETS_END},
};
@@ -393,21 +440,21 @@
BuildRoadToolbWndProc
};
+/** Widget definition of the build tram toolbar */
static const Widget _build_tramway_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 205, 0, 13, STR_1802_TRAMWAY_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_STICKYBOX, RESIZE_NONE, 7, 206, 217, 0, 13, 0x0, STR_STICKY_BUTTON},
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // RTW_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 7, 11, 205, 0, 13, STR_1802_TRAMWAY_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION
+{ WWT_STICKYBOX, RESIZE_NONE, 7, 206, 217, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY
-{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_TRAMWAY_NW, STR_180B_BUILD_TRAMWAY_SECTION},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_TRAMWAY_NE, STR_180B_BUILD_TRAMWAY_SECTION},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_ROAD_DEPOT, STR_180C_BUILD_TRAM_VEHICLE_DEPOT},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_BUS_STATION, STR_180D_BUILD_PASSENGER_TRAM_STATION},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 131, 14, 35, SPR_IMG_TRUCK_BAY, STR_180E_BUILD_CARGO_TRAM_STATION},
-
-{ WWT_IMGBTN, RESIZE_NONE, 7, 132, 173, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_TRAMWAY_BRIDGE},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 174, 195, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_TRAMWAY_TUNNEL},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 196, 217, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS},
+{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_TRAMWAY_NW, STR_180B_BUILD_TRAMWAY_SECTION}, // RTW_ROAD_X
+{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_TRAMWAY_NE, STR_180B_BUILD_TRAMWAY_SECTION}, // RTW_ROAD_Y
+{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // RTW_DEMOLISH
+{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_ROAD_DEPOT, STR_180C_BUILD_TRAM_VEHICLE_DEPOT}, // RTW_DEPOT
+{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_BUS_STATION, STR_180D_BUILD_PASSENGER_TRAM_STATION}, // RTW_BUS_STATION
+{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 131, 14, 35, SPR_IMG_TRUCK_BAY, STR_180E_BUILD_CARGO_TRAM_STATION}, // RTW_TRUCK_STATION
+{ WWT_IMGBTN, RESIZE_NONE, 7, 132, 173, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_TRAMWAY_BRIDGE}, // RTW_BUILD_BRIDGE
+{ WWT_IMGBTN, RESIZE_NONE, 7, 174, 195, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_TRAMWAY_TUNNEL}, // RTW_BUILD_TUNNEL
+{ WWT_IMGBTN, RESIZE_NONE, 7, 196, 217, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS}, // RTW_REMOVE
{ WIDGETS_END},
};
@@ -429,20 +476,21 @@
if (_patches.link_terraform_toolbar) ShowTerraformToolbar(w);
}
+/** Widget definition of the build road toolbar in the scenario editor */
static const Widget _build_road_scen_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_STICKYBOX, RESIZE_NONE, 7, 140, 151, 0, 13, 0x0, STR_STICKY_BUTTON},
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // RTW_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION
+{ WWT_STICKYBOX, RESIZE_NONE, 7, 140, 151, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY
-{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_ROAD_NW, STR_180B_BUILD_ROAD_SECTION},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_ROAD_NE, STR_180B_BUILD_ROAD_SECTION},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC},
-{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
-{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
-{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 107, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_ROAD_BRIDGE},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 108, 129, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_ROAD_TUNNEL},
-{ WWT_IMGBTN, RESIZE_NONE, 7, 130, 151, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR},
+{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_ROAD_NW, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_X
+{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_ROAD_NE, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_Y
+{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // RTW_DEMOLISH
+{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // RTW_DEPOT
+{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // RTW_BUS_STATION
+{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // RTW_TRUCK_STATION
+{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 107, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_ROAD_BRIDGE}, // RTW_BUILD_BRIDGE
+{ WWT_IMGBTN, RESIZE_NONE, 7, 108, 129, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_ROAD_TUNNEL}, // RTW_BUILD_TUNNEL
+{ WWT_IMGBTN, RESIZE_NONE, 7, 130, 151, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR}, // RTW_REMOVE
{ WIDGETS_END},
};
@@ -460,10 +508,21 @@
AllocateWindowDescFront(&_build_road_scen_desc, 0);
}
+/** Enum referring to the widgets of the build road depot window */
+enum BuildRoadDepotWidgets {
+ BRDW_CLOSEBOX = 0,
+ BRDW_CAPTION,
+ BRDW_BACKGROUND,
+ BRDW_DEPOT_NE,
+ BRDW_DEPOT_SE,
+ BRDW_DEPOT_SW,
+ BRDW_DEPOT_NW,
+};
+
static void BuildRoadDepotWndProc(Window *w, WindowEvent *e)
{
switch (e->event) {
- case WE_CREATE: LowerWindowWidget(w, _road_depot_orientation + 3); break;
+ case WE_CREATE: LowerWindowWidget(w, _road_depot_orientation + BRDW_DEPOT_NE); break;
case WE_PAINT:
DrawWindowWidgets(w);
@@ -474,17 +533,20 @@
DrawRoadDepotSprite( 2, 17, DIAGDIR_NW, _cur_roadtype);
break;
- case WE_CLICK: {
+ case WE_CLICK:
switch (e->we.click.widget) {
- case 3: case 4: case 5: case 6:
- RaiseWindowWidget(w, _road_depot_orientation + 3);
- _road_depot_orientation = (DiagDirection)(e->we.click.widget - 3);
- LowerWindowWidget(w, _road_depot_orientation + 3);
- SndPlayFx(SND_15_BEEP);
- SetWindowDirty(w);
- break;
+ case BRDW_DEPOT_NW:
+ case BRDW_DEPOT_NE:
+ case BRDW_DEPOT_SW:
+ case BRDW_DEPOT_SE:
+ RaiseWindowWidget(w, _road_depot_orientation + BRDW_DEPOT_NE);
+ _road_depot_orientation = (DiagDirection)(e->we.click.widget - BRDW_DEPOT_NE);
+ LowerWindowWidget(w, _road_depot_orientation + BRDW_DEPOT_NE);
+ SndPlayFx(SND_15_BEEP);
+ SetWindowDirty(w);
+ break;
}
- } break;
+ break;
case WE_MOUSELOOP:
if (WP(w, def_d).close) DeleteWindow(w);
@@ -496,25 +558,27 @@
}
}
+/** Widget definition of the build road depot window */
static const Widget _build_road_depot_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1806_ROAD_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT},
-{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT},
-{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT},
-{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT},
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRDW_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1806_ROAD_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRDW_CAPTION
+{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL}, // BRDW_BACKGROUND
+{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_NE
+{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SE
+{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SW
+{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_NW
{ WIDGETS_END},
};
+/** Widget definition of the build tram depot window */
static const Widget _build_tram_depot_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1806_TRAM_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
-{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
-{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
-{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRDW_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1806_TRAM_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRDW_CAPTION
+{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL}, // BRDW_BACKGROUND
+{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_NE
+{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_SE
+{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_SW
+{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_NW
{ WIDGETS_END},
};
@@ -539,6 +603,22 @@
AllocateWindowDesc(_cur_roadtype == ROADTYPE_ROAD ? &_build_road_depot_desc : &_build_tram_depot_desc);
}
+/** Enum referring to the widgets of the build road station window */
+enum BuildRoadStationWidgets {
+ BRSW_CLOSEBOX = 0,
+ BRSW_CAPTION,
+ BRSW_BACKGROUND,
+ BRSW_STATION_NE,
+ BRSW_STATION_SE,
+ BRSW_STATION_SW,
+ BRSW_STATION_NW,
+ BRSW_STATION_X,
+ BRSW_STATION_Y,
+ BRSW_LT_OFF,
+ BRSW_LT_ON,
+ BRSW_INFO,
+};
+
static void RoadStationPickerWndProc(Window *w, WindowEvent *e)
{
switch (e->event) {
@@ -547,10 +627,15 @@
if (_cur_roadtype == ROADTYPE_TRAM && _road_station_picker_orientation < DIAGDIR_END) {
_road_station_picker_orientation = DIAGDIR_END;
}
- SetWindowWidgetsDisabledState(w, _cur_roadtype == ROADTYPE_TRAM, 3, 4, 5, 6, WIDGET_LIST_END);
+ SetWindowWidgetsDisabledState(w, _cur_roadtype == ROADTYPE_TRAM,
+ BRSW_STATION_NE,
+ BRSW_STATION_SE,
+ BRSW_STATION_SW,
+ BRSW_STATION_NW,
+ WIDGET_LIST_END);
- LowerWindowWidget(w, _road_station_picker_orientation + 3);
- LowerWindowWidget(w, _station_show_coverage + 9);
+ LowerWindowWidget(w, _road_station_picker_orientation + BRSW_STATION_NE);
+ LowerWindowWidget(w, _station_show_coverage + BRSW_LT_OFF);
break;
case WE_PAINT: {
@@ -583,20 +668,27 @@
case WE_CLICK: {
switch (e->we.click.widget) {
- case 3: case 4: case 5: case 6: case 7: case 8:
- RaiseWindowWidget(w, _road_station_picker_orientation + 3);
- _road_station_picker_orientation = (DiagDirection)(e->we.click.widget - 3);
- LowerWindowWidget(w, _road_station_picker_orientation + 3);
- SndPlayFx(SND_15_BEEP);
- SetWindowDirty(w);
- break;
- case 9: case 10:
- RaiseWindowWidget(w, _station_show_coverage + 9);
- _station_show_coverage = (e->we.click.widget != 9);
- LowerWindowWidget(w, _station_show_coverage + 9);
- SndPlayFx(SND_15_BEEP);
- SetWindowDirty(w);
- break;
+ case BRSW_STATION_NE:
+ case BRSW_STATION_SE:
+ case BRSW_STATION_SW:
+ case BRSW_STATION_NW:
+ case BRSW_STATION_X:
+ case BRSW_STATION_Y:
+ RaiseWindowWidget(w, _road_station_picker_orientation + BRSW_STATION_NE);
+ _road_station_picker_orientation = (DiagDirection)(e->we.click.widget - BRSW_STATION_NE);
+ LowerWindowWidget(w, _road_station_picker_orientation + BRSW_STATION_NE);
+ SndPlayFx(SND_15_BEEP);
+ SetWindowDirty(w);
+ break;
+
+ case BRSW_LT_OFF:
+ case BRSW_LT_ON:
+ RaiseWindowWidget(w, _station_show_coverage + BRSW_LT_OFF);
+ _station_show_coverage = (e->we.click.widget != BRSW_LT_OFF);
+ LowerWindowWidget(w, _station_show_coverage + BRSW_LT_OFF);
+ SndPlayFx(SND_15_BEEP);
+ SetWindowDirty(w);
+ break;
}
} break;
@@ -615,19 +707,22 @@
}
}
+/** Widget definition of the build raod station window */
static const Widget _rv_station_picker_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_NONE, 7, 11, 206, 0, 13, STR_NULL, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_NONE, 7, 0, 206, 14, 176, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 139, 204, 17, 66, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 14, 139, 204, 69, 118, 0x0, STR_NULL},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 10, 69, 133, 144, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
-{ WWT_TEXTBTN, RESIZE_NONE, 14, 70, 129, 133, 144, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
-{ WWT_LABEL, RESIZE_NONE, 7, 0, 139, 120, 133, STR_3066_COVERAGE_AREA_HIGHLIGHT, STR_NULL},
+{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRSW_CLOSEBOX
+{ WWT_CAPTION, RESIZE_NONE, 7, 11, 206, 0, 13, STR_NULL, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRSW_CAPTION
+{ WWT_PANEL, RESIZE_NONE, 7, 0, 206, 14, 176, 0x0, STR_NULL}, // BRSW_BACKGROUND
+
+{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_NULL}, // BRSW_STATION_NE
+{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_NULL}, // BRSW_STATION_SE
+{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_NULL}, // BRSW_STATION_SW
+{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_NULL}, // BRSW_STATION_NW
+{ WWT_PANEL, RESIZE_NONE, 14, 139, 204, 17, 66, 0x0, STR_NULL}, // BRSW_STATION_X
+{ WWT_PANEL, RESIZE_NONE, 14, 139, 204, 69, 118, 0x0, STR_NULL}, // BRSW_STATION_Y
+
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 10, 69, 133, 144, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE}, // BRSW_LT_OFF
+{ WWT_TEXTBTN, RESIZE_NONE, 14, 70, 129, 133, 144, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA}, // BRSW_LT_ON
+{ WWT_LABEL, RESIZE_NONE, 7, 0, 139, 120, 133, STR_3066_COVERAGE_AREA_HIGHLIGHT, STR_NULL}, // BRSW_INFO
{ WIDGETS_END},
};
@@ -645,8 +740,8 @@
if (w == NULL) return;
w->window_class = (rs == RoadStop::BUS) ? WC_BUS_STATION : WC_TRUCK_STATION;
- w->widget[1].data = _road_type_infos[_cur_roadtype].picker_title[rs];
- for (uint i = 3; i < 9; i++) w->widget[i].tooltips = _road_type_infos[_cur_roadtype].picker_tooltip[rs];
+ w->widget[BRSW_CAPTION].data = _road_type_infos[_cur_roadtype].picker_title[rs];
+ for (uint i = BRSW_STATION_NE; i < BRSW_LT_OFF; i++) w->widget[i].tooltips = _road_type_infos[_cur_roadtype].picker_tooltip[rs];
}
void InitializeRoadGui()
--- a/src/roadveh_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/roadveh_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -360,6 +360,8 @@
if (v->type != VEH_ROAD || !CheckOwnership(v->owner)) return CMD_ERROR;
+ if (HASBITS(v->vehstatus, VS_CRASHED)) return_cmd_error(STR_CAN_T_SELL_DESTROYED_VEHICLE);
+
SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
if (!CheckRoadVehInDepotStopped(v)) {
--- a/src/saveload.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/saveload.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -29,7 +29,7 @@
#include "strings.h"
#include <list>
-extern const uint16 SAVEGAME_VERSION = 79;
+extern const uint16 SAVEGAME_VERSION = 81;
uint16 _sl_version; ///< the major savegame version identifier
byte _sl_minor_version; ///< the minor savegame version, DO NOT USE!
--- a/src/settings.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/settings.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -41,6 +41,7 @@
#include "genworld.h"
#include "date.h"
#include "rail.h"
+#include "train.h"
#include "helpers.hpp"
#include "news.h"
#ifdef WITH_FREETYPE
@@ -1129,6 +1130,16 @@
return 0;
}
+static int32 UpdateConsists(int32 p1)
+{
+ Vehicle *v;
+ FOR_ALL_VEHICLES(v) {
+ /* Update the consist of all trains so the maximum speed is set correctly. */
+ if (v->type == VEH_TRAIN && (IsFrontEngine(v) || IsFreeWagon(v))) TrainConsistChanged(v);
+ }
+ return 0;
+}
+
/* Check service intervals of vehicles, p1 is value of % or day based servicing */
static int32 CheckInterval(int32 p1)
{
@@ -1257,6 +1268,7 @@
SDTG_BOOL("large_aa", S, 0, _freetype.large_aa, false, STR_NULL, NULL),
#endif
SDTG_VAR("sprite_cache_size",SLE_UINT, S, 0, _sprite_cache_size, 4, 1, 64, 0, STR_NULL, NULL),
+ SDTG_VAR("player_face", SLE_UINT32, S, 0, _player_face, 0,0,0xFFFFFFFF,0, STR_NULL, NULL),
SDTG_END()
};
@@ -1297,8 +1309,8 @@
* XXX - To save file-space and since values are never bigger than about 10? only
* save the first 16 bits in the savegame. Question is why the values are still int32
* and why not byte for example? */
- SDT_GENERAL("diff_custom", SDT_INTLIST, SL_ARR, (SLE_FILE_I16 | SLE_VAR_I32), 0, 0, GameOptions, diff, 17, 0, 0, 0, 0, NULL, STR_NULL, NULL, NULL, 0, 3),
- SDT_GENERAL("diff_custom", SDT_INTLIST, SL_ARR, (SLE_FILE_I16 | SLE_VAR_I32), 0, 0, GameOptions, diff, 18, 0, 0, 0, 0, NULL, STR_NULL, NULL, NULL, 4, SL_MAX_VERSION),
+ SDT_GENERAL("diff_custom", SDT_INTLIST, SL_ARR, SLE_UINT16, 0, 0, GameOptions, diff, 17, 0, 0, 0, 0, NULL, STR_NULL, NULL, NULL, 0, 3),
+ SDT_GENERAL("diff_custom", SDT_INTLIST, SL_ARR, SLE_UINT16, 0, 0, GameOptions, diff, 18, 0, 0, 0, 0, NULL, STR_NULL, NULL, NULL, 4, SL_MAX_VERSION),
SDT_VAR(GameOptions, diff_level, SLE_UINT8, 0, 0, 0, 0, 3, 0, STR_NULL, NULL),
SDT_OMANY(GameOptions, currency, SLE_UINT8, N, 0, 0, CUSTOM_CURRENCY_ID, "GBP|USD|EUR|YEN|ATS|BEF|CHF|CZK|DEM|DKK|ESP|FIM|FRF|GRD|HUF|ISK|ITL|NLG|NOK|PLN|ROL|RUR|SIT|SEK|YTL|SKK|BRR|custom", STR_NULL, NULL, NULL),
SDT_OMANY(GameOptions, units, SLE_UINT8, N, 0, 1, 2, "imperial|metric|si", STR_NULL, NULL, NULL),
@@ -1396,7 +1408,7 @@
SDT_VAR(Patches, servint_ships, SLE_UINT16, 0,D0, 360, 5, 800, 0, STR_CONFIG_PATCHES_SERVINT_SHIPS, InValidateDetailsWindow),
SDT_VAR(Patches, servint_aircraft, SLE_UINT16, 0,D0, 100, 5, 800, 0, STR_CONFIG_PATCHES_SERVINT_AIRCRAFT, InValidateDetailsWindow),
SDT_BOOL(Patches, no_servicing_if_no_breakdowns, 0, 0, false, STR_CONFIG_PATCHES_NOSERVICE, NULL),
- SDT_BOOL(Patches, wagon_speed_limits, 0, 0, true, STR_CONFIG_PATCHES_WAGONSPEEDLIMITS, NULL),
+ SDT_BOOL(Patches, wagon_speed_limits, 0, 0, true, STR_CONFIG_PATCHES_WAGONSPEEDLIMITS, UpdateConsists),
SDT_CONDBOOL(Patches, disable_elrails, 38, SL_MAX_VERSION, 0, 0, false, STR_CONFIG_PATCHES_DISABLE_ELRAILS, SettingsDisableElrail),
SDT_CONDVAR(Patches, freight_trains, SLE_UINT8, 39, SL_MAX_VERSION, 0, 0, 1, 1, 255, 1, STR_CONFIG_PATCHES_FREIGHT_TRAINS, NULL),
SDT_CONDBOOL(Patches, timetabling, 67, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_PATCHES_TIMETABLE_ALLOW, NULL),
--- a/src/settings_gui.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/settings_gui.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -399,7 +399,7 @@
* Q: disasters
* R: area restructuring (0 = permissive, 2 = hostile)
*/
-static const int16 _default_game_diff[3][GAME_DIFFICULTY_NUM] = { /*
+static const GDType _default_game_diff[3][GAME_DIFFICULTY_NUM] = { /*
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R*/
{2, 2, 1, 4, 300, 2, 0, 2, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0}, ///< easy
{4, 1, 1, 3, 150, 3, 1, 3, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1}, ///< medium
@@ -414,7 +414,7 @@
gm_opt->diff_level = mode;
if (mode != 3) { // not custom
for (i = 0; i != GAME_DIFFICULTY_NUM; i++)
- ((int*)&gm_opt->diff)[i] = _default_game_diff[mode][i];
+ ((GDType*)&gm_opt->diff)[i] = _default_game_diff[mode][i];
}
}
@@ -428,7 +428,7 @@
SetDifficultyLevel(_opt_newgame.diff_level, &_opt_newgame);
} else {
for (uint i = 0; i < GAME_DIFFICULTY_NUM; i++) {
- int *diff = ((int*)&_opt_newgame.diff) + i;
+ GDType *diff = ((GDType*)&_opt_newgame.diff) + i;
*diff = clamp(*diff, _game_setting_info[i].min, _game_setting_info[i].max);
*diff -= *diff % _game_setting_info[i].step;
}
@@ -489,7 +489,7 @@
DrawStringCentered(20, y, STR_681A, 0);
- value = _game_setting_info[i].str + ((int*)&_opt_mod_temp.diff)[i];
+ value = _game_setting_info[i].str + ((GDType*)&_opt_mod_temp.diff)[i];
if (i == 4) value *= 1000; // XXX - handle currency option
SetDParam(0, value);
DrawString(30, y, STR_6805_MAXIMUM_NO_COMPETITORS + i, 0);
@@ -531,7 +531,7 @@
_difficulty_timeout = 5;
- val = ((int*)&_opt_mod_temp.diff)[btn];
+ val = ((GDType*)&_opt_mod_temp.diff)[btn];
info = &_game_setting_info[btn]; // get information about the difficulty setting
if (x >= 10) {
@@ -546,7 +546,7 @@
}
// save value in temporary variable
- ((int*)&_opt_mod_temp.diff)[btn] = val;
+ ((GDType*)&_opt_mod_temp.diff)[btn] = val;
RaiseWindowWidget(w, _opt_mod_temp.diff_level + 3);
SetDifficultyLevel(3, &_opt_mod_temp); // set difficulty level to custom
LowerWindowWidget(w, _opt_mod_temp.diff_level + 3);
@@ -563,11 +563,11 @@
ShowHighscoreTable(_opt_mod_temp.diff_level, -1);
break;
case 10: { /* Save button - save changes */
- int btn, val;
+ GDType btn, val;
for (btn = 0; btn != GAME_DIFFICULTY_NUM; btn++) {
- val = ((int*)&_opt_mod_temp.diff)[btn];
+ val = ((GDType*)&_opt_mod_temp.diff)[btn];
// if setting has changed, change it
- if (val != ((int*)&_opt_ptr->diff)[btn])
+ if (val != ((GDType*)&_opt_ptr->diff)[btn])
DoCommandP(0, btn, val, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
}
DoCommandP(0, UINT_MAX, _opt_mod_temp.diff_level, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
--- a/src/ship_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/ship_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -911,6 +911,8 @@
if (v->type != VEH_SHIP || !CheckOwnership(v->owner)) return CMD_ERROR;
+ if (HASBITS(v->vehstatus, VS_CRASHED)) return_cmd_error(STR_CAN_T_SELL_DESTROYED_VEHICLE);
+
SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
if (!v->IsStoppedInDepot()) {
--- a/src/slope.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/slope.h Sat Oct 20 10:42:28 2007 +0000
@@ -48,9 +48,21 @@
CORNER_S = 1,
CORNER_E = 2,
CORNER_N = 3,
+ CORNER_END
};
/**
+ * Rangecheck for Corner enumeration.
+ *
+ * @param corner A #Corner.
+ * @return true iff corner is in a valid range.
+ */
+static inline bool IsValidCorner(Corner corner)
+{
+ return IS_INT_INSIDE(corner, 0, CORNER_END);
+}
+
+/**
* Checks if a slope is steep.
*
* @param s The given #Slope.
@@ -79,6 +91,17 @@
}
/**
+ * Tests if a slope has a highest corner (i.e. one corner raised or a steep slope).
+ *
+ * @param s The #Slope.
+ * @return true iff the slope has a highest corner.
+ */
+static inline bool HasSlopeHighestCorner(Slope s)
+{
+ return IsSteepSlope(s) || (s == SLOPE_W) || (s == SLOPE_S) || (s == SLOPE_E) || (s == SLOPE_N);
+}
+
+/**
* Returns the highest corner of a slope (one corner raised or a steep slope).
*
* @pre The slope must be a slope with one corner raised or a steep slope.
@@ -132,7 +155,7 @@
*/
static inline Slope SlopeWithOneCornerRaised(Corner corner)
{
- assert(IS_INT_INSIDE(corner, 0, 4));
+ assert(IsValidCorner(corner));
return (Slope)(1 << corner);
}
@@ -158,6 +181,8 @@
FOUNDATION_INCLINED_Y, ///< The tile has an along Y-axis inclined foundation.
FOUNDATION_STEEP_LOWER, ///< The tile has a steep slope. The lowerst corner is raised by a foundation to allow building railroad on the lower halftile.
FOUNDATION_STEEP_HIGHER, ///< The tile has a steep slope. Three corners are raised by a foundation to allow building railroad on the higher halftile.
+
+ FOUNDATION_INVALID = 0xFF ///< Used inside "rail_cmd.cpp" to indicate invalid slope/track combination.
};
/**
--- a/src/station_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/station_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -1128,7 +1128,7 @@
/* Check ownership of station */
Station *st = GetStationByTile(tile2);
- if (_current_player != OWNER_WATER && (!CheckOwnership(st->owner) || !EnsureNoVehicle(tile2))) {
+ if (_current_player != OWNER_WATER && (!CheckOwnership(st->owner) || !EnsureNoVehicleOnGround(tile2))) {
continue;
}
@@ -1191,7 +1191,7 @@
do {
// for nonuniform stations, only remove tiles that are actually train station tiles
if (st->TileBelongsToRailStation(tile)) {
- if (!EnsureNoVehicle(tile))
+ if (!EnsureNoVehicleOnGround(tile))
return CMD_ERROR;
cost.AddCost(_price.remove_rail_station);
if (flags & DC_EXEC) {
@@ -1245,7 +1245,7 @@
VehicleFromPos(tile, &tile, UpdateTrainPowerProc);
}
- return CommandCost(_price.build_rail / 2);
+ return CommandCost(RailBuildCost(totype) / 2);
}
/**
@@ -1425,7 +1425,7 @@
assert(cur_stop != NULL);
- if (!EnsureNoVehicle(tile)) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
if (flags & DC_EXEC) {
if (*primary_stop == cur_stop) {
@@ -1769,7 +1769,7 @@
{
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
- if (!IsClearWaterTile(tile) || tile == 0) return_cmd_error(STR_304B_SITE_UNSUITABLE);
+ if (!IsWaterTile(tile) || tile == 0) return_cmd_error(STR_304B_SITE_UNSUITABLE);
if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
/* allocate and initialize new station */
@@ -1832,7 +1832,7 @@
TileIndex tile = st->dock_tile;
if (CheckShipsOnBuoy(st)) return_cmd_error(STR_BUOY_IS_IN_USE);
- if (!EnsureNoVehicle(tile)) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
if (flags & DC_EXEC) {
st->dock_tile = 0;
@@ -1980,8 +1980,8 @@
TileIndex tile1 = st->dock_tile;
TileIndex tile2 = tile1 + TileOffsByDiagDir(GetDockDirection(tile1));
- if (!EnsureNoVehicle(tile1)) return CMD_ERROR;
- if (!EnsureNoVehicle(tile2)) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile1)) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile2)) return CMD_ERROR;
if (flags & DC_EXEC) {
DoClearSquare(tile1);
@@ -2088,7 +2088,7 @@
DrawTramCatenary(ti, axis == AXIS_X ? ROAD_X : ROAD_Y);
}
- if (IsBuoyTile(ti->tile) && (ti->z != 0 || !IsTileOwner(ti->tile, OWNER_WATER))) DrawCanalWater(ti->tile);
+ if (IsCanalBuoyTile(ti->tile)) DrawCanalWater(ti->tile);
const DrawTileSeqStruct *dtss;
foreach_draw_tile_seq(dtss, t->seq) {
--- a/src/station_map.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/station_map.h Sat Oct 20 10:42:28 2007 +0000
@@ -154,6 +154,15 @@
return IsTileType(t, MP_STATION) && IsBuoy(t);
}
+static inline bool IsCanalBuoyTile(TileIndex t)
+{
+ return IsBuoyTile(t) && !IsTileOwner(t, OWNER_WATER);
+}
+
+static inline bool IsSeaBuoyTile(TileIndex t)
+{
+ return IsBuoyTile(t) && IsTileOwner(t, OWNER_WATER);
+}
static inline bool IsHangarTile(TileIndex t)
{
--- a/src/strgen/strgen.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/strgen/strgen.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -1014,7 +1014,6 @@
FILE *out;
int i;
int next = -1;
- int lastgrp;
out = fopen("tmp.xxx", "w");
if (out == NULL) fatal("can't open tmp.xxx");
@@ -1023,8 +1022,6 @@
fprintf(out, "#ifndef TABLE_STRINGS_H\n");
fprintf(out, "#define TABLE_STRINGS_H\n");
- lastgrp = 0;
-
for (i = 0; i != lengthof(_strings); i++) {
if (_strings[i] != NULL) {
if (next != i) fprintf(out, "\n");
@@ -1033,6 +1030,8 @@
}
}
+ fprintf(out, "\nstatic const StringID STR_LAST_STRINGID = 0x%X;\n", next - 1);
+
fprintf(out,
"\nenum {\n"
"\tLANGUAGE_PACK_IDENT = 0x474E414C, // Big Endian value for 'LANG' (LE is 0x 4C 41 4E 47)\n"
--- a/src/table/sprites.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/table/sprites.h Sat Oct 20 10:42:28 2007 +0000
@@ -538,14 +538,14 @@
/* Shores */
SPR_NO_SHORE = 0, //used for tileh which have no shore
- SPR_SHORE_TILEH_4 = 4062,
- SPR_SHORE_TILEH_1 = 4063,
- SPR_SHORE_TILEH_2 = 4064,
- SPR_SHORE_TILEH_8 = 4065,
- SPR_SHORE_TILEH_6 = 4066,
- SPR_SHORE_TILEH_12 = 4067,
- SPR_SHORE_TILEH_3 = 4068,
- SPR_SHORE_TILEH_9 = 4069,
+ SPR_SHORE_TILEH_4 = 4062, // SLOPE_E
+ SPR_SHORE_TILEH_1 = 4063, // SLOPE_W
+ SPR_SHORE_TILEH_2 = 4064, // SLOPE_S
+ SPR_SHORE_TILEH_8 = 4065, // SLOPE_N
+ SPR_SHORE_TILEH_6 = 4066, // SLOPE_SE
+ SPR_SHORE_TILEH_12 = 4067, // SLOPE_NE
+ SPR_SHORE_TILEH_3 = 4068, // SLOPE_SW
+ SPR_SHORE_TILEH_9 = 4069, // SLOPE_NW
/* Water-related sprites */
SPR_SHIP_DEPOT_SE_FRONT = 4070,
--- a/src/texteff.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/texteff.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -25,7 +25,6 @@
MAX_TEXTMESSAGE_LENGTH = 200,
INIT_NUM_TEXT_MESSAGES = 20,
MAX_CHAT_MESSAGES = 10,
- MAX_ANIMATED_TILES = 256,
};
struct TextEffect {
@@ -50,7 +49,6 @@
/* used for text effects */
static TextEffect *_text_effect_list = NULL;
static uint16 _num_text_effects = INIT_NUM_TEXT_MESSAGES;
-TileIndex _animated_tile_list[MAX_ANIMATED_TILES];
/* used for chat window */
static ChatMessage _chatmsg_list[MAX_CHAT_MESSAGES];
@@ -422,62 +420,127 @@
}
}
+/** The table/list with animated tiles. */
+TileIndex *_animated_tile_list = NULL;
+/** The number of animated tiles in the current state. */
+uint _animated_tile_count = 0;
+/** The number of slots for animated tiles allocated currently. */
+static uint _animated_tile_allocated = 0;
+
+/**
+ * Removes the given tile from the animated tile table.
+ * @param tile the tile to remove
+ */
void DeleteAnimatedTile(TileIndex tile)
{
- TileIndex *ti;
-
- for (ti = _animated_tile_list; ti != endof(_animated_tile_list); ti++) {
+ for (TileIndex *ti = _animated_tile_list; ti < _animated_tile_list + _animated_tile_count; ti++) {
if (tile == *ti) {
- /* remove the hole */
- memmove(ti, ti + 1, (lastof(_animated_tile_list) - ti) * sizeof(*ti));
- /* and clear last item */
- *lastof(_animated_tile_list) = 0;
+ /* Remove the hole
+ * The order of the remaining elements must stay the same, otherwise the animation loop
+ * may miss a tile; that's why we must use memmove instead of just moving the last element.
+ */
+ memmove(ti, ti + 1, (_animated_tile_list + _animated_tile_count - (ti + 1)) * sizeof(*ti));
+ _animated_tile_count--;
MarkTileDirtyByTile(tile);
return;
}
}
}
-bool AddAnimatedTile(TileIndex tile)
+/**
+ * Add the given tile to the animated tile table (if it does not exist
+ * on that table yet). Also increases the size of the table if necessary.
+ * @param tile the tile to make animated
+ */
+void AddAnimatedTile(TileIndex tile)
{
- TileIndex *ti;
+ MarkTileDirtyByTile(tile);
- for (ti = _animated_tile_list; ti != endof(_animated_tile_list); ti++) {
- if (tile == *ti || *ti == 0) {
- *ti = tile;
- MarkTileDirtyByTile(tile);
- return true;
- }
+ for (const TileIndex *ti = _animated_tile_list; ti < _animated_tile_list + _animated_tile_count; ti++) {
+ if (tile == *ti) return;
}
- return false;
+ /* Table not large enough, so make it larger */
+ if (_animated_tile_count == _animated_tile_allocated) {
+ _animated_tile_allocated *= 2;
+ _animated_tile_list = ReallocT<TileIndex>(_animated_tile_list, _animated_tile_allocated);
+ }
+
+ _animated_tile_list[_animated_tile_count] = tile;
+ _animated_tile_count++;
}
+/**
+ * Animate all tiles in the animated tile list, i.e.\ call AnimateTile on them.
+ */
void AnimateAnimatedTiles()
{
- const TileIndex* ti;
-
- for (ti = _animated_tile_list; ti != endof(_animated_tile_list) && *ti != 0; ti++) {
- AnimateTile(*ti);
+ const TileIndex *ti = _animated_tile_list;
+ while (ti < _animated_tile_list + _animated_tile_count) {
+ const TileIndex curr = *ti;
+ AnimateTile(curr);
+ /* During the AnimateTile call, DeleteAnimatedTile could have been called,
+ * deleting an element we've already processed and pushing the rest one
+ * slot to the left. We can detect this by checking whether the index
+ * in the current slot has changed - if it has, an element has been deleted,
+ * and we should process the current slot again instead of going forward.
+ * NOTE: this will still break if more than one animated tile is being
+ * deleted during the same AnimateTile call, but no code seems to
+ * be doing this anyway.
+ */
+ if (*ti == curr) ++ti;
}
}
+/**
+ * Initialize all animated tile variables to some known begin point
+ */
void InitializeAnimatedTiles()
{
- memset(_animated_tile_list, 0, sizeof(_animated_tile_list));
+ _animated_tile_list = ReallocT<TileIndex>(_animated_tile_list, 256);
+ _animated_tile_count = 0;
+ _animated_tile_allocated = 256;
}
-static void SaveLoad_ANIT()
+/**
+ * Save the ANIT chunk.
+ */
+static void Save_ANIT()
{
- /* In pre version 6, we has 16bit per tile, now we have 32bit per tile, convert it ;) */
- if (CheckSavegameVersion(6)) {
- SlArray(_animated_tile_list, lengthof(_animated_tile_list), SLE_FILE_U16 | SLE_VAR_U32);
- } else {
- SlArray(_animated_tile_list, lengthof(_animated_tile_list), SLE_UINT32);
- }
+ SlSetLength(_animated_tile_count * sizeof(*_animated_tile_list));
+ SlArray(_animated_tile_list, _animated_tile_count, SLE_UINT32);
}
+/**
+ * Load the ANIT chunk; the chunk containing the animated tiles.
+ */
+static void Load_ANIT()
+{
+ /* Before version 80 we did NOT have a variable length animated tile table */
+ if (CheckSavegameVersion(80)) {
+ /* In pre version 6, we has 16bit per tile, now we have 32bit per tile, convert it ;) */
+ SlArray(_animated_tile_list, 256, CheckSavegameVersion(6) ? (SLE_FILE_U16 | SLE_VAR_U32) : SLE_UINT32);
+ for (_animated_tile_count = 0; _animated_tile_count < 256; _animated_tile_count++) {
+ if (_animated_tile_list[_animated_tile_count] == 0) break;
+ }
+ return;
+ }
+
+ _animated_tile_count = SlGetFieldLength() / sizeof(*_animated_tile_list);
+
+ /* Determine a nice rounded size for the amount of allocated tiles */
+ _animated_tile_allocated = 256;
+ while (_animated_tile_allocated < _animated_tile_count) _animated_tile_allocated *= 2;
+
+ _animated_tile_list = ReallocT<TileIndex>(_animated_tile_list, _animated_tile_allocated);
+ SlArray(_animated_tile_list, _animated_tile_count, SLE_UINT32);
+}
+
+/**
+ * "Definition" imported by the saveload code to be able to load and save
+ * the animated tile table.
+ */
extern const ChunkHandler _animated_tile_chunk_handlers[] = {
- { 'ANIT', SaveLoad_ANIT, SaveLoad_ANIT, CH_RIFF | CH_LAST},
+ { 'ANIT', Save_ANIT, Load_ANIT, CH_RIFF | CH_LAST},
};
--- a/src/town_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/town_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -42,6 +42,7 @@
#include "newgrf_townname.h"
#include "misc/autoptr.hpp"
#include "autoslope.h"
+#include "waypoint.h"
/* Initialize the town-pool */
DEFINE_OLD_POOL_GENERIC(Town, Town)
@@ -932,7 +933,7 @@
return false;
}
bridge_tile = TILE_MASK(bridge_tile + TileOffsByDiagDir(bridge_dir));
- } while (IsClearWaterTile(bridge_tile));
+ } while (IsWaterTile(bridge_tile));
/* no water tiles in between? */
if (bridge_length == 1) return false;
@@ -1071,7 +1072,7 @@
TileIndex house_tile = TileAddByDiagDir(tile, target_dir); // position of a possible house
/* Don't walk into water. */
- if (IsClearWaterTile(house_tile)) return;
+ if (IsWaterTile(house_tile)) return;
switch (_patches.town_layout) {
default: NOT_REACHED();
@@ -1120,7 +1121,7 @@
}
/* Return if a water tile */
- if (IsClearWaterTile(tile)) return;
+ if (IsWaterTile(tile)) return;
/* Make the roads look nicer */
rcmd = CleanUpRoadBits(tile, rcmd);
@@ -1706,7 +1707,10 @@
hs = GetHouseSpecs(house);
if (_loaded_newgrf_features.has_newhouses) {
- if (hs->override != 0) hs = GetHouseSpecs(hs->override);
+ if (hs->override != 0) {
+ house = hs->override;
+ hs = GetHouseSpecs(house);
+ }
if ((hs->extra_flags & BUILDING_IS_HISTORICAL) && !_generating_world) continue;
@@ -1899,6 +1903,7 @@
UpdateTownVirtCoord(t);
_town_sort_dirty = true;
UpdateAllStationVirtCoord();
+ UpdateAllWaypointSigns();
MarkWholeScreenDirty();
} else {
DeleteName(str);
--- a/src/train_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/train_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -534,7 +534,8 @@
Vehicle *w;
FOR_ALL_VEHICLES(w) {
if (w->type == VEH_TRAIN && w->tile == tile &&
- IsFreeWagon(w) && w->engine_type == engine) {
+ IsFreeWagon(w) && w->engine_type == engine &&
+ !HASBITS(w->vehstatus, VS_CRASHED)) { /// do not connect new wagon with crashed/flooded consists
u = GetLastVehicleInChain(w);
break;
}
@@ -855,7 +856,7 @@
TileIndex tile = src->tile;
FOR_ALL_VEHICLES(dst) {
- if (dst->type == VEH_TRAIN && IsFreeWagon(dst) && dst->tile == tile) {
+ if (dst->type == VEH_TRAIN && IsFreeWagon(dst) && dst->tile == tile && !HASBITS(dst->vehstatus, VS_CRASHED)) {
/* check so all vehicles in the line have the same engine. */
Vehicle *v = dst;
@@ -926,6 +927,9 @@
if (src->type != VEH_TRAIN || !CheckOwnership(src->owner)) return CMD_ERROR;
+ /* Do not allow moving crashed vehicles inside the depot, it is likely to cause asserts later */
+ if (HASBITS(src->vehstatus, VS_CRASHED)) return CMD_ERROR;
+
/* if nothing is selected as destination, try and find a matching vehicle to drag to. */
Vehicle *dst;
if (d == INVALID_VEHICLE) {
@@ -934,6 +938,9 @@
if (!IsValidVehicleID(d)) return CMD_ERROR;
dst = GetVehicle(d);
if (dst->type != VEH_TRAIN || !CheckOwnership(dst->owner)) return CMD_ERROR;
+
+ /* Do not allow appending to crashed vehicles, too */
+ if (HASBITS(dst->vehstatus, VS_CRASHED)) return CMD_ERROR;
}
/* if an articulated part is being handled, deal with its parent vehicle */
@@ -1217,6 +1224,8 @@
if (v->type != VEH_TRAIN || !CheckOwnership(v->owner)) return CMD_ERROR;
+ if (HASBITS(v->vehstatus, VS_CRASHED)) return_cmd_error(STR_CAN_T_SELL_DESTROYED_VEHICLE);
+
SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
while (IsArticulatedPart(v)) v = v->Previous();
@@ -3346,8 +3355,8 @@
if (this->type == VEH_TRAIN && IsFrontEngine(this))
TrainLocoHandler(this, true);
} else if (IsFreeWagon(this) && HASBITS(this->vehstatus, VS_CRASHED)) {
- /* Delete flooded standalone wagon */
- if (++this->u.rail.crash_anim_pos >= 4400) delete this;
+ /* Delete flooded standalone wagon chain */
+ if (++this->u.rail.crash_anim_pos >= 4400) DeleteVehicleChain(this);
}
}
--- a/src/tree_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/tree_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -85,7 +85,7 @@
SetTreeGroundDensity(tile, TREE_GROUND_SNOW_DESERT, 3);
SetTreeCounter(tile, (TreeGround)GB(r, 24, 3));
} else {
- SetTreeGroundDensity(tile, (TreeGround)GB(r, 28, 1), 0);
+ SetTreeGroundDensity(tile, (TreeGround)GB(r, 28, 1), 3);
SetTreeCounter(tile, (TreeGround)GB(r, 24, 4));
}
}
@@ -346,9 +346,10 @@
growth = _game_mode == GM_EDITOR ? 3 : 0;
switch (GetClearGround(tile)) {
- case CLEAR_ROUGH: MakeTree(tile, treetype, 0, growth, TREE_GROUND_ROUGH, 0); break;
- case CLEAR_SNOW: MakeTree(tile, treetype, 0, growth, TREE_GROUND_SNOW_DESERT, GetClearDensity(tile)); break;
- default: MakeTree(tile, treetype, 0, growth, TREE_GROUND_GRASS, 0); break;
+ case CLEAR_ROUGH: MakeTree(tile, treetype, 0, growth, TREE_GROUND_ROUGH, 3); break;
+ case CLEAR_SNOW:
+ case CLEAR_DESERT: MakeTree(tile, treetype, 0, growth, TREE_GROUND_SNOW_DESERT, GetClearDensity(tile)); break;
+ default: MakeTree(tile, treetype, 0, growth, TREE_GROUND_GRASS, GetClearDensity(tile)); break;
}
MarkTileDirtyByTile(tile);
@@ -385,7 +386,7 @@
byte z;
switch (GetTreeGround(ti->tile)) {
- case TREE_GROUND_GRASS: DrawClearLandTile(ti, 3); break;
+ case TREE_GROUND_GRASS: DrawClearLandTile(ti, GetTreeDensity(ti->tile)); break;
case TREE_GROUND_ROUGH: DrawHillyLandTile(ti); break;
default: DrawGroundSprite(_tree_sprites_1[GetTreeDensity(ti->tile)] + _tileh_to_sprite[ti->tileh], PAL_NONE); break;
}
@@ -510,10 +511,8 @@
if (IS_INT_INSIDE(tt, TREE_RAINFOREST, TREE_CACTUS)) {
td->str = STR_280F_RAINFOREST;
- } else if (tt == TREE_CACTUS) {
- td->str = STR_2810_CACTUS_PLANTS;
} else {
- td->str = STR_280E_TREES;
+ td->str = tt == TREE_CACTUS ? STR_2810_CACTUS_PLANTS : STR_280E_TREES;
}
td->owner = GetTileOwner(tile);
@@ -557,7 +556,7 @@
if (k < 0) {
if (GetTreeGround(tile) != TREE_GROUND_SNOW_DESERT) return;
- SetTreeGroundDensity(tile, TREE_GROUND_GRASS, 0);
+ SetTreeGroundDensity(tile, TREE_GROUND_GRASS, 3);
} else {
uint density = min((uint)k / TILE_HEIGHT, 3);
@@ -586,6 +585,16 @@
TileLoopClearHelper(tile);
+ uint treeCounter = GetTreeCounter(tile);
+
+ /* Handle growth of grass at every 8th processings, like it's done for grass */
+ if ((treeCounter & 7) == 7 && GetTreeGround(tile) == TREE_GROUND_GRASS) {
+ uint density = GetTreeDensity(tile);
+ if (density < 3) {
+ SetTreeGroundDensity(tile, TREE_GROUND_GRASS, density + 1);
+ MarkTileDirtyByTile(tile);
+ }
+ }
if (GetTreeCounter(tile) < 15) {
AddTreeCounter(tile, 1);
return;
@@ -622,11 +631,12 @@
switch (GetClearGround(tile)) {
case CLEAR_GRASS:
if (GetClearDensity(tile) != 3) return;
- MakeTree(tile, treetype, 0, 0, TREE_GROUND_GRASS, 0);
+ MakeTree(tile, treetype, 0, 0, TREE_GROUND_GRASS, 3);
break;
- case CLEAR_ROUGH: MakeTree(tile, treetype, 0, 0, TREE_GROUND_ROUGH, 0); break;
- case CLEAR_SNOW: MakeTree(tile, treetype, 0, 0, TREE_GROUND_SNOW_DESERT, GetClearDensity(tile)); break;
+ case CLEAR_ROUGH: MakeTree(tile, treetype, 0, 0, TREE_GROUND_ROUGH, 3); break;
+ case CLEAR_DESERT: return; // Cacti don't spread
+ case CLEAR_SNOW: MakeTree(tile, treetype, 0, 0, TREE_GROUND_SNOW_DESERT, GetClearDensity(tile)); break;
default: return;
}
break;
@@ -646,9 +656,11 @@
} else {
/* just one tree, change type into MP_CLEAR */
switch (GetTreeGround(tile)) {
- case TREE_GROUND_GRASS: MakeClear(tile, CLEAR_GRASS, 3); break;
+ case TREE_GROUND_GRASS: MakeClear(tile, CLEAR_GRASS, GetTreeDensity(tile)); break;
case TREE_GROUND_ROUGH: MakeClear(tile, CLEAR_ROUGH, 3); break;
- default: MakeClear(tile, CLEAR_SNOW, GetTreeDensity(tile)); break;
+ default: // snow or desert
+ MakeClear(tile, _opt.landscape == LT_TROPIC ? CLEAR_DESERT : CLEAR_SNOW, GetTreeDensity(tile));
+ break;
}
}
break;
@@ -675,7 +687,7 @@
!IsBridgeAbove(tile) &&
(ct = GetClearGround(tile), ct == CLEAR_GRASS || ct == CLEAR_ROUGH) &&
(tree = GetRandomTreeType(tile, GB(r, 24, 8))) != TREE_INVALID) {
- MakeTree(tile, tree, 0, 0, ct == CLEAR_ROUGH ? TREE_GROUND_ROUGH : TREE_GROUND_GRASS, 0);
+ MakeTree(tile, tree, 0, 0, ct == CLEAR_ROUGH ? TREE_GROUND_ROUGH : TREE_GROUND_GRASS, GetClearDensity(tile));
}
/* byte underflow */
@@ -689,8 +701,8 @@
(ct = GetClearGround(tile), ct == CLEAR_GRASS || ct == CLEAR_ROUGH || ct == CLEAR_SNOW) &&
(tree = GetRandomTreeType(tile, GB(r, 24, 8))) != TREE_INVALID) {
switch (ct) {
- case CLEAR_GRASS: MakeTree(tile, tree, 0, 0, TREE_GROUND_GRASS, 0); break;
- case CLEAR_ROUGH: MakeTree(tile, tree, 0, 0, TREE_GROUND_ROUGH, 0); break;
+ case CLEAR_GRASS: MakeTree(tile, tree, 0, 0, TREE_GROUND_GRASS, GetClearDensity(tile)); break;
+ case CLEAR_ROUGH: MakeTree(tile, tree, 0, 0, TREE_GROUND_ROUGH, 3); break;
default: MakeTree(tile, tree, 0, 0, TREE_GROUND_SNOW_DESERT, GetClearDensity(tile)); break;
}
}
--- a/src/tunnelbridge_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/tunnelbridge_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -243,7 +243,7 @@
/* retrieve landscape height and ensure it's on land */
tile_start = TileXY(x, y);
tile_end = TileXY(sx, sy);
- if (IsClearWaterTile(tile_start) || IsClearWaterTile(tile_end)) {
+ if (IsWaterTile(tile_start) || IsWaterTile(tile_end)) {
return_cmd_error(STR_02A0_ENDS_OF_BRIDGE_MUST_BOTH);
}
@@ -375,7 +375,7 @@
switch (GetTileType(tile)) {
case MP_WATER:
- if (!EnsureNoVehicle(tile)) return_cmd_error(STR_980E_SHIP_IN_THE_WAY);
+ if (!EnsureNoVehicleOnGround(tile)) return_cmd_error(STR_980E_SHIP_IN_THE_WAY);
if (!IsWater(tile) && !IsCoast(tile)) goto not_valid_below;
break;
@@ -772,7 +772,7 @@
VehicleFromPos(endtile, &endtile, UpdateTrainPowerProc);
}
- return CommandCost((length + 1) * (_price.build_rail >> 1));
+ return CommandCost((length + 1) * (RailBuildCost(totype) / 2));
} else if (IsBridge(tile) && GetBridgeTransportType(tile) == TRANSPORT_RAIL) {
TileIndex endtile = GetOtherBridgeEnd(tile);
byte bridge_height = GetBridgeHeight(tile);
@@ -804,48 +804,66 @@
}
}
- return CommandCost((DistanceManhattan(tile, endtile) + 1) * (_price.build_rail >> 1));
+ return CommandCost((DistanceManhattan(tile, endtile) + 1) * (RailBuildCost(totype) / 2));
} else {
return CMD_ERROR;
}
}
-static void DrawBridgePillars(const PalSpriteID *psid, const TileInfo* ti, Axis axis, uint type, int x, int y, int z)
+/**
+ * Draws the pillars under high bridges.
+ *
+ * @param psid Image and palette of a bridge pillar.
+ * @param ti #TileInfo of current bridge-middle-tile.
+ * @param axis Orientation of bridge.
+ * @param type Bridge type.
+ * @param x Sprite X position of front pillar.
+ * @param y Sprite Y position of front pillar.
+ * @param z_bridge Absolute height of bridge bottom.
+ */
+static void DrawBridgePillars(const PalSpriteID *psid, const TileInfo* ti, Axis axis, uint type, int x, int y, int z_bridge)
{
SpriteID image = psid->sprite;
if (image != 0) {
bool drawfarpillar = !HASBIT(GetBridgeFlags(type), 0);
- int back_height, front_height;
- int i = z;
- const byte *p;
-
- static const byte _tileh_bits[4][8] = {
- { 2, 1, 8, 4, 16, 2, 0, 9 },
- { 1, 8, 4, 2, 2, 16, 9, 0 },
- { 4, 8, 1, 2, 16, 2, 0, 9 },
- { 2, 4, 8, 1, 2, 16, 9, 0 }
- };
- p = _tileh_bits[(image & 1) * 2 + (axis == AXIS_X ? 0 : 1)];
- front_height = ti->z + (ti->tileh & p[0] ? TILE_HEIGHT : 0);
- back_height = ti->z + (ti->tileh & p[1] ? TILE_HEIGHT : 0);
+ /* "side" specifies the side the pillars stand on.
+ * The length of the pillars is then set to the height of the bridge over the corners of this edge.
+ *
+ * axis==AXIS_X axis==AXIS_Y
+ * side==false SW NW
+ * side==true NE SE
+ *
+ * I have no clue, why this was done this way.
+ */
+ bool side = HASBIT(image, 0);
- if (IsSteepSlope(ti->tileh)) {
- if (!(ti->tileh & p[2])) front_height += TILE_HEIGHT;
- if (!(ti->tileh & p[3])) back_height += TILE_HEIGHT;
- }
+ /* "dir" means the edge the pillars stand on */
+ DiagDirection dir = AxisToDiagDir(axis);
+ if (side != (axis == AXIS_Y)) dir = ReverseDiagDir(dir);
- for (; z >= front_height || z >= back_height; z -= TILE_HEIGHT) {
- /* HACK set height of the BB of pillars to 1, because the origin of the
- * sprites is at the top
- */
- if (z >= front_height) { // front facing pillar
- AddSortableSpriteToDraw(image, psid->pal, x, y, p[4], p[5], BB_HEIGHT_UNDER_BRIDGE - 5, z, HASBIT(_transparent_opt, TO_BRIDGES), 0, 0, -5);
+ /* Determine ground height under pillars */
+ int front_height = ti->z;
+ int back_height = ti->z;
+ GetSlopeZOnEdge(ti->tileh, dir, &front_height, &back_height);
+
+ /* x and y size of bounding-box of pillars */
+ int w = (axis == AXIS_X ? 16 : 2);
+ int h = (axis == AXIS_X ? 2 : 16);
+ /* sprite position of back facing pillar */
+ int x_back = x - (axis == AXIS_X ? 0 : 9);
+ int y_back = y - (axis == AXIS_X ? 9 : 0);
+
+ for (int cur_z = z_bridge; cur_z >= front_height || cur_z >= back_height; cur_z -= TILE_HEIGHT) {
+ /* Draw front facing pillar */
+ if (cur_z >= front_height) {
+ AddSortableSpriteToDraw(image, psid->pal, x, y, w, h, BB_HEIGHT_UNDER_BRIDGE - 5, cur_z, HASBIT(_transparent_opt, TO_BRIDGES), 0, 0, -5);
}
- if (drawfarpillar && z >= back_height && z < i - TILE_HEIGHT) { // back facing pillar
- AddSortableSpriteToDraw(image, psid->pal, x - p[6], y - p[7], p[4], p[5], BB_HEIGHT_UNDER_BRIDGE - 5, z, HASBIT(_transparent_opt, TO_BRIDGES), 0, 0, -5);
+ /* Draw back facing pillar, but not the highest part directly under the bridge-floor */
+ if (drawfarpillar && cur_z >= back_height && cur_z < z_bridge - TILE_HEIGHT) {
+ AddSortableSpriteToDraw(image, psid->pal, x_back, y_back, w, h, BB_HEIGHT_UNDER_BRIDGE - 5, cur_z, HASBIT(_transparent_opt, TO_BRIDGES), 0, 0, -5);
}
}
}
@@ -926,7 +944,7 @@
{ 1, 0, -15, -14, 0, 15, 16, 1, 0, 1, 16, 15 }, // SW
{ 0, 1, -14, -15, 15, 0, 1, 16, 1, 0, 15, 16 }, // NW
};
- static const int *BB_data = _tunnel_BB[GetTunnelDirection(ti->tile)];
+ const int *BB_data = _tunnel_BB[GetTunnelDirection(ti->tile)];
bool catenary = false;
--- a/src/variables.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/variables.h Sat Oct 20 10:42:28 2007 +0000
@@ -297,6 +297,8 @@
VARDEF bool _rightclick_emulate;
+VARDEF PlayerFace _player_face; ///< for player face storage in openttd.cfg
+
/* IN/OUT parameters to commands */
VARDEF byte _yearly_expenses_type;
VARDEF TileIndex _terraform_err_tile;
--- a/src/vehicle.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/vehicle.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -117,25 +117,11 @@
}
}
-static void *EnsureNoVehicleProc(Vehicle *v, void *data)
-{
- if (v->tile != *(const TileIndex*)data || v->type == VEH_DISASTER)
- return NULL;
-
- _error_message = VehicleInTheWayErrMsg(v);
- return v;
-}
-
-bool EnsureNoVehicle(TileIndex tile)
-{
- return VehicleFromPos(tile, &tile, EnsureNoVehicleProc) == NULL;
-}
-
static void *EnsureNoVehicleProcZ(Vehicle *v, void *data)
{
const TileInfo *ti = (const TileInfo*)data;
- if (v->tile != ti->tile || v->type == VEH_DISASTER) return NULL;
+ if (v->tile != ti->tile || v->type == VEH_DISASTER || (v->type == VEH_AIRCRAFT && v->subtype == AIR_SHADOW)) return NULL;
if (v->z_pos > ti->z) return NULL;
_error_message = VehicleInTheWayErrMsg(v);
@@ -564,13 +550,10 @@
/**
* Deletes all vehicles in a chain.
* @param v The first vehicle in the chain.
- *
- * @warning This function is not valid for any vehicle containing articulated
- * parts.
*/
void DeleteVehicleChain(Vehicle *v)
{
- assert(v->type != VEH_TRAIN && v->type != VEH_ROAD);
+ assert(v->First() == v);
do {
Vehicle *u = v;
--- a/src/vehicle_gui.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/vehicle_gui.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -2086,9 +2086,16 @@
DoCommandP(v->tile, v->index, 0, NULL,
_vehicle_command_translation_table[VCT_CMD_START_STOP][v->type]);
break;
- case VVW_WIDGET_CENTER_MAIN_VIEH: /* center main view */
- ScrollMainWindowTo(v->x_pos, v->y_pos);
- break;
+ case VVW_WIDGET_CENTER_MAIN_VIEH: {/* center main view */
+ const Window *mainwindow = FindWindowById(WC_MAIN_WINDOW, 0);
+ /* code to allow the main window to 'follow' the vehicle if the ctrl key is pressed */
+ if (_ctrl_pressed && mainwindow->viewport->zoom == ZOOM_LVL_NORMAL) {
+ WP(mainwindow, vp_d).follow_vehicle = v->index;
+ } else {
+ ScrollMainWindowTo(v->x_pos, v->y_pos);
+ }
+ } break;
+
case VVW_WIDGET_GOTO_DEPOT: /* goto hangar */
DoCommandP(v->tile, v->index, _ctrl_pressed ? DEPOT_SERVICE : 0, NULL,
_vehicle_command_translation_table[VCT_CMD_GOTO_DEPOT][v->type]);
--- a/src/viewport.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/viewport.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -36,9 +36,6 @@
static uint32 _active_viewports; ///< bitmasked variable where each bit signifies if a viewport is in use or not
assert_compile(lengthof(_viewports) < sizeof(_active_viewports) * 8);
-static bool _added_tile_sprite;
-static bool _offset_ground_sprites;
-
/* The in-game coordiante system looks like this *
* *
* ^ Z *
@@ -128,7 +125,9 @@
byte combine_sprites;
- int offs_x, offs_y; // used when drawing ground sprites relative
+ ParentSpriteToDraw *foundation; ///< Foundation sprite.
+ ChildScreenSpriteToDraw **last_foundation_child; ///< Tail of ChildSprite list of active foundation.
+ Point foundation_offset; ///< Pixeloffset of ground sprites on the foundation.
};
static ViewportDrawer *_cur_vd;
@@ -469,6 +468,33 @@
}
/**
+ * Adds a child sprite to the active foundation.
+ *
+ * The pixel offset of the sprite relative to the ParentSprite is the sum of the offset passed to OffsetGroundSprite() and extra_offs_?.
+ *
+ * @param image the image to draw.
+ * @param pal the provided palette.
+ * @param sub Only draw a part of the sprite.
+ * @param extra_offs_x Pixel X offset for the sprite position.
+ * @param extra_offs_y Pixel Y offset for the sprite position.
+ */
+static void AddChildSpriteToFoundation(SpriteID image, SpriteID pal, const SubSprite *sub, int extra_offs_x, int extra_offs_y)
+{
+ ViewportDrawer *vd = _cur_vd;
+ assert(vd->foundation != NULL);
+ Point offs = vd->foundation_offset;
+
+ /* Change the active ChildSprite list to the one of the foundation */
+ ChildScreenSpriteToDraw **old_child = vd->last_child;
+ vd->last_child = vd->last_foundation_child;
+
+ AddChildSpriteScreen(image, pal, offs.x + extra_offs_x, offs.y + extra_offs_y, false, sub);
+
+ /* Switch back to last ChildSprite list */
+ vd->last_child = old_child;
+}
+
+/**
* Draws a ground sprite for the current tile.
* If the current tile is drawn on top of a foundation the sprite is added as child sprite to the "foundation"-ParentSprite.
*
@@ -478,21 +504,33 @@
*/
void DrawGroundSprite(SpriteID image, SpriteID pal, const SubSprite *sub)
{
- if (_offset_ground_sprites) {
- /* offset ground sprite because of foundation? */
- AddChildSpriteScreen(image, pal, _cur_vd->offs_x, _cur_vd->offs_y, false, sub);
+ ViewportDrawer *vd = _cur_vd;
+ if (vd->foundation != NULL) {
+ AddChildSpriteToFoundation(image, pal, sub, 0, 0);
} else {
- _added_tile_sprite = true;
DrawGroundSpriteAt(image, pal, _cur_ti->x, _cur_ti->y, _cur_ti->z, sub);
}
}
+/**
+ * Called when a foundation has been drawn for the current tile.
+ * Successive ground sprites for the current tile will be drawn as child sprites of the "foundation"-ParentSprite, not as TileSprites.
+ *
+ * @param x sprite x-offset (screen coordinates) of ground sprites relative to the "foundation"-ParentSprite.
+ * @param y sprite y-offset (screen coordinates) of ground sprites relative to the "foundation"-ParentSprite.
+ */
void OffsetGroundSprite(int x, int y)
{
- _cur_vd->offs_x = x;
- _cur_vd->offs_y = y;
- _offset_ground_sprites = true;
+ ViewportDrawer *vd = _cur_vd;
+ assert(vd->foundation == NULL);
+
+ /* vd->last_child == NULL if foundation sprite was clipped by the viewport bounds */
+ if (vd->last_child != NULL) vd->foundation = vd->parent_list[-1];
+
+ vd->foundation_offset.x = x;
+ vd->foundation_offset.y = y;
+ vd->last_foundation_child = vd->last_child;
}
/**
@@ -683,7 +721,10 @@
vd->spritelist_mem += sizeof(ChildScreenSpriteToDraw);
+ /* Append the sprite to the active ChildSprite list.
+ * If the active ParentSprite is a foundation, update last_foundation_child as well. */
*vd->last_child = cs;
+ if (vd->last_foundation_child == vd->last_child) vd->last_foundation_child = &cs->next;
vd->last_child = &cs->next;
cs->image = image;
@@ -723,12 +764,25 @@
}
-static void DrawSelectionSprite(SpriteID image, SpriteID pal, const TileInfo *ti)
+/**
+ * Draws sprites between ground sprite and everything above.
+ *
+ * The sprite is either drawn as TileSprite or as ChildSprite of the active foundation.
+ *
+ * @param image the image to draw.
+ * @param pal the provided palette.
+ * @param ti TileInfo Tile that is being drawn
+ * @param z_offset Z offset relative to the groundsprite. Only used for the sprite position, not for sprite sorting.
+ */
+static void DrawSelectionSprite(SpriteID image, SpriteID pal, const TileInfo *ti, int z_offset)
{
- if (_added_tile_sprite && !(_thd.drawstyle & HT_LINE)) { // draw on real ground
- DrawGroundSpriteAt(image, pal, ti->x, ti->y, ti->z + 7);
- } else { // draw on top of foundation
- AddSortableSpriteToDraw(image, pal, ti->x, ti->y, 0x10, 0x10, 1, ti->z + 7);
+ /* FIXME: This is not totally valid for some autorail highlights, that extent over the edges of the tile. */
+ if (_cur_vd->foundation == NULL) {
+ /* draw on real ground */
+ DrawGroundSpriteAt(image, pal, ti->x, ti->y, ti->z + z_offset);
+ } else {
+ /* draw on top of foundation */
+ AddChildSpriteToFoundation(image, pal, NULL, 0, -z_offset);
}
}
@@ -740,7 +794,7 @@
*/
static void DrawTileSelectionRect(const TileInfo *ti, SpriteID pal)
{
- DrawSelectionSprite(SPR_SELECT_TILE + _tileh_to_sprite[ti->tileh], pal, ti);
+ DrawSelectionSprite(SPR_SELECT_TILE + _tileh_to_sprite[ti->tileh], pal, ti, 7);
}
static bool IsPartOfAutoLine(int px, int py)
@@ -796,7 +850,7 @@
pal = PALETTE_SEL_TILE_RED;
}
- DrawSelectionSprite(image, _thd.make_square_red ? PALETTE_SEL_TILE_RED : pal, ti);
+ DrawSelectionSprite(image, _thd.make_square_red ? PALETTE_SEL_TILE_RED : pal, ti, 7);
}
/**
@@ -821,12 +875,12 @@
DrawTileSelectionRect(ti, _thd.make_square_red ? PALETTE_SEL_TILE_RED : PAL_NONE);
} else if (_thd.drawstyle & HT_POINT) {
/* Figure out the Z coordinate for the single dot. */
- byte z = ti->z;
+ byte z = 0;
if (ti->tileh & SLOPE_N) {
z += TILE_HEIGHT;
if (ti->tileh == SLOPE_STEEP_N) z += TILE_HEIGHT;
}
- DrawGroundSpriteAt(_cur_dpi->zoom <= ZOOM_LVL_DETAIL ? SPR_DOT : SPR_DOT_SMALL, PAL_NONE, ti->x, ti->y, z);
+ DrawSelectionSprite(_cur_dpi->zoom <= ZOOM_LVL_DETAIL ? SPR_DOT : SPR_DOT_SMALL, PAL_NONE, ti, z);
} else if (_thd.drawstyle & HT_RAIL /*&& _thd.place_mode == VHM_RAIL*/) {
/* autorail highlight piece under cursor */
uint type = _thd.drawstyle & 0xF;
@@ -913,8 +967,8 @@
y_cur += 0x10;
x_cur -= 0x10;
- _added_tile_sprite = false;
- _offset_ground_sprites = false;
+ vd->foundation = NULL;
+ vd->last_foundation_child = NULL;
_tile_type_procs[tt]->draw_tile_proc(&ti);
DrawTileSelection(&ti);
--- a/src/water_cmd.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/water_cmd.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -31,20 +31,21 @@
#include "newgrf_canal.h"
#include "misc/autoptr.hpp"
+/** Array for the shore sprites */
static const SpriteID _water_shore_sprites[] = {
0,
- SPR_SHORE_TILEH_1,
- SPR_SHORE_TILEH_2,
- SPR_SHORE_TILEH_3,
- SPR_SHORE_TILEH_4,
+ SPR_SHORE_TILEH_1, // SLOPE_W
+ SPR_SHORE_TILEH_2, // SLOPE_S
+ SPR_SHORE_TILEH_3, // SLOPE_SW
+ SPR_SHORE_TILEH_4, // SLOPE_E
0,
- SPR_SHORE_TILEH_6,
+ SPR_SHORE_TILEH_6, // SLOPE_SE
0,
- SPR_SHORE_TILEH_8,
- SPR_SHORE_TILEH_9,
+ SPR_SHORE_TILEH_8, // SLOPE_N
+ SPR_SHORE_TILEH_9, // SLOPE_NW
0,
0,
- SPR_SHORE_TILEH_12,
+ SPR_SHORE_TILEH_12, // SLOPE_NE
0,
0
};
@@ -71,7 +72,7 @@
tile2 = tile + (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
- if (!IsClearWaterTile(tile) || !IsClearWaterTile(tile2))
+ if (!IsWaterTile(tile) || !IsWaterTile(tile2))
return_cmd_error(STR_3801_MUST_BE_BUILT_ON_WATER);
if (IsBridgeAbove(tile) || IsBridgeAbove(tile2)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
@@ -104,11 +105,11 @@
if (!IsShipDepot(tile)) return CMD_ERROR;
if (!CheckTileOwnership(tile)) return CMD_ERROR;
- if (!EnsureNoVehicle(tile)) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
tile2 = GetOtherShipDepotTile(tile);
- if (!EnsureNoVehicle(tile2)) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile2)) return CMD_ERROR;
if (flags & DC_EXEC) {
/* Kill the depot, which is registered at the northernmost tile. Use that one */
@@ -171,7 +172,7 @@
if (!CheckTileOwnership(tile) && GetTileOwner(tile) != OWNER_NONE) return CMD_ERROR;
/* make sure no vehicle is on the tile. */
- if (!EnsureNoVehicle(tile) || !EnsureNoVehicle(tile + delta) || !EnsureNoVehicle(tile - delta))
+ if (!EnsureNoVehicleOnGround(tile) || !EnsureNoVehicleOnGround(tile + delta) || !EnsureNoVehicleOnGround(tile - delta))
return CMD_ERROR;
if (flags & DC_EXEC) {
@@ -302,7 +303,7 @@
}
/* Make sure no vehicle is on the tile */
- if (!EnsureNoVehicle(tile)) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
if (GetTileOwner(tile) != OWNER_WATER && GetTileOwner(tile) != OWNER_NONE && !CheckTileOwnership(tile)) return CMD_ERROR;
@@ -313,7 +314,7 @@
Slope slope = GetTileSlope(tile, NULL);
/* Make sure no vehicle is on the tile */
- if (!EnsureNoVehicle(tile)) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
if (flags & DC_EXEC) DoClearSquare(tile);
if (slope == SLOPE_N || slope == SLOPE_E || slope == SLOPE_S || slope == SLOPE_W) {
@@ -457,7 +458,7 @@
switch (GetWaterTileType(ti->tile)) {
case WATER_TILE_CLEAR:
DrawGroundSprite(SPR_FLAT_WATER_TILE, PAL_NONE);
- if (ti->z != 0 || !IsTileOwner(ti->tile, OWNER_WATER)) DrawCanalWater(ti->tile);
+ if (IsCanal(ti->tile)) DrawCanalWater(ti->tile);
DrawBridgeMiddle(ti);
break;
@@ -517,7 +518,7 @@
{
switch (GetWaterTileType(tile)) {
case WATER_TILE_CLEAR:
- if (TilePixelHeight(tile) == 0 || IsTileOwner(tile, OWNER_WATER)) {
+ if (!IsCanal(tile)) {
td->str = STR_3804_WATER;
} else {
td->str = STR_LANDINFO_CANAL;
@@ -708,7 +709,12 @@
}
}
-/** called from tunnelbridge_cmd, and by TileLoop_Industry() */
+/**
+ * Let a water tile floods its diagonal adjoining tiles
+ * called from tunnelbridge_cmd, and by TileLoop_Industry()
+ *
+ * @param tile the water/shore tile that floods
+ */
void TileLoop_Water(TileIndex tile)
{
static const TileIndexDiffC _tile_loop_offs_array[][5] = {
@@ -719,9 +725,12 @@
{{ 0, -1}, {0, 0}, {1, 0}, { 0, -1}, { 1, -1}}
};
- /* Ensure sea-level canals and buoys on canal borders do not flood */
- if ((IsTileType(tile, MP_WATER) || IsBuoyTile(tile)) && !IsTileOwner(tile, OWNER_WATER)) return;
+ /* Ensure buoys on canal borders do not flood */
+ if (IsCanalBuoyTile(tile)) return;
+ /* Ensure only sea and coast floods, not canals or rivers */
+ if (IsTileType(tile, MP_WATER) && !(IsSea(tile) || IsCoast(tile))) return;
+ /* floods in all four diagonal directions with the exception of the edges */
if (IS_INT_INSIDE(TileX(tile), 1, MapSizeX() - 3 + 1) &&
IS_INT_INSIDE(TileY(tile), 1, MapSizeY() - 3 + 1)) {
uint i;
@@ -730,6 +739,7 @@
TileLoopWaterHelper(tile, _tile_loop_offs_array[i]);
}
}
+
/* _current_player can be changed by TileLoopWaterHelper.. reset it back here */
_current_player = OWNER_NONE;
@@ -807,7 +817,7 @@
static CommandCost TerraformTile_Water(TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)
{
/* Canals can't be terraformed */
- if (IsClearWaterTile(tile) && IsCanal(tile)) return_cmd_error(STR_MUST_DEMOLISH_CANAL_FIRST);
+ if (IsWaterTile(tile) && IsCanal(tile)) return_cmd_error(STR_MUST_DEMOLISH_CANAL_FIRST);
return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
}
--- a/src/water_map.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/water_map.h Sat Oct 20 10:42:28 2007 +0000
@@ -27,6 +27,8 @@
static inline WaterTileType GetWaterTileType(TileIndex t)
{
+ assert(IsTileType(t, MP_WATER));
+
if (_m[t].m5 == 0) return WATER_TILE_CLEAR;
if (_m[t].m5 == 1) return WATER_TILE_COAST;
if (IS_INT_INSIDE(_m[t].m5, LOCK_MIDDLE, LOCK_END)) return WATER_TILE_LOCK;
@@ -35,11 +37,19 @@
return WATER_TILE_DEPOT;
}
+/** IsWater return true if any type of clear water like ocean, river, canal */
static inline bool IsWater(TileIndex t)
{
return GetWaterTileType(t) == WATER_TILE_CLEAR;
}
+static inline bool IsSea(TileIndex t)
+{
+ if (GetWaterTileType(t) != WATER_TILE_CLEAR) return false;
+ if (!IsTileOwner(t, OWNER_WATER)) return false; // 'Human' built water = canal, not sea
+ return true;
+}
+
static inline bool IsCoast(TileIndex t)
{
return GetWaterTileType(t) == WATER_TILE_COAST;
@@ -50,9 +60,9 @@
return GetWaterTileType(t) == WATER_TILE_CLEAR && GetTileOwner(t) != OWNER_WATER;
}
-static inline bool IsClearWaterTile(TileIndex t)
+static inline bool IsWaterTile(TileIndex t)
{
- return IsTileType(t, MP_WATER) && IsWater(t) && GetTileSlope(t, NULL) == SLOPE_FLAT;
+ return IsTileType(t, MP_WATER) && IsWater(t);
}
static inline TileIndex GetOtherShipDepotTile(TileIndex t)
@@ -109,6 +119,7 @@
static inline void MakeCanal(TileIndex t, Owner o)
{
+ assert(o != OWNER_WATER);
SetTileType(t, MP_WATER);
SetTileOwner(t, o);
_m[t].m2 = 0;
--- a/src/waypoint.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/waypoint.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -175,7 +175,7 @@
}
if (!CheckTileOwnership(tile)) return CMD_ERROR;
- if (!EnsureNoVehicle(tile)) return CMD_ERROR;
+ if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
tileh = GetTileSlope(tile, NULL);
if (tileh != SLOPE_FLAT &&
@@ -197,7 +197,20 @@
wp->string = STR_NULL;
wp->town_cn = 0;
} else if (flags & DC_EXEC) {
- /* move existing (recently deleted) waypoint to the new location */
+ /* Move existing (recently deleted) waypoint to the new location */
+
+ /* First we update the destination for all vehicles that
+ * have the old waypoint in their orders. */
+ Vehicle *v;
+ FOR_ALL_VEHICLES(v) {
+ if (v->type == VEH_TRAIN &&
+ v->First() == v &&
+ v->current_order.type == OT_GOTO_WAYPOINT &&
+ v->dest_tile == wp->xy) {
+ v->dest_tile = tile;
+ }
+ }
+
RedrawWaypointSign(wp);
wp->xy = tile;
}
@@ -263,7 +276,7 @@
if (!IsTileType(tile, MP_RAILWAY) ||
!IsRailWaypoint(tile) ||
(!CheckTileOwnership(tile) && _current_player != OWNER_WATER) ||
- !EnsureNoVehicle(tile)) {
+ !EnsureNoVehicleOnGround(tile)) {
return CMD_ERROR;
}
--- a/src/window.cpp Sat Oct 20 10:14:05 2007 +0000
+++ b/src/window.cpp Sat Oct 20 10:42:28 2007 +0000
@@ -843,23 +843,35 @@
}
}
+/**
+ * Set the x and y coordinates of a new window.
+ *
+ * @param *desc The pointer to the WindowDesc to be created
+ * @param window_number the window number of the new window
+ * @param data arbitrary data that is send with the WE_CREATE message
+ *
+ * @return see Window pointer of the newly created window
+ */
static Window *LocalAllocateWindowDesc(const WindowDesc *desc, int window_number, void *data)
{
Point pt;
Window *w;
/* By default position a child window at an offset of 10/10 of its parent.
+ * With the exception of WC_BUILD_TOOLBAR (build railway/roads/ship docks/airports)
+ * and WC_SCEN_LAND_GEN (landscaping). Whose child window has an offset of 0/36 of
+ * its parent. So it's exactly under the parent toolbar and no buttons will be covered.
* However if it falls too extremely outside window positions, reposition
* it to an automatic place */
if (desc->parent_cls != 0 /* WC_MAIN_WINDOW */ &&
(w = FindWindowById(desc->parent_cls, window_number)) != NULL &&
w->left < _screen.width - 20 && w->left > -60 && w->top < _screen.height - 20) {
- pt.x = w->left + 10;
+ pt.x = w->left + ((desc->parent_cls == WC_BUILD_TOOLBAR || desc->parent_cls == WC_SCEN_LAND_GEN) ? 0 : 10);
if (pt.x > _screen.width + 10 - desc->default_width) {
pt.x = (_screen.width + 10 - desc->default_width) - 20;
}
- pt.y = w->top + 10;
+ pt.y = w->top + ((desc->parent_cls == WC_BUILD_TOOLBAR || desc->parent_cls == WC_SCEN_LAND_GEN) ? 36 : 10);
} else {
switch (desc->left) {
case WDP_ALIGN_TBR: { /* Align the right side with the top toolbar */
@@ -1454,6 +1466,13 @@
w = FindWindowFromPt(_cursor.pos.x, _cursor.pos.y);
+ if (WP(w, vp_d).follow_vehicle != INVALID_VEHICLE && w == FindWindowById(WC_MAIN_WINDOW, 0)) {
+ /* If the main window is following a vehicle, then first let go of it! */
+ const Vehicle *veh = GetVehicle(WP(w, vp_d).follow_vehicle);
+ ScrollMainWindowTo(veh->x_pos, veh->y_pos, true); /* This also resets follow_vehicle */
+ return true;
+ }
+
if (!(_right_button_down || scrollwheel_scrolling) || w == NULL) {
_cursor.fix_at = false;
_scrolling_viewport = false;
--- a/src/window.h Sat Oct 20 10:14:05 2007 +0000
+++ b/src/window.h Sat Oct 20 10:42:28 2007 +0000
@@ -390,9 +390,10 @@
};
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(smallmap_d));
+/* player face selection window */
struct facesel_d {
- uint32 face;
- byte gender;
+ PlayerFace face; // player face bits
+ bool advanced; // advance player face selection window
};
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(facesel_d));