changeset 18313:41bd44368715 draft

(svn r23149) -Add: [NewGRF] Road vehicle property 23 to shorten vehicles without callback usage.
author frosch <frosch@openttd.org>
date Tue, 08 Nov 2011 17:27:46 +0000
parents 1945b084b0dc
children 1f35799d5a8b
files src/engine_type.h src/newgrf.cpp src/roadveh_cmd.cpp src/table/engines.h
diffstat 4 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/engine_type.h
+++ b/src/engine_type.h
@@ -121,6 +121,7 @@
 	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
 };
 
 /**
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -1319,6 +1319,10 @@
 				ei->cargo_age_period = buf->ReadWord();
 				break;
 
+			case 0x23: // Shorter vehicle
+				rvi->shorten_factor = buf->ReadByte();
+				break;
+
 			default:
 				ret = CommonVehicleChangeInfo(ei, prop, buf);
 				break;
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -161,11 +161,12 @@
  */
 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);
 	}
 
--- a/src/table/engines.h
+++ b/src/table/engines.h
@@ -656,7 +656,7 @@
  * 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 |