changeset 15512:9129648e0ffd draft

(svn r20165) -Feature: [NewGRF] Information (var 4A) about the current railtype a train is on.
author michi_cc <michi_cc@openttd.org>
date Fri, 16 Jul 2010 19:02:59 +0000
parents fbbbb2791756
children c4bd37c3a0c5
files src/newgrf_engine.cpp src/newgrf_railtype.cpp
diffstat 2 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf_engine.cpp
+++ b/src/newgrf_engine.cpp
@@ -26,6 +26,7 @@
 #include "station_base.h"
 #include "engine_base.h"
 #include "company_base.h"
+#include "newgrf_railtype.h"
 
 struct WagonOverride {
 	EngineID *train_id;
@@ -644,6 +645,12 @@
 		case 0x48: return Engine::Get(v->engine_type)->flags; // Vehicle Type Info
 		case 0x49: return v->build_year;
 
+		case 0x4A: {
+			if (v->type != VEH_TRAIN) return 0;
+			RailType rt = GetTileRailType(v->tile);
+			return (HasPowerOnRail(Train::From(v)->railtype, rt) ? 0x100 : 0) | GetReverseRailTypeTranslation(rt, object->grffile);
+		}
+
 		/* Variables which use the parameter */
 		case 0x60: // Count consist's engine ID occurance
 			//EngineID engine = GetNewEngineID(GetEngineGRF(v->engine_type), v->type, parameter);
--- a/src/newgrf_railtype.cpp
+++ b/src/newgrf_railtype.cpp
@@ -110,7 +110,7 @@
 uint8 GetReverseRailTypeTranslation(RailType railtype, const GRFFile *grffile)
 {
 	/* No rail type table present, return rail type as-is */
-	if (grffile->railtype_max == 0) return railtype;
+	if (grffile == NULL || grffile->railtype_max == 0) return railtype;
 
 	/* Look for a matching rail type label in the table */
 	RailTypeLabel label = GetRailTypeInfo(railtype)->label;