diff options
Diffstat (limited to 'src/newgrf_railtype.cpp')
-rw-r--r-- | src/newgrf_railtype.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/newgrf_railtype.cpp b/src/newgrf_railtype.cpp index 53894dca7..114f31b7c 100644 --- a/src/newgrf_railtype.cpp +++ b/src/newgrf_railtype.cpp @@ -49,7 +49,7 @@ static uint32 RailTypeGetVariable(const ResolverObject *object, byte variable, b } switch (variable) { - case 0x40: return GetTerrainType(tile); + case 0x40: return GetTerrainType(tile, object->u.routes.upper_halftile); case 0x41: return 0; case 0x42: return IsLevelCrossingTile(tile) && IsCrossingBarred(tile); case 0x43: @@ -70,7 +70,7 @@ static const SpriteGroup *RailTypeResolveReal(const ResolverObject *object, cons return NULL; } -static inline void NewRailTypeResolver(ResolverObject *res, TileIndex tile) +static inline void NewRailTypeResolver(ResolverObject *res, TileIndex tile, bool upper_halftile) { res->GetRandomBits = &RailTypeGetRandomBits; res->GetTriggers = &RailTypeGetTriggers; @@ -79,6 +79,7 @@ static inline void NewRailTypeResolver(ResolverObject *res, TileIndex tile) res->ResolveReal = &RailTypeResolveReal; res->u.routes.tile = tile; + res->u.routes.upper_halftile = upper_halftile; res->callback = CBID_NO_CALLBACK; res->callback_param1 = 0; @@ -89,7 +90,7 @@ static inline void NewRailTypeResolver(ResolverObject *res, TileIndex tile) res->count = 0; } -SpriteID GetCustomRailSprite(const RailtypeInfo *rti, TileIndex tile, RailTypeSpriteGroup rtsg) +SpriteID GetCustomRailSprite(const RailtypeInfo *rti, TileIndex tile, RailTypeSpriteGroup rtsg, bool upper_halftile) { assert(rtsg < RTSG_END); @@ -98,7 +99,7 @@ SpriteID GetCustomRailSprite(const RailtypeInfo *rti, TileIndex tile, RailTypeSp const SpriteGroup *group; ResolverObject object; - NewRailTypeResolver(&object, tile); + NewRailTypeResolver(&object, tile, upper_halftile); group = SpriteGroup::Resolve(rti->group[rtsg], &object); if (group == NULL || group->GetNumResults() == 0) return 0; @@ -128,5 +129,5 @@ uint8 GetReverseRailTypeTranslation(RailType railtype, const GRFFile *grffile) */ void GetRailTypeResolver(ResolverObject *ro, uint index) { - NewRailTypeResolver(ro, index); + NewRailTypeResolver(ro, index, false); } |