summaryrefslogtreecommitdiff
path: root/src/engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine.cpp')
-rw-r--r--src/engine.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/engine.cpp b/src/engine.cpp
index 19e1f589d..9b639bf2b 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -177,6 +177,36 @@ bool Engine::CanCarryCargo() const
return this->GetDefaultCargoType() != CT_INVALID;
}
+/**
+ * Determines the default cargo capacity of an engine for display purposes.
+ *
+ * For planes carrying both passenger and mail this is the passenger capacity.
+ * For multiheaded engines this is the capacity of both heads.
+ * For articulated engines use GetCapacityOfArticulatedParts
+ *
+ * @return The default capacity
+ * @see GetDefaultCargoType
+ */
+uint Engine::GetDisplayDefaultCapacity() const
+{
+ if (!this->CanCarryCargo()) return 0;
+ switch (type) {
+ case VEH_TRAIN:
+ return GetEngineProperty(this->index, 0x14, this->u.rail.capacity) + (this->u.rail.railveh_type == RAILVEH_MULTIHEAD ? this->u.rail.capacity : 0);
+
+ case VEH_ROAD:
+ return GetEngineProperty(this->index, 0x0F, this->u.road.capacity);
+
+ case VEH_SHIP:
+ return GetEngineProperty(this->index, 0x0D, this->u.ship.capacity);
+
+ case VEH_AIRCRAFT:
+ return AircraftDefaultCargoCapacity(this->GetDefaultCargoType(), &this->u.air);
+
+ default: NOT_REACHED();
+ }
+}
+
Money Engine::GetRunningCost() const
{
switch (this->type) {