Mercurial > hg > openttd
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;