summaryrefslogtreecommitdiff
path: root/src/newgrf_railtype.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2010-07-11 17:28:19 +0000
committerfrosch <frosch@openttd.org>2010-07-11 17:28:19 +0000
commit72ee11a7c63211a3ffe34c834d7ca579d83af1f4 (patch)
tree6e2d252279d5c894d96fdde8c89d4af7186d4b68 /src/newgrf_railtype.cpp
parent19fb8ba6f88d2f684546e93388418f3757d80612 (diff)
downloadopenttd-72ee11a7c63211a3ffe34c834d7ca579d83af1f4.tar.xz
(svn r20126) -Fix [FS#3883]: Make railtype Terrain Type variable aware of RAIL_GROUND_HALF_SNOW. That is, resolve the sprites for upper and lower part of the foundation independently.
Diffstat (limited to 'src/newgrf_railtype.cpp')
-rw-r--r--src/newgrf_railtype.cpp11
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);
}