diff options
author | frosch <frosch@openttd.org> | 2016-08-15 18:34:09 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2016-08-15 18:34:09 +0000 |
commit | 8e90072d3b9578fd5e12f7b27dad16dac5b245ee (patch) | |
tree | 1e647061cac92c05adfa001384e52d6183882d2f | |
parent | ddc920521215c38ab7e96bebb929b313758268df (diff) | |
download | openttd-8e90072d3b9578fd5e12f7b27dad16dac5b245ee.tar.xz |
(svn r27631) -Codechange: Split GetSingleVehicleWidth from GetVehicleWidth.
-rw-r--r-- | src/vehicle_gui.cpp | 38 | ||||
-rw-r--r-- | src/vehicle_gui.h | 3 |
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 { |