mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2026-09-14 20:39:28 +00:00
Compare commits
110
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ebeb4115e9 | ||
|
|
435ef4ea8d | ||
|
|
b6bca21877 | ||
|
|
74ffe8647f | ||
|
|
f348afb5aa | ||
|
|
9143b65785 | ||
|
|
fa23617380 | ||
|
|
6dcfa9a063 | ||
|
|
92c75f9092 | ||
|
|
28fc7b47bd | ||
|
|
1ed599f5cf | ||
|
|
27fc22a76b | ||
|
|
b42e76d858 | ||
|
|
76bf94bf00 | ||
|
|
9dfa2db455 | ||
|
|
740585c219 | ||
|
|
b378e82676 | ||
|
|
3e131e2fec | ||
|
|
87466a4ed0 | ||
|
|
71f2789270 | ||
|
|
31b325baaf | ||
|
|
8b88bb0c9b | ||
|
|
02a297669a | ||
|
|
51f5102713 | ||
|
|
051e54c9a7 | ||
|
|
3e481c4027 | ||
|
|
abb147d974 | ||
|
|
5ab64809fe | ||
|
|
9e2ccca327 | ||
|
|
33e48c63b8 | ||
|
|
e9325f69fb | ||
|
|
1c1035c44c | ||
|
|
069b6a9fab | ||
|
|
a9d4147eb2 | ||
|
|
8a50a4112c | ||
|
|
47a11fff20 | ||
|
|
666c856457 | ||
|
|
f82c591022 | ||
|
|
409007cd92 | ||
|
|
6e97511bcb | ||
|
|
c73df2016a | ||
|
|
ab26bfd6a0 | ||
|
|
c8c61faff2 | ||
|
|
d8bcda3b94 | ||
|
|
43a5a4bee8 | ||
|
|
35c79d81ef | ||
|
|
58be174df2 | ||
|
|
fe67e85700 | ||
|
|
ea75e7da60 | ||
|
|
0f22c6030d | ||
|
|
ad667bf50a | ||
|
|
b2e9b5d612 | ||
|
|
115b207745 | ||
|
|
81dc77ee23 | ||
|
|
f77d88c0aa | ||
|
|
936477c323 | ||
|
|
0bc292056d | ||
|
|
b6496be499 | ||
|
|
ebfdcf575d | ||
|
|
de3cff9e1a | ||
|
|
739aea3e1a | ||
|
|
2d14ced236 | ||
|
|
768bfa969d | ||
|
|
75c46b7a27 | ||
|
|
d86dbabbc4 | ||
|
|
84a7f6aa5b | ||
|
|
fbfbd2dfb9 | ||
|
|
e6dbe673f0 | ||
|
|
4801b17837 | ||
|
|
0a7fc9e4ea | ||
|
|
ba3ef1a2d5 | ||
|
|
2ab3e5ab40 | ||
|
|
b1f8915f1d | ||
|
|
60a48dbec1 | ||
|
|
1520aab5b2 | ||
|
|
5b896198e5 | ||
|
|
891ded5c48 | ||
|
|
6cfa7df1cf | ||
|
|
00ede07b13 | ||
|
|
1f2159b54e | ||
|
|
96c699ff1e | ||
|
|
4697a1f431 | ||
|
|
454e124912 | ||
|
|
f60b3a28d6 | ||
|
|
96a5db36f8 | ||
|
|
224f3cd361 | ||
|
|
40ba9933dc | ||
|
|
f7025612e1 | ||
|
|
182b0b5c14 | ||
|
|
29e05554d7 | ||
|
|
b0c9b2c232 | ||
|
|
04a8888547 | ||
|
|
fb9eba67d1 | ||
|
|
9aa89db3d6 | ||
|
|
ce08aebde7 | ||
|
|
9574371e53 | ||
|
|
28c7c49855 | ||
|
|
e7efb42a27 | ||
|
|
9cefcdab82 | ||
|
|
e6d6704f32 | ||
|
|
69f1db204e | ||
|
|
a7be7ebe80 | ||
|
|
4dbf08fc4b | ||
|
|
7ed2e65b77 | ||
|
|
21a3f97a0b | ||
|
|
6cf4637dac | ||
|
|
c8db92e3dd | ||
|
|
c4205c2599 | ||
|
|
770c5d0594 | ||
|
|
aa6081d830 |
+2
-1
@@ -59,7 +59,6 @@ ifdef OSXAPP
|
||||
$(Q)echo "APPL????" > "$(BUNDLE_DIR)/$(OSXAPP)/Contents/PkgInfo"
|
||||
$(Q)cp "$(ROOT_DIR)/os/macosx/openttd.icns" "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/openttd.icns"
|
||||
$(Q)$(ROOT_DIR)/os/macosx/plistgen.sh "$(BUNDLE_DIR)/$(OSXAPP)" "$(REV)"
|
||||
$(Q)cp "$(ROOT_DIR)/docs/OSX_install_instructions.txt" "$(BUNDLE_DIR)/docs/"
|
||||
$(Q)cp "$(ROOT_DIR)/os/macosx/splash.png" "$(DATA_DIR)"
|
||||
endif
|
||||
$(Q)cp "$(BIN_DIR)/$(TTD)" "$(TTD_DIR)/"
|
||||
@@ -74,6 +73,8 @@ endif
|
||||
$(Q)cp "$(ROOT_DIR)/COPYING" "$(BUNDLE_DIR)/"
|
||||
$(Q)cp "$(ROOT_DIR)/known-bugs.txt" "$(BUNDLE_DIR)/"
|
||||
$(Q)cp "$(ROOT_DIR)/docs/obg_format.txt" "$(BUNDLE_DIR)/docs/"
|
||||
$(Q)cp "$(ROOT_DIR)/docs/obm_format.txt" "$(BUNDLE_DIR)/docs/"
|
||||
$(Q)cp "$(ROOT_DIR)/docs/obs_format.txt" "$(BUNDLE_DIR)/docs/"
|
||||
$(Q)cp "$(ROOT_DIR)/docs/multiplayer.txt" "$(BUNDLE_DIR)/docs/"
|
||||
$(Q)cp "$(ROOT_DIR)/docs/32bpp.txt" "$(BUNDLE_DIR)/docs/"
|
||||
$(Q)cp "$(ROOT_DIR)/changelog.txt" "$(BUNDLE_DIR)/"
|
||||
|
||||
@@ -91,3 +91,170 @@ AIVehicle.SkipToVehicleOrder <- function(vehicle_id, order_position)
|
||||
{
|
||||
return AIOrder.SkipToOrder(vehicle_id, order_position);
|
||||
}
|
||||
|
||||
AIEngine.IsValidEngine <- function(engine_id)
|
||||
{
|
||||
return AIEngine.IsBuildable(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetName <- AIEngine.GetName;
|
||||
AIEngine.GetName <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return null;
|
||||
return AIEngine._GetName(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetCargoType <- AIEngine.GetCargoType;
|
||||
AIEngine.GetCargoType <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return 255;
|
||||
return AIEngine._GetCargoType(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._CanRefitCargo <- AIEngine.CanRefitCargo;
|
||||
AIEngine.CanRefitCargo <- function(engine_id, cargo_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return false;
|
||||
return AIEngine._CanRefitCargo(engine_id, cargo_id);
|
||||
}
|
||||
|
||||
AIEngine._CanPullCargo <- AIEngine.CanPullCargo;
|
||||
AIEngine.CanPullCargo <- function(engine_id, cargo_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return false;
|
||||
return AIEngine._CanPullCargo(engine_id, cargo_id);
|
||||
}
|
||||
|
||||
AIEngine._GetCapacity <- AIEngine.GetCapacity;
|
||||
AIEngine.GetCapacity <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return -1;
|
||||
return AIEngine._GetCapacity(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetReliability <- AIEngine.GetReliability;
|
||||
AIEngine.GetReliability <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return -1;
|
||||
return AIEngine._GetReliability(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetMaxSpeed <- AIEngine.GetMaxSpeed;
|
||||
AIEngine.GetMaxSpeed <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return -1;
|
||||
return AIEngine._GetMaxSpeed(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetPrice <- AIEngine.GetPrice;
|
||||
AIEngine.GetPrice <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return -1;
|
||||
return AIEngine._GetPrice(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetMaxAge <- AIEngine.GetMaxAge;
|
||||
AIEngine.GetMaxAge <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return -1;
|
||||
return AIEngine._GetMaxAge(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetRunningCost <- AIEngine.GetRunningCost;
|
||||
AIEngine.GetRunningCost <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return -1;
|
||||
return AIEngine._GetRunningCost(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetPower <- AIEngine.GetPower;
|
||||
AIEngine.GetPower <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return -1;
|
||||
return AIEngine._GetPower(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetWeight <- AIEngine.GetWeight;
|
||||
AIEngine.GetWeight <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return -1;
|
||||
return AIEngine._GetWeight(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetMaxTractiveEffort <- AIEngine.GetMaxTractiveEffort;
|
||||
AIEngine.GetMaxTractiveEffort <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return -1;
|
||||
return AIEngine._GetMaxTractiveEffort(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetDesignDate <- AIEngine.GetDesignDate;
|
||||
AIEngine.GetDesignDate <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return -1;
|
||||
return AIEngine._GetDesignDate(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetVehicleType <- AIEngine.GetVehicleType;
|
||||
AIEngine.GetVehicleType <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return AIVehicle.VT_INVALID;
|
||||
return AIEngine._GetVehicleType(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._IsWagon <- AIEngine.IsWagon;
|
||||
AIEngine.IsWagon <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return false;
|
||||
return AIEngine._IsWagon(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._CanRunOnRail <- AIEngine.CanRunOnRail;
|
||||
AIEngine.CanRunOnRail <- function(engine_id, track_rail_type)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return false;
|
||||
return AIEngine._CanRunOnRail(engine_id, track_rail_type);
|
||||
}
|
||||
|
||||
AIEngine._HasPowerOnRail <- AIEngine.HasPowerOnRail;
|
||||
AIEngine.HasPowerOnRail <- function(engine_id, track_rail_type)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return false;
|
||||
return AIEngine._HasPowerOnRail(engine_id, track_rail_type);
|
||||
}
|
||||
|
||||
AIEngine._GetRoadType <- AIEngine.GetRoadType;
|
||||
AIEngine.GetRoadType <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return AIRoad.ROADTYPE_INVALID;
|
||||
return AIEngine._GetRoadType(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetRailType <- AIEngine.GetRailType;
|
||||
AIEngine.GetRailType <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return AIRail.RAILTYPE_INVALID;
|
||||
return AIEngine._GetRailType(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._IsArticulated <- AIEngine.IsArticulated;
|
||||
AIEngine.IsArticulated <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return false;
|
||||
return AIEngine._IsArticulated(engine_id);
|
||||
}
|
||||
|
||||
AIEngine._GetPlaneType <- AIEngine.GetPlaneType;
|
||||
AIEngine.GetPlaneType <- function(engine_id)
|
||||
{
|
||||
if (!AIEngine.IsBuildable(engine_id)) return -1;
|
||||
return AIEngine._GetPlaneType(engine_id);
|
||||
}
|
||||
|
||||
_AIWaypointList <- AIWaypointList;
|
||||
class AIWaypointList extends _AIWaypointList {
|
||||
constructor()
|
||||
{
|
||||
::_AIWaypointList.constructor(AIWaypoint.WAYPOINT_RAIL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -805,13 +805,17 @@ function Regression::Marine()
|
||||
print(" IsCanalTile(): " + AIMarine.IsCanalTile(32127));
|
||||
print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF));
|
||||
|
||||
local list = AIBuoyList();
|
||||
local list = AIWaypointList(AIWaypoint.WAYPOINT_BUOY);
|
||||
print("");
|
||||
print("--AIBuoyList--");
|
||||
print("--AIWaypointList(BUOY)--");
|
||||
print(" Count(): " + list.Count());
|
||||
print(" Location ListDump:");
|
||||
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
||||
print(" " + i);
|
||||
print(" " + AIWaypoint.GetLocation(i));
|
||||
}
|
||||
print(" HasWaypointType:");
|
||||
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
||||
print(" " + AIWaypoint.HasWaypointType(i, AIWaypoint.WAYPOINT_RAIL) + " " + AIWaypoint.HasWaypointType(i, AIWaypoint.WAYPOINT_BUOY) + " " + AIWaypoint.HasWaypointType(i, AIWaypoint.WAYPOINT_ANY));
|
||||
}
|
||||
print("");
|
||||
|
||||
|
||||
@@ -7100,10 +7100,12 @@
|
||||
IsCanalTile(): true
|
||||
GetBankBalance(): 1999951154
|
||||
|
||||
--AIBuoyList--
|
||||
--AIWaypointList(BUOY)--
|
||||
Count(): 1
|
||||
Location ListDump:
|
||||
28481
|
||||
HasWaypointType:
|
||||
false true false
|
||||
|
||||
RemoveWaterDepot(): true
|
||||
RemoveDock(): true
|
||||
@@ -7819,97 +7821,99 @@
|
||||
19693 => 8
|
||||
|
||||
--TileList_IndustryProducing--
|
||||
Count(): 90
|
||||
Count(): 92
|
||||
Location ListDump:
|
||||
46149 => 14
|
||||
46146 => 14
|
||||
45894 => 14
|
||||
45889 => 14
|
||||
45638 => 14
|
||||
45633 => 14
|
||||
45382 => 14
|
||||
45377 => 14
|
||||
45126 => 12
|
||||
45121 => 12
|
||||
44869 => 12
|
||||
44868 => 12
|
||||
44867 => 12
|
||||
44866 => 12
|
||||
46150 => 11
|
||||
46145 => 11
|
||||
46405 => 10
|
||||
46404 => 10
|
||||
46403 => 10
|
||||
46402 => 10
|
||||
45895 => 9
|
||||
45888 => 9
|
||||
45639 => 9
|
||||
45632 => 9
|
||||
45383 => 9
|
||||
45376 => 9
|
||||
44870 => 9
|
||||
44865 => 9
|
||||
46406 => 8
|
||||
46401 => 8
|
||||
45127 => 8
|
||||
45120 => 8
|
||||
44613 => 8
|
||||
44612 => 8
|
||||
44611 => 8
|
||||
44610 => 8
|
||||
46151 => 7
|
||||
46144 => 7
|
||||
46661 => 6
|
||||
46660 => 6
|
||||
46659 => 6
|
||||
46658 => 6
|
||||
44871 => 6
|
||||
44864 => 6
|
||||
44614 => 6
|
||||
44609 => 6
|
||||
46662 => 5
|
||||
46657 => 5
|
||||
46407 => 5
|
||||
46400 => 5
|
||||
45896 => 4
|
||||
45887 => 4
|
||||
45640 => 4
|
||||
45631 => 4
|
||||
45384 => 4
|
||||
45375 => 4
|
||||
45128 => 4
|
||||
45119 => 4
|
||||
44615 => 4
|
||||
44608 => 4
|
||||
44357 => 4
|
||||
44356 => 4
|
||||
44355 => 4
|
||||
44354 => 4
|
||||
46663 => 3
|
||||
46656 => 3
|
||||
46152 => 3
|
||||
46143 => 3
|
||||
44872 => 3
|
||||
44863 => 3
|
||||
44358 => 3
|
||||
44353 => 3
|
||||
46918 => 2
|
||||
46917 => 2
|
||||
46916 => 2
|
||||
46915 => 2
|
||||
46914 => 2
|
||||
46913 => 2
|
||||
46408 => 2
|
||||
46399 => 2
|
||||
44616 => 2
|
||||
44607 => 2
|
||||
44359 => 2
|
||||
44352 => 2
|
||||
46920 => 1
|
||||
46919 => 1
|
||||
46918 => 1
|
||||
46917 => 1
|
||||
46916 => 1
|
||||
46915 => 1
|
||||
46914 => 1
|
||||
46913 => 1
|
||||
46912 => 1
|
||||
46911 => 1
|
||||
46664 => 1
|
||||
46663 => 1
|
||||
46662 => 1
|
||||
46661 => 1
|
||||
46660 => 1
|
||||
46659 => 1
|
||||
46658 => 1
|
||||
46657 => 1
|
||||
46656 => 1
|
||||
46655 => 1
|
||||
46408 => 1
|
||||
46407 => 1
|
||||
46406 => 1
|
||||
46405 => 1
|
||||
46404 => 1
|
||||
46403 => 1
|
||||
46402 => 1
|
||||
46401 => 1
|
||||
46400 => 1
|
||||
46399 => 1
|
||||
46152 => 1
|
||||
46151 => 1
|
||||
46150 => 1
|
||||
46149 => 1
|
||||
46146 => 1
|
||||
46145 => 1
|
||||
46144 => 1
|
||||
46143 => 1
|
||||
45896 => 1
|
||||
45895 => 1
|
||||
45894 => 1
|
||||
45889 => 1
|
||||
45888 => 1
|
||||
45887 => 1
|
||||
45640 => 1
|
||||
45639 => 1
|
||||
45638 => 1
|
||||
45633 => 1
|
||||
45632 => 1
|
||||
45631 => 1
|
||||
45384 => 1
|
||||
45383 => 1
|
||||
45382 => 1
|
||||
45377 => 1
|
||||
45376 => 1
|
||||
45375 => 1
|
||||
45128 => 1
|
||||
45127 => 1
|
||||
45126 => 1
|
||||
45121 => 1
|
||||
45120 => 1
|
||||
45119 => 1
|
||||
44872 => 1
|
||||
44871 => 1
|
||||
44870 => 1
|
||||
44869 => 1
|
||||
44868 => 1
|
||||
44867 => 1
|
||||
44866 => 1
|
||||
44865 => 1
|
||||
44864 => 1
|
||||
44863 => 1
|
||||
44616 => 1
|
||||
44615 => 1
|
||||
44614 => 1
|
||||
44613 => 1
|
||||
44612 => 1
|
||||
44611 => 1
|
||||
44610 => 1
|
||||
44609 => 1
|
||||
44608 => 1
|
||||
44607 => 1
|
||||
44360 => 1
|
||||
44359 => 1
|
||||
44358 => 1
|
||||
44357 => 1
|
||||
44356 => 1
|
||||
44355 => 1
|
||||
44354 => 1
|
||||
44353 => 1
|
||||
44352 => 1
|
||||
44351 => 1
|
||||
|
||||
--TileList_StationType--
|
||||
|
||||
+49
-1
@@ -1,3 +1,51 @@
|
||||
1.0.0-beta2 (2010-01-05)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Do not delete the rough/rocky status of a tile when it is covered by snow, this allows rocky tiles under snow if you have a variable snowline (r18719)
|
||||
- Feature: [NewGRF] Add support for custom station foundation graphics (r18708)
|
||||
- Feature: Allow virtually paying a percentage of the leg profit in feeder chains. This to give the user a better chance to get a feeder system without 'losses' (r18703)
|
||||
- Feature: Configurable slope steepness for trains from 0% to 10%, default is 3% as before [FS#3459] (r18674)
|
||||
- Feature: Allow contour-map to be shown with coloured industries in smallmap [FS#567] (r18665)
|
||||
- Add [NoAI]: AIEngine::IsBuildable to check if you can build a certain engine (r18687)
|
||||
- Change: [NoAI] Merge buoy and waypoint functions (r18725)
|
||||
- Change: [NoAI] AIEngine::IsValidEngine will now also return true when you have at least one vehicle of that type even if you cannot build it anymore (r18687)
|
||||
- Change: Update Squirrel from 2.2.3 to 2.2.4 (r18639)
|
||||
- Fix: New viewports did not center on the correct position [FS#3414] (r18730)
|
||||
- Fix: The lock in the company window was only drawn for your own company [FS#3427] (r18729)
|
||||
- Fix: Some invalid gender/plural indices in strings, which could eventually cause crashes [FS#3480] (r18727)
|
||||
- Fix: With non-uniform industries the 'supplies' text when building a station could be incorrect (missing a cargo) [FS#3463] (r18726)
|
||||
- Fix: Refitting a non-refittable vehicle to it's default cargotype failed, causing problems for AIs [FS#3475] (r18724)
|
||||
- Fix: The join station window did not account for scrolling, so if you did scroll the station was not joined with the selected station [FS#3476] (r18713)
|
||||
- Fix: The wrong town is mentioned in the error when trying to make one way roads of town owned roads [FS#3478] (r18710)
|
||||
- Fix: Animation buffer for 32bpp-anim blitter was only validated during sprite blitting, other drawing operations did not check it. Initial startup and window resize could therefore lead to crash [FS#3464] (r18709)
|
||||
- Fix: Enable DrawGroundSpriteAt() to deal with foundations as DrawGroundSprite() does, and use this for drawing one-way-road-signs and clear-land-fences [FS#3467] (r18702)
|
||||
- Fix: When deleting an industry on water (oil rigs) the tiles on water were not marked dirty (r18700)
|
||||
- Fix: [NewGRF] GRF parameters were not properly initialised to zero, and not always checked for valid range (r18699)
|
||||
- Fix: Crash when scrolling to an item removed by filtering in the 'add NewGRF window' [FS#3471] (r18697)
|
||||
- Fix: [NoAI] AITile::IsCoastTile returned false for coast tiles with trees on them [FS#3404] (r18696)
|
||||
- Fix: After a company went bankrupt it was impossible to build a new waypoint close to a deleted one until the grey sign was gone (r18692)
|
||||
- Fix: Some keys that open windows that want to be located relatively to the toolbars/statusbar could cause a crash when in one of the end game screens [FS#3469] (r18690)
|
||||
- Fix: In some cases _sl.chs is used when not initialised. As _sl.chs always refers to a single table when initialised replace _sl.chs with the actual table [FS#3470] (r18686)
|
||||
- Fix: [NewGRF] Tile area of waypoints was not correctly given to NewGRFs in case of multi tile waypoints (r18679)
|
||||
- Fix: [NewGRF] If an action B did not have a 'data' string but would print it OpenTTD would segfault [FS#3452] (r18671)
|
||||
- Fix: Update all tiles when snowline height changes in larger steps than one tile [FS#3455] (r18670)
|
||||
- Fix: [NoAI] crash when trying to get the order destination of a 'nearest depot' order [FS#3454] (r18667)
|
||||
- Fix: Aircraft on the metropolitan airport took a long route to the closest loading pad [FS#3169] (r18661)
|
||||
- Fix: [NewGRF] Wrong strings drawn for cargo subtype in vehicle details [FS#3443] (r18658)
|
||||
- Fix: When trying to attach a wagon to an existing free wagon chain, do not attach it to itself [FS#3442] (r18653)
|
||||
- Fix: [NoAI] When AI tried to create NO_UNLOAD order, GOTO_NEAREST_DEPOT order was created instead [FS#3438] (r18651)
|
||||
- Fix: [YAPP] Treat the backside of an one-way path signals as a safe waiting point [FS#3430] (r18648)
|
||||
- Fix: [YAPP] A train inside a station was not always found when checking for trains on a reserved path (r18647)
|
||||
- Fix: [YAPP] Do not extend the reserved path through a newly built path signal directly in front of a stopped or loading train. Also restore the reserved path in more cases after removing a signal [FS#3418] (r18646)
|
||||
- Fix: Company league window was too narrow [FS#3434] (r18644)
|
||||
- Fix: Rotation could not be changed for heightmaps [FS#3436] (r18643)
|
||||
- Fix: When a company goes bankrupt and has vehicles on a drive through road stop that is not theirs, the 'filled' cache of the road stops would get corrupted [FS#3432] (r18642)
|
||||
- Fix: Downloading music sets would fail (r18638)
|
||||
- Fix: Crash when invalid pointers are left due to saveload failing at e.g. decompressing the savegame [FS#3421] (r18634)
|
||||
- Fix: When making a screenshot the name of the previous screenshot went missing in the 'successful screenshot' message and the console command would be shown twice [FS#3419] (r18631, r18630)
|
||||
- Fix: (un)loading counter being reset while loading a train and changing the (path) signal setup around the station [FS#3422] (r18628)
|
||||
- Fix: {CARGO} takes 2 parameters, not 1. This made {N:XYZ} commands after CARGO mess up their indices and that then triggered an assertion [FS#3425] (r18626)
|
||||
|
||||
|
||||
1.0.0-beta1 (2009-12-24)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Music replacement sets, like graphics and sound replacement sets (r18608)
|
||||
@@ -2357,7 +2405,7 @@
|
||||
- Fix: Saving or loading a map doesnt pauses the game anymore
|
||||
- Fix: Some bridge part is not displayed transparent in transparent mode
|
||||
- Fix: Starting with -r option allows all resolutions
|
||||
- Fix: The pathfinder no longer sees rail with an other owner as a possible route
|
||||
- Fix: The pathfinder no longer sees rail with another owner as a possible route
|
||||
- Fix: Unable to select other screenshot format in Game Option
|
||||
- Fix: Unwanted town renaming
|
||||
- Fix: Vehicles slow down under bridge if the track is on a foundation
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ log() {
|
||||
}
|
||||
|
||||
set_default() {
|
||||
released_version=""
|
||||
released_version="1.0.0-beta2"
|
||||
|
||||
ignore_extra_parameters="0"
|
||||
# We set all kinds of defaults for params. Later on the user can override
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ OpenTTD palette. Upon load of the PNG, the mask is loaded too, and overrides
|
||||
the RGB (not the Alpha) of the original PNG image, and replacing it with a
|
||||
8bpp color remapped and converted to 32bpp.
|
||||
|
||||
An other thing that OpenTTD needs in your png, is 2 tEXt chunks: x_offs and
|
||||
Another thing that OpenTTD needs in your png, is 2 tEXt chunks: x_offs and
|
||||
y_offs. This to define the x- and y-offset, of course. Use the tool we supply
|
||||
to add this information. Sadly enough most graphical editors trashes those
|
||||
chunks upon save, so you have to readd it every time you save your image.
|
||||
|
||||
-100
@@ -1,100 +0,0 @@
|
||||
Welcome to the manual for OpenTTD. The latest release version at the time of writing is 0.3.2.
|
||||
|
||||
1 Obtaining OpenTTD.
|
||||
|
||||
You can obtain built binaries of OpenTTD for the 4 supported platforms - Win32, Linux,-x86, BeOS 5 and MacOS-X from the projects Sourceforge page, at http://sourceforge.net/projects/openttd . For the non-Win32 builds you will need libSDL.so, libpng.so and zlib.so compiled for your platform. Some builds will include these.
|
||||
|
||||
If you use another platform, such as FreeBSD, which has POSIX file i/o and an SDL port, you should be able to build OpenTTD from its source. This is available in the proejcts Subversion repository at svn://svn.openttd.com . The module name is "trunk".
|
||||
|
||||
1.1 Building OpenTTD.
|
||||
|
||||
Once you have obtained a recent copy of the source, you must build it. Windows build instructions will be provided later.
|
||||
|
||||
On UNIX platforms (including OS-X and BeOS), ensure you have a recent GCC (2.9 or above, or 3 and above).You will also need SDL development headers and libraries (libSDL 1.2 or higher). For PNG screenshot support and zlib compressed games, you will need libpng 1.0.12 or higher and zlib 1.2 or higher.
|
||||
|
||||
Most UNIX platforms:
|
||||
First run ./configure, them use make or gmake to compile OpenTTD. You can configure the different compile options via ./configure.
|
||||
|
||||
BeOS:
|
||||
On BeOS, run ./configure and then use jam. There are a variaty of options you can pass to your build tool, these are reported by ./configure.
|
||||
|
||||
1.2 Installing OpenTTD.
|
||||
|
||||
On Windows, insert your "Transport Tycoon Deluxe for Windows 95" disk. You can use a DOS version, but your graphics will be purple. NB: Even if your version of Transport Tycoon Deluxe ran on Windows 95, it may still be the DOS version. Then run the OpenTTD installer.
|
||||
|
||||
On UNIX platforms; decompress your OpenTTD archive, or otherwise run the installer. You should be left with an OpenTTD directory on your system. In this directory, make a subdirectory called 'data', and into this place the sample.cat file and all the .grf files from the install CD of 'Transport Tycoon Deluxe for Windows 95".
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
|
||||
|
||||
If you want MIDI music, copy the 'gm' folder from the original game directory/CD to the OpenTTD folder.
|
||||
|
||||
1.3 Running OpenTTD.
|
||||
|
||||
On Windows, you can use a third-party launcher such as OTTD-Launcher to run OpenTTD directly from Explorer. Otherwise, navigate via the command prompt to the correct location and launch ttd.exe.
|
||||
|
||||
On Linux, navigate at the shell to the correct location and run ttd.
|
||||
|
||||
On BeOS and Mac OS-X, just double click the ttd binary in the Tracker/Finder. You can also start from the shell.
|
||||
|
||||
1.4 Configuring OpenTTD
|
||||
|
||||
OpenTTD's launch menu contains three configuration menus - Difficulty Settings, Configure Patches and Game Settings. Most of these menus can be configured from within a running game as well.
|
||||
|
||||
Difficulty Settings lets you configure settings that affect the difficulty of playing the game. These include when your (computer-controlled) competitors can start building, how many of them there are, and how intelligent they are. You can also control how much the subsidy mutliplier is for subsidised routes, and how stable/volitile the in-game economy is. You can also set how you want the terrain to be configured in a random game.
|
||||
|
||||
Game Settings lets you set regional settings - currency, language, town names, etc. It also lets you select the resolution to run the game at, as well as the screenshot format to use.
|
||||
|
||||
Configure Patches lets you select which patches to use in the game. This allows you to set the game play to either original Transport Tycoon Deluxe compatible mode or a mode more like playing under TTD-Patch. Patches include building on slopes, longer bridges, longer trains, pre-signals, and TTD-Patch compatible handling of non-stop orders.
|
||||
|
||||
2.1 Gameplay
|
||||
|
||||
This section of the manual is written with the assumption that you already know the gameplay basics of Transport Tycoon Deluxe, on either DOS or Windows. As you must have the Windows Transport Tycoon Deluxe CD to play OpenTTD, you should either have a paper manual or the complete manual in PDF format on the disk. This section will only cover the gameplay differences from Transport Tycoon Deluxe.
|
||||
|
||||
2.2 Station Construction
|
||||
|
||||
In OpenTTD, you can build rail stations up to seven squares long and with up to seven platforms. You can also have stations spreading across far larger distances, allowing a large rail station to be connected to a large airport, for instance.
|
||||
|
||||
However, there is an even more noticable difference in rail station construction. You may now add platforms and lenght to a station after it has been built, and you may also add platforms of a different type. Users of TTDPatch will be used to this behaviour. But beyond what TTDPatch has, you can make stations of uneven lenght/width, and even ones with perpendicular tracks. You can also delete single tiles or tracks from a station, by holding down Shift before pressing the station construction button.
|
||||
|
||||
2.3 Checkpoint Stations
|
||||
|
||||
Checkpoint stations (the small blue item in the rail construction window) are small 1x1 stations. They must be built on top of pre-existing track. They do not accept or produce carge of any kind. They exist solely for use as route points. They become useful when dealing with large networks where trains may attempt to route themselves along undesirable or impossible routes. As an alternative to checkpoint stations, you can also direct trains to visit depots along the way. This has the advantage of also servicing the train and hence the train will rarely to never need to depart from its route to be serviced.
|
||||
|
||||
2.4 Freeform Rail Laying.
|
||||
|
||||
Along side the other rail laying buttons, you will see a button that looks somewhat like a crossing. This is the freeform rail laying tool., and it allows you to drag rail in any direction to lay it. This has a number of advantages, one of the main ones being that it can seriously speed up the laying of diagonal tracks.
|
||||
|
||||
2.5 Vehicle Queuing (with Quantum Effects)
|
||||
|
||||
This useful addition to OpenTTD means that road vehicles will queue outside a road station to wait for a space rather than attempt to enter it immediately. As anyone who has operated a large road network with busy stations will know, road vehicles quickly pile up inside stations. This will prevent that. The Quantum Effects are down to a bug in the game that means that mutliple vehicles will often only take up one space in the queue. However, this is almost too useful to fix, and should still be there in later versions. This can be enabled/disabled.
|
||||
|
||||
2.6 Building On Slopes
|
||||
|
||||
This allows you to build roads, rails, stations and depots on slopes. It also allows the construction of trasmitters and lighthouses on slopes in the scenario editor. There are some minor differences between OpenTTD's and TTD-Patch's handling of building on slopes, the main one being that bridges must still have solid land at their endings.
|
||||
|
||||
2.7 Long Bridges
|
||||
|
||||
OpenTTD allows you to constuct bridges up to 127 squares - half the size of the current map. This means that the crossing of large estuaries, such at the Bristol Channel in the original "West Country 90210" scenario can be acheived with one bridge instead of many bridges with staging points.
|
||||
|
||||
2.8 Long trains
|
||||
|
||||
OpenTTD allows trains of around 60 cars length, hence allowing you to use 7 square stations to their capacity and beyond.
|
||||
|
||||
2.9 Speed Display
|
||||
|
||||
This addition to OpenTTD allows you to see the current speed of any vehicle in their status window. Just open the status window of a vehicle and you can see the speed at that given moment. This allows you to see wheter better bridges, flatter/straighter track or more powerful engines could be used to increase the speed of a vehicle
|
||||
|
||||
2.10 More Trains, More Ships, More Everything!
|
||||
|
||||
Virtually any settings - train numbers, start date, what vehicles your competitors can use, etc - can be set in OpenTTD. Just use the Configure Patches menu on the main screen.
|
||||
|
||||
2.11 Network Play
|
||||
|
||||
See multiplayer.txt for more info.
|
||||
|
||||
2.12 Rail Recycling.
|
||||
|
||||
This button, at the end of the train construction window, lets you 'recycle' track to a new type. It also works on bridges, tunnels, stations and depots.
|
||||
|
||||
2.13 Canal Building
|
||||
|
||||
This button, at the end of the water construction window, lets you build canals and shiplifts across the landscape. These act just like normal water.
|
||||
@@ -1,23 +0,0 @@
|
||||
To install OpenTTD, you should drag the game to any location you want and in that folder, you should create a folder called "data". It should contain:
|
||||
sample.cat
|
||||
trg1r.grf
|
||||
trgcr.grf
|
||||
trghr.grf
|
||||
trgir.grf
|
||||
trgtr.grf
|
||||
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
|
||||
|
||||
You should also use the data folder to add any custom grf files if you like
|
||||
|
||||
if you want music, you can add a GM folder and add all .gm files from TTD inside it
|
||||
|
||||
If you want to use the scenarios, you can copy the scenario folder as well. If you already have one, just copy the content so you don't overwrite old ones that have been removed.
|
||||
|
||||
In the end, you should have a folder containing:
|
||||
OpenTTD (the actual game)
|
||||
data (containing the grf files)
|
||||
GM (optional for music)
|
||||
scenario (optional pregenerated maps)
|
||||
|
||||
The game adds some items by itself when it runs, like a save folder and a setting file
|
||||
@@ -1,5 +1,5 @@
|
||||
Compiling OpenTTD using Microsoft Visual C++
|
||||
January 2, 2007
|
||||
Last updated: 2010-01-03
|
||||
--------------------------------------------
|
||||
PLEASE READ THE ENTIRE DOCUMENT BEFORE DOING ANY ACTUAL CHANGES!!
|
||||
|
||||
@@ -10,7 +10,7 @@ OpenTTD includes projects for MSVC 2005.NET and MSVC 2008.NET. Both will
|
||||
compile out of the box, providing you have the required libraries/headers;
|
||||
which ones, see below. There is no support for VS6 or MSVC 2002, or
|
||||
MSVC 2003.NET. You are therefore strongly encouraged to either upgrade to
|
||||
MSVC 2005 Express (free) or use GCC.
|
||||
MSVC 2008 Express (free) or use GCC.
|
||||
|
||||
|
||||
1) REQUIRED FILES
|
||||
@@ -36,16 +36,16 @@ You need an SVN-client to download the source from subversion:
|
||||
2) INCLUDES AND LIBRARIES
|
||||
-------------------------
|
||||
Put the newly downloaded files in the VC lib\ and include\ directories; where
|
||||
"C:\Program Files\Microsoft Visual Studio 8\VC" is your location of Visual C.
|
||||
"C:\Program Files\Microsoft Visual Studio 9.0\VC" is your location of Visual C.
|
||||
If you are compiling for an x64 system, use the include\ and lib\ directories
|
||||
from the win64/ folder.
|
||||
|
||||
* openttd-useful.zip\include\*
|
||||
* afxresh.h
|
||||
to > C:\Program Files\Microsoft Visual Studio 8\VC\Include
|
||||
to > C:\Program Files\Microsoft Visual Studio 9.0\VC\Include
|
||||
|
||||
* openttd-useful.zip\lib\*
|
||||
to > C:\Program Files\Microsoft Visual Studio 8\VC\Lib
|
||||
to > C:\Program Files\Microsoft Visual Studio 9.0\VC\Lib
|
||||
|
||||
Custom directories might be recommended, check 2.2)
|
||||
|
||||
@@ -76,14 +76,7 @@ list, above all others, otherwise compilation will most likely fail!!
|
||||
|
||||
3) TTD GRAPHICS FILES
|
||||
---------------------
|
||||
Copy the following files from Transport Tycoon Deluxe to the bin/data folder
|
||||
|
||||
* sample.cat
|
||||
* trg1r.grf
|
||||
* trgcr.grf
|
||||
* trghr.grf
|
||||
* trgir.grf
|
||||
* trgtr.grf
|
||||
See section 4.1 of readme.txt for the required 3rdparty files and how to install them.
|
||||
|
||||
|
||||
4) COMPILING
|
||||
@@ -112,4 +105,4 @@ to ask about reasons; or just wait. The problem will most likely solve itself
|
||||
within a few days as the problem is noticed and fixed.
|
||||
|
||||
An up-to-date version of this README can be found on the wiki:
|
||||
http://wiki.openttd.org/index.php/MicrosoftVisualCExpress
|
||||
http://wiki.openttd.org/Microsoft_Visual_C%2B%2B_2008_Express_Editions
|
||||
|
||||
+14
-8
@@ -11,12 +11,13 @@
|
||||
<body>
|
||||
|
||||
<h3><a name="Landscape">Landscape</a></h3>
|
||||
<p>Seven attributes (counting "<span style="font-weight: bold;">type_height</span>") hold the informations about a tile.<BR>
|
||||
<p>Eight attributes (counting "<span style="font-weight: bold;">type_height</span>") hold the informations about a tile.<BR>
|
||||
These attributes are referred to as
|
||||
"<span style="font-weight: bold;">type_height</span>",
|
||||
"<span style="font-weight: bold;">m1</span>", "<span style="font-weight: bold;">m2</span>",
|
||||
"<span style="font-weight: bold;">m3</span>", "<span style="font-weight: bold;">m4</span>",
|
||||
"<span style="font-weight: bold;">m5</span>" and "<span style="font-weight: bold;">m6</span>".<BR>
|
||||
"<span style="font-weight: bold;">m5</span>", "<span style="font-weight: bold;">m6</span>"
|
||||
and "<span style="font-weight: bold;">m7</span>".<BR>
|
||||
The most important value is the class of a tile, stored in the upper 4 bits
|
||||
of the <span style="font-weight: bold;">type_height</span> attribute. The lower 4 bits are used to encode the height and
|
||||
slope data.
|
||||
@@ -52,11 +53,10 @@
|
||||
</p>
|
||||
|
||||
The <a name="OwnershipInfo">owner of a tile</a>, as frequently associated with attribute m1,
|
||||
can be either players (human or AI) or "Game entities".
|
||||
can be either companies (human or AI) or "Game entities".
|
||||
They are identified using:
|
||||
<table border="1">
|
||||
<tr><td><tt>00</tt> </td><td align=left>current player</td></tr>
|
||||
<tr><td><tt>01..08</tt> </td><td align=left>AI or network players</td></tr>
|
||||
<tr><td><tt>00..0E</tt> </td><td align=left>Normal companies</td></tr>
|
||||
<tr><td><tt>0F</tt> </td><td align=left>a town owns the tile</td></tr>
|
||||
<tr><td><tt>10</tt> </td><td align=left>nobody owns the tile</td></tr>
|
||||
<tr><td><tt>11</tt> </td><td align=left>"water" owns the tile</td></tr>
|
||||
@@ -81,6 +81,7 @@
|
||||
<li>m1: <a href="#OwnershipInfo">owner</a> of the tile (normally <tt>10</tt>)</li>
|
||||
<li>m2: see fields</li>
|
||||
<li>m3 bits 3..0: see fields</li>
|
||||
<li>m3 bit 4: set if the tile is covered with snow</li>
|
||||
<li>m4 bits 7..5: type of hedge on the SW border of the tile (1 through 6, or 0=none)</li>
|
||||
<li>m4 bits 4..2: same as 7..5, but for the SE border</li>
|
||||
<li>m5 bits 7..5: update counter, incremented on every periodic processing for tile types,
|
||||
@@ -601,7 +602,7 @@
|
||||
</table>
|
||||
</li>
|
||||
<li>m5 bit 5: set if crossing lights are on</li>
|
||||
<li>m6 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
|
||||
<li>m7 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
|
||||
<li>m5 bit 4: pbs reservation state</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -723,8 +724,7 @@
|
||||
<td>
|
||||
<ul>
|
||||
<li>m1: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li>
|
||||
<li>m2 bits 7..6: ground density
|
||||
<li>m2 bits 5..4: ground
|
||||
<li>m2 bits 8..6: ground
|
||||
<table>
|
||||
|
||||
<tr>
|
||||
@@ -746,8 +746,14 @@
|
||||
<td align=left><tt>3</tt> </td>
|
||||
<td>on shore (density must be 3)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align=left><tt>4</tt> </td>
|
||||
<td>on snow with rough land underneed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</li>
|
||||
<li>m2 bits 5..4: ground density</li>
|
||||
<li>m2 bits 3..0: update counter, incremented on every periodic processing.<br>
|
||||
on wraparound the growth status is updated (or, if it's <tt>3</tt>, a random action is taken)</li>
|
||||
<li>m3 bits 7..0: type of trees:
|
||||
|
||||
@@ -68,7 +68,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span></td>
|
||||
<td class="bits"><span class="free">OOO</span>X <span class="free">OOOO</span></td>
|
||||
<td class="bits">XXXX XX<span class="free">OO</span></td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
@@ -79,7 +79,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits">XXXX XXXX XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO</span> XXXX</td>
|
||||
<td class="bits"><span class="free">OOO</span>X XXXX</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">-inherit-</td>
|
||||
<td class="bits">XX<span class="free">OO OO</span>XX</td>
|
||||
@@ -170,7 +170,7 @@ the array so you can quickly see what is used and what is not.
|
||||
<td class="caption">trees</td>
|
||||
<td class="bits">XXXX XXXX</td>
|
||||
<td class="bits"><span class="option">~~~~ ~~~~</span></td>
|
||||
<td class="bits"><span class="free">OOOO OOOO</span> XXXX XXXX</td>
|
||||
<td class="bits"><span class="free">OOOO OOO</span>X XXXX XXXX</td>
|
||||
<td class="bits"><span class="option">~~</span>XX XXXX</td>
|
||||
<td class="bits">XXXX XX<span class="free">OO</span></td>
|
||||
<td class="bits">XX<span class="free">OO O</span>XXX</td>
|
||||
|
||||
+1
-1
@@ -67,7 +67,7 @@ must be either absolute or relative to the current path or one of the search pat
|
||||
Display a summary of all options and lists all the available AIs, blitters, sound, music and video drivers, graphics sets and sound sets.
|
||||
.It Fl i Ar palette
|
||||
Set the palette. '0' for the DOS palette, '1' for the Windows palette and '2' to autodetect (default).
|
||||
|
||||
.sp
|
||||
The palette depends where the base graphics set originated from. If it came from the Transport Tycoon Deluxe for DOS it has the DOS palette, if it came from the Windows version of Transport Tycoon Deluxe it has the Windows palette. All others likely have the Windows palette as that is the most used palette.
|
||||
.It Fl I Ar graphicsset
|
||||
Set the graphics set, see
|
||||
|
||||
+25
-7
@@ -1,6 +1,6 @@
|
||||
OpenTTD's known bugs
|
||||
Last updated: 2009-12-24
|
||||
Release version: 1.0.0-beta1
|
||||
Last updated: 2010-01-05
|
||||
Release version: 1.0.0-beta2
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ that you can find at: http://bugs.openttd.org
|
||||
If the bugs are closed but still listed here it means that the bug is fixed
|
||||
and that the nightlies and next major release will not have that bug.
|
||||
|
||||
- 3447 [OSX] SDL port is unuseable
|
||||
- 3194 [OSX] Full screen strobing/flickering
|
||||
- 2782 [OSX] Port hopelessly outdated
|
||||
- 2585 [OSX] OS' mouse pointer showing
|
||||
@@ -135,11 +136,28 @@ Extreme CPU usage/hangs when using SDL and PulseAudio [FS#3294]
|
||||
OpenTTD can be extremely slow/use a lot of CPU when the sound is
|
||||
played via SDL and then through PulseAudio's ALSA wrapper. Under the
|
||||
same configuration OpenTTD, or rather SDL, might hang when exiting
|
||||
the game. This setup seems to be the default configuration for
|
||||
Ubuntu 9.04 and later. For Ubuntu this issue can be solved by
|
||||
installing the 'libsdl1.2debian-pulseaudio' package from Ubuntu's
|
||||
Universe repository. For other distributions a similar package needs
|
||||
to be installed.
|
||||
the game. This problem is seen most in Ubuntu 9.04 and higher.
|
||||
|
||||
This is because recent versions of the PulseAudio sound server are
|
||||
configured to use timer-based audio scheduling rather than
|
||||
interrupt-based audio scheduling. Configuring PulseAudio to force
|
||||
use of interrupt-based scheduling may resolve sound problems for
|
||||
some users. Under recent versions of Ubuntu Linux (9.04 and higher)
|
||||
this can be accomplished by changing the following line in the
|
||||
/etc/pulsa/default.pa file:
|
||||
load-module module-udev-detect
|
||||
to
|
||||
load-module module-udev-detect tsched=0
|
||||
Note that PulseAudio must be restarted for changes to take effect.
|
||||
Older versions of PulseAudio may use the module-hal-detect module
|
||||
instead. Adding tsched=0 to the end of that line will have a similar
|
||||
effect.
|
||||
|
||||
Another possible solution is selecting the "pulse" backend of SDL
|
||||
by either using "SDL_AUDIODRIVER=pulse openttd" at the command
|
||||
prompt or installing the 'libsdl1.2debian-pulseaudio' package from
|
||||
Ubuntu's Universe repository. For other distributions a similar
|
||||
package needs to be installed.
|
||||
|
||||
OpenTTD not properly resizing with SDL on X [FS#3305]
|
||||
Under some X window managers OpenTTD's window does not properly
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 20 KiB |
@@ -0,0 +1,265 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.0"
|
||||
width="256"
|
||||
height="256"
|
||||
id="svg2"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="openttd.svg">
|
||||
<metadata
|
||||
id="metadata42">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1177"
|
||||
id="namedview40"
|
||||
showgrid="false"
|
||||
inkscape:zoom="2.8284271"
|
||||
inkscape:cx="163.74991"
|
||||
inkscape:cy="132.32268"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" />
|
||||
<defs
|
||||
id="defs4">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 124 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="256 : 124 : 1"
|
||||
inkscape:persp3d-origin="128 : 82.666667 : 1"
|
||||
id="perspective44" />
|
||||
<linearGradient
|
||||
id="linearGradient3421">
|
||||
<stop
|
||||
style="stop-color:#fe7600;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3423" />
|
||||
<stop
|
||||
style="stop-color:#f2b26d;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3425" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3269">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3271" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3273" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
x1="312.62323"
|
||||
y1="468.58658"
|
||||
x2="315.21729"
|
||||
y2="471.18063"
|
||||
id="linearGradient3275"
|
||||
xlink:href="#linearGradient3269"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
x1="312.62323"
|
||||
y1="468.58658"
|
||||
x2="315.21729"
|
||||
y2="471.18063"
|
||||
id="linearGradient3289"
|
||||
xlink:href="#linearGradient3269"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
x1="312.62323"
|
||||
y1="468.58658"
|
||||
x2="315.21729"
|
||||
y2="471.18063"
|
||||
id="linearGradient3308"
|
||||
xlink:href="#linearGradient3269"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,-266.24277,420.94154)" />
|
||||
<linearGradient
|
||||
x1="312.62323"
|
||||
y1="468.58658"
|
||||
x2="315.21729"
|
||||
y2="471.18063"
|
||||
id="linearGradient3326"
|
||||
xlink:href="#linearGradient3269"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,-266.24277,420.94154)" />
|
||||
<linearGradient
|
||||
x1="312.62323"
|
||||
y1="468.58658"
|
||||
x2="315.21729"
|
||||
y2="471.18063"
|
||||
id="linearGradient3336"
|
||||
xlink:href="#linearGradient3269"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0.3591922,-0.1487874)" />
|
||||
<linearGradient
|
||||
x1="312.62323"
|
||||
y1="468.58658"
|
||||
x2="315.21729"
|
||||
y2="471.18063"
|
||||
id="linearGradient3406"
|
||||
xlink:href="#linearGradient3269"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-2.2643187,40.455238)" />
|
||||
<linearGradient
|
||||
x1="133.3282"
|
||||
y1="156.16792"
|
||||
x2="117.66125"
|
||||
y2="78.463249"
|
||||
id="linearGradient3431"
|
||||
xlink:href="#linearGradient3421"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
x1="133.3282"
|
||||
y1="156.16792"
|
||||
x2="117.66125"
|
||||
y2="78.463249"
|
||||
id="linearGradient3488"
|
||||
xlink:href="#linearGradient3421"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(2,2)" />
|
||||
<filter
|
||||
id="filter3566"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3568"
|
||||
stdDeviation="1.2236964"
|
||||
inkscape:collect="always" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
x1="136.3282"
|
||||
y1="151.16792"
|
||||
x2="117.66125"
|
||||
y2="78.463249"
|
||||
id="linearGradient3571"
|
||||
xlink:href="#linearGradient3421"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<g
|
||||
transform="translate(-246.4375,-405.5443)"
|
||||
id="layer1">
|
||||
<path
|
||||
d="m 127.34375,3.46875 c -0.48316,0.02376 -0.94805,0.22615 -1.3125,0.59375 L 7.65625,122.40625 c -0.78094,0.7811 -0.78094,2.06266 0,2.84375 L 25.25,142.84375 5,163.09375 c -0.78094,0.7811 -0.78094,2.03141 0,2.8125 l 80.40625,80.40625 c 0.7811,0.78094 2.03141,0.78093 2.8125,0 l 20.25,-20.25 17.59375,17.59375 c 0.7811,0.78093 2.03141,0.78093 2.8125,0 l 17.5625,-17.5625 20.21875,20.21875 c 0.78108,0.78094 2.06265,0.78093 2.84375,0 l 80.375,-80.40625 c 0.78094,-0.78109 0.78094,-2.0314 0,-2.8125 L 229.65625,142.875 247.25,125.28125 c 0.78094,-0.7811 0.78094,-2.06265 0,-2.84375 L 128.875,4.0625 c -0.0421,-0.04625 -0.11001,-0.11415 -0.15625,-0.15625 -0.39876,-0.33006 -0.89184,-0.46126 -1.375,-0.4375 z m -6,43.5625 14.15625,0 0,19.75 c 0.01,0.435733 0.30048,0.815 0.71875,0.9375 2.36672,0.715663 4.34765,1.46009 5.9375,2.1875 1.57854,0.722523 3.76284,1.94 6.53125,3.65625 0.23423,0.144983 0.51508,0.19598 0.78125,0.125 0.26615,-0.07098 0.49406,-0.25764 0.625,-0.5 l 2.875,-5.40625 7.75,0 9.34375,36.21875 -13.625,3.90625 c -4.11145,-10.161057 -10.59377,-17.79909 -19.46875,-22.625 -0.31359,-0.166457 -0.69786,-0.15518 -1,0.03125 -0.30216,0.186431 -0.47688,0.52006 -0.46875,0.875 l 0,24.03125 c 0.01,0.43573 0.30048,0.815 0.71875,0.9375 10.93974,3.10986 18.88772,6.27714 23.75,9.4375 4.89952,3.1848 8.58915,7.0982 11.15625,11.71875 2.57543,4.63598 3.84364,9.41467 3.84375,14.375 -1.1e-4,5.33303 -1.49612,10.44021 -4.5625,15.40625 -3.05188,4.94228 -7.57932,9.1061 -13.59375,12.46875 -5.99929,3.35409 -12.74816,5.29505 -20.375,5.84375 -0.52771,0.0331 -0.93848,0.47125 -0.9375,1 l 0,19.25 -14.15625,0 0,-20.65625 c 0.0115,-0.47702 -0.31562,-0.89572 -0.78125,-1 -6.24994,-1.46738 -12.82661,-4.66999 -19.71875,-9.6875 -0.25021,-0.18733 -0.57446,-0.24211 -0.875,-0.15625 -0.300532,0.0859 -0.54278,0.30252 -0.65625,0.59375 l -3.75,9.25 -7.625,0 -7.875,-42.34375 14.3125,-3.4375 c 2.78387,6.00776 5.47545,10.86469 8.09375,14.4375 2.72545,3.71918 5.79951,6.95217 9.21875,9.6875 2.53873,2.0772 5.32819,3.64369 8.34375,4.6875 0.30262,0.0995 0.64703,0.0602 0.90625,-0.125 0.25923,-0.18516 0.40226,-0.49396 0.40625,-0.8125 l 0,-27.875 c 0.008,-0.43878 -0.2706,-0.83165 -0.6875,-0.96875 -11.9575,-4.0043 -20.14727,-7.50583 -24.4375,-10.375 C 91.88074,118.97403 88.49102,115.30727 86,110.8125 83.50306,106.30724 82.24999,101.8073 82.25,97.25 c -1e-5,-5.212767 1.5369,-10.24246 4.65625,-15.125 3.11104,-4.869387 7.41684,-8.74009 12.96875,-11.625 5.52685,-2.871687 12.35433,-4.48215 20.5,-4.8125 0.54002,-0.01694 0.96896,-0.45971 0.96875,-1 l 0,-17.65625 z m -2,37.375 c -3.80484,0.61143 -6.64239,1.484763 -8.125,2.53125 -2.55269,1.82341 -3.68754,3.817503 -3.6875,6.21875 -3e-5,1.99888 0.82821,3.916143 2.6875,5.90625 1.5957,1.70818 4.79074,3.41885 9.125,5.03125 l 0,-19.6875 z m 18.15625,55.125 0,22.40625 c 3.64443,-0.60429 6.6344,-1.65745 8.8125,-3.25 2.37481,-1.73646 3.46868,-3.90374 3.46875,-6.875 -7e-5,-2.6212 -0.83434,-4.7944 -2.625,-6.6875 -2.27356,-2.32082 -5.55946,-4.16441 -9.65625,-5.59375 z"
|
||||
transform="translate(247,408.36218)"
|
||||
style="fill:#000000;fill-opacity:0.69019608;fill-rule:evenodd;stroke:none;filter:url(#filter3566)"
|
||||
id="path3453" />
|
||||
<path
|
||||
d="m 125.4375,3.46875 -118.375,118.375 118.375,118.375 118.40625,-118.375 L 125.4375,3.46875 z m -7.09375,40.5625 16.15625,0 0,20.75 c 2.39847,0.725255 4.41692,1.465836 6.0625,2.21875 1.64544,0.753136 3.86718,1.989686 6.65625,3.71875 l 3.15625,-5.9375 9.125,0 9.78125,37.90625 -15.375,4.4375 C 149.89001,96.694255 143.4247,89.040435 134.5,84.1875 l 0,24.03125 c 10.98855,3.12374 18.97973,6.29945 24,9.5625 5.02009,3.26318 8.85036,7.29338 11.5,12.0625 2.64944,4.76921 3.96864,9.71205 3.96875,14.84375 -1.1e-4,5.52222 -1.56729,10.83367 -4.71875,15.9375 -3.15166,5.10387 -7.80181,9.38205 -13.9375,12.8125 -6.13586,3.43045 -13.05918,5.41095 -20.8125,5.96875 l 0,20.25 -16.15625,0 0,-21.65625 c -6.41472,-1.50606 -13.12131,-4.79903 -20.09375,-9.875 l -4,9.875 -9.125,0 -8.21875,-44.09375 16,-3.84375 c 2.900524,6.35894 5.697538,11.34646 8.375,15 2.6774,3.65361 5.68442,6.8226 9.03125,9.5 2.45427,2.0081 5.13065,3.52723 8.03125,4.53125 l 0,-27.875 c -11.9927,-4.01609 -20.225144,-7.51572 -24.6875,-10.5 C 89.193843,117.73459 85.690854,113.94229 83.125,109.3125 80.559118,104.68285 79.249989,99.991365 79.25,95.25 c -9e-6,-5.410553 1.605147,-10.635971 4.8125,-15.65625 3.207321,-5.02008 7.654184,-9.01231 13.34375,-11.96875 5.68951,-2.956214 12.68204,-4.602705 20.9375,-4.9375 l 0,-18.65625 z m 0,37.15625 c -4.57399,0.613679 -7.82228,1.598881 -9.71875,2.9375 -2.73325,1.952387 -4.09379,4.29813 -4.09375,7.03125 -4e-5,2.287057 0.98853,4.4742 2.96875,6.59375 1.98014,2.119711 5.6004,4.09012 10.84375,5.875 l 0,-22.4375 z m 16.15625,54.875 0,25.125 c 4.35076,-0.55777 7.81241,-1.79097 10.40625,-3.6875 2.59369,-1.8965 3.87492,-4.45224 3.875,-7.6875 -8e-5,-2.84474 -0.95404,-5.31111 -2.90625,-7.375 -2.67751,-2.73317 -6.46645,-4.8689 -11.375,-6.375 z"
|
||||
transform="translate(247,408.36218)"
|
||||
style="fill:url(#linearGradient3571);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect3418" />
|
||||
<rect
|
||||
width="113.67383"
|
||||
height="30.562906"
|
||||
x="581.44257"
|
||||
y="195.29802"
|
||||
transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,0,0)"
|
||||
style="fill:#6ad636;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect3277" />
|
||||
<path
|
||||
d="m 271.41033,548.04524 -21.3701,21.3701 c -0.51722,0.5028 -0.72366,1.24514 -0.54025,1.94279 0.18341,0.69764 0.72825,1.24248 1.42588,1.42589 0.69765,0.1834 1.44,-0.023 1.9428,-0.54026 l 21.91555,-21.91555 -3.37388,-2.28297 z"
|
||||
style="opacity:0.7;fill:url(#linearGradient3406);fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path3404" />
|
||||
<rect
|
||||
width="167.41394"
|
||||
height="167.41394"
|
||||
x="554.57251"
|
||||
y="27.848526"
|
||||
transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,0,0)"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect2251" />
|
||||
<path
|
||||
d="m 373.71159,410.23833 c -0.81035,-0.62925 -1.9654,-0.54334 -2.67374,0.19888 l -118.37411,118.3741 c -0.51722,0.5028 -0.72366,1.24514 -0.54025,1.94279 0.18341,0.69764 0.72825,1.24248 1.42588,1.42589 0.69765,0.1834 1.44,-0.023 1.9428,-0.54026 l 118.3741,-118.3741 c 0.42126,-0.40199 0.64643,-0.96759 0.61671,-1.54911 -0.0297,-0.58152 -0.31136,-1.12123 -0.77139,-1.47819 l 0,0 z"
|
||||
style="opacity:0.7;fill:url(#linearGradient3336);fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path3256" />
|
||||
<rect
|
||||
width="113.67384"
|
||||
height="30.56292"
|
||||
x="54.718613"
|
||||
y="-752.58502"
|
||||
transform="matrix(-0.7071068,0.7071068,-0.7071068,-0.7071068,0,0)"
|
||||
style="fill:#6ad636;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect3279" />
|
||||
<rect
|
||||
width="11.142811"
|
||||
height="14.090264"
|
||||
x="602.29895"
|
||||
y="203.53435"
|
||||
transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,0,0)"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect3291" />
|
||||
<rect
|
||||
width="11.142811"
|
||||
height="8.5145016"
|
||||
x="622.57172"
|
||||
y="203.53435"
|
||||
transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,0,0)"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect3293" />
|
||||
<path
|
||||
d="m 308.55497,616.32265 -7.87916,-7.87915 9.96333,-9.96333 7.87916,7.87916"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="rect3295" />
|
||||
<path
|
||||
d="m 315.01081,622.77849 9.96332,-9.96333 7.87916,7.87916 -9.96333,9.96332"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="rect3297" />
|
||||
<path
|
||||
d="m 445.04627,584.86337 1.41421,1.41422 9.96579,9.96578 1.41421,1.41422 1.41421,-1.41422 6.47445,-6.47444 -2.82843,-2.82843 2.82843,-2.82843 -7.13736,-7.13736 -2.82843,2.82843 -2.82842,-2.82843 -6.47445,6.47445 -1.41421,1.41421 z m 5.65685,0 5.06023,-5.06023 7.13736,7.13736 -5.06023,5.06023 -7.13736,-7.13736 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="rect3347" />
|
||||
<path
|
||||
d="m 427.09359,605.64776 -7.87916,7.87915"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="rect3343" />
|
||||
<path
|
||||
d="m 433.11734,619.55066 -9.96333,-9.96333"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="path3352" />
|
||||
<path
|
||||
d="m 441.42857,591.31278 -7.87916,7.87916"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="path3364" />
|
||||
<path
|
||||
d="m 447.45232,605.21568 -9.96333,-9.96333"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="path3366" />
|
||||
<path
|
||||
d="m 296.30415,584.14518 -9.96332,9.96333"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="rect3380" />
|
||||
<path
|
||||
d="m 306.75446,602.36485 7.87915,7.87916"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="path3384" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
+5
-5
@@ -1,11 +1,11 @@
|
||||
openttd (1.0~svn-1) UNRELEASED; urgency=low
|
||||
openttd (1.0.0~beta2) unstable; urgency=low
|
||||
|
||||
* Unreleased SVN version. Versioned to allow normal upgrades to released
|
||||
versions.
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Thu, 24 Dec 2009 01:02:03 +0100
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Tue, 05 Jan 2010 21:36:51 +0100
|
||||
|
||||
openttd (1.0~beta1) unstable; urgency=low
|
||||
|
||||
openttd (1.0.0~beta1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
readme.txt
|
||||
docs/Manual.txt
|
||||
docs/multiplayer.txt
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
@echo off
|
||||
if "%1" == "" goto err
|
||||
if "%2" == "" goto err
|
||||
|
||||
echo Downloading NoSound...
|
||||
|
||||
%1\wget http://binaries.openttd.org/installer/nosound-NOSOUND_VERSION.7z -O %2/data/nosound.7z
|
||||
|
||||
echo Extracting NoSound...
|
||||
|
||||
%1\7za x -y -O%2/data %2/data/nosound.7z
|
||||
del %1\data\nosound.7z /n
|
||||
|
||||
echo NoSound has been installed.
|
||||
goto end
|
||||
|
||||
:err
|
||||
echo This batch file is only intended for use by the OpenTTD installer.
|
||||
echo Please visit www.openttd.org for details on downloading NoSound.
|
||||
|
||||
:end
|
||||
@@ -0,0 +1,21 @@
|
||||
@echo off
|
||||
if "%1" == "" goto err
|
||||
if "%2" == "" goto err
|
||||
|
||||
echo Downloading OpenGFX...
|
||||
|
||||
%1\wget http://binaries.openttd.org/installer/opengfx-OPENGFX_VERSION.7z -O %2/data/opengfx.7z
|
||||
|
||||
echo Extracting OpenGFX...
|
||||
|
||||
%1\7za x -y -O%2/data %2/data/opengfx.7z
|
||||
del %1\data\opengfx.7z /n
|
||||
|
||||
echo OpenGFX has been installed.
|
||||
goto end
|
||||
|
||||
:err
|
||||
echo This batch file is only intended for use by the OpenTTD installer.
|
||||
echo Please visit www.openttd.org for details on downloading OpenGFX.
|
||||
|
||||
:end
|
||||
@@ -0,0 +1,21 @@
|
||||
@echo off
|
||||
if "%1" == "" goto err
|
||||
if "%2" == "" goto err
|
||||
|
||||
echo Downloading OpenSFX...
|
||||
|
||||
%1\wget http://binaries.openttd.org/installer/opensfx-OPENSFX_VERSION.7z -O %2/data/opensfx.7z
|
||||
|
||||
echo Extracting OpenSFX...
|
||||
|
||||
%1\7za x -y -O%2/data %2/data/opensfx.7z
|
||||
del %1\data\opensfx.7z /n
|
||||
|
||||
echo OpenSFX has been installed.
|
||||
goto end
|
||||
|
||||
:err
|
||||
echo This batch file is only intended for use by the OpenTTD installer.
|
||||
echo Please visit www.openttd.org for details on downloading OpenSFX.
|
||||
|
||||
:end
|
||||
@@ -0,0 +1,85 @@
|
||||
@echo off
|
||||
|
||||
set OPENTTD_VERSION=1.0.0-beta2
|
||||
set OPENSFX_VERSION=0.8.0
|
||||
set NOSOUND_VERSION=0.8.0
|
||||
set OPENGFX_VERSION=0.7.0
|
||||
|
||||
echo To make the installer, you must have the WarpIN compiler (wic) installed and in
|
||||
echo your path, as well as wget and unzip. This file will download the various DLLs
|
||||
echo to be distributed with the installer. If you do not want to continue, please
|
||||
echo press CTRL-C now.
|
||||
echo.
|
||||
pause
|
||||
|
||||
cd ..\..\..\bundle
|
||||
|
||||
if not exist SDL12.dll goto getsdl
|
||||
if not exist FSLib.dll goto getsdl
|
||||
goto libc
|
||||
|
||||
:getsdl
|
||||
|
||||
wget http://www.os2site.com/sw/dev/sdl/sdl-1.2.10-bin-20080804.zip -O dl.zip
|
||||
unzip -j dl.zip SDL/FSLib.dll SDL/SDL12.dll
|
||||
del dl.zip
|
||||
|
||||
:libc
|
||||
|
||||
if exist libc063.dll goto gcc
|
||||
|
||||
wget ftp://ftp.netlabs.org/pub/gcc/libc-0.6.3-csd3.zip -O dl.zip
|
||||
unzip -j dl.zip libc063.dll
|
||||
del dl.zip
|
||||
|
||||
:gcc
|
||||
|
||||
if exist gcc442.dll goto tools
|
||||
|
||||
wget http://www.owenrudge.net/various/gcc442.zip -O dl.zip
|
||||
unzip -j dl.zip gcc442.dll
|
||||
del dl.zip
|
||||
|
||||
:tools
|
||||
|
||||
cd ..\os\os2\installer
|
||||
if exist tools goto opengfx
|
||||
|
||||
mkdir tools
|
||||
cd tools
|
||||
|
||||
wget http://download.smedley.info/wget-1.11.4-os2-20090315.zip -O dl.zip
|
||||
unzip -j dl.zip wget/bin/wget.exe
|
||||
del dl.zip
|
||||
|
||||
wget ftp://ftp.os4.su/moveton/p7zip-9.04-bin-os2.zip -O dl.zip
|
||||
unzip -j dl.zip bin/7za.exe dll/ilibca.dll
|
||||
del dl.zip
|
||||
|
||||
cd ..
|
||||
|
||||
:opengfx
|
||||
|
||||
if exist opengfx goto opensfx
|
||||
|
||||
mkdir opengfx
|
||||
sed s/OPENGFX_VERSION/%OPENGFX_VERSION%/ < download_opengfx.cmd > opengfx\download_opengfx.cmd
|
||||
copy remove_opengfx.cmd opengfx
|
||||
|
||||
:opensfx
|
||||
if exist opensfx goto nosound
|
||||
|
||||
mkdir opensfx
|
||||
sed s/OPENSFX_VERSION/%OPENSFX_VERSION%/ < download_opensfx.cmd > opensfx\download_opensfx.cmd
|
||||
copy remove_opensfx.cmd opensfx
|
||||
|
||||
:nosound
|
||||
|
||||
mkdir nosound
|
||||
sed s/NOSOUND_VERSION/%NOSOUND_VERSION%/ < download_nosound.cmd > nosound\download_nosound.cmd
|
||||
copy remove_nosound.cmd nosound
|
||||
|
||||
:end
|
||||
|
||||
if exist openttd-%OPENTTD_VERSION%-os2.exe del openttd-%OPENTTD_VERSION%-os2.exe
|
||||
wic -a openttd-%OPENTTD_VERSION%-os2.exe 1 -c../../../bundle -r * 2 -ctools -r * 3 -copengfx -r * 4 -copensfx -r * 5 -cnosound -r * -U -s openttd.wis
|
||||
@@ -0,0 +1,106 @@
|
||||
<WARPIN>
|
||||
<HEAD>
|
||||
<TITLE>OpenTTD</TITLE>
|
||||
|
||||
<!-- Please remember to increment the build number for each package
|
||||
when releasing a new stable version, particularly if there are
|
||||
also release candidates sharing the major/minor versions:
|
||||
|
||||
e.g., 0\7\1\16279 for 0.7.1-RC1,
|
||||
0\7\1\16365 for 0.7.1-RC2,
|
||||
0\7\1\16540 for 0.7.1 final
|
||||
-->
|
||||
|
||||
<PCK INDEX="1"
|
||||
PACKAGEID="OpenTTD\OpenTTD\OpenTTD\1\0\0\18862"
|
||||
TARGET="$(WARPIN_DEFAULTAPPSPATH)\OpenTTD"
|
||||
SELECT
|
||||
TITLE="OpenTTD"
|
||||
LONGFILENAMES
|
||||
BASE
|
||||
>OpenTTD is an open source transport simulation game</PCK>
|
||||
|
||||
<PCK INDEX="2"
|
||||
PACKAGEID="OpenTTD\OpenTTD\Downloader\1\0\0\18862"
|
||||
TARGET="$(WARPIN_DEFAULTAPPSPATH)\OpenTTD"
|
||||
SELECT
|
||||
TITLE="Download tools"
|
||||
REQUIRES=1
|
||||
FIXED
|
||||
>Tools required for downloading the OpenGFX/SFX packs</PCK>
|
||||
|
||||
<PCK INDEX="3"
|
||||
PACKAGEID="OpenTTD\OpenTTD\OpenGFX\1\0\0\18862"
|
||||
TARGET="$(WARPIN_DEFAULTAPPSPATH)\OpenTTD"
|
||||
SELECT
|
||||
TITLE="OpenGFX"
|
||||
LONGFILENAMES
|
||||
REQUIRES=2
|
||||
EXECUTE="$(3)\download_opengfx.cmd | $(1) $(/1)"
|
||||
DEEXECUTE="$(3)\remove_opengfx.cmd | $(1) $(/1)"
|
||||
FIXED
|
||||
>Downloads the OpenGFX graphics pack for OpenTTD</PCK>
|
||||
|
||||
<PCK INDEX="4"
|
||||
PACKAGEID="OpenTTD\OpenTTD\OpenSFX\1\0\0\18862"
|
||||
TARGET="$(WARPIN_DEFAULTAPPSPATH)\OpenTTD"
|
||||
SELECT
|
||||
TITLE="OpenSFX"
|
||||
LONGFILENAMES
|
||||
REQUIRES=2
|
||||
EXECUTE="$(4)\download_opensfx.cmd | $(1) $(/1)"
|
||||
DEEXECUTE="$(4)\remove_opensfx.cmd | $(1) $(/1)"
|
||||
FIXED
|
||||
>Downloads the OpenSFX sound effects pack for OpenTTD</PCK>
|
||||
|
||||
<PCK INDEX="5"
|
||||
PACKAGEID="OpenTTD\OpenTTD\NoSound\1\0\0\18862"
|
||||
TARGET="$(WARPIN_DEFAULTAPPSPATH)\OpenTTD"
|
||||
SELECT
|
||||
TITLE="NoSound"
|
||||
LONGFILENAMES
|
||||
REQUIRES=2
|
||||
EXECUTE="$(5)\download_nosound.cmd | $(1) $(/1)"
|
||||
DEEXECUTE="$(5)\remove_nosound.cmd | $(1) $(/1)"
|
||||
FIXED
|
||||
>Downloads the NoSound pack for OpenTTD, to disable sound effects</PCK>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY>
|
||||
<!-- page 1: introductory page -->
|
||||
<PAGE INDEX="1" TYPE="README">
|
||||
<NEXTBUTTON TARGET=2>~Next</NEXTBUTTON>
|
||||
<README EXTRACTFROMPCK="1">README.TXT</README>
|
||||
<TEXT>Welcome to the OpenTTD installer. This program will install OpenTTD 1.0 on your system. Before we begin the installation process, please take a moment to read the following document.
|
||||
|
||||
Select "Next" to continue, or "Cancel" to abort installation.</TEXT>
|
||||
</PAGE>
|
||||
|
||||
<!-- page 2: licence page -->
|
||||
<PAGE INDEX="2" TYPE="README">
|
||||
<NEXTBUTTON TARGET=3>~Next</NEXTBUTTON>
|
||||
<README EXTRACTFROMPCK="1">COPYING</README>
|
||||
<TEXT>OpenTTD is licenced under the GNU General Public License. The text of the licence is below.
|
||||
|
||||
Select "Next" if you agree to this licence.
|
||||
Select "Cancel" to abort installation.</TEXT>
|
||||
</PAGE>
|
||||
|
||||
<!-- The TYPE=CONTAINER will list the packages which can be installed. -->
|
||||
<PAGE INDEX="3" TYPE="CONTAINER">
|
||||
<NEXTBUTTON TARGET="4">~Next</NEXTBUTTON>
|
||||
<TEXT>On this page, you may choose which components to install. If you don't own Transport Tycoon Deluxe, you will need to download OpenGFX (3MiB) and OpenSFX (10MiB).</TEXT>
|
||||
</PAGE>
|
||||
|
||||
<!-- Display another TEXT page to inform the user
|
||||
that installation will begin. We use the TARGET=0
|
||||
with the NEXTBUTTON tag which starts installation. -->
|
||||
|
||||
<PAGE INDEX="4" TYPE="TEXT">
|
||||
<NEXTBUTTON TARGET="0">I~nstall</NEXTBUTTON>
|
||||
<TEXT>
|
||||
Press "Install" to begin installing OpenTTD.</TEXT>
|
||||
</PAGE>
|
||||
</BODY>
|
||||
</WARPIN>
|
||||
@@ -0,0 +1,15 @@
|
||||
@echo off
|
||||
if "%1" == "" goto err
|
||||
|
||||
echo Removing NoSound...
|
||||
|
||||
del %1\data\nosound\*.* /n
|
||||
rmdir %1\data\nosound
|
||||
|
||||
echo NoSound has been removed.
|
||||
goto end
|
||||
|
||||
:err
|
||||
echo This batch file is only intended for use by the OpenTTD installer.
|
||||
|
||||
:end
|
||||
@@ -0,0 +1,15 @@
|
||||
@echo off
|
||||
if "%1" == "" goto err
|
||||
|
||||
echo Removing OpenGFX...
|
||||
|
||||
del %1\data\opengfx\*.* /n
|
||||
rmdir %1\data\opengfx
|
||||
|
||||
echo OpenGFX has been removed.
|
||||
goto end
|
||||
|
||||
:err
|
||||
echo This batch file is only intended for use by the OpenTTD installer.
|
||||
|
||||
:end
|
||||
@@ -0,0 +1,15 @@
|
||||
@echo off
|
||||
if "%1" == "" goto err
|
||||
|
||||
echo Removing OpenSFX...
|
||||
|
||||
del %1\data\opensfx\*.* /n
|
||||
rmdir %1\data\opensfx
|
||||
|
||||
echo OpenSFX has been removed.
|
||||
goto end
|
||||
|
||||
:err
|
||||
echo This batch file is only intended for use by the OpenTTD installer.
|
||||
|
||||
:end
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
#-------------------------------------------------------------------------------
|
||||
# spec file for the openttd rpm package
|
||||
#
|
||||
# Copyright (c) 2007-2009 The OpenTTD developers
|
||||
# Copyright (c) 2007-2010 The OpenTTD developers
|
||||
#
|
||||
# This file and all modifications and additions to the pristine
|
||||
# package are under the same license as the package itself
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
!define APPV_MAJOR 1
|
||||
!define APPV_MINOR 0
|
||||
!define APPV_MAINT 0
|
||||
!define APPV_BUILD 0
|
||||
!define APPV_EXTRA ""
|
||||
!define APPV_BUILD 1
|
||||
!define APPV_EXTRA "-beta2"
|
||||
|
||||
!define APPNAME "OpenTTD" ; Define application name
|
||||
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version
|
||||
@@ -30,7 +30,7 @@ SetCompressor LZMA
|
||||
; Version Info
|
||||
Var AddWinPrePopulate
|
||||
VIProductVersion "${APPVERSIONINTERNAL}"
|
||||
VIAddVersionKey "ProductName" "OpenTTD Installer ${APPBITS} bits for Windows ${EXTRA_VERSION}"
|
||||
VIAddVersionKey "ProductName" "OpenTTD ${APPBITS}-bit Installer for Windows ${EXTRA_VERSION}"
|
||||
VIAddVersionKey "Comments" "Installs ${APPNAMEANDVERSION}"
|
||||
VIAddVersionKey "CompanyName" "OpenTTD Developers"
|
||||
VIAddVersionKey "FileDescription" "Installs ${APPNAMEANDVERSION}"
|
||||
@@ -39,7 +39,7 @@ VIAddVersionKey "InternalName" "InstOpenTTD-${APPARCH}"
|
||||
VIAddVersionKey "FileVersion" "${APPVERSION}-${APPARCH}"
|
||||
VIAddVersionKey "LegalCopyright" " "
|
||||
; Main Install settings
|
||||
Name "${APPNAMEANDVERSION} ${APPBITS} bits for Windows ${EXTRA_VERSION}"
|
||||
Name "${APPNAMEANDVERSION} ${APPBITS}-bit for Windows ${EXTRA_VERSION}"
|
||||
|
||||
; NOTE: Keep trailing backslash!
|
||||
InstallDirRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Install Folder"
|
||||
@@ -83,7 +83,7 @@ Page custom SelectCDEnter SelectCDExit ": TTD folder"
|
||||
!define MUI_FINISHPAGE_TITLE_3LINES
|
||||
!define MUI_FINISHPAGE_RUN_TEXT "Run ${APPNAMEANDVERSION} now!"
|
||||
!define MUI_FINISHPAGE_RUN "$INSTDIR\openttd.exe"
|
||||
!define MUI_FINISHPAGE_LINK "Visit the OpenTTD site for latest news, FAQs and downloads"
|
||||
!define MUI_FINISHPAGE_LINK "Visit the OpenTTD site for the latest news, FAQs and downloads"
|
||||
!define MUI_FINISHPAGE_LINK_LOCATION "${APPURLLINK}"
|
||||
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
|
||||
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\readme.txt"
|
||||
@@ -131,6 +131,14 @@ Section "!OpenTTD" Section1
|
||||
SetOutPath "$INSTDIR\scripts\"
|
||||
File ${PATH_ROOT}bin\scripts\*.*
|
||||
|
||||
; Copy some documention files
|
||||
SetOutPath "$INSTDIR\docs\"
|
||||
File ${PATH_ROOT}docs\obg_format.txt
|
||||
File ${PATH_ROOT}docs\obm_format.txt
|
||||
File ${PATH_ROOT}docs\obs_format.txt
|
||||
File ${PATH_ROOT}docs\multiplayer.txt
|
||||
File ${PATH_ROOT}docs\32bpp.txt
|
||||
|
||||
; Copy the rest of the stuff
|
||||
SetOutPath "$INSTDIR\"
|
||||
|
||||
@@ -401,6 +409,9 @@ Section "Uninstall"
|
||||
; Scripts
|
||||
Delete "$INSTDIR\scripts\*.*"
|
||||
|
||||
; Documentation
|
||||
Delete "$INSTDIR\docs\*.*"
|
||||
|
||||
; Base sets for music
|
||||
Delete "$INSTDIR\gm\orig_win.obm"
|
||||
Delete "$INSTDIR\gm\no_music.obm"
|
||||
@@ -413,6 +424,7 @@ Section "Uninstall"
|
||||
RMDir "$INSTDIR\gm"
|
||||
RMDir "$INSTDIR\lang"
|
||||
RMDir "$INSTDIR\scripts"
|
||||
RMDir "$INSTDIR\docs"
|
||||
RMDir "$INSTDIR"
|
||||
|
||||
SectionEnd
|
||||
@@ -467,7 +479,7 @@ DosCD:
|
||||
IfFileExists $CDDRIVE\TRGI.GRF "" NoCD
|
||||
IfFileExists $CDDRIVE\SAMPLE.CAT hasCD NoCD
|
||||
NoCD:
|
||||
MessageBox MB_OK "Setup cannot continue without the Transport Tycoon Deluxe Location!"
|
||||
MessageBox MB_OK "Setup cannot continue without the Transport Tycoon Deluxe location!"
|
||||
Abort
|
||||
hasCD:
|
||||
FunctionEnd
|
||||
@@ -495,12 +507,12 @@ Function CheckProcessorArchitecture
|
||||
IntCmp $R0 64 Win64 0
|
||||
ClearErrors
|
||||
IntCmp ${APPBITS} 64 0 Done
|
||||
MessageBox MB_OKCANCEL|MB_ICONSTOP "You want to install the 64 bits OpenTTD on a 32 bits Operating System. This is not going to work. Please download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
|
||||
MessageBox MB_OKCANCEL|MB_ICONSTOP "You are trying to install the 64-bit OpenTTD on a 32-bit operating system. This is not going to work. Please download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
|
||||
GoTo Done
|
||||
Win64:
|
||||
ClearErrors
|
||||
IntCmp ${APPBITS} 64 Done 0
|
||||
MessageBox MB_OKCANCEL|MB_ICONINFORMATION "You want to install the 32 bits OpenTTD on a 64 bits Operating System. This is not adviced, but will work with reduced capabilities. We suggest that you download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
|
||||
MessageBox MB_OKCANCEL|MB_ICONINFORMATION "You are trying to install the 32-bit OpenTTD on a 64-bit operating system. This is not advised, but will work with reduced capabilities. We suggest that you download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
|
||||
GoTo Done
|
||||
Abort:
|
||||
Quit
|
||||
@@ -516,12 +528,12 @@ Function CheckWindowsVersion
|
||||
StrCmp $R0 "win9x" 0 WinNT
|
||||
ClearErrors
|
||||
StrCmp ${APPARCH} "win9x" Done 0
|
||||
MessageBox MB_OKCANCEL|MB_ICONSTOP "You want to install the Windows 2000, XP and Vista version on Windows 95, 98 or ME. This is will not work. Please download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
|
||||
MessageBox MB_OKCANCEL|MB_ICONSTOP "You are trying to install the Windows 2000, XP and Vista version on Windows 95, 98 or ME. This is will not work. Please download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
|
||||
GoTo Done
|
||||
WinNT:
|
||||
ClearErrors
|
||||
StrCmp ${APPARCH} "win9x" 0 Done
|
||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "You want to install the Windows 95, 98 and ME version on Windows 2000, XP or Vista. This is not adviced, but will work with reduced capabilities. We suggest that you download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
|
||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "You are trying to install the Windows 95, 98 and ME version on Windows 2000, XP or Vista. This is not advised, but will work with reduced capabilities. We suggest that you download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
|
||||
Abort:
|
||||
Quit
|
||||
Done:
|
||||
@@ -569,7 +581,7 @@ VersionsAreEqual:
|
||||
ReadRegStr $UninstallString HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "UninstallString"
|
||||
IfFileExists "$UninstallString" "" FinishCallback
|
||||
MessageBox MB_YESNO|MB_ICONQUESTION \
|
||||
"Setup detected ${APPNAMEANDVERSION} on your system. That's the version this program will install.$\n \
|
||||
"Setup detected ${APPNAMEANDVERSION} on your system. This is the same version that this program will install.$\n \
|
||||
Are you trying to uninstall it?" \
|
||||
IDYES DoUninstall IDNO FinishCallback
|
||||
DoUninstall: ; You have the same version as this installer. This allows you to uninstall.
|
||||
|
||||
@@ -39,6 +39,7 @@ Sub UpdateFiles(version)
|
||||
modified = Mid(version, InStrRev(version, Chr(9)) + 1)
|
||||
version = Mid(version, 1, InStr(version, Chr(9)) - 1)
|
||||
Else
|
||||
version = "1.0.0-beta2"
|
||||
revision = 0
|
||||
modified = 1
|
||||
End If
|
||||
|
||||
@@ -1467,6 +1467,10 @@
|
||||
RelativePath=".\..\src\tgp.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tilearea_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tile_cmd.h"
|
||||
>
|
||||
@@ -2635,10 +2639,6 @@
|
||||
RelativePath=".\..\src\ai\api\ai_bridgelist.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_buoylist.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_cargo.hpp"
|
||||
>
|
||||
@@ -2859,10 +2859,6 @@
|
||||
RelativePath=".\..\src\ai\api\ai_bridgelist.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_buoylist.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_cargo.cpp"
|
||||
>
|
||||
|
||||
@@ -1464,6 +1464,10 @@
|
||||
RelativePath=".\..\src\tgp.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tilearea_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\tile_cmd.h"
|
||||
>
|
||||
@@ -2632,10 +2636,6 @@
|
||||
RelativePath=".\..\src\ai\api\ai_bridgelist.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_buoylist.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_cargo.hpp"
|
||||
>
|
||||
@@ -2856,10 +2856,6 @@
|
||||
RelativePath=".\..\src\ai\api\ai_bridgelist.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_buoylist.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_cargo.cpp"
|
||||
>
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
OpenTTD README
|
||||
Last updated: 2009-12-24
|
||||
Release version: 1.0.0
|
||||
Last updated: 2010-01-05
|
||||
Release version: 1.0.0-beta2
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@ are:
|
||||
DOS - Allegro
|
||||
FreeBSD - SDL
|
||||
Linux - SDL or Allegro
|
||||
MacOS X (universal) - Cocoa video and sound drivers (SDL works too, but not 100% and not as a universal binary)
|
||||
MacOS X (universal) - Cocoa video and sound drivers
|
||||
MorphOS - SDL
|
||||
OpenBSD - SDL
|
||||
OS/2 - SDL
|
||||
|
||||
+1
-2
@@ -276,6 +276,7 @@ terraform_gui.h
|
||||
textbuf_gui.h
|
||||
texteff.hpp
|
||||
tgp.h
|
||||
tilearea_type.h
|
||||
tile_cmd.h
|
||||
tile_type.h
|
||||
tilehighlight_func.h
|
||||
@@ -596,7 +597,6 @@ ai/api/ai_base.hpp
|
||||
ai/api/ai_basestation.hpp
|
||||
ai/api/ai_bridge.hpp
|
||||
ai/api/ai_bridgelist.hpp
|
||||
ai/api/ai_buoylist.hpp
|
||||
ai/api/ai_cargo.hpp
|
||||
ai/api/ai_cargolist.hpp
|
||||
ai/api/ai_changelog.hpp
|
||||
@@ -653,7 +653,6 @@ ai/api/ai_base.cpp
|
||||
ai/api/ai_basestation.cpp
|
||||
ai/api/ai_bridge.cpp
|
||||
ai/api/ai_bridgelist.cpp
|
||||
ai/api/ai_buoylist.cpp
|
||||
ai/api/ai_cargo.cpp
|
||||
ai/api/ai_cargolist.cpp
|
||||
ai/api/ai_company.cpp
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
Squirrel 2.2.3 stable
|
||||
Squirrel 2.2.4 stable
|
||||
--------------------------------------------------------
|
||||
What is in this distribution?
|
||||
|
||||
|
||||
Vendored
+4
@@ -1,3 +1,7 @@
|
||||
***version 2.2.4 stable***
|
||||
-fixed bug in functions with default parameters
|
||||
|
||||
***2009-06-30 ***
|
||||
***version 2.2.3 stable***
|
||||
-added sq_getfunctioninfo
|
||||
-added compile time flag SQUSEDOUBLE to use double precision floats
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
The programming language SQUIRREL 2.2.3 stable
|
||||
The programming language SQUIRREL 2.2.4 stable
|
||||
|
||||
--------------------------------------------------
|
||||
The project has been compiled and run on Windows(Windows XP/2000 on Intel x86 Windows XP Pro on AMD x64) and
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ endobj
|
||||
<< /Length 246 /Filter [ /ASCII85Decode /FlateDecode ]
|
||||
>>
|
||||
stream
|
||||
Gaqd[\IQJ1&-UA:?a4/j=Osr[Jq*pMi=8^1`.4Za_?id24lM2b[+uF7AnR]0Q4ej;k9Tg),:)c*7W;lXW&kJok9tubis9_(_4P/*D/T*8;Q*)>(=mXhjT`"b>?n0P<Pro!b>b;#0GGp)YQMZ:%Nr.,]Ee)267S5JJPh(qWc.2JUaBD$]k#7;O+_Nj2/Q4AiQp[&KcBNMUK-,KPb[[BBjHJC?@,=d"kc#.j8KbXf_i75B.qFL8(7~>
|
||||
Gaqd[\IQJ1&-UA:?a4/j=Osr[Jq*pMi=8^1`.4Za_?id24lM2b[+uF7AnR]0Q4ej;k9Tg),:)c*7W;lXW&kJok9tubis9_(_4P/*D/T*8;Q*)>(=mXhjT`"b>?n0P<Pro!b>b;#0GGp)YQMZ:%Nr.,]Ee)267S5JJPh(qWc.2JUaBD$]k#7;O+_6b2/Q4AiQp[&KcBNMUK-,KPb[[BBjHJC?@,=d"kc#.j8KbXf_i75B.qGe8(@~>
|
||||
endstream
|
||||
endobj
|
||||
6 0 obj
|
||||
@@ -23,7 +23,7 @@ endobj
|
||||
<< /Length 1048 /Filter [ /ASCII85Decode /FlateDecode ]
|
||||
>>
|
||||
stream
|
||||
Gasao966RV&AJ$CE(_tHW'$"nl)EoW-Cl43$+I>J!Q(cIL^7FUIpZW@C?=A3PF7AQ=m^\8qW.Nip#]36"WOi=Z>/KJqc2SMl7_XYcptg:pcB1EJX87NpZol_JI4]qNHZ<g#tfEr^q5&[\1Os6*T\*+$S4b;(S^EE;&kDU.<!Ol:ul;9M/u.(]UrO(=b2RG@)AbU\j3`=N7,WEIE-@P,bP"Qe&UbbUnL4O)"!<XZcft?^&4IGUS.Kfg?Uu?33Z<EqpDPBQWhr>"&?p]Mnle.MPES[cKaYGb!&6k'!()=-').>W,jOO_%3mu-.H5Zrg*7ZCT'<m=n=pG'lHMiP2DfQ^#PUj-ZINhl:+\("E*=WT^ne1;TkUR#LZ3\(Lp:-[?E-_'Pu`YarLRa@g<U@H<dPKEjIaK]#;k\nk?t`Pg"QlHd^[2@R5@pm]E2r]WmVk5mp$j"C=AE$=(l97a"ml!D6uU?\rH05As:8:=lm(IGRa?d;@;=4dZ#HZKEfBraqgl%lNtck>5qf<W@BQ68s^\pLF`[[07LA;_bC(Ggd4$:s=HV:<cjkV95lH6g'eV@?LU%<*m'Z84i[d9o^D3b_;=6k(<g(U(Xo%&2p[Wa+jL..=_S,IqJm6c58c,"/?W+74V-4hCTr[[O@T,"a[p1r_O:pXM>QJd2'fg4jP.uP/AOm9f)Fi8hC97%aAZ?aM\KtR]<jj_oRU73@brD%>9Gs"XcgV-%V@81=bFEAcul?:gNR,7N3+TWTHC;@TY<?%P==RHW1DY%YY%\JY?NBeFFh/jh<InpX5Hc/]O>]Pe7j1];NWPl6@B-o4]oa0%;'OU3=_aJ2%mKF?i!d=n?#rD`fJ8GplF9bD@Bon"3cP(p2tR-ibOaeq:3u`4Uc\WI\d:#Y_LJK$H(rcCq2-d[-:e3-iAcmY!6Kabd@=:<2^7/sU5XW;GI'+)bX^7M2S:<hK&C_U:>eHps3M2#I?[e,4&<4`?tiTG`&_m]>DK9q85sF']rpe[,60WII=9k:?6aVmER%Jp>i2gZgsa2r&:IFNNq]6B.Jh~>
|
||||
Gasao966RV&AJ$CE(_tHW'$"nl)EoW-Cl43$+I>J!Q(cIL^7FUIpZW@C?=A3PF7AQ=m^\8qW.Nip#]36"WOi=Z>/KJqc2SMl7_XYcptg:pcB1EJX87NpZol_JI4]qNHZ<g#tfEr^q5&[\1Os6*T\*+$S4b;(S^EE;&kDU.<!Old)OK*''G5/GX&n.ZN;(m_1YI4Fb+GZ(o<&iqMsZ*83Zj+ViTFO84/<(0\RI9B:!f]Hhfhn7R?dV[+Be\EF>WipS1sc0=@h[#FpnE(4gB;'M""?S^l0mQ$nOa,Z`%Y8fk5[;!2#(JfeYt8uTA=r@RE?ekgRdZK?dm.bp%\,elE,HH/#^:>i!Ze;^9.$/EZ8601HAV3X2/%]#@B0#jP8CF<7I.+lB;Prf2M`XX1^ose*uj^rLuFbuUBjdCpK.%0sapS>:C`Idfjh-3;oG[i%`Jej(^#eYai'Y'YPNL$hc!gLu4^(Si?IbpSOS??X/qRiF]U>)IYH7nknA^=Sdr67Ja+):!QcCrgVWrD[+Kl.GBn&ZK@CC<%bVIE_/n>7A'TU5a5SXQ_`99iYpL<_I6_B].)W4[(>OHT;RRN+aEQjYDJbm+R/73ub)+`(D9NXbe;;?.*7rltdKS2#J7#"C25MH66F]j!rACf*#6$hSmBr1PNj=FhusU+MHWH_*<t-&5&eRV(c[Q!+ZN*1G8]OGOjr1f\J]LQN+NE`Okf)[Hhp$Vl_69*-\PA?*\hbm;h]Tt918N&E62;U'VT`NW`^**PT.p8Ah<*"!!A"%0ucWT?W>b'dcen"hgQ>)YPD.![O@G>F-*eOMf:k0mcL>c:((7.$:K!Fmh!k^[tQZf])ohKVpNo2(tRQ4lUgh`nN+0Nud-;#j/LXTr:tM0TEB;ZkLS&X[%t"J'$nS3p.8V(XKUE:S\Pg^.<tP7qSYSW;CN>UnD:;"q_-52O;FN$;*SX?PqdKr&YUpkg=#C%q^@Vto(XHJUj[5r8/Igf_UuRQ+;okI`ujX(VB@;ZDPPcWBIM:1mq)"S&MB\(,nMDReMqk`XaD9V\*4~>
|
||||
endstream
|
||||
endobj
|
||||
8 0 obj
|
||||
|
||||
+721
-721
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -176,7 +176,7 @@ typedef char SQChar;
|
||||
#define MAX_CHAR 0xFF
|
||||
#endif
|
||||
|
||||
#define SQUIRREL_VERSION _SC("Squirrel 2.2.3 stable - With custom OpenTTD modifications")
|
||||
#define SQUIRREL_VERSION _SC("Squirrel 2.2.4 stable - With custom OpenTTD modifications")
|
||||
#define SQUIRREL_COPYRIGHT _SC("Copyright (C) 2003-2009 Alberto Demichelis")
|
||||
#define SQUIRREL_AUTHOR _SC("Alberto Demichelis")
|
||||
|
||||
|
||||
+2
-6
@@ -334,12 +334,8 @@ bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQIntege
|
||||
SQInteger nargs = args;
|
||||
if (paramssize != nargs) {
|
||||
SQInteger ndef = func->_ndefaultparams;
|
||||
if(ndef && nargs < paramssize) {
|
||||
SQInteger diff = paramssize - nargs;
|
||||
if (diff > ndef) {
|
||||
Raise_Error(_SC("wrong number of parameters"));
|
||||
return false;
|
||||
}
|
||||
SQInteger diff;
|
||||
if(ndef && nargs < paramssize && (diff = paramssize - nargs) <= ndef) {
|
||||
for(SQInteger n = ndef - diff; n < ndef; n++) {
|
||||
_stack._vals[stackbase + (nargs++)] = closure->_defaultparams[n];
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
#include "api/ai_basestation.hpp.sq"
|
||||
#include "api/ai_bridge.hpp.sq"
|
||||
#include "api/ai_bridgelist.hpp.sq"
|
||||
#include "api/ai_buoylist.hpp.sq"
|
||||
#include "api/ai_cargo.hpp.sq"
|
||||
#include "api/ai_cargolist.hpp.sq"
|
||||
#include "api/ai_company.hpp.sq"
|
||||
@@ -177,7 +176,6 @@ void AIInstance::RegisterAPI()
|
||||
SQAIBridge_Register(this->engine);
|
||||
SQAIBridgeList_Register(this->engine);
|
||||
SQAIBridgeList_Length_Register(this->engine);
|
||||
SQAIBuoyList_Register(this->engine);
|
||||
SQAICargo_Register(this->engine);
|
||||
SQAICargoList_Register(this->engine);
|
||||
SQAICargoList_IndustryAccepting_Register(this->engine);
|
||||
|
||||
@@ -141,7 +141,7 @@ public:
|
||||
void Sort(SorterType sorter, bool ascending);
|
||||
|
||||
/**
|
||||
* Add one list to an other one.
|
||||
* Add one list to another one.
|
||||
* @param list The list that will be added to the caller.
|
||||
* @post The list to be added ('list') stays unmodified.
|
||||
* @note All added items keep their value as it was in 'list'.
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file ai_buoylist.cpp Implementation of AIBuoyList and friends. */
|
||||
|
||||
#include "ai_buoylist.hpp"
|
||||
#include "../../waypoint_base.h"
|
||||
|
||||
AIBuoyList::AIBuoyList()
|
||||
{
|
||||
Waypoint *wp;
|
||||
FOR_ALL_WAYPOINTS(wp) {
|
||||
if (wp->facilities & FACIL_DOCK) this->AddItem(wp->xy);
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file ai_buoylist.hpp List all the buoys. */
|
||||
|
||||
#ifndef AI_BUOYLIST_HPP
|
||||
#define AI_BUOYLIST_HPP
|
||||
|
||||
#include "ai_abstractlist.hpp"
|
||||
|
||||
/**
|
||||
* Creates a list of buoys.
|
||||
* @ingroup AIList
|
||||
*/
|
||||
class AIBuoyList : public AIAbstractList {
|
||||
public:
|
||||
static const char *GetClassName() { return "AIBuoyList"; }
|
||||
AIBuoyList();
|
||||
};
|
||||
|
||||
|
||||
#endif /* AI_BUOYLIST_HPP */
|
||||
@@ -1,30 +0,0 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* THIS FILE IS AUTO-GENERATED; PLEASE DO NOT ALTER MANUALLY */
|
||||
|
||||
#include "ai_buoylist.hpp"
|
||||
|
||||
namespace SQConvert {
|
||||
/* Allow AIBuoyList to be used as Squirrel parameter */
|
||||
template <> AIBuoyList *GetParam(ForceType<AIBuoyList *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBuoyList *)instance; }
|
||||
template <> AIBuoyList &GetParam(ForceType<AIBuoyList &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBuoyList *)instance; }
|
||||
template <> const AIBuoyList *GetParam(ForceType<const AIBuoyList *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBuoyList *)instance; }
|
||||
template <> const AIBuoyList &GetParam(ForceType<const AIBuoyList &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBuoyList *)instance; }
|
||||
template <> int Return<AIBuoyList *>(HSQUIRRELVM vm, AIBuoyList *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIBuoyList", res, NULL, DefSQDestructorCallback<AIBuoyList>); return 1; }
|
||||
}; // namespace SQConvert
|
||||
|
||||
void SQAIBuoyList_Register(Squirrel *engine)
|
||||
{
|
||||
DefSQClass <AIBuoyList> SQAIBuoyList("AIBuoyList");
|
||||
SQAIBuoyList.PreRegister(engine, "AIAbstractList");
|
||||
SQAIBuoyList.AddConstructor<void (AIBuoyList::*)(), 1>(engine, "x");
|
||||
|
||||
SQAIBuoyList.PostRegister(engine);
|
||||
}
|
||||
@@ -20,7 +20,7 @@
|
||||
*
|
||||
* API additions:
|
||||
* \li AIBaseStation
|
||||
* \li AIBuoyList
|
||||
* \li AIEngine::IsBuildable
|
||||
* \li AIEventCompanyAskMerger
|
||||
* \li AIIndustry::GetLastMonthTransportedPercentage
|
||||
* \li AIOrder::AIOF_GOTO_NEAREST_DEPOT
|
||||
@@ -33,12 +33,16 @@
|
||||
* \li AISubsidy::GetDestinationIndex
|
||||
* \li AITown::GetLastMonthTransportedPercentage
|
||||
* \li AIVehicleList_Depot
|
||||
* \li AIWaypoint::WaypointType
|
||||
* \li AIWaypoint::HasWaypointType
|
||||
* \li Some error messages to AIWaypoint
|
||||
*
|
||||
* API removals:
|
||||
* \li AIOrder::ChangeOrder, use AIOrder::SetOrderFlags instead
|
||||
* \li AIRail::RemoveRailStationTileRect, use AIRail::RemoveRailStationTileRectangle instead
|
||||
* \li AIRail::RemoveRailWaypoint, use AIRail::RemoveRailWaypointTileRectangle instead
|
||||
* \li AISign::GetMaxSignID, use AISignList instead
|
||||
* \li AIStation::ERR_STATION_TOO_LARGE, use AIError::ERR_STATION_TOO_SPREAD_OUT instead
|
||||
* \li AISubsidy::SourceIsTown, use AISubsidy::GetSourceType instead
|
||||
* \li AISubsidy::GetSource, use AISubsidy::GetSourceIndex instead
|
||||
* \li AISubsidy::DestinationIsTown, use AISubsidy::GetDestinationType instead
|
||||
@@ -56,6 +60,8 @@
|
||||
* AIBaseStation, but can still be used as AIStation.GetConstructionDate
|
||||
* \li WaypointID was replaced by StationID. All WaypointIDs from previous
|
||||
* savegames are invalid. Use STATION_INVALID instead of WAYPOINT_INVALID
|
||||
* \li AIWaypointList constructor now needs a WaypointType similiar to AIStationList,
|
||||
* it can also handle buoys.
|
||||
* \li AIVehicleList_Station now also works for waypoints
|
||||
* \li Stations can be build over rail without signals that is in the right
|
||||
* direction for the to-be built station. It will also convert the rail if
|
||||
@@ -81,6 +87,16 @@
|
||||
* For GetCargoType the first most used cargo type is returned.
|
||||
* \li AIIndustryType::GetConstructionCost() now returns -1 if the industry is
|
||||
* neither buildable nor prospectable.
|
||||
* \li AIEngine::IsValidEngine will now return true if you have at least one
|
||||
* vehicle of that type in your company, regardless if it's still buildable
|
||||
* or not. AIEngine::IsBuildable returns only true when you can actually
|
||||
* build an engine.
|
||||
* \li AITile::GetCargoProduction will now return the number of producers,
|
||||
* including houses instead the number of producing tiles. This means that
|
||||
* also industries that do not have a tile within the radius, but where
|
||||
* the search bounding box and the industry's bounding box intersect, are
|
||||
* counted. Previously these industries (and their cargos), although they
|
||||
* produced cargo for a station at the given location, were not returned.
|
||||
*
|
||||
* \b 0.7.5
|
||||
*
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "ai_engine.hpp"
|
||||
#include "ai_cargo.hpp"
|
||||
#include "../../company_func.h"
|
||||
#include "../../company_base.h"
|
||||
#include "../../strings_func.h"
|
||||
#include "../../settings_type.h"
|
||||
#include "../../rail.h"
|
||||
@@ -20,6 +21,13 @@
|
||||
#include "table/strings.h"
|
||||
|
||||
/* static */ bool AIEngine::IsValidEngine(EngineID engine_id)
|
||||
{
|
||||
const Engine *e = ::Engine::GetIfValid(engine_id);
|
||||
return e != NULL && (HasBit(e->company_avail, _current_company) || ::Company::Get(_current_company)->num_engines[engine_id] > 0);
|
||||
|
||||
}
|
||||
|
||||
/* static */ bool AIEngine::IsBuildable(EngineID engine_id)
|
||||
{
|
||||
const Engine *e = ::Engine::GetIfValid(engine_id);
|
||||
return e != NULL && HasBit(e->company_avail, _current_company);
|
||||
|
||||
@@ -26,12 +26,20 @@ public:
|
||||
static const char *GetClassName() { return "AIEngine"; }
|
||||
|
||||
/**
|
||||
* Checks whether the given engine type is valid and buildable by you.
|
||||
* Checks whether the given engine type is valid. An engine is valid if you
|
||||
* have at least one vehicle of this engine or it's currently buildable.
|
||||
* @param engine_id The engine to check.
|
||||
* @return True if and only if the engine type is valid.
|
||||
*/
|
||||
static bool IsValidEngine(EngineID engine_id);
|
||||
|
||||
/**
|
||||
* Checks whether the given engine type is buildable by you.
|
||||
* @param engine_id The engine to check.
|
||||
* @return True if and only if the engine type is buildable.
|
||||
*/
|
||||
static bool IsBuildable(EngineID engine_id);
|
||||
|
||||
/**
|
||||
* Get the name of an engine.
|
||||
* @param engine_id The engine to get the name of.
|
||||
|
||||
@@ -27,6 +27,7 @@ void SQAIEngine_Register(Squirrel *engine)
|
||||
SQAIEngine.AddConstructor<void (AIEngine::*)(), 1>(engine, "x");
|
||||
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::IsValidEngine, "IsValidEngine", 2, ".i");
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::IsBuildable, "IsBuildable", 2, ".i");
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::GetName, "GetName", 2, ".i");
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::GetCargoType, "GetCargoType", 2, ".i");
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::CanRefitCargo, "CanRefitCargo", 3, ".ii");
|
||||
|
||||
@@ -61,6 +61,7 @@ public:
|
||||
ERR_CAT_ROAD, //!< Error messages related to building / maintaining roads.
|
||||
ERR_CAT_ORDER, //!< Error messages related to managing orders.
|
||||
ERR_CAT_MARINE, //!< Error messages related to building / removing ships, docks and channels.
|
||||
ERR_CAT_WAYPOINT, //!< Error messages related to building / maintaining waypoints.
|
||||
|
||||
/**
|
||||
* DO NOT USE! The error bitsize determines how many errors can be stored in
|
||||
|
||||
@@ -44,6 +44,7 @@ void SQAIError_Register(Squirrel *engine)
|
||||
SQAIError.DefSQConst(engine, AIError::ERR_CAT_ROAD, "ERR_CAT_ROAD");
|
||||
SQAIError.DefSQConst(engine, AIError::ERR_CAT_ORDER, "ERR_CAT_ORDER");
|
||||
SQAIError.DefSQConst(engine, AIError::ERR_CAT_MARINE, "ERR_CAT_MARINE");
|
||||
SQAIError.DefSQConst(engine, AIError::ERR_CAT_WAYPOINT, "ERR_CAT_WAYPOINT");
|
||||
SQAIError.DefSQConst(engine, AIError::ERR_CAT_BIT_SIZE, "ERR_CAT_BIT_SIZE");
|
||||
SQAIError.DefSQConst(engine, AIError::ERR_NONE, "ERR_NONE");
|
||||
SQAIError.DefSQConst(engine, AIError::ERR_UNKNOWN, "ERR_UNKNOWN");
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
/* static */ bool AIGroup::SetAutoReplace(GroupID group_id, EngineID engine_id_old, EngineID engine_id_new)
|
||||
{
|
||||
EnforcePrecondition(false, IsValidGroup(group_id) || group_id == GROUP_ALL);
|
||||
EnforcePrecondition(false, AIEngine::IsValidEngine(engine_id_new));
|
||||
EnforcePrecondition(false, AIEngine::IsBuildable(engine_id_new));
|
||||
|
||||
return AIObject::DoCommand(0, group_id << 16, (engine_id_new << 16) | engine_id_old, CMD_SET_AUTOREPLACE);
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ public:
|
||||
* @param engine_id_old The engine id to start replacing.
|
||||
* @param engine_id_new The engine id to replace with.
|
||||
* @pre IsValidGroup(group_id) || group_id == GROUP_ALL.
|
||||
* @pre AIEngine.IsValidEngine(engine_id_new).
|
||||
* @pre AIEngine.IsBuildable(engine_id_new).
|
||||
* @note To stop autoreplacing engine_id_old, call StopAutoReplace(group_id, engine_id_old).
|
||||
*/
|
||||
static bool SetAutoReplace(GroupID group_id, EngineID engine_id_old, EngineID engine_id_new);
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
{
|
||||
if (!IsValidIndustry(industry_id)) return INVALID_TILE;
|
||||
|
||||
return ::Industry::Get(industry_id)->xy;
|
||||
return ::Industry::Get(industry_id)->location.tile;
|
||||
}
|
||||
|
||||
/* static */ int32 AIIndustry::GetAmountOfStationsAround(IndustryID industry_id)
|
||||
@@ -124,7 +124,7 @@
|
||||
|
||||
Industry *ind = ::Industry::Get(industry_id);
|
||||
StationList stations;
|
||||
::FindStationsAroundTiles(ind->xy, ind->width, ind->height, &stations);
|
||||
::FindStationsAroundTiles(ind->location, &stations);
|
||||
return (int32)stations.Length();
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
if (!HasHeliport(industry_id)) return INVALID_TILE;
|
||||
|
||||
const Industry *ind = ::Industry::Get(industry_id);
|
||||
TILE_LOOP(tile_cur, ind->width, ind->height, ind->xy) {
|
||||
TILE_AREA_LOOP(tile_cur, ind->location) {
|
||||
if (IsTileType(tile_cur, MP_STATION) && IsOilRig(tile_cur)) {
|
||||
return tile_cur;
|
||||
}
|
||||
@@ -184,7 +184,7 @@
|
||||
if (!HasDock(industry_id)) return INVALID_TILE;
|
||||
|
||||
const Industry *ind = ::Industry::Get(industry_id);
|
||||
TILE_LOOP(tile_cur, ind->width, ind->height, ind->xy) {
|
||||
TILE_AREA_LOOP(tile_cur, ind->location) {
|
||||
if (IsTileType(tile_cur, MP_STATION) && IsOilRig(tile_cur)) {
|
||||
return tile_cur;
|
||||
}
|
||||
|
||||
@@ -175,6 +175,9 @@ static const Order *ResolveOrder(VehicleID vehicle_id, AIOrder::OrderPosition or
|
||||
|
||||
switch (order->GetType()) {
|
||||
case OT_GOTO_DEPOT: {
|
||||
/* We don't know where the nearest depot is... (yet) */
|
||||
if (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) return INVALID_TILE;
|
||||
|
||||
if (v->type != VEH_AIRCRAFT) return ::Depot::Get(order->GetDestination())->xy;
|
||||
/* Aircraft's hangars are referenced by StationID, not DepotID */
|
||||
const Station *st = ::Station::Get(order->GetDestination());
|
||||
|
||||
@@ -67,7 +67,7 @@ public:
|
||||
/** Stop in the depot instead of only go there for servicing; only for depots. */
|
||||
AIOF_STOP_IN_DEPOT = 1 << 3,
|
||||
/** Go to nearest depot. */
|
||||
AIOF_GOTO_NEAREST_DEPOT = 1 << 4,
|
||||
AIOF_GOTO_NEAREST_DEPOT = 1 << 8,
|
||||
|
||||
/** All flags related to non-stop settings. */
|
||||
AIOF_NON_STOP_FLAGS = AIOF_NON_STOP_INTERMEDIATE | AIOF_NON_STOP_DESTINATION,
|
||||
|
||||
@@ -31,9 +31,6 @@ public:
|
||||
/** Base for station related errors */
|
||||
ERR_STATION_BASE = AIError::ERR_CAT_STATION << AIError::ERR_CAT_BIT_SIZE,
|
||||
|
||||
/** The station size exceeds the station spread */
|
||||
ERR_STATION_TOO_LARGE, // [STR_ERROR_STATION_TOO_SPREAD_OUT]
|
||||
|
||||
/** The station is build too close to another station, airport or dock */
|
||||
ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION, // [STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT, STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION, STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK]
|
||||
|
||||
@@ -41,7 +38,7 @@ public:
|
||||
ERR_STATION_TOO_MANY_STATIONS, // [STR_ERROR_TOO_MANY_STATIONS_LOADING, STR_ERROR_TOO_MANY_TRUCK_STOPS, STR_ERROR_TOO_MANY_BUS_STOPS]
|
||||
|
||||
/** There are too many stations, airports of docks in a town */
|
||||
ERR_STATION_TOO_MANY_STATIONS_IN_TOWN, // []
|
||||
ERR_STATION_TOO_MANY_STATIONS_IN_TOWN, // [STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT]
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -33,7 +33,6 @@ void SQAIStation_Register(Squirrel *engine)
|
||||
SQAIStation.AddConstructor<void (AIStation::*)(), 1>(engine, "x");
|
||||
|
||||
SQAIStation.DefSQConst(engine, AIStation::ERR_STATION_BASE, "ERR_STATION_BASE");
|
||||
SQAIStation.DefSQConst(engine, AIStation::ERR_STATION_TOO_LARGE, "ERR_STATION_TOO_LARGE");
|
||||
SQAIStation.DefSQConst(engine, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION, "ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION");
|
||||
SQAIStation.DefSQConst(engine, AIStation::ERR_STATION_TOO_MANY_STATIONS, "ERR_STATION_TOO_MANY_STATIONS");
|
||||
SQAIStation.DefSQConst(engine, AIStation::ERR_STATION_TOO_MANY_STATIONS_IN_TOWN, "ERR_STATION_TOO_MANY_STATIONS_IN_TOWN");
|
||||
@@ -44,15 +43,14 @@ void SQAIStation_Register(Squirrel *engine)
|
||||
SQAIStation.DefSQConst(engine, AIStation::STATION_DOCK, "STATION_DOCK");
|
||||
SQAIStation.DefSQConst(engine, AIStation::STATION_ANY, "STATION_ANY");
|
||||
|
||||
AIError::RegisterErrorMap(STR_ERROR_STATION_TOO_SPREAD_OUT, AIStation::ERR_STATION_TOO_LARGE);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_STATIONS_LOADING, AIStation::ERR_STATION_TOO_MANY_STATIONS);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_TRUCK_STOPS, AIStation::ERR_STATION_TOO_MANY_STATIONS);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_BUS_STOPS, AIStation::ERR_STATION_TOO_MANY_STATIONS);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK, AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_STATIONS_LOADING, AIStation::ERR_STATION_TOO_MANY_STATIONS);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_TRUCK_STOPS, AIStation::ERR_STATION_TOO_MANY_STATIONS);
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_MANY_BUS_STOPS, AIStation::ERR_STATION_TOO_MANY_STATIONS);
|
||||
AIError::RegisterErrorMap(STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT, AIStation::ERR_STATION_TOO_MANY_STATIONS_IN_TOWN);
|
||||
|
||||
AIError::RegisterErrorMapString(AIStation::ERR_STATION_TOO_LARGE, "ERR_STATION_TOO_LARGE");
|
||||
AIError::RegisterErrorMapString(AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION, "ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION");
|
||||
AIError::RegisterErrorMapString(AIStation::ERR_STATION_TOO_MANY_STATIONS, "ERR_STATION_TOO_MANY_STATIONS");
|
||||
AIError::RegisterErrorMapString(AIStation::ERR_STATION_TOO_MANY_STATIONS_IN_TOWN, "ERR_STATION_TOO_MANY_STATIONS_IN_TOWN");
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "../../road_map.h"
|
||||
#include "../../water_map.h"
|
||||
#include "../../clear_map.h"
|
||||
#include "../../tree_map.h"
|
||||
#include "../../town.h"
|
||||
#include "../../landscape.h"
|
||||
|
||||
@@ -68,7 +69,8 @@
|
||||
{
|
||||
if (!::IsValidTile(tile)) return false;
|
||||
|
||||
return ::IsTileType(tile, MP_WATER) && ::IsCoast(tile);
|
||||
return (::IsTileType(tile, MP_WATER) && ::IsCoast(tile)) ||
|
||||
(::IsTileType(tile, MP_TREES) && ::GetTreeGround(tile) == TREE_GROUND_SHORE);
|
||||
}
|
||||
|
||||
/* static */ bool AITile::IsStationTile(TileIndex tile)
|
||||
@@ -110,21 +112,21 @@
|
||||
{
|
||||
if (!::IsValidTile(tile)) return false;
|
||||
|
||||
return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_ROCKS));
|
||||
return (::IsTileType(tile, MP_CLEAR) && ::GetRawClearGround(tile) == ::CLEAR_ROCKS);
|
||||
}
|
||||
|
||||
/* static */ bool AITile::IsRoughTile(TileIndex tile)
|
||||
{
|
||||
if (!::IsValidTile(tile)) return false;
|
||||
|
||||
return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_ROUGH));
|
||||
return (::IsTileType(tile, MP_CLEAR) && ::GetRawClearGround(tile) == ::CLEAR_ROUGH);
|
||||
}
|
||||
|
||||
/* static */ bool AITile::IsSnowTile(TileIndex tile)
|
||||
{
|
||||
if (!::IsValidTile(tile)) return false;
|
||||
|
||||
return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_SNOW));
|
||||
return (::IsTileType(tile, MP_CLEAR) && ::IsSnowTile(tile));
|
||||
}
|
||||
|
||||
/* static */ bool AITile::IsDesertTile(TileIndex tile)
|
||||
|
||||
@@ -140,7 +140,8 @@ public:
|
||||
* @param tile The tile to check.
|
||||
* @pre AIMap::IsValidTile(tile).
|
||||
* @return True if and only if the tile is a coast tile.
|
||||
* @note Building on coast tiles in general is more expensive.
|
||||
* @note Building on coast tiles in general is more expensive. This is not
|
||||
* true if there are also trees on the tile, see #HasTreeOnTile.
|
||||
*/
|
||||
static bool IsCoastTile(TileIndex tile);
|
||||
|
||||
@@ -308,9 +309,8 @@ public:
|
||||
static int32 GetCargoAcceptance(TileIndex tile, CargoID cargo_type, int width, int height, int radius);
|
||||
|
||||
/**
|
||||
* Checks how many tiles in the radius produces this cargo.
|
||||
* It creates a radius around the tile, and adds up all tiles that produce
|
||||
* this cargo.
|
||||
* Checks how many producers in the radius produces this cargo.
|
||||
* It creates a radius around the tile, and counts all producer of this cargo.
|
||||
* @param tile The tile to check on.
|
||||
* @param cargo_type The cargo to check the production of.
|
||||
* @param width The width of the station.
|
||||
@@ -320,8 +320,7 @@ public:
|
||||
* @pre width > 0.
|
||||
* @pre height > 0.
|
||||
* @pre radius >= 0.
|
||||
* @return The tiles that produce this cargo within radius of the tile.
|
||||
* @note Town(houses) are not included in the value.
|
||||
* @return The number of producers that produce this cargo within radius of the tile.
|
||||
*/
|
||||
static int32 GetCargoProduction(TileIndex tile, CargoID cargo_type, int width, int height, int radius);
|
||||
|
||||
|
||||
+10
-46
@@ -14,32 +14,13 @@
|
||||
#include "../../industry.h"
|
||||
#include "../../station_base.h"
|
||||
|
||||
void AITileList::FixRectangleSpan(TileIndex &t1, TileIndex &t2)
|
||||
{
|
||||
uint x1 = ::TileX(t1);
|
||||
uint x2 = ::TileX(t2);
|
||||
|
||||
uint y1 = ::TileY(t1);
|
||||
uint y2 = ::TileY(t2);
|
||||
|
||||
if (x1 >= x2) ::Swap(x1, x2);
|
||||
if (y1 >= y2) ::Swap(y1, y2);
|
||||
|
||||
t1 = ::TileXY(x1, y1);
|
||||
t2 = ::TileXY(x2, y2);
|
||||
}
|
||||
|
||||
void AITileList::AddRectangle(TileIndex t1, TileIndex t2)
|
||||
{
|
||||
if (!::IsValidTile(t1)) return;
|
||||
if (!::IsValidTile(t2)) return;
|
||||
|
||||
this->FixRectangleSpan(t1, t2);
|
||||
|
||||
uint w = TileX(t2) - TileX(t1) + 1;
|
||||
uint h = TileY(t2) - TileY(t1) + 1;
|
||||
|
||||
TILE_LOOP(t, w, h, t1) this->AddItem(t);
|
||||
TileArea ta(t1, t2);
|
||||
TILE_AREA_LOOP(t, ta) this->AddItem(t);
|
||||
}
|
||||
|
||||
void AITileList::AddTile(TileIndex tile)
|
||||
@@ -54,12 +35,8 @@ void AITileList::RemoveRectangle(TileIndex t1, TileIndex t2)
|
||||
if (!::IsValidTile(t1)) return;
|
||||
if (!::IsValidTile(t2)) return;
|
||||
|
||||
this->FixRectangleSpan(t1, t2);
|
||||
|
||||
uint w = TileX(t2) - TileX(t1) + 1;
|
||||
uint h = TileY(t2) - TileY(t1) + 1;
|
||||
|
||||
TILE_LOOP(t, w, h, t1) this->RemoveItem(t);
|
||||
TileArea ta(t1, t2);
|
||||
TILE_AREA_LOOP(t, ta) this->RemoveItem(t);
|
||||
}
|
||||
|
||||
void AITileList::RemoveTile(TileIndex tile)
|
||||
@@ -86,7 +63,7 @@ AITileList_IndustryAccepting::AITileList_IndustryAccepting(IndustryID industry_i
|
||||
|
||||
if (!_settings_game.station.modified_catchment) radius = CA_UNMODIFIED;
|
||||
|
||||
TILE_LOOP(cur_tile, i->width + radius * 2, i->height + radius * 2, i->xy - ::TileDiffXY(radius, radius)) {
|
||||
TILE_LOOP(cur_tile, i->location.w + radius * 2, i->location.h + radius * 2, i->location.tile - ::TileDiffXY(radius, radius)) {
|
||||
if (!::IsValidTile(cur_tile)) continue;
|
||||
/* Exclude all tiles that belong to this industry */
|
||||
if (::IsTileType(cur_tile, MP_INDUSTRY) && ::GetIndustryIndex(cur_tile) == industry_id) continue;
|
||||
@@ -113,32 +90,19 @@ AITileList_IndustryProducing::AITileList_IndustryProducing(IndustryID industry_i
|
||||
const Industry *i = ::Industry::Get(industry_id);
|
||||
|
||||
/* Check if this industry produces anything */
|
||||
{
|
||||
bool cargo_produces = false;
|
||||
for (byte j = 0; j < lengthof(i->produced_cargo); j++) {
|
||||
if (i->produced_cargo[j] != CT_INVALID) cargo_produces = true;
|
||||
}
|
||||
if (!cargo_produces) return;
|
||||
bool cargo_produces = false;
|
||||
for (byte j = 0; j < lengthof(i->produced_cargo); j++) {
|
||||
if (i->produced_cargo[j] != CT_INVALID) cargo_produces = true;
|
||||
}
|
||||
if (!cargo_produces) return;
|
||||
|
||||
if (!_settings_game.station.modified_catchment) radius = CA_UNMODIFIED;
|
||||
|
||||
TILE_LOOP(cur_tile, i->width + radius * 2, i->height + radius * 2, i->xy - ::TileDiffXY(radius, radius)) {
|
||||
TILE_LOOP(cur_tile, i->location.w + radius * 2, i->location.h + radius * 2, i->location.tile - ::TileDiffXY(radius, radius)) {
|
||||
if (!::IsValidTile(cur_tile)) continue;
|
||||
/* Exclude all tiles that belong to this industry */
|
||||
if (::IsTileType(cur_tile, MP_INDUSTRY) && ::GetIndustryIndex(cur_tile) == industry_id) continue;
|
||||
|
||||
/* Only add the tile if it produces the cargo (a bug in OpenTTD makes this
|
||||
* inconsitance). */
|
||||
CargoArray produced = ::GetProductionAroundTiles(cur_tile, 1, 1, radius);
|
||||
{
|
||||
bool cargo_produces = false;
|
||||
for (byte j = 0; j < lengthof(i->produced_cargo); j++) {
|
||||
if (i->produced_cargo[j] != CT_INVALID && produced[i->produced_cargo[j]] != 0) cargo_produces = true;
|
||||
}
|
||||
if (!cargo_produces) continue;
|
||||
}
|
||||
|
||||
this->AddTile(cur_tile);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,16 +23,6 @@ class AITileList : public AIAbstractList {
|
||||
public:
|
||||
static const char *GetClassName() { return "AITileList"; }
|
||||
|
||||
private:
|
||||
/**
|
||||
* Make sure t1.x is smaller than t2.x and t1.y is smaller than t2.y.
|
||||
* They are swapped to ensure they are after calling this function.
|
||||
* @param t1 one of the corners of the rectangle.
|
||||
* @param t2 the other corner of the rectangle.
|
||||
*/
|
||||
void FixRectangleSpan(TileIndex &t1, TileIndex &t2);
|
||||
|
||||
public:
|
||||
/**
|
||||
* Adds the rectangle between tile_from and tile_to to the to-be-evaluated tiles.
|
||||
* @param tile_from One corner of the tiles to add.
|
||||
|
||||
@@ -36,7 +36,7 @@ public:
|
||||
/** The start tile must slope either North, South, West or East */
|
||||
ERR_TUNNEL_START_SITE_UNSUITABLE, // [STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL]
|
||||
|
||||
/** An other tunnel is in the way */
|
||||
/** Another tunnel is in the way */
|
||||
ERR_TUNNEL_ANOTHER_TUNNEL_IN_THE_WAY, // [STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY]
|
||||
|
||||
/** Unable to excavate land at the end to create the tunnel's exit */
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
/* static */ VehicleID AIVehicle::BuildVehicle(TileIndex depot, EngineID engine_id)
|
||||
{
|
||||
EnforcePrecondition(INVALID_VEHICLE, AIEngine::IsValidEngine(engine_id));
|
||||
EnforcePrecondition(INVALID_VEHICLE, AIEngine::IsBuildable(engine_id));
|
||||
|
||||
::VehicleType type = ::Engine::Get(engine_id)->type;
|
||||
|
||||
|
||||
@@ -300,7 +300,7 @@ public:
|
||||
* @param engine_id The engine to use for this vehicle.
|
||||
* @pre The tile at depot has a depot that can build the engine and
|
||||
* is owned by you.
|
||||
* @pre IsValidEngine(engine_id).
|
||||
* @pre AIEngine::IsBuildable(engine_id).
|
||||
* @exception AIVehicle::ERR_VEHICLE_TOO_MANY
|
||||
* @exception AIVehicle::ERR_VEHICLE_BUILD_DISABLED
|
||||
* @exception AIVehicle::ERR_VEHICLE_WRONG_DEPOT
|
||||
|
||||
@@ -11,18 +11,27 @@
|
||||
|
||||
#include "ai_waypoint.hpp"
|
||||
#include "ai_rail.hpp"
|
||||
#include "ai_marine.hpp"
|
||||
#include "../../company_func.h"
|
||||
#include "../../waypoint_base.h"
|
||||
|
||||
/* static */ bool AIWaypoint::IsValidWaypoint(StationID waypoint_id)
|
||||
{
|
||||
const Waypoint *wp = ::Waypoint::GetIfValid(waypoint_id);
|
||||
return wp != NULL && wp->owner == _current_company;
|
||||
return wp != NULL && (wp->owner == _current_company || wp->owner == OWNER_NONE);
|
||||
}
|
||||
|
||||
/* static */ StationID AIWaypoint::GetWaypointID(TileIndex tile)
|
||||
{
|
||||
if (!AIRail::IsRailWaypointTile(tile)) return STATION_INVALID;
|
||||
if (!AIRail::IsRailWaypointTile(tile) && !AIMarine::IsBuoyTile(tile)) return STATION_INVALID;
|
||||
|
||||
return ::GetStationIndex(tile);
|
||||
}
|
||||
|
||||
/* static */ bool AIWaypoint::HasWaypointType(StationID waypoint_id, WaypointType waypoint_type)
|
||||
{
|
||||
if (!IsValidWaypoint(waypoint_id)) return false;
|
||||
if (CountBits(waypoint_type) != 1) return false;
|
||||
|
||||
return (::Waypoint::Get(waypoint_id)->facilities & waypoint_type) != 0;
|
||||
}
|
||||
|
||||
@@ -23,6 +23,30 @@ class AIWaypoint : public AIBaseStation {
|
||||
public:
|
||||
static const char *GetClassName() { return "AIWaypoint"; }
|
||||
|
||||
/**
|
||||
* Type of waypoints known in the game.
|
||||
*/
|
||||
enum WaypointType {
|
||||
/* Values are important, as they represent the internal state of the game. */
|
||||
WAYPOINT_RAIL = 0x01, //!< Rail waypoint
|
||||
WAYPOINT_BUOY = 0x10, //!< Buoy
|
||||
WAYPOINT_ANY = 0x11, //!< All waypoint types
|
||||
};
|
||||
|
||||
/**
|
||||
* All waypoint related error messages.
|
||||
*/
|
||||
enum ErrorMessages {
|
||||
/** Base for waypoint related errors */
|
||||
ERR_WAYPOINT_BASE = AIError::ERR_CAT_WAYPOINT << AIError::ERR_CAT_BIT_SIZE,
|
||||
|
||||
/** The waypoint is build too close to another waypoint */
|
||||
ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT, // [STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT]
|
||||
|
||||
/** The waypoint would join more then one existing waypoint together. */
|
||||
ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS, // [STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING]
|
||||
};
|
||||
|
||||
/**
|
||||
* Checks whether the given waypoint is valid and owned by you.
|
||||
* @param waypoint_id The waypoint to check.
|
||||
@@ -37,6 +61,16 @@ public:
|
||||
* @return StationID of the waypoint.
|
||||
*/
|
||||
static StationID GetWaypointID(TileIndex tile);
|
||||
|
||||
/**
|
||||
* Check if any part of the waypoint contains a waypoint of the type waypoint_type
|
||||
* @param waypoint_id The waypoint to look at.
|
||||
* @param waypoint_type The WaypointType to look for.
|
||||
* @return True if the waypoint has a waypoint part of the type waypoint_type.
|
||||
*/
|
||||
static bool HasWaypointType(StationID waypoint_id, WaypointType waypoint_type);
|
||||
};
|
||||
|
||||
DECLARE_ENUM_AS_BIT_SET(AIWaypoint::WaypointType);
|
||||
|
||||
#endif /* AI_WAYPOINT_HPP */
|
||||
|
||||
@@ -12,6 +12,12 @@
|
||||
#include "ai_waypoint.hpp"
|
||||
|
||||
namespace SQConvert {
|
||||
/* Allow enums to be used as Squirrel parameters */
|
||||
template <> AIWaypoint::WaypointType GetParam(ForceType<AIWaypoint::WaypointType>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AIWaypoint::WaypointType)tmp; }
|
||||
template <> int Return<AIWaypoint::WaypointType>(HSQUIRRELVM vm, AIWaypoint::WaypointType res) { sq_pushinteger(vm, (int32)res); return 1; }
|
||||
template <> AIWaypoint::ErrorMessages GetParam(ForceType<AIWaypoint::ErrorMessages>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AIWaypoint::ErrorMessages)tmp; }
|
||||
template <> int Return<AIWaypoint::ErrorMessages>(HSQUIRRELVM vm, AIWaypoint::ErrorMessages res) { sq_pushinteger(vm, (int32)res); return 1; }
|
||||
|
||||
/* Allow AIWaypoint to be used as Squirrel parameter */
|
||||
template <> AIWaypoint *GetParam(ForceType<AIWaypoint *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIWaypoint *)instance; }
|
||||
template <> AIWaypoint &GetParam(ForceType<AIWaypoint &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIWaypoint *)instance; }
|
||||
@@ -26,8 +32,22 @@ void SQAIWaypoint_Register(Squirrel *engine)
|
||||
SQAIWaypoint.PreRegister(engine, "AIBaseStation");
|
||||
SQAIWaypoint.AddConstructor<void (AIWaypoint::*)(), 1>(engine, "x");
|
||||
|
||||
SQAIWaypoint.DefSQConst(engine, AIWaypoint::WAYPOINT_RAIL, "WAYPOINT_RAIL");
|
||||
SQAIWaypoint.DefSQConst(engine, AIWaypoint::WAYPOINT_BUOY, "WAYPOINT_BUOY");
|
||||
SQAIWaypoint.DefSQConst(engine, AIWaypoint::WAYPOINT_ANY, "WAYPOINT_ANY");
|
||||
SQAIWaypoint.DefSQConst(engine, AIWaypoint::ERR_WAYPOINT_BASE, "ERR_WAYPOINT_BASE");
|
||||
SQAIWaypoint.DefSQConst(engine, AIWaypoint::ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT, "ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT");
|
||||
SQAIWaypoint.DefSQConst(engine, AIWaypoint::ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS, "ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS");
|
||||
|
||||
AIError::RegisterErrorMap(STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT, AIWaypoint::ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT);
|
||||
AIError::RegisterErrorMap(STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING, AIWaypoint::ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS);
|
||||
|
||||
AIError::RegisterErrorMapString(AIWaypoint::ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT, "ERR_WAYPOINT_TOO_CLOSE_TO_ANOTHER_WAYPOINT");
|
||||
AIError::RegisterErrorMapString(AIWaypoint::ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS, "ERR_WAYPOINT_ADJOINS_MULTIPLE_WAYPOINTS");
|
||||
|
||||
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::IsValidWaypoint, "IsValidWaypoint", 2, ".i");
|
||||
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::GetWaypointID, "GetWaypointID", 2, ".i");
|
||||
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::HasWaypointType, "HasWaypointType", 3, ".ii");
|
||||
|
||||
SQAIWaypoint.PostRegister(engine);
|
||||
}
|
||||
|
||||
@@ -15,11 +15,12 @@
|
||||
#include "../../vehicle_base.h"
|
||||
#include "../../waypoint_base.h"
|
||||
|
||||
AIWaypointList::AIWaypointList()
|
||||
AIWaypointList::AIWaypointList(AIWaypoint::WaypointType waypoint_type)
|
||||
{
|
||||
const Waypoint *wp;
|
||||
FOR_ALL_WAYPOINTS(wp) {
|
||||
if (wp->facilities & FACIL_TRAIN && wp->owner == _current_company) this->AddItem(wp->index);
|
||||
if ((wp->facilities & waypoint_type) &&
|
||||
(wp->owner == _current_company || wp->owner == OWNER_NONE)) this->AddItem(wp->index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#define AI_WAYPOINTLIST_HPP
|
||||
|
||||
#include "ai_abstractlist.hpp"
|
||||
#include "ai_waypoint.hpp"
|
||||
|
||||
/**
|
||||
* Creates a list of waypoints of which you are the owner.
|
||||
@@ -22,7 +23,10 @@ class AIWaypointList : public AIAbstractList {
|
||||
public:
|
||||
static const char *GetClassName() { return "AIWaypointList"; }
|
||||
|
||||
AIWaypointList();
|
||||
/**
|
||||
* @param waypoint_type The type of waypoint to make a list of waypoints for.
|
||||
*/
|
||||
AIWaypointList(AIWaypoint::WaypointType waypoint_type);
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,7 +24,7 @@ void SQAIWaypointList_Register(Squirrel *engine)
|
||||
{
|
||||
DefSQClass <AIWaypointList> SQAIWaypointList("AIWaypointList");
|
||||
SQAIWaypointList.PreRegister(engine, "AIAbstractList");
|
||||
SQAIWaypointList.AddConstructor<void (AIWaypointList::*)(), 1>(engine, "x");
|
||||
SQAIWaypointList.AddConstructor<void (AIWaypointList::*)(AIWaypoint::WaypointType waypoint_type), 2>(engine, "xi");
|
||||
|
||||
SQAIWaypointList.PostRegister(engine);
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ static const AirportMovingData _airport_moving_data_town[] = {
|
||||
};
|
||||
|
||||
/* Metropolitan Airport (metropolitan) - 2 runways */
|
||||
static const AirportMovingData _airport_moving_data_metropolitan[27] = {
|
||||
static const AirportMovingData _airport_moving_data_metropolitan[28] = {
|
||||
AMD( 85, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar
|
||||
AMD( 85, 22, 0, DIR_N ), // 01 Taxi to right outside depot
|
||||
AMD( 26, 41, AMED_EXACTPOS, DIR_SW), // 02 Terminal 1
|
||||
@@ -165,6 +165,7 @@ static const AirportMovingData _airport_moving_data_metropolitan[27] = {
|
||||
AMD( 44, 63, AMED_HELI_RAISE, DIR_N ), // 24 Helicopter takeoff
|
||||
AMD( 15, 54, AMED_NOSPDCLAMP | AMED_SLOWTURN, DIR_N ), // 25 Get in position above landing spot helicopter
|
||||
AMD( 15, 54, AMED_HELI_LOWER, DIR_N ), // 26 Helicopter landing
|
||||
AMD( 21, 58, AMED_EXACTPOS, DIR_SW), // 27 Transitions after landing to on-ground movement
|
||||
};
|
||||
|
||||
/* International Airport (international) - 2 runways, 6 terminals, dedicated helipod */
|
||||
@@ -554,7 +555,7 @@ static const AirportFTAbuildup _airport_fta_metropolitan[] = {
|
||||
{ 15, 0, RUNWAY_IN_block, 16 },
|
||||
{ 16, 255, RUNWAY_IN_block, 0 }, { 16, ENDLANDING, IN_WAY_block, 17 },
|
||||
{ 17, 255, RUNWAY_OUT_block, 0 }, { 17, ENDLANDING, IN_WAY_block, 18 },
|
||||
{ 18, ENDLANDING, IN_WAY_block, 7 },
|
||||
{ 18, ENDLANDING, IN_WAY_block, 27 },
|
||||
/* In Air */
|
||||
{ 19, 0, NOTHING_block, 20 },
|
||||
{ 20, 0, NOTHING_block, 21 },
|
||||
@@ -565,6 +566,7 @@ static const AirportFTAbuildup _airport_fta_metropolitan[] = {
|
||||
{ 24, HELITAKEOFF, NOTHING_block, 0 },
|
||||
{ 25, HELILANDING, IN_WAY_block, 26 },
|
||||
{ 26, HELIENDLANDING, IN_WAY_block, 18 },
|
||||
{ 27, 255, TAXIWAY_BUSY_block, 27 }, { 27, TERM1, TERM1_block, 2 }, { 27, 0, 0, 7 },
|
||||
{ MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
|
||||
};
|
||||
|
||||
|
||||
@@ -202,14 +202,6 @@ void Blitter_32bppAnim::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomL
|
||||
return;
|
||||
}
|
||||
|
||||
if (_screen.width != this->anim_buf_width || _screen.height != this->anim_buf_height) {
|
||||
/* The size of the screen changed; we can assume we can wipe all data from our buffer */
|
||||
free(this->anim_buf);
|
||||
this->anim_buf = CallocT<uint8>(_screen.width * _screen.height);
|
||||
this->anim_buf_width = _screen.width;
|
||||
this->anim_buf_height = _screen.height;
|
||||
}
|
||||
|
||||
switch (mode) {
|
||||
default: NOT_REACHED();
|
||||
case BM_NORMAL: Draw<BM_NORMAL> (bp, zoom); return;
|
||||
@@ -448,3 +440,14 @@ Blitter::PaletteAnimation Blitter_32bppAnim::UsePaletteAnimation()
|
||||
{
|
||||
return Blitter::PALETTE_ANIMATION_BLITTER;
|
||||
}
|
||||
|
||||
void Blitter_32bppAnim::PostResize()
|
||||
{
|
||||
if (_screen.width != this->anim_buf_width || _screen.height != this->anim_buf_height) {
|
||||
/* The size of the screen changed; we can assume we can wipe all data from our buffer */
|
||||
free(this->anim_buf);
|
||||
this->anim_buf = CallocT<uint8>(_screen.width * _screen.height);
|
||||
this->anim_buf_width = _screen.width;
|
||||
this->anim_buf_height = _screen.height;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ public:
|
||||
|
||||
/* virtual */ const char *GetName() { return "32bpp-anim"; }
|
||||
/* virtual */ int GetBytesPerPixel() { return 5; }
|
||||
/* virtual */ void PostResize();
|
||||
|
||||
template <BlitterMode mode> void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
|
||||
};
|
||||
|
||||
@@ -200,6 +200,11 @@ public:
|
||||
*/
|
||||
virtual int GetBytesPerPixel() = 0;
|
||||
|
||||
/**
|
||||
* Post resize event
|
||||
*/
|
||||
virtual void PostResize() { };
|
||||
|
||||
virtual ~Blitter() { }
|
||||
};
|
||||
|
||||
|
||||
+24
-24
@@ -63,19 +63,14 @@ void DrawHillyLandTile(const TileInfo *ti)
|
||||
|
||||
void DrawClearLandFence(const TileInfo *ti)
|
||||
{
|
||||
byte z = ti->z;
|
||||
|
||||
if (ti->tileh & SLOPE_S) {
|
||||
z += TILE_HEIGHT;
|
||||
if (ti->tileh == SLOPE_STEEP_S) z += TILE_HEIGHT;
|
||||
}
|
||||
int z = GetSlopeZInCorner(ti->tileh, CORNER_S);
|
||||
|
||||
if (GetFenceSW(ti->tile) != 0) {
|
||||
DrawGroundSpriteAt(_clear_land_fence_sprites[GetFenceSW(ti->tile) - 1] + _fence_mod_by_tileh_sw[ti->tileh], PAL_NONE, ti->x, ti->y, z);
|
||||
DrawGroundSpriteAt(_clear_land_fence_sprites[GetFenceSW(ti->tile) - 1] + _fence_mod_by_tileh_sw[ti->tileh], PAL_NONE, 0, 0, z);
|
||||
}
|
||||
|
||||
if (GetFenceSE(ti->tile) != 0) {
|
||||
DrawGroundSpriteAt(_clear_land_fence_sprites[GetFenceSE(ti->tile) - 1] + _fence_mod_by_tileh_se[ti->tileh], PAL_NONE, ti->x, ti->y, z);
|
||||
DrawGroundSpriteAt(_clear_land_fence_sprites[GetFenceSE(ti->tile) - 1] + _fence_mod_by_tileh_se[ti->tileh], PAL_NONE, 0, 0, z);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,30 +151,35 @@ void TileLoopClearHelper(TileIndex tile)
|
||||
}
|
||||
|
||||
|
||||
/* convert into snowy tiles */
|
||||
/** Convert to or from snowy tiles. */
|
||||
static void TileLoopClearAlps(TileIndex tile)
|
||||
{
|
||||
int k = GetTileZ(tile) - GetSnowLine() + TILE_HEIGHT;
|
||||
|
||||
if (k < 0) { // well below the snow line
|
||||
if (!IsClearGround(tile, CLEAR_SNOW)) return;
|
||||
if (GetClearDensity(tile) == 0) SetClearGroundDensity(tile, CLEAR_GRASS, 3);
|
||||
if (k < 0) {
|
||||
/* Below the snow line, do nothing if no snow. */
|
||||
if (!IsSnowTile(tile)) return;
|
||||
} else {
|
||||
if (!IsClearGround(tile, CLEAR_SNOW)) {
|
||||
SetClearGroundDensity(tile, CLEAR_SNOW, 0);
|
||||
} else {
|
||||
uint density = min((uint)k / TILE_HEIGHT, 3);
|
||||
|
||||
if (GetClearDensity(tile) < density) {
|
||||
AddClearDensity(tile, 1);
|
||||
} else if (GetClearDensity(tile) > density) {
|
||||
AddClearDensity(tile, -1);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
/* At or above the snow line, make snow tile if needed. */
|
||||
if (!IsSnowTile(tile)) {
|
||||
MakeSnow(tile);
|
||||
MarkTileDirtyByTile(tile);
|
||||
return;
|
||||
}
|
||||
}
|
||||
/* Update snow density. */
|
||||
uint curent_density = GetClearDensity(tile);
|
||||
uint req_density = (k < 0) ? 0u : min((uint)k / TILE_HEIGHT, 3);
|
||||
|
||||
if (curent_density < req_density) {
|
||||
AddClearDensity(tile, 1);
|
||||
} else if (curent_density > req_density) {
|
||||
AddClearDensity(tile, -1);
|
||||
} else {
|
||||
/* Density at the required level. */
|
||||
if (k >= 0) return;
|
||||
ClearSnow(tile);
|
||||
}
|
||||
MarkTileDirtyByTile(tile);
|
||||
}
|
||||
|
||||
|
||||
+66
-2
@@ -28,6 +28,30 @@ enum ClearGround {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Test if a tile is covered with snow.
|
||||
* @param t the tile to check
|
||||
* @pre IsTileType(t, MP_CLEAR)
|
||||
* @return whether the tile is covered with snow.
|
||||
*/
|
||||
static inline bool IsSnowTile(TileIndex t)
|
||||
{
|
||||
assert(IsTileType(t, MP_CLEAR));
|
||||
return HasBit(_m[t].m3, 4);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the type of clear tile but never return CLEAR_SNOW.
|
||||
* @param t the tile to get the clear ground type of
|
||||
* @pre IsTileType(t, MP_CLEAR)
|
||||
* @return the ground type
|
||||
*/
|
||||
static inline ClearGround GetRawClearGround(TileIndex t)
|
||||
{
|
||||
assert(IsTileType(t, MP_CLEAR));
|
||||
return (ClearGround)GB(_m[t].m5, 2, 3);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the type of clear tile.
|
||||
* @param t the tile to get the clear ground type of
|
||||
@@ -36,8 +60,8 @@ enum ClearGround {
|
||||
*/
|
||||
static inline ClearGround GetClearGround(TileIndex t)
|
||||
{
|
||||
assert(IsTileType(t, MP_CLEAR));
|
||||
return (ClearGround)GB(_m[t].m5, 2, 3);
|
||||
if (IsSnowTile(t)) return CLEAR_SNOW;
|
||||
return GetRawClearGround(t);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,6 +100,18 @@ static inline void AddClearDensity(TileIndex t, int d)
|
||||
_m[t].m5 += d;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the density of a non-field clear tile.
|
||||
* @param t the tile to set the density of
|
||||
* @param d the new density
|
||||
* @pre IsTileType(t, MP_CLEAR)
|
||||
*/
|
||||
static inline void SetClearDensity(TileIndex t, uint d)
|
||||
{
|
||||
assert(IsTileType(t, MP_CLEAR));
|
||||
SB(_m[t].m5, 0, 2, d);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the counter used to advance to the next clear density/field type.
|
||||
@@ -269,4 +305,32 @@ static inline void MakeField(TileIndex t, uint field_type, IndustryID industry)
|
||||
_me[t].m7 = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a snow tile.
|
||||
* @param t the tile to make snowy
|
||||
* @pre GetClearGround(t) != CLEAR_SNOW
|
||||
*/
|
||||
static inline void MakeSnow(TileIndex t)
|
||||
{
|
||||
assert(GetClearGround(t) != CLEAR_SNOW);
|
||||
SetBit(_m[t].m3, 4);
|
||||
if (GetClearGround(t) == CLEAR_FIELDS) {
|
||||
SetClearGroundDensity(t, CLEAR_GRASS, 0);
|
||||
} else {
|
||||
SetClearDensity(t, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear the snow from a tile and return it to it's previous type.
|
||||
* @param t the tile to clear of snow
|
||||
* @pre GetClearGround(t) == CLEAR_SNOW
|
||||
*/
|
||||
static inline void ClearSnow(TileIndex t)
|
||||
{
|
||||
assert(GetClearGround(t) == CLEAR_SNOW);
|
||||
ClrBit(_m[t].m3, 4);
|
||||
SetClearDensity(t, 3);
|
||||
}
|
||||
|
||||
#endif /* CLEAR_MAP_H */
|
||||
|
||||
+226
-2
@@ -32,6 +32,8 @@
|
||||
#include "rail.h"
|
||||
#include "core/pool_func.hpp"
|
||||
#include "settings_func.h"
|
||||
#include "vehicle_base.h"
|
||||
#include "vehicle_func.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
|
||||
@@ -210,6 +212,12 @@ void SubtractMoneyFromCompanyFract(CompanyID company, CommandCost cst)
|
||||
if (cost != 0) SubtractMoneyFromAnyCompany(c, CommandCost(cst.GetExpensesType(), cost));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the right DParams to get the name of an owner.
|
||||
* @param owner the owner to get the name of.
|
||||
* @param tile optional tile to get the right town.
|
||||
* @pre if tile == 0, then owner can't be OWNER_TOWN.
|
||||
*/
|
||||
void GetNameOfOwner(Owner owner, TileIndex tile)
|
||||
{
|
||||
SetDParam(2, owner);
|
||||
@@ -222,6 +230,7 @@ void GetNameOfOwner(Owner owner, TileIndex tile)
|
||||
SetDParam(1, owner);
|
||||
}
|
||||
} else {
|
||||
assert(tile != 0);
|
||||
const Town *t = ClosestTownFromTile(tile, UINT_MAX);
|
||||
|
||||
SetDParam(0, STR_TOWN_NAME);
|
||||
@@ -230,16 +239,32 @@ void GetNameOfOwner(Owner owner, TileIndex tile)
|
||||
}
|
||||
|
||||
|
||||
bool CheckOwnership(Owner owner)
|
||||
/**
|
||||
* Check whether the current owner owns something.
|
||||
* If that isn't the case an appropriate error will be given.
|
||||
* @param owner the owner of the thing to check.
|
||||
* @param tile optional tile to get the right town.
|
||||
* @pre if tile == 0 then the owner can't be OWNER_TOWN.
|
||||
* @return true iff it's owned by the current company.
|
||||
*/
|
||||
bool CheckOwnership(Owner owner, TileIndex tile)
|
||||
{
|
||||
assert(owner < OWNER_END);
|
||||
assert(owner != OWNER_TOWN || tile != 0);
|
||||
|
||||
if (owner == _current_company) return true;
|
||||
_error_message = STR_ERROR_OWNED_BY;
|
||||
GetNameOfOwner(owner, 0);
|
||||
GetNameOfOwner(owner, tile);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the current owner owns the stuff on
|
||||
* the given tile. If that isn't the case an
|
||||
* appropriate error will be given.
|
||||
* @param tile the tile to check.
|
||||
* @return true iff it's owned by the current company.
|
||||
*/
|
||||
bool CheckTileOwnership(TileIndex tile)
|
||||
{
|
||||
Owner owner = GetTileOwner(tile);
|
||||
@@ -832,3 +857,202 @@ CommandCost CmdCompanyCtrl(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
|
||||
return CommandCost();
|
||||
}
|
||||
|
||||
/** Change the company manager's face.
|
||||
* @param tile unused
|
||||
* @param flags operation to perform
|
||||
* @param p1 unused
|
||||
* @param p2 face bitmasked
|
||||
* @param text unused
|
||||
* @return the cost of this operation or an error
|
||||
*/
|
||||
CommandCost CmdSetCompanyManagerFace(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
|
||||
{
|
||||
CompanyManagerFace cmf = (CompanyManagerFace)p2;
|
||||
|
||||
if (!IsValidCompanyManagerFace(cmf)) return CMD_ERROR;
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
Company::Get(_current_company)->face = cmf;
|
||||
MarkWholeScreenDirty();
|
||||
}
|
||||
return CommandCost();
|
||||
}
|
||||
|
||||
/** Change the company's company-colour
|
||||
* @param tile unused
|
||||
* @param flags operation to perform
|
||||
* @param p1 bitstuffed:
|
||||
* p1 bits 0-7 scheme to set
|
||||
* p1 bits 8-9 set in use state or first/second colour
|
||||
* @param p2 new colour for vehicles, property, etc.
|
||||
* @param text unused
|
||||
* @return the cost of this operation or an error
|
||||
*/
|
||||
CommandCost CmdSetCompanyColour(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
|
||||
{
|
||||
if (p2 >= 16) return CMD_ERROR; // max 16 colours
|
||||
|
||||
Colours colour = (Colours)p2;
|
||||
|
||||
LiveryScheme scheme = (LiveryScheme)GB(p1, 0, 8);
|
||||
byte state = GB(p1, 8, 2);
|
||||
|
||||
if (scheme >= LS_END || state >= 3) return CMD_ERROR;
|
||||
|
||||
Company *c = Company::Get(_current_company);
|
||||
|
||||
/* Ensure no two companies have the same primary colour */
|
||||
if (scheme == LS_DEFAULT && state == 0) {
|
||||
const Company *cc;
|
||||
FOR_ALL_COMPANIES(cc) {
|
||||
if (cc != c && cc->colour == colour) return CMD_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
switch (state) {
|
||||
case 0:
|
||||
c->livery[scheme].colour1 = colour;
|
||||
|
||||
/* If setting the first colour of the default scheme, adjust the
|
||||
* original and cached company colours too. */
|
||||
if (scheme == LS_DEFAULT) {
|
||||
_company_colours[_current_company] = colour;
|
||||
c->colour = colour;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
c->livery[scheme].colour2 = colour;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
c->livery[scheme].in_use = colour != 0;
|
||||
|
||||
/* Now handle setting the default scheme's in_use flag.
|
||||
* This is different to the other schemes, as it signifies if any
|
||||
* scheme is active at all. If this flag is not set, then no
|
||||
* processing of vehicle types occurs at all, and only the default
|
||||
* colours will be used. */
|
||||
|
||||
/* If enabling a scheme, set the default scheme to be in use too */
|
||||
if (colour != 0) {
|
||||
c->livery[LS_DEFAULT].in_use = true;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Else loop through all schemes to see if any are left enabled.
|
||||
* If not, disable the default scheme too. */
|
||||
c->livery[LS_DEFAULT].in_use = false;
|
||||
for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) {
|
||||
if (c->livery[scheme].in_use) {
|
||||
c->livery[LS_DEFAULT].in_use = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
ResetVehicleColourMap();
|
||||
MarkWholeScreenDirty();
|
||||
|
||||
/* Company colour data is indirectly cached. */
|
||||
Vehicle *v;
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if (v->owner == _current_company) v->InvalidateNewGRFCache();
|
||||
}
|
||||
}
|
||||
return CommandCost();
|
||||
}
|
||||
|
||||
static bool IsUniqueCompanyName(const char *name)
|
||||
{
|
||||
const Company *c;
|
||||
|
||||
FOR_ALL_COMPANIES(c) {
|
||||
if (c->name != NULL && strcmp(c->name, name) == 0) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Change the name of the company.
|
||||
* @param tile unused
|
||||
* @param flags operation to perform
|
||||
* @param p1 unused
|
||||
* @param p2 unused
|
||||
* @param text the new name or an empty string when resetting to the default
|
||||
* @return the cost of this operation or an error
|
||||
*/
|
||||
CommandCost CmdRenameCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
|
||||
{
|
||||
bool reset = StrEmpty(text);
|
||||
|
||||
if (!reset) {
|
||||
if (strlen(text) >= MAX_LENGTH_COMPANY_NAME_BYTES) return CMD_ERROR;
|
||||
if (!IsUniqueCompanyName(text)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE);
|
||||
}
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
Company *c = Company::Get(_current_company);
|
||||
free(c->name);
|
||||
c->name = reset ? NULL : strdup(text);
|
||||
MarkWholeScreenDirty();
|
||||
}
|
||||
|
||||
return CommandCost();
|
||||
}
|
||||
|
||||
static bool IsUniquePresidentName(const char *name)
|
||||
{
|
||||
const Company *c;
|
||||
|
||||
FOR_ALL_COMPANIES(c) {
|
||||
if (c->president_name != NULL && strcmp(c->president_name, name) == 0) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Change the name of the president.
|
||||
* @param tile unused
|
||||
* @param flags operation to perform
|
||||
* @param p1 unused
|
||||
* @param p2 unused
|
||||
* @param text the new name or an empty string when resetting to the default
|
||||
* @return the cost of this operation or an error
|
||||
*/
|
||||
CommandCost CmdRenamePresident(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
|
||||
{
|
||||
bool reset = StrEmpty(text);
|
||||
|
||||
if (!reset) {
|
||||
if (strlen(text) >= MAX_LENGTH_PRESIDENT_NAME_BYTES) return CMD_ERROR;
|
||||
if (!IsUniquePresidentName(text)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE);
|
||||
}
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
Company *c = Company::Get(_current_company);
|
||||
free(c->president_name);
|
||||
|
||||
if (reset) {
|
||||
c->president_name = NULL;
|
||||
} else {
|
||||
c->president_name = strdup(text);
|
||||
|
||||
if (c->name_1 == STR_SV_UNNAMED && c->name == NULL) {
|
||||
char buf[80];
|
||||
|
||||
snprintf(buf, lengthof(buf), "%s Transport", text);
|
||||
DoCommand(0, 0, 0, DC_EXEC, CMD_RENAME_COMPANY, buf);
|
||||
}
|
||||
}
|
||||
|
||||
MarkWholeScreenDirty();
|
||||
}
|
||||
|
||||
return CommandCost();
|
||||
}
|
||||
|
||||
+24
-8
@@ -437,7 +437,13 @@ struct CompanyFinancesWindow : Window {
|
||||
case CFW_TOGGLE_SIZE: // toggle size
|
||||
this->small = !this->small;
|
||||
this->SetupWidgets();
|
||||
this->ReInit();
|
||||
if (this->IsShaded()) {
|
||||
/* Finances window is not resizable, so size hints given during unshading have no effect
|
||||
* on the changed appearance of the window. */
|
||||
this->SetShaded(false);
|
||||
} else {
|
||||
this->ReInit();
|
||||
}
|
||||
break;
|
||||
|
||||
case CFW_INCREASE_LOAN: // increase loan
|
||||
@@ -1584,6 +1590,7 @@ enum CompanyWindowWidgets {
|
||||
CW_WIDGET_SELECT_RELOCATE, ///< View/hide the 'Relocate HQ' button.
|
||||
CW_WIDGET_RELOCATE_HQ,
|
||||
|
||||
CW_WIDGET_HAS_PASSWORD, ///< Draw a lock when the company has a password
|
||||
CW_WIDGET_SELECT_MULTIPLAYER, ///< Multiplayer selection panel.
|
||||
CW_WIDGET_COMPANY_PASSWORD,
|
||||
CW_WIDGET_COMPANY_JOIN,
|
||||
@@ -1599,7 +1606,7 @@ static const NWidgetPart _nested_company_widgets[] = {
|
||||
NWidget(WWT_PANEL, COLOUR_GREY),
|
||||
NWidget(NWID_HORIZONTAL), SetPIP(4, 6, 4),
|
||||
NWidget(NWID_VERTICAL), SetPIP(4, 2, 4),
|
||||
NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_FACE), SetMinimalSize(91, 120), SetFill(1, 0),
|
||||
NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_FACE), SetMinimalSize(92, 119), SetFill(1, 0),
|
||||
NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_FACE_TITLE), SetFill(1, 1), SetMinimalTextLines(2, 0),
|
||||
EndContainer(),
|
||||
NWidget(NWID_VERTICAL),
|
||||
@@ -1641,10 +1648,13 @@ static const NWidgetPart _nested_company_widgets[] = {
|
||||
NWidget(NWID_VERTICAL), SetPIP(4, 2, 4),
|
||||
NWidget(NWID_SPACER), SetMinimalSize(90, 0), SetFill(0, 1),
|
||||
/* Multi player buttons. */
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, CW_WIDGET_SELECT_MULTIPLAYER),
|
||||
NWidget(NWID_SPACER), SetFill(1, 0),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_PASSWORD), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_JOIN), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_EMPTY, COLOUR_GREY, CW_WIDGET_HAS_PASSWORD),
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, CW_WIDGET_SELECT_MULTIPLAYER),
|
||||
NWidget(NWID_SPACER), SetFill(1, 0),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_PASSWORD), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_JOIN), SetFill(1, 0), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
@@ -1805,6 +1815,12 @@ struct CompanyWindow : Window
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_SHARES_OWNED_BY).width);
|
||||
}
|
||||
} break;
|
||||
|
||||
#ifdef ENABLE_NETWORK
|
||||
case CW_WIDGET_HAS_PASSWORD:
|
||||
*size = maxdim(*size, GetSpriteSize(SPR_LOCK));
|
||||
break;
|
||||
#endif /* ENABLE_NETWORK */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1871,9 +1887,9 @@ struct CompanyWindow : Window
|
||||
} break;
|
||||
|
||||
#ifdef ENABLE_NETWORK
|
||||
case CW_WIDGET_COMPANY_PASSWORD:
|
||||
case CW_WIDGET_HAS_PASSWORD:
|
||||
if (_networking && NetworkCompanyIsPassworded(c->index)) {
|
||||
DrawSprite(SPR_LOCK, PAL_NONE, _dynlang.text_dir == TD_RTL ? r.right + 10 : r.left - 10, r.top + 2);
|
||||
DrawSprite(SPR_LOCK, PAL_NONE, r.left, r.top);
|
||||
}
|
||||
break;
|
||||
#endif /* ENABLE_NETWORK */
|
||||
|
||||
+10
-8
@@ -145,7 +145,7 @@ static void IConsoleClearCommand()
|
||||
static inline void IConsoleResetHistoryPos() {_iconsole_historypos = ICON_HISTORY_SIZE - 1;}
|
||||
|
||||
|
||||
static void IConsoleHistoryAdd(const char *cmd);
|
||||
static const char *IConsoleHistoryAdd(const char *cmd);
|
||||
static void IConsoleHistoryNavigate(int direction);
|
||||
|
||||
/** Widgets of the console window. */
|
||||
@@ -279,13 +279,13 @@ struct IConsoleWindow : Window
|
||||
IConsoleSwitch();
|
||||
break;
|
||||
|
||||
case WKC_RETURN: case WKC_NUM_ENTER:
|
||||
case WKC_RETURN: case WKC_NUM_ENTER: {
|
||||
IConsolePrintF(CC_COMMAND, "] %s", _iconsole_cmdline.buf);
|
||||
IConsoleHistoryAdd(_iconsole_cmdline.buf);
|
||||
|
||||
IConsoleCmdExec(_iconsole_cmdline.buf);
|
||||
const char *cmd = IConsoleHistoryAdd(_iconsole_cmdline.buf);
|
||||
IConsoleClearCommand();
|
||||
break;
|
||||
|
||||
if (cmd != NULL) IConsoleCmdExec(cmd);
|
||||
} break;
|
||||
|
||||
case WKC_CTRL | WKC_RETURN:
|
||||
_iconsole_mode = (_iconsole_mode == ICONSOLE_FULL) ? ICONSOLE_OPENED : ICONSOLE_FULL;
|
||||
@@ -412,14 +412,15 @@ void IConsoleClose() {if (_iconsole_mode == ICONSOLE_OPENED) IConsoleSwitch();}
|
||||
* Add the entered line into the history so you can look it back
|
||||
* scroll, etc. Put it to the beginning as it is the latest text
|
||||
* @param cmd Text to be entered into the 'history'
|
||||
* @return the command to execute
|
||||
*/
|
||||
static void IConsoleHistoryAdd(const char *cmd)
|
||||
static const char *IConsoleHistoryAdd(const char *cmd)
|
||||
{
|
||||
/* Strip all spaces at the begin */
|
||||
while (IsWhitespace(*cmd)) cmd++;
|
||||
|
||||
/* Do not put empty command in history */
|
||||
if (StrEmpty(cmd)) return;
|
||||
if (StrEmpty(cmd)) return NULL;
|
||||
|
||||
/* Do not put in history if command is same as previous */
|
||||
if (_iconsole_history[0] == NULL || strcmp(_iconsole_history[0], cmd) != 0) {
|
||||
@@ -430,6 +431,7 @@ static void IConsoleHistoryAdd(const char *cmd)
|
||||
|
||||
/* Reset the history position */
|
||||
IConsoleResetHistoryPos();
|
||||
return _iconsole_history[0];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -54,7 +54,7 @@ public:
|
||||
/**
|
||||
* Remove all items from the list and free allocated memory.
|
||||
*/
|
||||
void Reset()
|
||||
FORCEINLINE void Reset()
|
||||
{
|
||||
this->items = 0;
|
||||
this->capacity = 0;
|
||||
@@ -76,6 +76,7 @@ public:
|
||||
|
||||
/**
|
||||
* Append an item and return it.
|
||||
* @return pointer to newly allocated item
|
||||
*/
|
||||
FORCEINLINE T *Append()
|
||||
{
|
||||
@@ -144,7 +145,8 @@ public:
|
||||
return this->Find(item) != this->End();
|
||||
}
|
||||
|
||||
/** Removes given item from this map
|
||||
/**
|
||||
* Removes given item from this vector
|
||||
* @param item item to remove
|
||||
* @note it has to be pointer to item in this map. It is overwritten by the last item.
|
||||
*/
|
||||
@@ -223,6 +225,8 @@ public:
|
||||
*/
|
||||
FORCEINLINE const T *Get(uint index) const
|
||||
{
|
||||
/* Allow access to the 'first invalid' item */
|
||||
assert(index <= this->items);
|
||||
return &this->data[index];
|
||||
}
|
||||
|
||||
@@ -234,6 +238,8 @@ public:
|
||||
*/
|
||||
FORCEINLINE T *Get(uint index)
|
||||
{
|
||||
/* Allow access to the 'first invalid' item */
|
||||
assert(index <= this->items);
|
||||
return &this->data[index];
|
||||
}
|
||||
|
||||
@@ -245,6 +251,7 @@ public:
|
||||
*/
|
||||
FORCEINLINE const T &operator[](uint index) const
|
||||
{
|
||||
assert(index < this->items);
|
||||
return this->data[index];
|
||||
}
|
||||
|
||||
@@ -256,6 +263,7 @@ public:
|
||||
*/
|
||||
FORCEINLINE T &operator[](uint index)
|
||||
{
|
||||
assert(index < this->items);
|
||||
return this->data[index];
|
||||
}
|
||||
};
|
||||
|
||||
+6
-1
@@ -12,6 +12,7 @@
|
||||
#include "stdafx.h"
|
||||
#include "crashlog.h"
|
||||
#include "gamelog.h"
|
||||
#include "date_func.h"
|
||||
#include "map_func.h"
|
||||
#include "rev.h"
|
||||
#include "strings_func.h"
|
||||
@@ -205,7 +206,11 @@ char *CrashLog::FillCrashLog(char *buffer, const char *last) const
|
||||
{
|
||||
time_t cur_time = time(NULL);
|
||||
buffer += seprintf(buffer, last, "*** OpenTTD Crash Report ***\n\n");
|
||||
buffer += seprintf(buffer, last, "Crash at: %s\n", asctime(gmtime(&cur_time)));
|
||||
buffer += seprintf(buffer, last, "Crash at: %s", asctime(gmtime(&cur_time)));
|
||||
|
||||
YearMonthDay ymd;
|
||||
ConvertDateToYMD(_date, &ymd);
|
||||
buffer += seprintf(buffer, last, "In game date: %i-%02i-%02i (%i)\n\n", ymd.year, ymd.month + 1, ymd.day, _date_fract);
|
||||
|
||||
buffer = this->LogError(buffer, last, CrashLog::message);
|
||||
buffer = this->LogOpenTTDVersion(buffer, last);
|
||||
|
||||
+1
-1
@@ -72,7 +72,7 @@ const char *GetDebugString();
|
||||
* Is the correct usage for multiple TIC() / TOC() calls.
|
||||
*
|
||||
* TIC() / TOC() creates it's own block, so make sure not the mangle
|
||||
* it with an other block.
|
||||
* it with another block.
|
||||
**/
|
||||
#define TIC() {\
|
||||
extern uint64 ottd_rdtsc();\
|
||||
|
||||
@@ -401,8 +401,8 @@ static bool DisasterTick_Aircraft(DisasterVehicle *v, uint16 image_override, boo
|
||||
if (v->current_order.GetDestination() == 2) {
|
||||
if (GB(v->tick_counter, 0, 2) == 0) {
|
||||
Industry *i = Industry::Get(v->dest_tile); // Industry destructor calls ReleaseDisastersTargetingIndustry, so this is valid
|
||||
int x = TileX(i->xy) * TILE_SIZE;
|
||||
int y = TileY(i->xy) * TILE_SIZE;
|
||||
int x = TileX(i->location.tile) * TILE_SIZE;
|
||||
int y = TileY(i->location.tile) * TILE_SIZE;
|
||||
uint32 r = Random();
|
||||
|
||||
CreateEffectVehicleAbove(
|
||||
@@ -423,7 +423,7 @@ static bool DisasterTick_Aircraft(DisasterVehicle *v, uint16 image_override, boo
|
||||
|
||||
SetDParam(0, i->town->index);
|
||||
AddIndustryNewsItem(news_message, NS_ACCIDENT, i->index); // delete the news, when the industry closes
|
||||
SndPlayTileFx(SND_12_EXPLOSION, i->xy);
|
||||
SndPlayTileFx(SND_12_EXPLOSION, i->location.tile);
|
||||
}
|
||||
} else if (v->current_order.GetDestination() == 0) {
|
||||
int x = v->x_pos - (15 * TILE_SIZE);
|
||||
@@ -742,7 +742,7 @@ static void Disaster_Airplane_Init()
|
||||
|
||||
/* Start from the bottom (south side) of the map */
|
||||
int x = (MapSizeX() + 9) * TILE_SIZE - 1;
|
||||
int y = TileY(found->xy) * TILE_SIZE + 37;
|
||||
int y = TileY(found->location.tile) * TILE_SIZE + 37;
|
||||
|
||||
InitializeDisasterVehicle(v, x, y, 135, DIR_NE, ST_AIRPLANE);
|
||||
|
||||
@@ -772,7 +772,7 @@ static void Disaster_Helicopter_Init()
|
||||
DisasterVehicle *v = new DisasterVehicle();
|
||||
|
||||
int x = -16 * TILE_SIZE;
|
||||
int y = TileY(found->xy) * TILE_SIZE + 37;
|
||||
int y = TileY(found->location.tile) * TILE_SIZE + 37;
|
||||
|
||||
InitializeDisasterVehicle(v, x, y, 135, DIR_SW, ST_HELICOPTER);
|
||||
|
||||
@@ -861,10 +861,10 @@ static void Disaster_CoalMine_Init()
|
||||
if ((GetIndustrySpec(i->type)->behaviour & INDUSTRYBEH_CAN_SUBSIDENCE) && --index < 0) {
|
||||
SetDParam(0, i->town->index);
|
||||
AddNewsItem(STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE,
|
||||
NS_ACCIDENT, NR_TILE, i->xy + TileDiffXY(1, 1)); // keep the news, even when the mine closes
|
||||
NS_ACCIDENT, NR_TILE, i->location.tile + TileDiffXY(1, 1)); // keep the news, even when the mine closes
|
||||
|
||||
{
|
||||
TileIndex tile = i->xy;
|
||||
TileIndex tile = i->location.tile;
|
||||
TileIndexDiff step = TileOffsByDiagDir((DiagDirection)GB(Random(), 0, 2));
|
||||
|
||||
for (uint n = 0; n < 30; n++) {
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@
|
||||
|
||||
static void DrawTile_Dummy(TileInfo *ti)
|
||||
{
|
||||
DrawGroundSpriteAt(SPR_SHADOW_CELL, PAL_NONE, ti->x, ti->y, ti->z);
|
||||
DrawGroundSprite(SPR_SHADOW_CELL, PAL_NONE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+5
-3
@@ -304,7 +304,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
|
||||
if (c->share_owners[i] == old_owner) {
|
||||
/* Sell his shares */
|
||||
CommandCost res = DoCommand(0, c->index, 0, DC_EXEC, CMD_SELL_SHARE_IN_COMPANY);
|
||||
/* Because we are in a DoCommand, we can't just execute an other one and
|
||||
/* Because we are in a DoCommand, we can't just execute another one and
|
||||
* expect the money to be removed. We need to do it ourself! */
|
||||
SubtractMoneyFromCompany(res);
|
||||
}
|
||||
@@ -318,7 +318,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
|
||||
if (_current_company != INVALID_OWNER) {
|
||||
/* Sell the shares */
|
||||
CommandCost res = DoCommand(0, old_owner, 0, DC_EXEC, CMD_SELL_SHARE_IN_COMPANY);
|
||||
/* Because we are in a DoCommand, we can't just execute an other one and
|
||||
/* Because we are in a DoCommand, we can't just execute another one and
|
||||
* expect the money to be removed. We need to do it ourself! */
|
||||
SubtractMoneyFromCompany(res);
|
||||
}
|
||||
@@ -896,7 +896,7 @@ static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint n
|
||||
|
||||
/* Check if industry temporarily refuses acceptance */
|
||||
if (HasBit(indspec->callback_mask, CBM_IND_REFUSE_CARGO)) {
|
||||
uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO, 0, GetReverseCargoTranslation(cargo_type, indspec->grf_prop.grffile), ind, ind->type, ind->xy);
|
||||
uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO, 0, GetReverseCargoTranslation(cargo_type, indspec->grf_prop.grffile), ind, ind->type, ind->location.tile);
|
||||
if (res == 0) continue;
|
||||
}
|
||||
|
||||
@@ -1068,6 +1068,8 @@ Money CargoPayment::PayTransfer(const CargoPacket *cp, uint count)
|
||||
cp->DaysInTransit(),
|
||||
this->ct);
|
||||
|
||||
profit = profit * _settings_game.economy.feeder_payment_share / 100;
|
||||
|
||||
this->visual_profit += profit; // accumulate transfer profits for whole vehicle
|
||||
return profit; // account for the (virtual) profit already made for the cargo packet
|
||||
}
|
||||
|
||||
+1
-1
@@ -1004,7 +1004,7 @@ const Sprite *GetGlyph(FontSize size, WChar key)
|
||||
}
|
||||
|
||||
new_glyph.sprite = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, AllocateFont);
|
||||
new_glyph.width = (slot->advance.x >> 6) + (size != FS_NORMAL);
|
||||
new_glyph.width = slot->advance.x >> 6;
|
||||
|
||||
SetGlyphPtr(size, key, &new_glyph);
|
||||
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ void TileLoopClearHelper(TileIndex tile);
|
||||
bool CheckCompanyHasMoney(CommandCost cost);
|
||||
void SubtractMoneyFromCompany(CommandCost cost);
|
||||
void SubtractMoneyFromCompanyFract(CompanyID company, CommandCost cost);
|
||||
bool CheckOwnership(Owner owner);
|
||||
bool CheckOwnership(Owner owner, TileIndex tile = 0);
|
||||
bool CheckTileOwnership(TileIndex tile);
|
||||
|
||||
/* misc functions */
|
||||
|
||||
@@ -688,6 +688,8 @@ struct GenerateLandscapeWindow : public QueryStringBaseWindow {
|
||||
case GLAND_TREE_PULLDOWN: _settings_newgame.game_creation.tree_placer = index; break;
|
||||
case GLAND_SMOOTHNESS_PULLDOWN: _settings_newgame.game_creation.tgen_smoothness = index; break;
|
||||
case GLAND_VARIETY_PULLDOWN: _settings_newgame.game_creation.variety = index; break;
|
||||
case GLAND_LANDSCAPE_PULLDOWN: _settings_newgame.game_creation.land_generator = index; break;
|
||||
case GLAND_HEIGHTMAP_ROTATION_PULLDOWN: _settings_newgame.game_creation.heightmap_rotation = index; break;
|
||||
|
||||
case GLAND_TOWN_PULLDOWN:
|
||||
if ((uint)index == CUSTOM_TOWN_NUMBER_DIFFICULTY) {
|
||||
@@ -702,15 +704,6 @@ struct GenerateLandscapeWindow : public QueryStringBaseWindow {
|
||||
IConsoleSetSetting("difficulty.number_industries", index);
|
||||
break;
|
||||
|
||||
case GLAND_LANDSCAPE_PULLDOWN:
|
||||
/* case GLAND_HEIGHTMAP_PULLDOWN: */
|
||||
if (mode == GLWP_HEIGHTMAP) {
|
||||
_settings_newgame.game_creation.heightmap_rotation = index;
|
||||
} else {
|
||||
_settings_newgame.game_creation.land_generator = index;
|
||||
}
|
||||
break;
|
||||
|
||||
case GLAND_TERRAIN_PULLDOWN: {
|
||||
GameMode old_gm = _game_mode;
|
||||
_game_mode = GM_MENU;
|
||||
|
||||
+1
-1
@@ -1100,7 +1100,7 @@ public:
|
||||
FOR_ALL_COMPANIES(c) {
|
||||
SetDParam(0, c->index);
|
||||
SetDParam(1, c->index);
|
||||
SetDParam(2, widest_title);
|
||||
SetDParam(2, _performance_titles[widest_title]);
|
||||
widest_width = max(widest_width, GetStringBoundingBox(STR_COMPANY_LEAGUE_COMPANY_NAME).width);
|
||||
}
|
||||
|
||||
|
||||
@@ -62,6 +62,29 @@ struct EndGameHighScoreBaseWindow : Window {
|
||||
{
|
||||
delete this;
|
||||
}
|
||||
|
||||
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
|
||||
{
|
||||
switch (keycode) {
|
||||
/* Keys for telling we want to go on */
|
||||
case WKC_RETURN:
|
||||
case WKC_ESC:
|
||||
case WKC_SPACE:
|
||||
delete this;
|
||||
return ES_HANDLED;
|
||||
|
||||
/* Allow CTRL-Q to work like ALT-F4 in all cases */
|
||||
case 'Q' | WKC_CTRL:
|
||||
case 'Q' | WKC_META:
|
||||
return ES_NOT_HANDLED;
|
||||
|
||||
default:
|
||||
/* We want to handle all keys; we don't want windows in
|
||||
* the background to open. Especially the ones that do
|
||||
* locate themselves based on the status-/toolbars. */
|
||||
return ES_HANDLED;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/** End game window shown at the end of the game */
|
||||
|
||||
+3
-4
@@ -22,6 +22,7 @@
|
||||
#include "tile_type.h"
|
||||
#include "subsidy_type.h"
|
||||
#include "industry_map.h"
|
||||
#include "tilearea_type.h"
|
||||
|
||||
|
||||
typedef Pool<Industry, IndustryID, 64, 64000> IndustryPool;
|
||||
@@ -33,9 +34,7 @@ extern IndustryPool _industry_pool;
|
||||
struct Industry : IndustryPool::PoolItem<&_industry_pool> {
|
||||
typedef PersistentStorageArray<uint32, 16> PersistentStorage;
|
||||
|
||||
TileIndex xy; ///< coordinates of the primary tile the industry is built one
|
||||
byte width;
|
||||
byte height;
|
||||
TileArea location; ///< Location of the industry
|
||||
const Town *town; ///< Nearest town
|
||||
CargoID produced_cargo[2]; ///< 2 production cargo slots
|
||||
uint16 produced_cargo_waiting[2]; ///< amount of cargo produced per cargo
|
||||
@@ -69,7 +68,7 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> {
|
||||
|
||||
PersistentStorage psa; ///< Persistent storage for NewGRF industries.
|
||||
|
||||
Industry(TileIndex tile = INVALID_TILE) : xy(tile) {}
|
||||
Industry(TileIndex tile = INVALID_TILE) : location(tile, 0, 0) {}
|
||||
~Industry();
|
||||
|
||||
/**
|
||||
|
||||
+21
-38
@@ -142,9 +142,9 @@ Industry::~Industry()
|
||||
|
||||
/* Industry can also be destroyed when not fully initialized.
|
||||
* This means that we do not have to clear tiles either. */
|
||||
if (this->width == 0) return;
|
||||
if (this->location.w == 0) return;
|
||||
|
||||
TILE_LOOP(tile_cur, this->width, this->height, this->xy) {
|
||||
TILE_AREA_LOOP(tile_cur, this->location) {
|
||||
if (IsTileType(tile_cur, MP_INDUSTRY)) {
|
||||
if (GetIndustryIndex(tile_cur) == this->index) {
|
||||
/* MakeWaterKeepingClass() can also handle 'land' */
|
||||
@@ -153,6 +153,8 @@ Industry::~Industry()
|
||||
/* MakeWaterKeepingClass() doesn't remove animation if the tiles
|
||||
* become watery, but be on the safe side an always remote it. */
|
||||
DeleteAnimatedTile(tile_cur);
|
||||
|
||||
MarkTileDirtyByTile(tile_cur);
|
||||
}
|
||||
} else if (IsTileType(tile_cur, MP_STATION) && IsOilRig(tile_cur)) {
|
||||
DeleteOilRig(tile_cur);
|
||||
@@ -161,7 +163,7 @@ Industry::~Industry()
|
||||
|
||||
if (GetIndustrySpec(this->type)->behaviour & INDUSTRYBEH_PLANT_FIELDS) {
|
||||
/* Remove the farmland and convert it to regular tiles over time. */
|
||||
TILE_LOOP(tile_cur, 42, 42, this->xy - TileDiffXY(21, 21)) {
|
||||
TILE_LOOP(tile_cur, 42, 42, this->location.tile - TileDiffXY(21, 21)) {
|
||||
tile_cur = TILE_MASK(tile_cur);
|
||||
if (IsTileType(tile_cur, MP_CLEAR) && IsClearGround(tile_cur, CLEAR_FIELDS) &&
|
||||
GetIndustryIndexOfField(tile_cur) == this->index) {
|
||||
@@ -507,7 +509,7 @@ static void TransportIndustryGoods(TileIndex tile)
|
||||
const IndustrySpec *indspec = GetIndustrySpec(i->type);
|
||||
bool moved_cargo = false;
|
||||
|
||||
StationFinder stations(i->xy, i->width, i->height);
|
||||
StationFinder stations(i->location);
|
||||
|
||||
for (uint j = 0; j < lengthof(i->produced_cargo_waiting); j++) {
|
||||
uint cw = min(i->produced_cargo_waiting[j], 255);
|
||||
@@ -922,16 +924,6 @@ static TrackStatus GetTileTrackStatus_Industry(TileIndex tile, TransportType mod
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void AddProducedCargo_Industry(TileIndex tile, CargoArray &produced)
|
||||
{
|
||||
const Industry *i = Industry::GetByTile(tile);
|
||||
|
||||
for (uint j = 0; j < lengthof(i->produced_cargo); j++) {
|
||||
CargoID cargo = i->produced_cargo[j];
|
||||
if (cargo != CT_INVALID) produced[cargo]++;
|
||||
}
|
||||
}
|
||||
|
||||
static void ChangeTileOwner_Industry(TileIndex tile, Owner old_owner, Owner new_owner)
|
||||
{
|
||||
/* If the founder merges, the industry was created by the merged company */
|
||||
@@ -1041,10 +1033,10 @@ static void PlantFarmField(TileIndex tile, IndustryID industry)
|
||||
|
||||
void PlantRandomFarmField(const Industry *i)
|
||||
{
|
||||
int x = i->width / 2 + Random() % 31 - 16;
|
||||
int y = i->height / 2 + Random() % 31 - 16;
|
||||
int x = i->location.w / 2 + Random() % 31 - 16;
|
||||
int y = i->location.h / 2 + Random() % 31 - 16;
|
||||
|
||||
TileIndex tile = TileAddWrap(i->xy, x, y);
|
||||
TileIndex tile = TileAddWrap(i->location.tile, x, y);
|
||||
|
||||
if (tile != INVALID_TILE) PlantFarmField(tile, i->index);
|
||||
}
|
||||
@@ -1080,7 +1072,7 @@ static bool SearchLumberMillTrees(TileIndex tile, void *user_data)
|
||||
*/
|
||||
static void ChopLumberMillTrees(Industry *i)
|
||||
{
|
||||
TileIndex tile = i->xy;
|
||||
TileIndex tile = i->location.tile;
|
||||
|
||||
if (!IsIndustryCompleted(tile)) return; ///< Can't proceed if not completed
|
||||
|
||||
@@ -1099,7 +1091,7 @@ static void ProduceIndustryGoods(Industry *i)
|
||||
if (Chance16R(1, 14, r) && (num = indsp->number_of_sounds) != 0) {
|
||||
SndPlayTileFx(
|
||||
(SoundFx)(indsp->random_sounds[((r >> 16) * num) >> 16]),
|
||||
i->xy);
|
||||
i->location.tile);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1116,7 +1108,7 @@ static void ProduceIndustryGoods(Industry *i)
|
||||
if ((indbehav & INDUSTRYBEH_PLANT_FIELDS) != 0) {
|
||||
bool plant;
|
||||
if (HasBit(indsp->callback_mask, CBM_IND_SPECIAL_EFFECT)) {
|
||||
plant = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, Random(), 0, i, i->type, i->xy) != 0);
|
||||
plant = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, Random(), 0, i, i->type, i->location.tile) != 0);
|
||||
} else {
|
||||
plant = Chance16(1, 8);
|
||||
}
|
||||
@@ -1126,7 +1118,7 @@ static void ProduceIndustryGoods(Industry *i)
|
||||
if ((indbehav & INDUSTRYBEH_CUT_TREES) != 0) {
|
||||
bool cut = ((i->counter & 0x1FF) == 0);
|
||||
if (HasBit(indsp->callback_mask, CBM_IND_SPECIAL_EFFECT)) {
|
||||
cut = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, 0, 1, i, i->type, i->xy) != 0);
|
||||
cut = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, 0, 1, i, i->type, i->location.tile) != 0);
|
||||
}
|
||||
|
||||
if (cut) ChopLumberMillTrees(i);
|
||||
@@ -1497,7 +1489,7 @@ static bool CheckIfFarEnoughFromIndustry(TileIndex tile, int type)
|
||||
|
||||
FOR_ALL_INDUSTRIES(i) {
|
||||
/* Within 14 tiles from another industry is considered close */
|
||||
bool in_low_distance = DistanceMax(tile, i->xy) <= 14;
|
||||
bool in_low_distance = DistanceMax(tile, i->location.tile) <= 14;
|
||||
|
||||
/* check if an industry that accepts the same goods is nearby */
|
||||
if (in_low_distance &&
|
||||
@@ -1539,8 +1531,7 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const Ind
|
||||
uint32 r;
|
||||
uint j;
|
||||
|
||||
i->xy = tile;
|
||||
i->width = i->height = 0;
|
||||
i->location = TileArea(tile, 1, 1);
|
||||
i->type = type;
|
||||
IncIndustryTypeCount(type);
|
||||
|
||||
@@ -1627,12 +1618,7 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const Ind
|
||||
TileIndex cur_tile = tile + ToTileIndexDiff(it->ti);
|
||||
|
||||
if (it->gfx != GFX_WATERTILE_SPECIALCHECK) {
|
||||
byte size;
|
||||
|
||||
size = it->ti.x;
|
||||
if (size > i->width) i->width = size;
|
||||
size = it->ti.y;
|
||||
if (size > i->height)i->height = size;
|
||||
i->location.Add(cur_tile);
|
||||
|
||||
WaterClass wc = (IsWaterTile(cur_tile) ? GetWaterClass(cur_tile) : WATER_CLASS_INVALID);
|
||||
|
||||
@@ -1652,9 +1638,6 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const Ind
|
||||
}
|
||||
} while ((++it)->ti.x != -0x80);
|
||||
|
||||
i->width++;
|
||||
i->height++;
|
||||
|
||||
if (GetIndustrySpec(i->type)->behaviour & INDUSTRYBEH_PLANT_ON_BUILT) {
|
||||
for (j = 0; j != 50; j++) PlantRandomFarmField(i);
|
||||
}
|
||||
@@ -2029,7 +2012,7 @@ static void CanCargoServiceIndustry(CargoID cargo, Industry *ind, bool *c_accept
|
||||
if (HasBit(indspec->callback_mask, CBM_IND_REFUSE_CARGO)) {
|
||||
uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO,
|
||||
0, GetReverseCargoTranslation(cargo, indspec->grf_prop.grffile),
|
||||
ind, ind->type, ind->xy);
|
||||
ind, ind->type, ind->location.tile);
|
||||
if (res == 0) continue;
|
||||
}
|
||||
*c_accepts = true;
|
||||
@@ -2064,7 +2047,7 @@ static int WhoCanServiceIndustry(Industry *ind)
|
||||
{
|
||||
/* Find all stations within reach of the industry */
|
||||
StationList stations;
|
||||
FindStationsAroundTiles(ind->xy, ind->width, ind->height, &stations);
|
||||
FindStationsAroundTiles(ind->location, &stations);
|
||||
|
||||
if (stations.Length() == 0) return 0; // No stations found at all => nobody services
|
||||
|
||||
@@ -2166,7 +2149,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
|
||||
|
||||
bool callback_enabled = HasBit(indspec->callback_mask, monthly ? CBM_IND_MONTHLYPROD_CHANGE : CBM_IND_PRODUCTION_CHANGE);
|
||||
if (callback_enabled) {
|
||||
uint16 res = GetIndustryCallback(monthly ? CBID_INDUSTRY_MONTHLYPROD_CHANGE : CBID_INDUSTRY_PRODUCTION_CHANGE, 0, Random(), i, i->type, i->xy);
|
||||
uint16 res = GetIndustryCallback(monthly ? CBID_INDUSTRY_MONTHLYPROD_CHANGE : CBID_INDUSTRY_PRODUCTION_CHANGE, 0, Random(), i, i->type, i->location.tile);
|
||||
if (res != CALLBACK_FAILED) { // failed callback means "do nothing"
|
||||
suppress_message = HasBit(res, 7);
|
||||
/* Get the custom message if any */
|
||||
@@ -2341,7 +2324,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
|
||||
AddNewsItem(str,
|
||||
ns,
|
||||
closeit ? NR_TILE : NR_INDUSTRY,
|
||||
closeit ? i->xy + TileDiffXY(1, 1) : i->index);
|
||||
closeit ? i->location.tile + TileDiffXY(1, 1) : i->index);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2475,7 +2458,7 @@ extern const TileTypeProcs _tile_type_industry_procs = {
|
||||
AnimateTile_Industry, // animate_tile_proc
|
||||
TileLoop_Industry, // tile_loop_proc
|
||||
ChangeTileOwner_Industry, // change_tile_owner_proc
|
||||
AddProducedCargo_Industry, // add_produced_cargo_proc
|
||||
NULL, // add_produced_cargo_proc
|
||||
NULL, // vehicle_enter_tile_proc
|
||||
GetFoundation_Industry, // get_foundation_proc
|
||||
TerraformTile_Industry, // terraform_tile_proc
|
||||
|
||||
@@ -63,7 +63,7 @@ static void GetCargoSuffix(uint cargo, CargoSuffixType cst, const Industry *ind,
|
||||
{
|
||||
suffix[0] = '\0';
|
||||
if (HasBit(indspec->callback_mask, CBM_IND_CARGO_SUFFIX)) {
|
||||
uint16 callback = GetIndustryCallback(CBID_INDUSTRY_CARGO_SUFFIX, 0, (cst << 8) | cargo, const_cast<Industry *>(ind), ind_type, (cst != CST_FUND) ? ind->xy : INVALID_TILE);
|
||||
uint16 callback = GetIndustryCallback(CBID_INDUSTRY_CARGO_SUFFIX, 0, (cst << 8) | cargo, const_cast<Industry *>(ind), ind_type, (cst != CST_FUND) ? ind->location.tile : INVALID_TILE);
|
||||
if (GB(callback, 0, 8) != 0xFF) {
|
||||
PrepareTextRefStackUsage(6);
|
||||
GetString(suffix, GetGRFStringID(indspec->grf_prop.grffile->grfid, 0xD000 + callback), suffix_last);
|
||||
@@ -580,7 +580,7 @@ public:
|
||||
|
||||
this->InitNested(desc, window_number);
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(IVW_VIEWPORT);
|
||||
nvp->InitializeViewport(this, Industry::Get(window_number)->xy + TileDiffXY(1, 1), ZOOM_LVL_INDUSTRY);
|
||||
nvp->InitializeViewport(this, Industry::Get(window_number)->location.tile + TileDiffXY(1, 1), ZOOM_LVL_INDUSTRY);
|
||||
}
|
||||
|
||||
virtual void OnPaint()
|
||||
@@ -674,7 +674,7 @@ public:
|
||||
|
||||
/* Get the extra message for the GUI */
|
||||
if (HasBit(ind->callback_mask, CBM_IND_WINDOW_MORE_TEXT)) {
|
||||
uint16 callback_res = GetIndustryCallback(CBID_INDUSTRY_WINDOW_MORE_TEXT, 0, 0, i, i->type, i->xy);
|
||||
uint16 callback_res = GetIndustryCallback(CBID_INDUSTRY_WINDOW_MORE_TEXT, 0, 0, i, i->type, i->location.tile);
|
||||
if (callback_res != CALLBACK_FAILED) {
|
||||
StringID message = GetGRFStringID(ind->grf_prop.grffile->grfid, 0xD000 + callback_res);
|
||||
if (message != STR_NULL && message != STR_UNDEFINED) {
|
||||
@@ -747,9 +747,9 @@ public:
|
||||
case IVW_GOTO:
|
||||
i = Industry::Get(this->window_number);
|
||||
if (_ctrl_pressed) {
|
||||
ShowExtraViewPortWindow(i->xy + TileDiffXY(1, 1));
|
||||
ShowExtraViewPortWindow(i->location.tile + TileDiffXY(1, 1));
|
||||
} else {
|
||||
ScrollMainWindowToTile(i->xy + TileDiffXY(1, 1));
|
||||
ScrollMainWindowToTile(i->location.tile + TileDiffXY(1, 1));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -992,7 +992,7 @@ protected:
|
||||
/* Industry name */
|
||||
SetDParam(p++, i->index);
|
||||
|
||||
char cargo_suffix[lengthof(i->produced_cargo)][512];
|
||||
static char cargo_suffix[lengthof(i->produced_cargo)][512];
|
||||
GetAllCargoSuffixes(3, CST_DIR, i, i->type, indsp, i->produced_cargo, cargo_suffix);
|
||||
|
||||
/* Industry productions */
|
||||
@@ -1124,9 +1124,9 @@ public:
|
||||
p = y + this->vscroll.GetPosition();
|
||||
if (p < this->industries.Length()) {
|
||||
if (_ctrl_pressed) {
|
||||
ShowExtraViewPortWindow(this->industries[p]->xy);
|
||||
ShowExtraViewPortWindow(this->industries[p]->location.tile);
|
||||
} else {
|
||||
ScrollMainWindowToTile(this->industries[p]->xy);
|
||||
ScrollMainWindowToTile(this->industries[p]->location.tile);
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
||||
+2
-2
@@ -338,7 +338,7 @@ Slope GetFoundationSlope(TileIndex tile, uint *z)
|
||||
}
|
||||
|
||||
|
||||
static bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here)
|
||||
bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here)
|
||||
{
|
||||
uint z;
|
||||
|
||||
@@ -355,7 +355,7 @@ static bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here)
|
||||
}
|
||||
|
||||
|
||||
static bool HasFoundationNE(TileIndex tile, Slope slope_here, uint z_here)
|
||||
bool HasFoundationNE(TileIndex tile, Slope slope_here, uint z_here)
|
||||
{
|
||||
uint z;
|
||||
|
||||
|
||||
@@ -58,6 +58,8 @@ static inline Point RemapCoords2(int x, int y)
|
||||
|
||||
uint ApplyFoundationToSlope(Foundation f, Slope *s);
|
||||
void DrawFoundation(TileInfo *ti, Foundation f);
|
||||
bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here);
|
||||
bool HasFoundationNE(TileIndex tile, Slope slope_here, uint z_here);
|
||||
|
||||
void DoClearSquare(TileIndex tile);
|
||||
void RunTileLoop();
|
||||
|
||||
+196
-94
@@ -217,6 +217,9 @@ STR_UNITS_VOLUME_LONG_SI :{COMMA} m³
|
||||
STR_UNITS_FORCE_SI :{COMMA} kN
|
||||
|
||||
# Common window strings
|
||||
STR_LIST_FILTER_OSKTITLE :{BLACK}Sleutel 'n filter string
|
||||
STR_LIST_FILTER_TOOLTIP :{BLACK}Sleutel in 'n sleutelwoord om die lys by te filter
|
||||
STR_LIST_FILTER_TITLE :{BLACK}Filter string:
|
||||
|
||||
STR_TOOLTIP_SORT_ORDER :{BLACK}Selekteer sorteer orde (afklimende/klimende)
|
||||
STR_TOOLTIP_SORT_CRITERIAP :{BLACK}Selekteer sorteer maatstaf
|
||||
@@ -227,11 +230,12 @@ STR_BUTTON_RENAME :{BLACK}Hernoem
|
||||
|
||||
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Maak venster toe
|
||||
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Venster titel - sleep om venster te beweeg
|
||||
STR_TOOLTIP_SHADE :{BLACK}Skerm venster - Slegs die titelstaaf sal vertoon word
|
||||
STR_TOOLTIP_STICKY :{BLACK}Merk die venster as ontoemaakbaar met die"Sluit Alle Vensters" sleutel
|
||||
STR_TOOLTIP_RESIZE :{BLACK}Kliek en sleep om venster te vergroot
|
||||
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Tokkel groot/klein venster groote
|
||||
STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rol staaf - rol die lys op/af
|
||||
STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rol baan - rol die lys op/af
|
||||
STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rolstaaf - rol die lys op/af
|
||||
STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Rolstaaf - rol die lys op/af
|
||||
STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Vernietig geboue ens. op 'n vierkant van land
|
||||
|
||||
# Query window
|
||||
@@ -271,6 +275,7 @@ STR_SORT_BY_MODEL :Model
|
||||
STR_SORT_BY_VALUE :Waarde
|
||||
STR_SORT_BY_LENGTH :Lengte
|
||||
STR_SORT_BY_LIFE_TIME :Leeftyd oor
|
||||
STR_SORT_BY_TIMETABLE_DELAY :Rooster vertraging
|
||||
STR_SORT_BY_FACILITY :Stasie tipe
|
||||
STR_SORT_BY_WAITING :Wagtend vrag waarde
|
||||
STR_SORT_BY_RATING_MAX :Hoogste vrag gradering
|
||||
@@ -288,7 +293,7 @@ STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pouseer
|
||||
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Vinnig vooruit die spel
|
||||
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opsies
|
||||
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Stoor spel, verlaat spel, verlaat
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Vertoon landkaart, ekstra uitsig of lys van tekens
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Vertoon kaart, ekstra uitsig of lys van tekens
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Vertoon stad gids
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Toon subsidieë
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Vertoon lys van maatskappy se stasies
|
||||
@@ -300,7 +305,7 @@ STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Konsolid
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Vertoon lys van maatskappy se treine
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Vertoon lys van maatskappy se pad voertuie
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Vertoon lys van maatskappy se skepe
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Vertoon lys van maatskappy se vliegtuie
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Vertoon lys van maatskappy se vliegtuie. Ctrl+Kliek tokkel die opening van die groep/voertuig lys
|
||||
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Vergroot die skerm
|
||||
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Verklein die skerm
|
||||
STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou spoorweg spoor
|
||||
@@ -311,6 +316,7 @@ STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Oppe die
|
||||
STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Vertoon klank/musiek venster
|
||||
STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Vertoon laaste boodskap/nuus verslag, vertoon boodskap opsies
|
||||
STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Land gebied informasie
|
||||
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Skakel nutsbalke
|
||||
|
||||
# Extra tooltips for the scenario editor toolbar
|
||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Stoor draaiboek, laai draaiboek, verlaat draaiboek redigeerder, verlaat
|
||||
@@ -318,7 +324,7 @@ STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD
|
||||
STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Draaiboek Redigeerder
|
||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Beweeg die begin datum 1 jaar terug
|
||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Beweeg die begin datum 1 jaar voorentoe
|
||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vertoon landkaart, dorp gids
|
||||
STR_SCENEDIT_TOOLBAR_TOOLTIP_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}Vertoon kaart, dorp gids
|
||||
STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landskap generasie
|
||||
STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Dorp generasie
|
||||
STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Nywerheid generasie
|
||||
@@ -336,14 +342,14 @@ STR_SCENEDIT_FILE_MENU_QUIT :Verlaat
|
||||
############ range for SE file menu starts
|
||||
|
||||
############ range for settings menu starts
|
||||
STR_SETTINGS_MENU_GAME_OPTIONS :Speletjie opsies
|
||||
STR_SETTINGS_MENU_GAME_OPTIONS :Spel opsies
|
||||
STR_SETTINGS_MENU_DIFFICULTY_SETTINGS :Moelikheid stellings
|
||||
STR_SETTINGS_MENU_CONFIG_SETTINGS :Gevorderde stellings
|
||||
STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF stellings
|
||||
STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Deursigtigheid opsies
|
||||
STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Dorp name vertoon
|
||||
STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Stasie name vertoon
|
||||
STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Wegpunte vertoon
|
||||
STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Wegwyser name vertoon
|
||||
STR_SETTINGS_MENU_SIGNS_DISPLAYED :Tekens vertoon
|
||||
STR_SETTINGS_MENU_FULL_ANIMATION :Volle animasie
|
||||
STR_SETTINGS_MENU_FULL_DETAIL :Volle besonderhede
|
||||
@@ -365,6 +371,7 @@ STR_MAP_MENU_SIGN_LIST :Teken lys
|
||||
############ range for town menu starts, yet the town directory is shown in the map menu in the scenario editor
|
||||
STR_TOWN_MENU_TOWN_DIRECTORY :Dorp gids
|
||||
############ end of the 'Display map' dropdown
|
||||
STR_TOWN_MENU_FOUND_TOWN :Stig dorp
|
||||
############ end of the 'Town' dropdown
|
||||
|
||||
############ range for subsidies menu starts
|
||||
@@ -518,6 +525,7 @@ STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINYFONT}{BLAC
|
||||
STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Skakel grafiek vir vrag tipe aan/af
|
||||
STR_GRAPH_CARGO_PAYMENT_CARGO :{TINYFONT}{BLACK}{STRING}
|
||||
|
||||
STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Vertoon breedvoerige prestasie graderings
|
||||
|
||||
# Graph key window
|
||||
STR_GRAPH_KEY_CAPTION :{WHITE}Sleutel vir maatskappy grafieke
|
||||
@@ -546,8 +554,8 @@ STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}%
|
||||
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Voertuie:
|
||||
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Stasies:
|
||||
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Min. profyt:
|
||||
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inkome:
|
||||
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. inkome:
|
||||
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Min. inkomste:
|
||||
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. inkomste:
|
||||
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Afgelewer:
|
||||
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Vrag:
|
||||
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Geld:
|
||||
@@ -598,7 +606,9 @@ STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Kies 'Ez
|
||||
STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Kies 'Bestelling 1' (gebruiker-verklaarde) program
|
||||
STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Kies 'Bestelling 2' (gebruiker-verklaarde) program
|
||||
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Tokkel musiek lys skommel aan/af
|
||||
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vertoon liedjie keuse venster
|
||||
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vertoon musiek snit keuse venster
|
||||
|
||||
STR_ERROR_NO_SONGS :{WHITE}'n Musiek stel was gekies wat nie liedere bevat nie. Niks liedere sal gespel word nie
|
||||
|
||||
# Playlist window
|
||||
STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musiek Program Keuse
|
||||
@@ -637,12 +647,12 @@ STR_SMALLMAP_TYPE_INDUSTRIES :Nywerhede
|
||||
STR_SMALLMAP_TYPE_ROUTES :Roetes
|
||||
STR_SMALLMAP_TYPE_VEGETATION :Plantegroei
|
||||
STR_SMALLMAP_TYPE_OWNERS :Eienaars
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Toon land hoogtelyne op landkaart
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Toon voertuie op landkaart
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Toon nywerhede op landkaart
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Toon vervoer roetes op landkaart
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Toon plantegroei op landkaart
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Toon land eienaars op landkaart
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Vertoon land hoogtelyne op kaart
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Vertoon voertuie op kaart
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Wys nywerhede op kaart
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Wys vervoer roetes op kaart
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Wys plantegroei op kaart
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Wys land eienaars op kaart
|
||||
|
||||
STR_SMALLMAP_LEGENDA_ROADS :{TINYFONT}{BLACK}Paaie
|
||||
STR_SMALLMAP_LEGENDA_RAILROADS :{TINYFONT}{BLACK}Spoorweë
|
||||
@@ -678,7 +688,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINYFONT}{BLAC
|
||||
STR_SMALLMAP_LEGENDA_DESERT :{TINYFONT}{BLACK}Woestyn
|
||||
STR_SMALLMAP_LEGENDA_SNOW :{TINYFONT}{BLACK}Sneeu
|
||||
|
||||
STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Tokkel dorp name aan/af op landkaart
|
||||
STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Tokkel dorp name aan/af op kaart
|
||||
STR_SMALLMAP_CENTER :{BLACK}Senter die kleinkaart op die huidige posisie
|
||||
STR_SMALLMAP_INDUSTRY :{TINYFONT}{STRING} ({NUM})
|
||||
STR_SMALLMAP_TOWN :{TINYFONT}{WHITE}{TOWN}
|
||||
@@ -686,11 +696,11 @@ STR_SMALLMAP_DISABLE_ALL :{BLACK}Sper all
|
||||
STR_SMALLMAP_ENABLE_ALL :{BLACK}Ontsper alle
|
||||
|
||||
# Status bar messages
|
||||
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Toon laaste boodskap of nuus verslag
|
||||
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Wys laaste boodskap of nuus verslag
|
||||
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
||||
STR_STATUSBAR_PAUSED :{YELLOW}* * STIL * *
|
||||
STR_STATUSBAR_AUTOSAVE :{RED}OUTOSTOOR
|
||||
STR_STATUSBAR_SAVING_GAME :{RED}* * SPAAR SPELETJIE * *
|
||||
STR_STATUSBAR_SAVING_GAME :{RED}* * STOOR SPELETJIE * *
|
||||
|
||||
# News message history
|
||||
STR_MESSAGE_HISTORY :{WHITE}Boodskap Geskidenis
|
||||
@@ -756,6 +766,7 @@ STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIGFONT}{BLACK
|
||||
STR_NEWS_MERGER_TAKEOVER_TITLE :{BIGFONT}{BLACK}{STRING} is deur {STRING} oorgevat!
|
||||
STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENTNAME}{}(Bestuurder)
|
||||
|
||||
STR_NEWS_NEW_TOWN :{BLACK}{BIGFONT}{STRING} borg konstruksie van nuwe dorp {TOWN}!
|
||||
|
||||
STR_NEWS_INDUSTRY_CONSTRUCTION :{BIGFONT}{BLACK}Nuwe {STRING} onder opbou naby {TOWN}!
|
||||
STR_NEWS_INDUSTRY_PLANTED :{BIGFONT}{BLACK}Nuwe {STRING} word naby {TOWN} beplant!
|
||||
@@ -797,6 +808,7 @@ STR_NEWS_TRAIN_IS_STUCK :{WHITE}{VEHICLE
|
||||
STR_NEWS_TRAIN_IS_LOST :{WHITE}{VEHICLE} is verlore.
|
||||
STR_NEWS_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE} se wins was verlede jaar {CURRENCY}
|
||||
|
||||
STR_NEWS_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} het gestop omdat 'n herstel opdrag gefaal
|
||||
STR_NEWS_VEHICLE_AUTORENEW_FAILED :{WHITE}Automatiese hernuwing het misluk met {VEHICLE}{}{STRING}
|
||||
|
||||
STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIGFONT}{BLACK}Nuwe {STRING} nou beskikbaar!
|
||||
@@ -831,8 +843,8 @@ STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Geld een
|
||||
STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Geld eendheid keuse
|
||||
|
||||
############ start of currency region
|
||||
STR_GAME_OPTIONS_CURRENCY_GBP :Pounds ()
|
||||
STR_GAME_OPTIONS_CURRENCY_USD :Dollars ($)
|
||||
STR_GAME_OPTIONS_CURRENCY_GBP :Pond (£)
|
||||
STR_GAME_OPTIONS_CURRENCY_USD :Dollar ($)
|
||||
STR_GAME_OPTIONS_CURRENCY_EUR :Euro (€)
|
||||
STR_GAME_OPTIONS_CURRENCY_YEN :Yen (¥)
|
||||
STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling (ATS)
|
||||
@@ -921,17 +933,22 @@ STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Kies die
|
||||
STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skerm resolusie
|
||||
STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Kies die skerm resolusie om te gebruik
|
||||
|
||||
STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skermskyf formaat
|
||||
STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Kies die skermskyf formaat om te gebruik
|
||||
STR_GAME_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Skermkiekie formaat
|
||||
STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP :{BLACK}Kies die skermkiekie formaat om te gebruik
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis grafiek stel
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies die Basiese grafiek stel om te gebruik
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies die basis grafiek stel om te gebruik
|
||||
STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} verlore / korrupte ler{P "" s}
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Addisioneel informasie oor die basis grapfieke stel
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Addisionele informasie oor die basis grapfiek stel
|
||||
|
||||
STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basiese klank stel
|
||||
STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Kies die basiese klank stel om te gebruik
|
||||
STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Addisionele informasie oor die basiese klank stel
|
||||
STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basis klank stel
|
||||
STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Kies die basis klank stel om te gebruik
|
||||
STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Addisionele informasie oor die basis klank stel
|
||||
|
||||
STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basis musiek stel
|
||||
STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Kies die basis musiek stel om te gebruik
|
||||
STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} korrupte lêer{P "" s}
|
||||
STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Addisionele informasie oor die basis musiek stel
|
||||
|
||||
STR_ERROR_FULLSCREEN_FAILED :{WHITE}Volskerm metode gedop
|
||||
|
||||
@@ -971,6 +988,7 @@ STR_DIFFICULTY_LEVEL_HARD :{BLACK}Streng
|
||||
STR_DIFFICULTY_LEVEL_CUSTOM :{BLACK}Gewoonte
|
||||
############ range for difficulty levels ends
|
||||
|
||||
STR_DIFFICULTY_LEVEL_HIGH_SCORE_BUTTON :{BLACK}Vertoon hooglopendetellings kaart
|
||||
STR_DIFFICULTY_LEVEL_SAVE :{BLACK}Bewaar
|
||||
|
||||
############ range for difficulty settings starts
|
||||
@@ -999,6 +1017,13 @@ STR_NUM_NORMAL :Normaal
|
||||
STR_NUM_HIGH :Hoog
|
||||
STR_NUM_CUSTOM :Bestelling
|
||||
|
||||
STR_VARIETY_NONE :Geen
|
||||
STR_VARIETY_VERY_LOW :Baaie Laag
|
||||
STR_VARIETY_LOW :Laag
|
||||
STR_VARIETY_MEDIUM :Middelmatig
|
||||
STR_VARIETY_HIGH :Hoog
|
||||
STR_VARIETY_VERY_HIGH :Baaie Hoog
|
||||
|
||||
STR_AI_SPEED_VERY_SLOW :Baie Stadig
|
||||
STR_AI_SPEED_SLOW :Stadig
|
||||
STR_AI_SPEED_MEDIUM :Gemiddel
|
||||
@@ -1046,10 +1071,10 @@ STR_CONFIG_SETTING_OFF :Af
|
||||
STR_CONFIG_SETTING_ON :Aan
|
||||
STR_CONFIG_SETTING_DISABLED :gestrem
|
||||
STR_CONFIG_SETTING_VEHICLESPEED :{LTBLUE}Wys voertuig spoed in die standbaan: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_BUILDONSLOPES :{LTBLUE}Laattoe gebou op skuinstes en kusse: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_AUTOSLOPE :{LTBLUE}Laattoe terraforming onder geboue, spoore, ens. (autoslope): {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_CATCHMENT :{LTBLUE}Laattoe meer realisties grootte opvanggebied: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_EXTRADYNAMITE :{LTBLUE}Toelaat verwydering van meer stad-besite paaie, bruge, ens: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_BUILDONSLOPES :{LTBLUE}Laat gebou op skuinstes en kusse toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_AUTOSLOPE :{LTBLUE}Laat terraforming toe onder geboue, spoore, ens. (autoslope): {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_CATCHMENT :{LTBLUE}Laat meer realisties grootte opvangsgebied toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_EXTRADYNAMITE :{LTBLUE}Laat verwydering van meer stad-besite paaie, bruge, ens toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_MAMMOTHTRAINS :{LTBLUE}Ontsper gebou van baie lang treine: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :{LTBLUE}Trein versnelling model: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_ORIGINAL :Oorspronklik
|
||||
@@ -1061,31 +1086,35 @@ STR_CONFIG_SETTING_IMPROVEDLOAD :{LTBLUE}Gebruik
|
||||
STR_CONFIG_SETTING_GRADUAL_LOADING :{LTBLUE}Laai voertuie geleidelik: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_INFLATION :{LTBLUE}Inflasie: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SELECTGOODS :{LTBLUE}Aflewer vrag na 'n stasie slegs as daar 'n aanvrag is:: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_LONGBRIDGES :{LTBLUE}Toelaat opbou van baie lank bruge: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_GOTODEPOT :{LTBLUE}Laattoe gaan na depot opdrae: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_LONGBRIDGES :{LTBLUE}Laat bou van baie lank bruë toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_GOTODEPOT :{LTBLUE}Laat vorder-na depot opdrae toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Manual primêre nywerheid konstruksie metode: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :geen
|
||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :as ander nywerhede
|
||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :vooruitsigting
|
||||
STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Laattoe vele soortgelyke nywerhede per dorp: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Laat meer as een soortgelyke nywerhede per dorp toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Nywerhede van die selfde tipe kan naby aan mekaar gebou word: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Toon altyd lang datum in die standbaan: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Toon seine op die bestuur kant: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Toon finansies venster op die einde van die jaar: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :{LTBLUE}Nuwe bevele is vooraf 'geen-stop' {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_STOP_LOCATION :{LTBLUE}Nuww trein opdragte stop by verstek by die {ORANGE}{STRING}{LTBLUE} van die platform
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :naby einde
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :middel
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ver einde
|
||||
STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :{LTBLUE}Pad voertuig toustaan (met kwantum effekte): {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_AUTOSCROLL :{LTBLUE}Was skerm as muis by die kant is: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_BRIBE :{LTBLUE}Laattoe die omkooping van plaaslike raad: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :{LTBLUE}Laattoe die koop van eksklusief vervoer regte: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :{LTBLUE}Laattoe die stuur van geld na ander maatskappye: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_BRIBE :{LTBLUE}Laat omkooping van die plaaslike raad toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :{LTBLUE}Laat die koop van eksklusief vervoer regte toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :{LTBLUE}Laat die stuur van geld na ander maatskappye toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_NONUNIFORM_STATIONS :{LTBLUE}Ongelyk stasies: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_FREIGHT_TRAINS :{LTBLUE}Gewig vermenivoud vir vrag om swaar treine te simuleer: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_PLANE_SPEED :{LTBLUE}Vliegtuig spoed faktor: {ORANGE}1 / {STRING}
|
||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :{LTBLUE}Laattoe skyf-deur pad stop op dorp besit paaie: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ADJACENT_STATIONS :{LTBLUE}Laattoe gebou van aangrensend stasies: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :{LTBLUE}Laat deur-ry padhalte op dorp besite paaie toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :{LTBLUE}Laat deur-ry padhalte toe op paaie wat deur ander deelnemers besit word: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ADJACENT_STATIONS :{LTBLUE}Laat die gebou van aangrensende stasies toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_DYNAMIC_ENGINES :{LTBLUE}Ontsper veeltallige NewGRF enjin stelle: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Die verandering van die stelling is nie moontlik nie waneer daar voertuie is.
|
||||
|
||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :{LTBLUE}Lughawes verval nooit nie: {ORANGE}{STRING}
|
||||
|
||||
@@ -1120,6 +1149,7 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :{LTBLUE}Hoogtek
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Teller vooruit
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Vooruit
|
||||
STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Die hoogte vlak wat 'n plat draaiboek kaart kry: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :{LTBLUE}Ontsper terraforming van teëls op die kaart rant: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Een of meer teëls op die Noordelike grens is nie leeg nie
|
||||
STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Een of meer teëls by een van die kante is nie water nie
|
||||
|
||||
@@ -1127,7 +1157,7 @@ STR_CONFIG_SETTING_STATION_SPREAD :{LTBLUE}Maks st
|
||||
STR_CONFIG_SETTING_SERVICEATHELIPAD :{LTBLUE}Versien helikopters by helihawes outomaties: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Verbind landereye werktuigbaan na spoor/pad/water/lughawe werktuigbaan: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_REVERSE_SCROLLING :{LTBLUE}Omkeer rol rigting: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SMOOTH_SCROLLING :{LTBLUE}Versag kykpoort rollees: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SMOOTH_SCROLLING :{LTBLUE}Maak kykpoort beweegings glad: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_MEASURE_TOOLTIP :{LTBLUE}Toon 'n meting wanneer jy verskeie bou-gereedskap gebruik: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_LIVERIES :{LTBLUE}Toon maatskappy lewerye: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_LIVERIES_NONE :Geen
|
||||
@@ -1145,6 +1175,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-kliek
|
||||
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control-kliek
|
||||
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Af
|
||||
|
||||
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :{LTBLUE}Links-kliek kykpoort beweegings: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :{LTBLUE}Gebruik die {ORANGE}{STRING}{LTBLUE} datum formaat vir gestoorde spel name.
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :lank (31ste Des 2008)
|
||||
@@ -1163,6 +1194,7 @@ STR_CONFIG_SETTING_LOADING_INDICATORS_ALL :Alle maatskappy
|
||||
STR_CONFIG_SETTING_TIMETABLE_ALLOW :{LTBLUE}Ontsper timetabling vir voertuie: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :{LTBLUE}Toon rooster in ticks liewer as dae: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :{LTBLUE}Toon aankoms en vertrek in tydroosters: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_QUICKGOTO :{LTBLUE}Vinnige skepping van voertuig opdragte: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :{LTBLUE}Verstek spoor tipe (na nuwe spel/spel laai): {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_RAIL :Gewone Spoor
|
||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_ELRAIL :Elektrifiseerde Spoor
|
||||
@@ -1186,6 +1218,8 @@ STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :{LTBLUE}Sper pa
|
||||
STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :{LTBLUE}Sper vliegtuie vir rekenaar: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_AI_BUILDS_SHIPS :{LTBLUE}Sper skepe vir rekenaar: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :{LTBLUE}Laat AI in multispeler toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_AI_MAX_OPCODES :{LTBLUE}hoeveelheid operasie kodes voordat AI gestaak word: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_SERVINT_ISPERCENT :{LTBLUE}Diens pouse is in persente: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SERVINT_TRAINS :{LTBLUE}Verstek diens pouse vir treine: {ORANGE}{STRING} dae/%
|
||||
@@ -1197,16 +1231,17 @@ STR_CONFIG_SETTING_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Gebrekt
|
||||
STR_CONFIG_SETTING_SERVINT_SHIPS :{LTBLUE}Verstek diens pouse vir skepe: {ORANGE}{STRING} dae/%
|
||||
STR_CONFIG_SETTING_SERVINT_SHIPS_DISABLED :{LTBLUE}Verstek diens pouse vir skepe: {ORANGE}strem
|
||||
STR_CONFIG_SETTING_NOSERVICE :{LTBLUE}Sper diens wanneer komplikasies is na geen gestel: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_WAGONSPEEDLIMITS :{LTBLUE}Stel wa spoed limite in staak: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_WAGONSPEEDLIMITS :{LTBLUE}Laat wa spoed beperkings toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_DISABLE_ELRAILS :{LTBLUE}Gestrem elektriese spoore: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :{LTBLUE}Gekleurde nuus verskyn in: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_STARTING_YEAR :{LTBLUE}Jaar om te begin: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SMOOTH_ECONOMY :{LTBLUE}Ontsper versag ekonomie (meer, kleiner veranderings): {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES :{LTBLUE}Laattoe deele aankoop van ander maatskappye: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES :{LTBLUE}Laat die koop van aandeele van ander maatskappye toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :{LTBLUE}Wanneer sleep, plaas seine elke: {ORANGE}{STRING} teel(e)
|
||||
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Outomaties bou semaphores voor: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :{LTBLUE}Stel in staak die sein GUI: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :{LTBLUE}Sein tipe om te bou by verstek: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blok seine
|
||||
STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Pad seine
|
||||
STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Een-rigting seine
|
||||
@@ -1222,8 +1257,16 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 grid
|
||||
STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 grid
|
||||
STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :lukraak
|
||||
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :{LTBLUE}Dorpe toegelaat om paaie te bou: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_NOISE_LEVEL :{LTBLUE}Laat dorp-beheerede klankvlak vir lughawes toe: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_TOWN_FOUNDING :{LTBLUE}Stigting van dorpe binne speletjie: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :verbode
|
||||
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :toegelaat
|
||||
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :toegelaat, eie dorp uitleg
|
||||
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :{LTBLUE}Binne speletjie plasing van bome: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :geen {RED}(breek timmerhout meul)
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :Slegs in reënwoude
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :orals
|
||||
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS :{LTBLUE}Posisie van hoof werktuigbaan: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS_LEFT :Links
|
||||
@@ -1231,6 +1274,8 @@ STR_CONFIG_SETTING_TOOLBAR_POS_CENTER :Senter
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS_RIGHT :Regs
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS :{LTBLUE}Venster slag straal: {ORANGE}{STRING} px
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :{LTBLUE}Venster slag straal: {ORANGE}strem
|
||||
STR_CONFIG_SETTING_SOFT_LIMIT :{LTBLUE}Venster sagte beperking (nie taai): {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :{LTBLUE}Venster sag beperking (nie taai): {ORANGE}ongeaktiveer
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH :{LTBLUE}Dorp groei spoed: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Geen
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Stadig
|
||||
@@ -1284,7 +1329,7 @@ STR_INTRO_LOAD_GAME :{BLACK}Laai Spe
|
||||
STR_INTRO_PLAY_SCENARIO :{BLACK}Speel Draaiboek
|
||||
STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Speel Hoogtekaart
|
||||
STR_INTRO_SCENARIO_EDITOR :{BLACK}Draaiboek Redakteur
|
||||
STR_INTRO_MULTIPLAYER :{BLACK}Veelspeler
|
||||
STR_INTRO_MULTIPLAYER :{BLACK}Multispeler
|
||||
|
||||
STR_INTRO_GAME_OPTIONS :{BLACK}Spel Opsies
|
||||
STR_INTRO_DIFFICULTY :{BLACK}Moeilikheid ({STRING})
|
||||
@@ -1299,6 +1344,7 @@ STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Laai 'n
|
||||
STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}begin 'n nuwe speletjie, gebruikend 'n hoogtekaart as 'n landskap
|
||||
STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Begin 'n nuwe speletjie, met 'n doelgeboude draaiboek
|
||||
STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Skep 'n doelgeboude spel wêreld/draaiboek
|
||||
STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Begin 'n multispeler spel
|
||||
|
||||
STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Kies 'matige' landskap styl
|
||||
STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Kies 'toendra' landskap styl
|
||||
@@ -1323,7 +1369,7 @@ STR_QUIT_NO :{BLACK}Nee
|
||||
STR_OSNAME_WINDOWS :Windows
|
||||
STR_OSNAME_DOS :DOS
|
||||
STR_OSNAME_UNIX :Unix
|
||||
STR_OSNAME_OSX :OS X
|
||||
STR_OSNAME_OSX :OS{NBSP}X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_HAIKU :Haiku
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
@@ -1400,7 +1446,7 @@ STR_FACE_MALE_TOOLTIP :{BLACK}Kies man
|
||||
STR_FACE_FEMALE_BUTTON :{BLACK}Vroulik
|
||||
STR_FACE_FEMALE_TOOLTIP :{BLACK}Kies vroulik gesige
|
||||
STR_FACE_NEW_FACE_BUTTON :{BLACK}Nuwe Gesig
|
||||
STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Opwek lukrake nuwe gesig
|
||||
STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Genereer nuwe lukrake gesig
|
||||
STR_FACE_ADVANCED :{BLACK}Voorlopend
|
||||
STR_FACE_ADVANCED_TOOLTIP :{BLACK}Voorloopend gesig keuse.
|
||||
STR_FACE_SIMPLE :{BLACK}Eenvoudig
|
||||
@@ -1462,8 +1508,8 @@ STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/
|
||||
STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}Kliente
|
||||
STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION_TOOLTIP :{BLACK}Kliente oplyn / Kliente maks{}Maatskappye oplyn / Maatskappye maks
|
||||
STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA}
|
||||
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Landkaart grote
|
||||
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Landkaart grote van die speeletjie{}Kliek om volgens area te sorteer
|
||||
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Kaart groote
|
||||
STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION_TOOLTIP :{BLACK}Kaart groote van die speeletjie{}Kliek om volgens area te sorteer
|
||||
STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum
|
||||
STR_NETWORK_SERVER_LIST_DATE_CAPTION_TOOLTIP :{BLACK}Huidigge datum
|
||||
STR_NETWORK_SERVER_LIST_YEARS_CAPTION :{BLACK}jare
|
||||
@@ -1493,11 +1539,11 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Verbind
|
||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Vervris verskaffer
|
||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Vervris die verskaffer inligting
|
||||
|
||||
STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Versoek verskaffer
|
||||
STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}Soek bediener
|
||||
STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Versoek netwerk vir 'n verskaffer
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Byvoeg Bediender
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Voeg bediender by
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Voeg 'n verskaffer tot die lys wat sal altyd wees gemerk vir loopende speletjies.
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Begin verskaffer
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Begin bediener
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Begin u eie verskaffer
|
||||
|
||||
STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Tik in jou naam
|
||||
@@ -1512,7 +1558,7 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Stel wag
|
||||
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskerm jou spel met 'n wagwoord as jy wil dit nie publieke toepassing laat wees nie
|
||||
STR_NETWORK_START_SERVER_SELECT_MAP :{BLACK}Kies 'n kaart
|
||||
STR_NETWORK_START_SERVER_SELECT_MAP_TOOLTIP :{BLACK}Watter kaart wil jy speel?
|
||||
STR_NETWORK_START_SERVER_SERVER_RANDOM_GAME :Opwek lukraak nuwe speletjie
|
||||
STR_NETWORK_START_SERVER_SERVER_RANDOM_GAME :Genereer nuwe lukraake speletjie
|
||||
|
||||
STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet
|
||||
STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (adverteer)
|
||||
@@ -1528,9 +1574,9 @@ STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Beperk d
|
||||
STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Taal gepraat:
|
||||
STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Ander spelers sal weet watter taal op die verskaffer gepraat is
|
||||
|
||||
STR_NETWORK_START_SERVER_START_GAME :{BLACK}Begin Speletjie
|
||||
STR_NETWORK_START_SERVER_START_GAME :{BLACK}Begin Spel
|
||||
STR_NETWORK_START_SERVER_START_GAME_TOOLTIP :{BLACK}Begin 'n nuwe netwerk spel van 'n lukraak kaart of draaiboek
|
||||
STR_NETWORK_START_SERVER_LOAD_GAME :{BLACK}Laai Speletjie
|
||||
STR_NETWORK_START_SERVER_LOAD_GAME :{BLACK}Laai Spel
|
||||
STR_NETWORK_START_SERVER_LOAD_GAME_TOOLTIP :{BLACK}Hervat 'n vroeër gespaar multispeler speletjie (wees seker om te konnekteer as die korrekte speler)
|
||||
|
||||
STR_NETWORK_START_SERVER_NEW_GAME_NAME_OSKTITLE :{BLACK}Tik 'n naam in vir die netwerk speeletjie
|
||||
@@ -1567,7 +1613,12 @@ STR_NETWORK_LANG_SWEDISH :Swedish
|
||||
STR_NETWORK_LANG_TURKISH :Turkish
|
||||
STR_NETWORK_LANG_UKRAINIAN :Ukrainian
|
||||
STR_NETWORK_LANG_AFRIKAANS :Afrikaans
|
||||
STR_NETWORK_LANG_CROATIAN :Croatian
|
||||
STR_NETWORK_LANG_CATALAN :Catalan
|
||||
STR_NETWORK_LANG_ESTONIAN :Estonian
|
||||
STR_NETWORK_LANG_GALICIAN :Galician
|
||||
STR_NETWORK_LANG_GREEK :Grieks
|
||||
STR_NETWORK_LANG_LATVIAN :Latvian
|
||||
############ End of leave-in-this-order
|
||||
|
||||
# Network game lobby
|
||||
@@ -1606,7 +1657,7 @@ STR_NETWORK_CONNECTING_4 :{BLACK}(4/6) La
|
||||
STR_NETWORK_CONNECTING_5 :{BLACK}(5/6) Verwerk Data...
|
||||
STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Registreer...
|
||||
|
||||
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Haal speletjie informasie...
|
||||
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Haal spel informasie...
|
||||
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Haal maatskappy informasie...
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} Klient{P "" e} voor jou
|
||||
@@ -1619,10 +1670,12 @@ STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Maatskap
|
||||
|
||||
# Network company list added strings
|
||||
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Klient Lys
|
||||
STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Toeskou
|
||||
STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nuwe Maatskapy
|
||||
|
||||
# Network client list
|
||||
STR_NETWORK_CLIENTLIST_KICK :Skop
|
||||
STR_NETWORK_CLIENTLIST_BAN :Verbod
|
||||
STR_NETWORK_CLIENTLIST_GIVE_MONEY :Gee geld
|
||||
STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Praat met almal
|
||||
STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Praat met maatskappy
|
||||
@@ -1701,10 +1754,18 @@ STR_NETWORK_ERROR_CLIENT_SERVER_FULL :verskaffer vol
|
||||
# Network related errors
|
||||
STR_NETWORK_SERVER_MESSAGE :*** {1:STRING}
|
||||
############ Leave those lines in this order!!
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Spel stilgehou ({STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spel nog steeds stilgehou ({STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spel nog steeds stilgehou ({STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spel nog steeds stilgehou ({STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spel gaan weer aan ({STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nie genoeg spelers
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :Verbind kliente
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :met die hand
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :verlaat
|
||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} het by die spel aangesluit
|
||||
STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} het die spel aangesluit (Client #{2:NUM})
|
||||
STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} het by besigheid #{2:NUM} aangesluit
|
||||
STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} het aangesluit by die spektators
|
||||
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} begin 'n nuwe maatskappy (#{2:NUM})
|
||||
@@ -1716,35 +1777,60 @@ STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE} Die ver
|
||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE} Die verskaffer is besig om te weerbegin...{}Wag asb...
|
||||
|
||||
# Content downloading window
|
||||
STR_CONTENT_TITLE :{WHITE}Inhoud laai af
|
||||
STR_CONTENT_TYPE_CAPTION :{BLACK}Tipe
|
||||
STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Tipe inhoud
|
||||
STR_CONTENT_NAME_CAPTION :{BLACK}Naam
|
||||
STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Naam van die inhoud
|
||||
STR_CONTENT_MATRIX_TOOLTIP :{BLACK}Kliek op 'n ry am besonderheide te sien{}Kliek op die merkblokkie om dit te kies vir aflaai
|
||||
STR_CONTENT_SELECT_ALL_CAPTION :{BLACK}Selekteer alles
|
||||
STR_CONTENT_SELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk al die inhoud wat afgelaai moet word
|
||||
STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Selekteer opgraderings
|
||||
STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Merk alle inhoud wat 'n opgradering is vir bestande inhoud om af te laai word
|
||||
STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Onselekteer alles
|
||||
STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Merk alle inhoud wat nie afgelaai moet word nie
|
||||
STR_CONTENT_FILTER_TITLE :{BLACK}Merker/naam filter:
|
||||
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Laai af
|
||||
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Begin om die geselekteerde inligting af te laai
|
||||
STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Totale aflaai groote: {WHITE}{BYTES}
|
||||
STR_CONTENT_DETAIL_TITLE :{SILVER}INHOUD INFORMASIE
|
||||
STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Jy het nie dit geselekteer om af te laai nie
|
||||
STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Jy het dit geselekeer om af te laai
|
||||
STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Heirde afhanklikheid was gekies om afgelaai te wees
|
||||
STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Jy het hierdie reeds
|
||||
STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Heirde inhoud is onbekend en kan afgelaai word in OpenTTD
|
||||
STR_CONTENT_DETAIL_UPDATE :{SILVER}Heirdie is 'n herplasing van 'n bestaande {STRING}
|
||||
STR_CONTENT_DETAIL_NAME :{SILVER}Naam: {WHITE}{STRING}
|
||||
STR_CONTENT_DETAIL_VERSION :{SILVER}Weergawe: {WHITE}{STRING}
|
||||
STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Beskrywing: {WHITE}{STRING}
|
||||
STR_CONTENT_DETAIL_URL :{SILVER}URL: {WHITE}{STRING}
|
||||
STR_CONTENT_DETAIL_TYPE :{SILVER}Tipe: {WHITE}{STRING}
|
||||
STR_CONTENT_DETAIL_FILESIZE :{SILVER}Aflaai groote: {WHITE}{BYTES}
|
||||
STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Geselekteer weens: {WHITE}{STRING}
|
||||
STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Afhanklikes: {WHITE}{STRING}
|
||||
STR_CONTENT_DETAIL_TAGS :{SILVER}Merkers: {WHITE}{STRING}
|
||||
STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD is gebou sonder "zlib" hulp...
|
||||
STR_CONTENT_NO_ZLIB_SUB :{WHITE}... aflaai van inhoud is nie moentlik nie!
|
||||
|
||||
# Order of these is important!
|
||||
STR_CONTENT_TYPE_BASE_GRAPHICS :Basis grafika
|
||||
STR_CONTENT_TYPE_NEWGRF :NewGRF
|
||||
STR_CONTENT_TYPE_AI :AI
|
||||
STR_CONTENT_TYPE_AI_LIBRARY :AI biblioteek
|
||||
STR_CONTENT_TYPE_SCENARIO :Draaiboek
|
||||
STR_CONTENT_TYPE_HEIGHTMAP :Hoogte kaart
|
||||
STR_CONTENT_TYPE_BASE_SOUNDS :Basiese klanke
|
||||
STR_CONTENT_TYPE_BASE_MUSIC :Musiek basis
|
||||
|
||||
# Content downloading progress window
|
||||
STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Laai inhoud af...
|
||||
STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Versoek lêer...
|
||||
STR_CONTENT_DOWNLOAD_FILE :{WHITE}Nou besig om {STRING} aftelaai ({NUM} of {NUM})
|
||||
STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Aflaai voltooi
|
||||
STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES} van {BYTES} afgelaai ({NUM} %)
|
||||
|
||||
# Content downloading error messages
|
||||
STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Kon nie na die inhoud diener verbind nie...
|
||||
STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Aflaai onsuksesvol...
|
||||
STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... verbinding verloor
|
||||
STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... lêer nie skryfbaar nie
|
||||
@@ -1759,6 +1845,7 @@ STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Tokkel d
|
||||
STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Tokkel deursigtigheid vir boubaardes soos stasies, depots, weypunte en catenary
|
||||
STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Tokkel deursigtigheid vir brue
|
||||
STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Tokkel deursigtigheid vir strukture soos vuurtorings en senders, miskien in toekoms vir ooglekkers
|
||||
STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Tokkel deursigtigheid van kettinglyn. Ctrl+Kliek om te sluit.
|
||||
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Tokkel deursigtigheid vir laai aanwysers
|
||||
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Stel voorwerpe onsigbaar inplaas van deursigtig
|
||||
|
||||
@@ -1775,6 +1862,8 @@ STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Voorraad
|
||||
STR_JOIN_STATION_CAPTION :{WHITE}Sluit by stasie aan
|
||||
STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Bou 'n aparte stasie
|
||||
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Verbind wegwyser
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bou 'm aparte wegwyser
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :{WHITE}Spoorweg Kostruksie
|
||||
@@ -1785,7 +1874,7 @@ STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :{WHITE}Magneets
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Bou spoore
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Bou spoorweg spoor met die Outospoor metode
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bou trein skuur (vir die bou en diens van treine)
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Verdoel spoor na wegpunt
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Verander spoor na wegwyser. Ctrl laat wegwyser verbinding toe
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bou spoorweg stasie
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Bou spoorweg seinligte
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bou spoorweg brug
|
||||
@@ -1794,8 +1883,8 @@ STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Tokkel b
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Verdoel/Opgradeer die spoor tipe
|
||||
|
||||
# Rail depot construction window
|
||||
STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Trein Skuur Orientasie
|
||||
STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Kies spoorweg skuur orientasie
|
||||
STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Trein Depot Orientasie
|
||||
STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Kies spoorweg depot orientasie
|
||||
|
||||
# Rail waypoint construction window
|
||||
STR_WAYPOINT_CAPTION :{WHITE}Wegpunt
|
||||
@@ -1820,7 +1909,12 @@ STR_STATION_CLASS_WAYP :Wegpunte
|
||||
|
||||
# Signal window
|
||||
STR_BUILD_SIGNAL_CAPTION :{WHITE}Sein seleksie
|
||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Een-rigting pad sein (elektries){}'n Pad sein laat meer as een trein in 'n sein block op die selfde tyd, as die trein 'n pad kan vind na 'n veiligge stop punt. Een-rigting seine kan nie van die agterkant verby gevat word nie.
|
||||
STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blok Sein (semafoor){}Heirde is die mees basiese tipe sein, wat net een trein in 'n block op 'n tyd toelaat.
|
||||
STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Ingangs-Sein (semafoor){}Groen so lank as daar een of meer groen uitgang-siene is van enige agtervolgende treinspoorgedeelte is. Anderste is dit rooi.
|
||||
STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Uitgang-Sein (semafoor){}Gedra dieselfde as 'n blok-sein maar is nodig om die regte kleur op ingangs- & combinasie-voor-seine te laat wys.
|
||||
STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combinasie-Sein (semafoor){}Die combinasie-sein is net 'n ingang- en uitgang-sein op dieselfde tyd. Die laat jou toe om groot "bome" van voor-seine te bou.
|
||||
STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Een-rigting pad sein (semafoor){}'n Pad sein laat meer as een trein in 'n sein block op die selfde tyd, as die trein 'n pad kan vind na 'n veiligge stop punt. Een-rigting seine kan nie van die agterkant verby gevat word nie.
|
||||
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Een-rigting pad sein (elektries){}'n Pad sein laat meer as een trein in 'n sein block op die selfde tyd, as die trein 'n pad kan vind na 'n veiligge stop punt. Een-rigting seine kan nie van die agterkant verby gevat word nie.
|
||||
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Sein verander{}Wanneer geselekteer is, 'n kliek askei op die sein sal die sein verander na die geselekteerde sein tiepe en waarde, CTRL-kliek sal die bestaande waarde tokkel.
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Sein sleep digtheid
|
||||
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Verminder sein sleep digtheid
|
||||
@@ -1863,7 +1957,7 @@ STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Tokkel b
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Tokkel bou/verwyder vir tremweg konstruksie
|
||||
|
||||
# Road depot construction window
|
||||
STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Pad Skuur Oriëntering
|
||||
STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Pad Depot Oriëntering
|
||||
STR_BUILD_DEPOT_ROAD_ORIENTATION_SELECT_TOOLTIP :{BLACK}Kies pad voertuig depot orientasie
|
||||
STR_BUILD_DEPOT_TRAM_ORIENTATION_CAPTION :{WHITE}Trem Depot Orientasie
|
||||
STR_BUILD_DEPOT_TRAM_ORIENTATION_SELECT_TOOLTIP :{BLACK}Kies trem voertuig depot orientasie
|
||||
@@ -1926,13 +2020,13 @@ STR_STATION_BUILD_NOISE :{BLACK}Geraas g
|
||||
STR_LANDSCAPING_TOOLBAR :{WHITE}Landargitekteur
|
||||
STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Verlaag 'n hoek van land
|
||||
STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Verhoog 'n hoek van land
|
||||
STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Vlakte daal
|
||||
STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Maak land gelyk
|
||||
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Koop land vir gebruk in die toekoms
|
||||
|
||||
# Tree planting window (last two for SE only)
|
||||
STR_PLANT_TREE_CAPTION :{WHITE}Boome
|
||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Kies boom tipe om te beplant
|
||||
STR_TREES_RANDOM_TYPE :{BLACK}Boome van lukraak tipe
|
||||
STR_TREES_RANDOM_TYPE :{BLACK}Bome van lukraake tipe
|
||||
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Plaas boome van lukraak tipe
|
||||
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Lukraak Boome
|
||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Beplant bome wildweg oor landskap
|
||||
@@ -2044,7 +2138,7 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Treinspoor met
|
||||
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Trainspoor met kombineer- en rigting aanwysers
|
||||
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Trainspoor met kombineer- en een-rigting aanwysers
|
||||
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Trainspoor met rigting- en een-rigting aanwysers
|
||||
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Spoorweg trein skuur
|
||||
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Spoorweg trein depot
|
||||
|
||||
STR_LAI_ROAD_DESCRIPTION_ROAD :Pad
|
||||
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Pad met straatligte
|
||||
@@ -2108,11 +2202,11 @@ STR_LAI_UNMOVABLE_DESCRIPTION_COMPANY_OWNED_LAND :Maatskappy-besi
|
||||
STR_ABOUT_OPENTTD :{WHITE}Oor OpenTTD
|
||||
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oorspronklike kopiereg {COPYRIGHT} 1995 Chris Sawyer, Alle regte voorbehou
|
||||
STR_ABOUT_VERSION :{BLACK}OpenTTD uitgawe {REV}
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2009 Die OpenTTD span
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2010 Die OpenTTD span
|
||||
|
||||
# Save/load game/scenario
|
||||
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Speletjie
|
||||
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Laai Speletjie
|
||||
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Spel
|
||||
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Laai Spel
|
||||
STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Stoor Draaiboek
|
||||
STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Laai Draaiboek
|
||||
STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Laai Hoogtekaart
|
||||
@@ -2131,9 +2225,9 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Tik 'n n
|
||||
STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Wêreld generasie
|
||||
STR_MAPGEN_MAPSIZE :{BLACK}Kaart groote:
|
||||
STR_MAPGEN_BY :{BLACK}*
|
||||
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Hoev. van dorpe
|
||||
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Hoev. dorpe:
|
||||
STR_MAPGEN_DATE :{BLACK}Date:
|
||||
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Hoev. van nywerhede
|
||||
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Hoev. nywerhede:
|
||||
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Sneeu lyn hoogte:
|
||||
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Beweeg die sneeu lyn een op
|
||||
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Beweeg die sneeu lyn een af
|
||||
@@ -2141,12 +2235,13 @@ STR_MAPGEN_RANDOM_SEED :{BLACK}Lukraak
|
||||
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Kliek om 'n lukraak saad in te voeg
|
||||
STR_MAPGEN_RANDOM :{BLACK}Lukraake
|
||||
STR_MAPGEN_RANDOM_HELP :{BLACK}Verander die lukraak saad gebruik vir Terrein Generasie
|
||||
STR_MAPGEN_LAND_GENERATOR :{BLACK}Daal genereerder:
|
||||
STR_MAPGEN_LAND_GENERATOR :{BLACK}Land genereerder:
|
||||
STR_MAPGEN_TREE_PLACER :{BLACK}Boom algoritme:
|
||||
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrein tipe:
|
||||
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Seevlak:
|
||||
STR_MAPGEN_SMOOTHNESS :{BLACK}Gladheid:
|
||||
STR_MAPGEN_GENERATE :{WHITE}Opwek
|
||||
STR_MAPGEN_VARIETY :{BLACK}Verskeidenheid distribusie:
|
||||
STR_MAPGEN_GENERATE :{WHITE}Genereer
|
||||
|
||||
# Strings for map borders at game generation
|
||||
STR_MAPGEN_BORDER_TYPE :{BLACK}Kaart kante:
|
||||
@@ -2171,9 +2266,9 @@ STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Verander
|
||||
|
||||
# SE Map generation
|
||||
STR_SE_MAPGEN_CAPTION :{WHITE}Draaiboek tipe
|
||||
STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Platte daal
|
||||
STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Opwek 'n plat daal
|
||||
STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Lukraak daal
|
||||
STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Plat land
|
||||
STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Genereer 'n plat terrein
|
||||
STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Lukraake land
|
||||
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Hoogte van platte daal:
|
||||
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Beweeg die hoogte van platte daal een af
|
||||
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Beweeg die hoogte van platte daal bo een
|
||||
@@ -2245,6 +2340,7 @@ STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING
|
||||
STR_NEWGRF_ERROR_MSG_WARNING :{RED}Waarskuwing: {SILVER}{STRING}
|
||||
STR_NEWGRF_ERROR_MSG_ERROR :{RED}Fout: {SILVER}{STRING}
|
||||
STR_NEWGRF_ERROR_MSG_FATAL :{RED}Fataal: {SILVER}{STRING}
|
||||
STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}n' Fataale NewGRF fout het gebeur: {}{STRING}
|
||||
STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING} sal nie met die TTDPatch uitgawe rapporteer deur OpenTTD werk nie.
|
||||
STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING} is vir die {STRING} uitgawe van TTD.
|
||||
STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING} is onderwerp om saam met {STRING} gebruik te word
|
||||
@@ -2261,7 +2357,7 @@ STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING
|
||||
|
||||
# NewGRF related 'general' warnings
|
||||
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Versigtig!
|
||||
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Jy is besig om veranderings op 'n tans gebruikte speletjie te doen. Dit kan OpenTTD beskadig. {}Is jy heeltemal seker ?
|
||||
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Jy is opad om veranderings te maak op tans loopende spel. Dit kan OpenTTD lat staak. {}Is jy heeltemal seker ?
|
||||
|
||||
STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Kan nie lêer voeg: duplikaat GRF ID
|
||||
STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Gelyke lêer nie gevind nie (versoenbaar GRF gelaai)
|
||||
@@ -2300,11 +2396,12 @@ STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populasi
|
||||
STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passasiers verlede maand: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
|
||||
STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pos verlede maand: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
|
||||
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED :{ORANGE}{STRING}{BLACK} vereis
|
||||
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} vereis in winter
|
||||
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_LAST_MONTH :{ORANGE}{CARGO}{BLACK} gelewer laas maand
|
||||
STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}Geraaas limit in dorp: {ORANGE}{COMMA}{BLACK} Maks: {ORANGE}{COMMA}
|
||||
STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}Senter skerm op dorp lokasie
|
||||
STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}Plaaslike raad
|
||||
STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Toon informasie oor plaaslike raad
|
||||
STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}Vertoon informasie oor plaaslike raad
|
||||
STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Verander dorp naam
|
||||
|
||||
STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Brei uit
|
||||
@@ -2368,7 +2465,7 @@ STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO}
|
||||
STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} op roete vanaf {STATION})
|
||||
|
||||
STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Aanvaar
|
||||
STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Toon lys van aanvaarde vrag
|
||||
STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Wys lys van aanvaarde vrag
|
||||
STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Aanvaar: {WHITE}
|
||||
|
||||
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Graderings
|
||||
@@ -2402,7 +2499,7 @@ STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOIN
|
||||
STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Verander wegpunt name
|
||||
STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Verander baken naam
|
||||
|
||||
STR_EDIT_WAYPOINT_NAME :{WHITE}Redigeer wegpunt naam
|
||||
STR_EDIT_WAYPOINT_NAME :{WHITE}Redigeer wegwyser naam
|
||||
|
||||
# Finances window
|
||||
STR_FINANCES_CAPTION :{WHITE}{COMPANY} Finansies {BLACK}{COMPANYNUM}
|
||||
@@ -2415,7 +2512,7 @@ STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Pad Voert
|
||||
STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Vliegtuig Loopkoste
|
||||
STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Skip loopkoste
|
||||
STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Eiendom Onderhoud
|
||||
STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Trein Inkome
|
||||
STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Trein Inkomste
|
||||
STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Pad Voertuig Inkome
|
||||
STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Vliegtuig Inkome
|
||||
STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Skip Inkome
|
||||
@@ -2837,8 +2934,8 @@ STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Wins hie
|
||||
|
||||
STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Gebou: {LTBLUE}{NUM}{BLACK} Waarde: {LTBLUE}{CURRENCY}
|
||||
STR_VEHICLE_INFO_NO_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}Geen
|
||||
STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO}{4:STRING}
|
||||
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapasiteit: {LTBLUE}{CARGO}{4:STRING} (x{5:NUM})
|
||||
STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO}{3:STRING}
|
||||
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapasiteit: {LTBLUE}{CARGO}{3:STRING} (x{4:NUM})
|
||||
STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO}, {CARGO}{STRING}
|
||||
|
||||
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}oordra Krediete: {LTBLUE}{CURRENCY}
|
||||
@@ -2866,11 +2963,11 @@ STR_VEHICLE_DETAILS_CARGO_FROM :{LTBLUE}{CARGO}
|
||||
STR_VEHICLE_DETAILS_CARGO_FROM_MULT :{LTBLUE}{CARGO} van {STATION} (x{NUM})
|
||||
|
||||
STR_VEHICLE_DETAIL_TAB_CARGO :{BLACK}Vrag
|
||||
STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Toon besonderhede van vrag gedra
|
||||
STR_VEHICLE_DETAILS_TRAIN_CARGO_TOOLTIP :{BLACK}Wys besonderhede van gedrade vrag
|
||||
STR_VEHICLE_DETAIL_TAB_INFORMATION :{BLACK}Inligting
|
||||
STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Toon besonderhede van trein voertuie
|
||||
STR_VEHICLE_DETAILS_TRAIN_INFORMATION_TOOLTIP :{BLACK}Wys besonderhede van trein voertuie
|
||||
STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}Kapasiteite
|
||||
STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Toon kapasiteite van elke voertuig
|
||||
STR_VEHICLE_DETAILS_TRAIN_CAPACITIES_TOOLTIP :{BLACK}Wys kapasiteite van elke voertuig
|
||||
STR_VEHICLE_DETAIL_TAB_TOTAL_CARGO :{BLACK}Totaale Vrag
|
||||
STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK}Toon totaale kapasitiet van trein, verdeel by vrag tipe
|
||||
|
||||
@@ -3078,7 +3175,7 @@ STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Naam van
|
||||
STR_AI_DEBUG_RELOAD :{BLACK}Herlaai AI
|
||||
STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Maak die AI dood, herlaai die skrif en herlaai die AI
|
||||
|
||||
STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Daar was n fout met een van die AIs. Rapporteer assblief aan die skrywer met n skermskoot van die AI ontfout venster.
|
||||
STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Daar was n fout met een van die AIs. Rapporteer assblief aan die skrywer met n skermkiekie van die AI Ontfout Venster.
|
||||
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Die AI ontfout venster is net beskikbaar vir die dienaar
|
||||
|
||||
# AI configuration window
|
||||
@@ -3087,6 +3184,11 @@ STR_AI_CONFIG_LIST_TOOLTIP :{BLACK}Alle AIs
|
||||
STR_AI_CONFIG_HUMAN_PLAYER :Mens Speler
|
||||
STR_AI_CONFIG_RANDOM_AI :Lukraak AI
|
||||
|
||||
STR_AI_CONFIG_MOVE_UP :{BLACK}Beweeg op
|
||||
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Beweeg gekose AI op in die lys
|
||||
STR_AI_CONFIG_MOVE_DOWN :{BLACK}Beweeg af
|
||||
STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Beweeg gekose AI af in die lys
|
||||
|
||||
STR_AI_CONFIG_CHANGE :{BLACK}Kies AI
|
||||
STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}Laai nog 'n AI
|
||||
STR_AI_CONFIG_CONFIGURE :{BLACK}Konfigureer
|
||||
@@ -3136,7 +3238,7 @@ STR_ERROR_GAME_SAVE_FAILED :{WHITE}Speletji
|
||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Onbekwaam om lêer te uitvee
|
||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Speletjie Laai Misluk{}{STRING}
|
||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interne fout: {STRING}
|
||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Gebreek spaarspeletjie - {STRING}
|
||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Gebreekte gespaarde spel - {STRING}
|
||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spaarspeletjie is gemaak met nuwer uitgawe
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Lêer nie leesbare
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Lêer nie skryfbaar
|
||||
@@ -3158,7 +3260,7 @@ STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Skaal wa
|
||||
STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Om die kaart te veel te verstel is nie aanbeveel. Gaan voort met die generasie?
|
||||
|
||||
# Screenshot related messages
|
||||
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skermskoot suksesvol gestoor as '{STRING}'
|
||||
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Skermkiekie suksesvol gestoor as '{STRING}'
|
||||
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Skermskoot het misluk!
|
||||
|
||||
# Error message titles
|
||||
@@ -3166,14 +3268,14 @@ STR_ERROR_MESSAGE_CAPTION :{YELLOW}Boodska
|
||||
STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY :{YELLOW}Boodskap van {STRING}
|
||||
|
||||
# Generic construction errors
|
||||
STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Van die landkaart af
|
||||
STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Te naby aan die kant van die landkaart
|
||||
STR_ERROR_OFF_EDGE_OF_MAP :{WHITE}Van die kaart af
|
||||
STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}Te naby aan die kant van die kaart
|
||||
STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY :{WHITE}Nie genoeg kontant nie - benodig {CURRENCY}
|
||||
STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Gelyk grond benodig
|
||||
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Land loop in verkeerde rigting
|
||||
STR_ERROR_CAN_T_DO_THIS :{WHITE}Kan dit nie doen nie....
|
||||
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Gebou moet eers afgebreek word
|
||||
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan nie hierdie area skoon maak nie....
|
||||
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Kan nie hierdie gebied skoon maak nie....
|
||||
STR_ERROR_SITE_UNSUITABLE :{WHITE}...ligging ongeskik
|
||||
STR_ERROR_ALREADY_BUILT :{WHITE}...alreeds gebou
|
||||
STR_ERROR_OWNED_BY :{WHITE}...besit deur {STRING}
|
||||
@@ -3200,7 +3302,7 @@ STR_ERROR_ALREADY_LEVELLED :{WHITE}... klaa
|
||||
STR_ERROR_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Maatskappy naam kan nie verander word nie...
|
||||
STR_ERROR_CAN_T_CHANGE_PRESIDENT :{WHITE}Bestuurder se naam kan nie verander word nie...
|
||||
|
||||
STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}...maksimum toegelaat lening groote is {CURRENCY}
|
||||
STR_ERROR_MAXIMUM_PERMITTED_LOAN :{WHITE}...maksimum toegelaate lening groote is {CURRENCY}
|
||||
STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Kan nie meer geld leen nie...
|
||||
STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}...geen lening om terug te betaal
|
||||
STR_ERROR_CURRENCY_REQUIRED :{WHITE}...{CURRENCY} vereis
|
||||
@@ -3223,14 +3325,14 @@ STR_ERROR_NO_SPACE_FOR_TOWN :{WHITE}...daar
|
||||
STR_ERROR_ROAD_WORKS_IN_PROGRESS :{WHITE}Pad werke in verloop
|
||||
|
||||
# Industry related errors
|
||||
STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan nie nywerhede opwek nie...
|
||||
STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Kan nie nywerhede genereer nie...
|
||||
STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Kan nie {STRING} hier bou nie...
|
||||
STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Nywerheid tipe kan nie hier gebou word nie...
|
||||
STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}...te naby aan 'n ander nywerheid
|
||||
STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}...moet eers 'n dorp bou
|
||||
STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}...slegs een toegelaat per dorp
|
||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}...kan slegs in dorpe met te minste 1200 mense gebou word
|
||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan slegs in reenwoud gebiede gebou word
|
||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}...kan slegs in reënwoud gebiede gebou word
|
||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}...kan slegs in woestyn gebiede gebou word
|
||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...kan slegs in dorpe gebou word
|
||||
STR_ERROR_CAN_ONLY_BE_POSITIONED :{WHITE}...kan net naby aan kant van fkaart geplaas word
|
||||
@@ -3287,8 +3389,8 @@ STR_ERROR_BUOY_IN_THE_WAY :{WHITE}...baken
|
||||
STR_ERROR_BUOY_IS_IN_USE :{WHITE}...baken is in gebruik!
|
||||
|
||||
# Depot related errors
|
||||
STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan nie trein skuur hier bou nie...
|
||||
STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kan nie pad voertuig skuur hier bou nie...
|
||||
STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan nie trein depot hier bou nie...
|
||||
STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kan nie pad voertuig depot hier bou nie...
|
||||
STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Kan nie trem voertuig depot hier bou nie...
|
||||
STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Skip depot kan nie hier gebou word nie...
|
||||
|
||||
|
||||
@@ -1155,7 +1155,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :عدم استخ
|
||||
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :{LTBLUE}تصفح بالزر الايسر: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :{LTBLUE} استخدم {ORANGE}{STRING}{LTBLUE} نمط التاريخ لاسم اللعبة المحفوظة
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :طويل - 31 ديسمبر 2009
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :طويل - 31 ديسمبر 2008
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :قصير - 31 - 12 - 2008
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ايزو 31-12-2008
|
||||
|
||||
@@ -2176,7 +2176,7 @@ STR_LAI_UNMOVABLE_DESCRIPTION_COMPANY_OWNED_LAND :ارض مملو
|
||||
STR_ABOUT_OPENTTD :{WHITE}حول النسخة المفتوحة
|
||||
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}الحقوق الأصلية {COPYRIGHT} كريس سوير 1995 , جميع الحقوق محفوظة
|
||||
STR_ABOUT_VERSION :{BLACK}النسخة المفتوحة رقم {REV}
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2009 فريق النسخة المفتوحة
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2010 فريق النسخة المفتوحة
|
||||
|
||||
# Save/load game/scenario
|
||||
STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة
|
||||
@@ -2876,7 +2876,7 @@ STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL :{LTBLUE}تتو
|
||||
STR_VEHICLE_STATUS_NO_ORDERS :{LTBLUE}لايوجد اوامر وجهات
|
||||
STR_VEHICLE_STATUS_NO_ORDERS_VEL :{LTBLUE}لا يوجد اوامر وجهات , {VELOCITY}
|
||||
|
||||
STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT :{LTBLUE}متوجه ل{WAYPOINT}
|
||||
STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT :{LTBLUE}متو�ه ل{WAYPOINT}
|
||||
STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}متوجه ل {WAYPOINT}, {VELOCITY}
|
||||
|
||||
STR_VEHICLE_STATUS_HEADING_FOR_TRAIN_DEPOT :{ORANGE}متوجه لورشة قطارات {TOWN}
|
||||
@@ -2919,8 +2919,8 @@ STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK} دخل
|
||||
STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK} الاعتمادية {LTBLUE}{COMMA} % {BLACK} الاعطال منذ اخر صيانة {LTBLUE}{COMMA}
|
||||
|
||||
STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK} بني {LTBLUE}{NUM}{BLACK} القيمة {LTBLUE}{CURRENCY}
|
||||
STR_VEHICLE_INFO_CAPACITY :{BLACK} السعة {LTBLUE}{CARGO}{4:STRING}
|
||||
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK} السعة {LTBLUE}{CARGO}{4:STRING} (x{5:NUM})
|
||||
STR_VEHICLE_INFO_CAPACITY :{BLACK} السعة {LTBLUE}{CARGO}{3:STRING}
|
||||
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK} السعة {LTBLUE}{CARGO}{3:STRING} (x{4:NUM})
|
||||
STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK} السعة {LTBLUE}{CARGO}, {CARGO}{STRING}
|
||||
|
||||
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}مقدار التحويل: {LTBLUE}{CURRENCY}
|
||||
|
||||
@@ -1336,7 +1336,7 @@ STR_QUIT_NO :{BLACK}Não
|
||||
STR_OSNAME_WINDOWS :Windows
|
||||
STR_OSNAME_DOS :DOS
|
||||
STR_OSNAME_UNIX :Unix
|
||||
STR_OSNAME_OSX :OS X
|
||||
STR_OSNAME_OSX :OS{NBSP}X
|
||||
STR_OSNAME_BEOS :BeOS
|
||||
STR_OSNAME_HAIKU :Haiku
|
||||
STR_OSNAME_MORPHOS :MorphOS
|
||||
@@ -2167,7 +2167,7 @@ STR_LAI_UNMOVABLE_DESCRIPTION_COMPANY_OWNED_LAND :O terreno é pr
|
||||
STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD...
|
||||
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados
|
||||
STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV}
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2009 A equipe do OpenTTD
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2010 A equipe do OpenTTD
|
||||
|
||||
# Save/load game/scenario
|
||||
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar Jogo
|
||||
@@ -2906,8 +2906,8 @@ STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros d
|
||||
STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
|
||||
|
||||
STR_VEHICLE_INFO_BUILT_VALUE :{LTBLUE}{ENGINE} {BLACK}Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
|
||||
STR_VEHICLE_INFO_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}{4:STRING}
|
||||
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Capacidade: {LTBLUE}{CARGO}{4:STRING} (x{5:NUM})
|
||||
STR_VEHICLE_INFO_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}{3:STRING}
|
||||
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Capacidade: {LTBLUE}{CARGO}{3:STRING} (x{4:NUM})
|
||||
STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}, {CARGO}{STRING}
|
||||
|
||||
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Transferir Dinheiro: {LTBLUE}{CURRENCY}
|
||||
|
||||
@@ -2140,7 +2140,7 @@ STR_LAI_UNMOVABLE_DESCRIPTION_COMPANY_OWNED_LAND :Земя, пр
|
||||
STR_ABOUT_OPENTTD :{WHITE}Относно OpenTTD
|
||||
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторски права {COPYRIGHT} 1995 Крис Сойер (Chris Sawyer), Всички права са запазени
|
||||
STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV}
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2009 The OpenTTD team
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2010 The OpenTTD team
|
||||
|
||||
# Save/load game/scenario
|
||||
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Запази играта
|
||||
@@ -2863,8 +2863,8 @@ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} г
|
||||
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. скорост: {LTBLUE}{VELOCITY}
|
||||
|
||||
|
||||
STR_VEHICLE_INFO_CAPACITY :{BLACK}Капацитет: {LTBLUE}{CARGO}{4:STRING}
|
||||
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Капацитет: {LTBLUE}{CARGO}{4:STRING} (x{5:NUM})
|
||||
STR_VEHICLE_INFO_CAPACITY :{BLACK}Капацитет: {LTBLUE}{CARGO}{3:STRING}
|
||||
STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Капацитет: {LTBLUE}{CARGO}{3:STRING} (x{4:NUM})
|
||||
STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Капацитет: {LTBLUE}{CARGO}, {CARGO}{STRING}
|
||||
|
||||
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Сума за преместване: {LTBLUE}{CURRENCY}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user