Changeset - r15153:326d7b71574b
[Not reviewed]
master
0 5 0
rubidium - 14 years ago 2010-05-11 21:02:26
rubidium@openttd.org
(svn r19792) -Change: use the typed FOR_EACH_SET_BIT for Tracks (adf88)
5 files changed with 36 insertions and 29 deletions:
0 comments (0 inline, 0 general)
src/elrail.cpp
Show inline comments
 
@@ -429,27 +429,26 @@ static void DrawCatenaryRailway(const Ti
 
	SpriteID wire_base = GetWireBase(ti->tile);
 

	
 
	/* Drawing of pylons is finished, now draw the wires */
 
	for (Track t = TRACK_BEGIN; t < TRACK_END; t++) {
 
		if (HasBit(wireconfig[TS_HOME], t)) {
 
			byte PCPconfig = HasBit(PCPstatus, PCPpositions[t][0]) +
 
				(HasBit(PCPstatus, PCPpositions[t][1]) << 1);
 
	Track t;
 
	FOR_EACH_SET_TRACK(t, wireconfig[TS_HOME]) {
 
		byte PCPconfig = HasBit(PCPstatus, PCPpositions[t][0]) +
 
			(HasBit(PCPstatus, PCPpositions[t][1]) << 1);
 

	
 
			const SortableSpriteStruct *sss;
 
			int tileh_selector = !(tileh[TS_HOME] % 3) * tileh[TS_HOME] / 3; // tileh for the slopes, 0 otherwise
 
		const SortableSpriteStruct *sss;
 
		int tileh_selector = !(tileh[TS_HOME] % 3) * tileh[TS_HOME] / 3; // tileh for the slopes, 0 otherwise
 

	
 
			assert(PCPconfig != 0); // We have a pylon on neither end of the wire, that doesn't work (since we have no sprites for that)
 
			assert(!IsSteepSlope(tileh[TS_HOME]));
 
			sss = &CatenarySpriteData[Wires[tileh_selector][t][PCPconfig]];
 
		assert(PCPconfig != 0); // We have a pylon on neither end of the wire, that doesn't work (since we have no sprites for that)
 
		assert(!IsSteepSlope(tileh[TS_HOME]));
 
		sss = &CatenarySpriteData[Wires[tileh_selector][t][PCPconfig]];
 

	
 
			/*
 
			 * The "wire"-sprite position is inside the tile, i.e. 0 <= sss->?_offset < TILE_SIZE.
 
			 * Therefore it is safe to use GetSlopeZ() for the elevation.
 
			 * Also note, that the result of GetSlopeZ() is very special for bridge-ramps.
 
			 */
 
			AddSortableSpriteToDraw(wire_base + sss->image_offset, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
 
				sss->x_size, sss->y_size, sss->z_size, GetSlopeZ(ti->x + sss->x_offset, ti->y + sss->y_offset) + sss->z_offset,
 
				IsTransparencySet(TO_CATENARY));
 
		}
 
		/*
 
		 * The "wire"-sprite position is inside the tile, i.e. 0 <= sss->?_offset < TILE_SIZE.
 
		 * Therefore it is safe to use GetSlopeZ() for the elevation.
 
		 * Also note, that the result of GetSlopeZ() is very special for bridge-ramps.
 
		 */
 
		AddSortableSpriteToDraw(wire_base + sss->image_offset, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
 
			sss->x_size, sss->y_size, sss->z_size, GetSlopeZ(ti->x + sss->x_offset, ti->y + sss->y_offset) + sss->z_offset,
 
			IsTransparencySet(TO_CATENARY));
 
	}
 
}
 

	
src/pathfinder/follow_track.hpp
Show inline comments
 
@@ -160,9 +160,9 @@ struct CFollowTrackT
 
		/* Mask already reserved trackdirs. */
 
		m_new_td_bits &= ~TrackBitsToTrackdirBits(reserved);
 
		/* Mask out all trackdirs that conflict with the reservation. */
 
		int i;
 
		FOR_EACH_SET_BIT(i, TrackdirBitsToTrackBits(m_new_td_bits)) {
 
			if (TracksOverlap(reserved | TrackToTrackBits((Track)i))) m_new_td_bits &= ~TrackToTrackdirBits((Track)i);
 
		Track t;
 
		FOR_EACH_SET_TRACK(t, TrackdirBitsToTrackBits(m_new_td_bits)) {
 
			if (TracksOverlap(reserved | TrackToTrackBits(t))) m_new_td_bits &= ~TrackToTrackdirBits(t);
 
		}
 
		if (m_new_td_bits == TRACKDIR_BIT_NONE) {
 
			m_err = EC_RESERVED;
src/pathfinder/npf/npf.cpp
Show inline comments
 
@@ -921,9 +921,9 @@ static void NPFFollowTrack(AyStar *aysta
 
		TrackBits reserved = GetReservedTrackbits(dst_tile);
 
		trackdirbits &= ~TrackBitsToTrackdirBits(reserved);
 

	
 
		int i;
 
		FOR_EACH_SET_BIT(i, TrackdirBitsToTrackBits(trackdirbits)) {
 
			if (TracksOverlap(reserved | TrackToTrackBits((Track)i))) trackdirbits &= ~TrackToTrackdirBits((Track)i);
 
		Track t;
 
		FOR_EACH_SET_TRACK(t, TrackdirBitsToTrackBits(trackdirbits)) {
 
			if (TracksOverlap(reserved | TrackToTrackBits(t))) trackdirbits &= ~TrackToTrackdirBits(t);
 
		}
 
	}
 

	
src/track_func.h
Show inline comments
 
@@ -17,6 +17,17 @@
 
#include "slope_func.h"
 

	
 
/**
 
 * Iterate through each set Track in a TrackBits value.
 
 * For more informations see FOR_EACH_SET_BIT_EX.
 
 *
 
 * @param var Loop index variable that stores fallowing set track. Must be of type Track.
 
 * @param track_bits The value to iterate through (any expression).
 
 *
 
 * @see FOR_EACH_SET_BIT_EX
 
 */
 
#define FOR_EACH_SET_TRACK(var, track_bits) FOR_EACH_SET_BIT_EX(Track, var, TrackBits, track_bits)
 

	
 
/**
 
 * Convert an Axis to the corresponding Track
 
 * AXIS_X -> TRACK_X
 
 * AXIS_Y -> TRACK_Y
src/train_cmd.cpp
Show inline comments
 
@@ -3517,11 +3517,8 @@ static void DeleteLastWagon(Train *v)
 

	
 
		/* It is important that these two are the first in the loop, as reservation cannot deal with every trackbit combination */
 
		assert(TRACK_BEGIN == TRACK_X && TRACK_Y == TRACK_BEGIN + 1);
 
		for (Track t = TRACK_BEGIN; t < TRACK_END; t++) {
 
			if (HasBit(remaining_trackbits, t)) {
 
				TryReserveRailTrack(tile, t);
 
			}
 
		}
 
		Track t;
 
		FOR_EACH_SET_TRACK(t, remaining_trackbits) TryReserveRailTrack(tile, t);
 
	}
 

	
 
	/* check if the wagon was on a road/rail-crossing */
0 comments (0 inline, 0 general)