summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/engine_type.h1
-rw-r--r--src/newgrf.cpp4
-rw-r--r--src/roadveh_cmd.cpp5
-rw-r--r--src/table/engines.h2
4 files changed, 9 insertions, 3 deletions
diff --git a/src/engine_type.h b/src/engine_type.h
index 635c01f27..a291bce07 100644
--- a/src/engine_type.h
+++ b/src/engine_type.h
@@ -121,6 +121,7 @@ struct RoadVehicleInfo {
uint8 tractive_effort; ///< Coefficient of tractive effort
uint8 air_drag; ///< Coefficient of air drag
byte visual_effect; ///< Bitstuffed NewGRF visual effect data
+ byte shorten_factor; ///< length on main map for this type is 8 - shorten_factor
};
/**
diff --git a/src/newgrf.cpp b/src/newgrf.cpp
index 40906a9ce..a34388dc7 100644
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -1319,6 +1319,10 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop
ei->cargo_age_period = buf->ReadWord();
break;
+ case 0x23: // Shorter vehicle
+ rvi->shorten_factor = buf->ReadByte();
+ break;
+
default:
ret = CommonVehicleChangeInfo(ei, prop, buf);
break;
diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp
index e6198bbc0..6754874ea 100644
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -161,11 +161,12 @@ void DrawRoadVehEngine(int left, int right, int preferred_x, int y, EngineID eng
*/
static uint GetRoadVehLength(const RoadVehicle *v)
{
- uint length = VEHICLE_LENGTH;
+ const Engine *e = v->GetEngine();
+ uint length = e->u.road.shorten_factor;
uint16 veh_len = GetVehicleCallback(CBID_VEHICLE_LENGTH, 0, 0, v->engine_type, v);
if (veh_len != CALLBACK_FAILED) {
- if (veh_len >= VEHICLE_LENGTH) ErrorUnknownCallbackResult(v->GetGRFID(), CBID_VEHICLE_LENGTH, veh_len);
+ if (veh_len >= VEHICLE_LENGTH) ErrorUnknownCallbackResult(e->GetGRFID(), CBID_VEHICLE_LENGTH, veh_len);
length -= Clamp(veh_len, 0, VEHICLE_LENGTH - 1);
}
diff --git a/src/table/engines.h b/src/table/engines.h
index 77574fd7a..b70787941 100644
--- a/src/table/engines.h
+++ b/src/table/engines.h
@@ -656,7 +656,7 @@ static const AircraftVehicleInfo _orig_aircraft_vehicle_info[] = {
* Tractive effort coefficient by default is the same as TTDPatch, 0.30*256=76
* Air drag value depends on the top speed of the vehicle.
*/
-#define ROV(a, b, c, d, e, f, g, h) { a, b, c, PR_RUNNING_ROADVEH, d, e, f, g, h, 76, 0, VE_DEFAULT }
+#define ROV(a, b, c, d, e, f, g, h) { a, b, c, PR_RUNNING_ROADVEH, d, e, f, g, h, 76, 0, VE_DEFAULT, 0 }
static const RoadVehicleInfo _orig_road_vehicle_info[] = {
/* image_index sfx max_speed power
* | cost_factor | | capacity |