Index: src/newgrf.cpp =================================================================== --- src/newgrf.cpp (revision 16943) +++ src/newgrf.cpp (working copy) @@ -3771,8 +3771,9 @@ *value = _misc_grf_features; /* Add the local flags */ - assert(!HasBit(*value, GMB_TRAIN_WIDTH_32_PIXELS)); + assert(!HasBit(*value, GMB_TRAIN_WIDTH_32_PIXELS) && !HasBit(*value, GMB_ROADVEH_WIDTH_32_PIXELS)); if (_cur_grffile->traininfo_vehicle_width == VEHICLEINFO_FULL_VEHICLE_WIDTH) SetBit(*value, GMB_TRAIN_WIDTH_32_PIXELS); + if (_cur_grffile->roadvehinfo_vehicle_width == VEHICLEINFO_FULL_VEHICLE_WIDTH) SetBit(*value, GMB_ROADVEH_WIDTH_32_PIXELS); return true; /* case 0x1F: // locale dependent settings not implemented */ @@ -4786,9 +4787,11 @@ /* Set train list engine width */ _cur_grffile->traininfo_vehicle_width = HasGrfMiscBit(GMB_TRAIN_WIDTH_32_PIXELS) ? VEHICLEINFO_FULL_VEHICLE_WIDTH : TRAININFO_DEFAULT_VEHICLE_WIDTH; + _cur_grffile->roadvehinfo_vehicle_width = HasGrfMiscBit(GMB_ROADVEH_WIDTH_32_PIXELS) ? VEHICLEINFO_FULL_VEHICLE_WIDTH : ROADVEHINFO_DEFAULT_VEHICLE_WIDTH; /* Remove the local flags from the global flags */ ClrBit(_misc_grf_features, GMB_TRAIN_WIDTH_32_PIXELS); + ClrBit(_misc_grf_features, GMB_ROADVEH_WIDTH_32_PIXELS); break; case 0x9F: // locale-dependent settings @@ -5629,6 +5632,7 @@ /* Initialise local settings to defaults */ newfile->traininfo_vehicle_pitch = 0; newfile->traininfo_vehicle_width = TRAININFO_DEFAULT_VEHICLE_WIDTH; + newfile->roadvehinfo_vehicle_width = ROADVEHINFO_DEFAULT_VEHICLE_WIDTH; /* Copy the initial parameter list */ assert(lengthof(newfile->param) == lengthof(config->param) && lengthof(config->param) == 0x80); Index: src/depot_gui.cpp =================================================================== --- src/depot_gui.cpp (revision 16943) +++ src/depot_gui.cpp (working copy) @@ -279,7 +279,7 @@ break; } - case VEH_ROAD: DrawRoadVehImage( v, x + 24, sprite_y, this->sel, ROADVEHINFO_DEFAULT_VEHICLE_WIDTH); break; + case VEH_ROAD: DrawRoadVehImage( v, x + 24, sprite_y, this->sel, VEHICLEINFO_FULL_VEHICLE_WIDTH); break; case VEH_SHIP: DrawShipImage( v, x + 19, sprite_y - 1, this->sel); break; case VEH_AIRCRAFT: { const Sprite *spr = GetSprite(v->GetImage(DIR_W), ST_NORMAL); Index: src/newgrf.h =================================================================== --- src/newgrf.h (revision 16943) +++ src/newgrf.h (working copy) @@ -32,6 +32,7 @@ GMB_TRAIN_WIDTH_32_PIXELS = 3, ///< Use 32 pixels per train vehicle in depot gui and vehicle details. Never set in the global variable; @see GRFFile::traininfo_vehicle_width GMB_AMBIENT_SOUND_CALLBACK = 4, // Unsupported. GMB_CATENARY_ON_3RD_TRACK = 5, // Unsupported. + GMB_ROADVEH_WIDTH_32_PIXELS= 6, ///< Use 32 pixels per road vehicle in depot gui and vehicle details. Never set in the global variable; @see GRFFile::roadvehinfo_vehicle_width FIXME Is 32 actually correct? }; enum GrfSpecFeature { @@ -107,8 +108,9 @@ uint8 railtype_max; RailTypeLabel *railtype_list; - int traininfo_vehicle_pitch; ///< Vertical offset for draing train images in depot GUI and vehicle details - int traininfo_vehicle_width; ///< Width (in pixels) of a 8/8 train vehicle in depot GUI and vehicle details + int traininfo_vehicle_pitch; ///< Vertical offset for draing train images in depot GUI and vehicle details + int traininfo_vehicle_width; ///< Width (in pixels) of a 8/8 train vehicle in depot GUI and vehicle details + int roadvehinfo_vehicle_width; ///< Width (in pixels) of a 8/8 road vehicle in depot GUI and vehicle details }; extern GRFFile *_first_grffile; Index: src/roadveh_cmd.cpp =================================================================== --- src/roadveh_cmd.cpp (revision 16943) +++ src/roadveh_cmd.cpp (working copy) @@ -13,6 +13,7 @@ #include "company_func.h" #include "vehicle_gui.h" #include "articulated_vehicles.h" +#include "newgrf.h" #include "newgrf_engine.h" #include "newgrf_sound.h" #include "yapf/yapf.h" @@ -94,6 +95,11 @@ { int reference_width = ROADVEHINFO_DEFAULT_VEHICLE_WIDTH; + const Engine *e = Engine::Get(this->engine_type); + if (e->grffile != NULL) { + reference_width = e->grffile->roadvehinfo_vehicle_width; + } + if (offset != NULL) { offset->x = reference_width / 2; offset->y = 0;