From c1cf3934fa5bd523dd1df01cf505c9f06927701d Mon Sep 17 00:00:00 2001 From: glx Date: Sun, 25 Jan 2009 00:57:03 +0000 Subject: (svn r15263) -Codechange: added Engine::GetCost() to remove some code duplication. --- src/engine.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/engine.cpp') diff --git a/src/engine.cpp b/src/engine.cpp index 32d591373..37886699d 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -137,6 +137,28 @@ Money Engine::GetRunningCost() const } } +Money Engine::GetCost() const +{ + switch (this->type) { + case VEH_ROAD: + return GetEngineProperty(this->index, 0x11, this->u.road.cost_factor) * (_price.roadveh_base >> 3) >> 5; + + case VEH_TRAIN: + if (this->u.rail.railveh_type == RAILVEH_WAGON) { + return (GetEngineProperty(this->index, 0x17, this->u.rail.cost_factor) * _price.build_railwagon) >> 8; + } else { + return GetEngineProperty(this->index, 0x17, this->u.rail.cost_factor) * (_price.build_railvehicle >> 3) >> 5; + } + case VEH_SHIP: + return GetEngineProperty(this->index, 0x0A, this->u.ship.cost_factor) * (_price.ship_base >> 3) >> 5; + + case VEH_AIRCRAFT: + return GetEngineProperty(this->index, 0x0B, this->u.air.cost_factor) * (_price.aircraft_base >> 3) >> 5; + + default: NOT_REACHED(); + } +} + /** Sets cached values in Company::num_vehicles and Group::num_vehicles */ void SetCachedEngineCounts() -- cgit v1.2.3-70-g09d2