diff options
author | terkhen <terkhen@openttd.org> | 2010-12-21 13:54:57 +0000 |
---|---|---|
committer | terkhen <terkhen@openttd.org> | 2010-12-21 13:54:57 +0000 |
commit | 759a596e0b390752bf59b8b0c4a757635de89f36 (patch) | |
tree | efe7c67ada7b409d10f6a6c7bfc7477f024bb612 /src | |
parent | 8fc48a79dae5d60a8b1c3db7d663f1188e2aba2c (diff) | |
download | openttd-759a596e0b390752bf59b8b0c4a757635de89f36.tar.xz |
(svn r21563) -Codechange: Add function to get the width of a vehicle.
Diffstat (limited to 'src')
-rw-r--r-- | src/vehicle_gui.cpp | 34 | ||||
-rw-r--r-- | src/vehicle_gui.h | 2 |
2 files changed, 36 insertions, 0 deletions
diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index 7ca9f6fc1..5393a5a71 100644 --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -2397,3 +2397,37 @@ void CcBuildPrimaryVehicle(const CommandCost &result, TileIndex tile, uint32 p1, const Vehicle *v = Vehicle::Get(_new_vehicle_id); ShowVehicleViewWindow(v); } + +/** + * 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(Vehicle *v) +{ + 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; + + case VEH_ROAD: + for (const RoadVehicle *u = RoadVehicle::From(v); u != NULL; u = u->Next()) { + vehicle_width += u->GetDisplayImageWidth(); + } + break; + + default: + bool rtl = _current_text_dir == TD_RTL; + SpriteID sprite = v->GetImage(rtl ? DIR_E : DIR_W); + const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL); + vehicle_width = real_sprite->width; + + break; + } + + return vehicle_width; +} diff --git a/src/vehicle_gui.h b/src/vehicle_gui.h index 4f29b2a64..51646bbd8 100644 --- a/src/vehicle_gui.h +++ b/src/vehicle_gui.h @@ -73,6 +73,8 @@ static inline uint GetVehicleHeight(VehicleType type) return (type == VEH_TRAIN || type == VEH_ROAD) ? 14 : 24; } +int GetVehicleWidth(Vehicle *v); + /** * Get WindowClass for vehicle list of given vehicle type * @param vt vehicle type to check |