summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2016-08-15 18:34:09 +0000
committerfrosch <frosch@openttd.org>2016-08-15 18:34:09 +0000
commit8e90072d3b9578fd5e12f7b27dad16dac5b245ee (patch)
tree1e647061cac92c05adfa001384e52d6183882d2f /src
parentddc920521215c38ab7e96bebb929b313758268df (diff)
downloadopenttd-8e90072d3b9578fd5e12f7b27dad16dac5b245ee.tar.xz
(svn r27631) -Codechange: Split GetSingleVehicleWidth from GetVehicleWidth.
Diffstat (limited to 'src')
-rw-r--r--src/vehicle_gui.cpp38
-rw-r--r--src/vehicle_gui.h3
2 files changed, 24 insertions, 17 deletions
diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp
index 03f9ef225..74ae30c44 100644
--- a/src/vehicle_gui.cpp
+++ b/src/vehicle_gui.cpp
@@ -2829,37 +2829,43 @@ void CcBuildPrimaryVehicle(const CommandCost &result, TileIndex tile, uint32 p1,
}
/**
- * Get the width of a vehicle (including all parts of the consist) in pixels.
+ * Get the width of a vehicle (part) in pixels.
* @param v Vehicle to get the width for.
* @return Width of the vehicle.
*/
-int GetVehicleWidth(Vehicle *v, EngineImageType image_type)
+int GetSingleVehicleWidth(const Vehicle *v, EngineImageType image_type)
{
- int vehicle_width = 0;
-
switch (v->type) {
case VEH_TRAIN:
- for (const Train *u = Train::From(v); u != NULL; u = u->Next()) {
- vehicle_width += u->GetDisplayImageWidth();
- }
- break;
+ return Train::From(v)->GetDisplayImageWidth();
case VEH_ROAD:
- for (const RoadVehicle *u = RoadVehicle::From(v); u != NULL; u = u->Next()) {
- vehicle_width += u->GetDisplayImageWidth();
- }
- break;
+ return RoadVehicle::From(v)->GetDisplayImageWidth();
default:
bool rtl = _current_text_dir == TD_RTL;
SpriteID sprite = v->GetImage(rtl ? DIR_E : DIR_W, image_type);
const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL);
- vehicle_width = UnScaleGUI(real_sprite->width);
-
- break;
+ return UnScaleGUI(real_sprite->width);
}
+}
- return vehicle_width;
+/**
+ * Get the width of a vehicle (including all parts of the consist) in pixels.
+ * @param v Vehicle to get the width for.
+ * @return Width of the vehicle.
+ */
+int GetVehicleWidth(const Vehicle *v, EngineImageType image_type)
+{
+ if (v->type == VEH_TRAIN || v->type == VEH_ROAD) {
+ int vehicle_width = 0;
+ for (const Vehicle *u = v; u != NULL; u = u->Next()) {
+ vehicle_width += GetSingleVehicleWidth(u, image_type);
+ }
+ return vehicle_width;
+ } else {
+ return GetSingleVehicleWidth(v, image_type);
+ }
}
/**
diff --git a/src/vehicle_gui.h b/src/vehicle_gui.h
index da98bf033..92975425d 100644
--- a/src/vehicle_gui.h
+++ b/src/vehicle_gui.h
@@ -64,7 +64,8 @@ static inline uint GetVehicleHeight(VehicleType type)
return (type == VEH_TRAIN || type == VEH_ROAD) ? 14 : 24;
}
-int GetVehicleWidth(Vehicle *v, EngineImageType image_type);
+int GetSingleVehicleWidth(const Vehicle *v, EngineImageType image_type);
+int GetVehicleWidth(const Vehicle *v, EngineImageType image_type);
/** Dimensions of a cell in the purchase/depot windows. */
struct VehicleCellSize {