1
0
Fork 0

(svn r4000) Rewrite GetSlope{Tileh,Z}_{Road,Track} in a less confusing way

release/0.5
tron 2006-03-21 22:06:32 +00:00
parent cbab3eded2
commit 5701e1a237
2 changed files with 37 additions and 82 deletions

View File

@ -1753,49 +1753,35 @@ void SetSignalsOnBothDir(TileIndex tile, byte track)
static uint GetSlopeZ_Track(const TileInfo* ti)
{
uint tileh = ti->tileh;
uint z = ti->z;
int th = ti->tileh;
// check if it's a foundation
if (ti->tileh != 0) {
if (GetRailTileType(ti->tile) == RAIL_TYPE_DEPOT_WAYPOINT) {
return z + 8;
} else {
uint f = GetRailFoundation(ti->tileh, GetTrackBits(ti->tile));
if (tileh == 0) return z;
if (GetRailTileType(ti->tile) == RAIL_TYPE_DEPOT_WAYPOINT) {
return z + 8;
} else {
uint f = GetRailFoundation(ti->tileh, GetTrackBits(ti->tile));
if (f != 0) {
if (f < 15) {
// leveled foundation
return z + 8;
}
// inclined foundation
th = _inclined_tileh[f - 15];
}
if (f != 0) {
if (f < 15) return z + 8; // leveled foundation
tileh = _inclined_tileh[f - 15]; // inclined foundation
}
return GetPartialZ(ti->x & 0xF, ti->y & 0xF, th) + z;
return z + GetPartialZ(ti->x & 0xF, ti->y & 0xF, tileh);
}
return z;
}
static uint GetSlopeTileh_Track(const TileInfo *ti)
{
// check if it's a foundation
if (ti->tileh != 0) {
if (GetRailTileType(ti->tile) == RAIL_TYPE_DEPOT_WAYPOINT) {
return 0;
} else {
uint f = GetRailFoundation(ti->tileh, GetTrackBits(ti->tile));
if (f != 0) {
if (f < 15) {
// leveled foundation
return 0;
}
// inclined foundation
return _inclined_tileh[f - 15];
}
}
if (ti->tileh == 0) return ti->tileh;
if (GetRailTileType(ti->tile) == RAIL_TYPE_DEPOT_WAYPOINT) {
return 0;
} else {
uint f = GetRailFoundation(ti->tileh, GetTrackBits(ti->tile));
if (f == 0) return ti->tileh;
if (f < 15) return 0; // leveled foundation
return _inclined_tileh[f - 15]; // inclined foundation
}
return ti->tileh;
}
static void GetAcceptedCargo_Track(TileIndex tile, AcceptedCargo ac)

View File

@ -846,66 +846,35 @@ void DrawRoadDepotSprite(int x, int y, int image)
static uint GetSlopeZ_Road(const TileInfo* ti)
{
uint tileh = ti->tileh;
uint z = ti->z;
int th = ti->tileh;
// check if it's a foundation
if (ti->tileh != 0) {
switch (GetRoadType(ti->tile)) {
case ROAD_NORMAL: {
uint f = GetRoadFoundation(ti->tileh, GetRoadBits(ti->tile));
if (tileh == 0) return z;
if (GetRoadType(ti->tile) == ROAD_NORMAL) {
uint f = GetRoadFoundation(tileh, GetRoadBits(ti->tile));
if (f != 0) {
if (f < 15) {
// leveled foundation
return z + 8;
}
// inclined foundation
th = _inclined_tileh[f - 15];
}
break;
}
// if these are on a slope then there's a level foundation
case ROAD_DEPOT:
case ROAD_CROSSING:
return z + 8;
default: break;
if (f != 0) {
if (f < 15) return z + 8; // leveled foundation
tileh = _inclined_tileh[f - 15]; // inclined foundation
}
return GetPartialZ(ti->x&0xF, ti->y&0xF, th) + z;
return z + GetPartialZ(ti->x & 0xF, ti->y & 0xF, tileh);
} else {
return z + 8;
}
return z; // normal Z if no slope
}
static uint GetSlopeTileh_Road(const TileInfo *ti)
{
// check if it's a foundation
if (ti->tileh != 0) {
switch (GetRoadType(ti->tile)) {
case ROAD_NORMAL: {
uint f = GetRoadFoundation(ti->tileh, GetRoadBits(ti->tile));
if (ti->tileh == 0) return ti->tileh;
if (GetRoadType(ti->tile) == ROAD_NORMAL) {
uint f = GetRoadFoundation(ti->tileh, GetRoadBits(ti->tile));
if (f != 0) {
if (f < 15) {
// leveled foundation
return 0;
}
// inclined foundation
return _inclined_tileh[f - 15];
}
break;
}
// if these are on a slope then there's a level foundation
case ROAD_CROSSING:
case ROAD_DEPOT:
return 0;
default: break;
}
if (f == 0) return ti->tileh;
if (f < 15) return 0; // leveled foundation
return _inclined_tileh[f - 15]; // inclined foundation
} else {
return 0;
}
return ti->tileh;
}
static void GetAcceptedCargo_Road(TileIndex tile, AcceptedCargo ac)