Changeset - r3286:fc06c5d7b3b4
[Not reviewed]
master
0 2 0
tron - 19 years ago 2006-03-21 22:06:32
tron@openttd.org
(svn r4000) Rewrite GetSlope{Tileh,Z}_{Road,Track} in a less confusing way
2 files changed with 38 insertions and 83 deletions:
0 comments (0 inline, 0 general)
rail_cmd.c
Show inline comments
 
@@ -1753,49 +1753,35 @@ void SetSignalsOnBothDir(TileIndex tile,
 

	
 
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 (f != 0) {
 
				if (f < 15) {
 
					// leveled foundation
 
					return z + 8;
 
				}
 
				// inclined foundation
 
				th = _inclined_tileh[f - 15];
 
			}
 
	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) 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)
road_cmd.c
Show inline comments
 
@@ -846,66 +846,35 @@ void DrawRoadDepotSprite(int x, int y, i
 

	
 
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)
0 comments (0 inline, 0 general)