mirror of https://github.com/OpenTTD/OpenTTD
(svn r4000) Rewrite GetSlope{Tileh,Z}_{Road,Track} in a less confusing way
parent
cbab3eded2
commit
5701e1a237
52
rail_cmd.c
52
rail_cmd.c
|
@ -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)
|
||||
|
|
67
road_cmd.c
67
road_cmd.c
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue