Changeset - r9222:06ddce52e7ce
[Not reviewed]
master
0 3 0
smatz - 16 years ago 2008-05-14 16:38:53
smatz@openttd.org
(svn r13088) -Codechange: use SigSegState enum instead of bool variable (michi_cc)
3 files changed with 15 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/signal.cpp
Show inline comments
 
@@ -468,12 +468,12 @@ static inline void ResetSets()
 
 * @return false iff presignal entry would be green (needed for trains leaving depot)
 
 * @pre IsValidPlayer(owner)
 
 */
 
static bool UpdateSignalsInBuffer(Owner owner)
 
static SigSegState UpdateSignalsInBuffer(Owner owner)
 
{
 
	assert(IsValidPlayer(owner));
 

	
 
	bool first = true;  // first block?
 
	bool state = false; // value to return
 
	SigSegState state = SIGSEG_FREE; // value to return
 

	
 
	TileIndex tile;
 
	DiagDirection dir;
 
@@ -532,7 +532,10 @@ static bool UpdateSignalsInBuffer(Owner 
 

	
 
		if (first) {
 
			first = false;
 
			state = (flags & SF_TRAIN) || (flags & SF_EXIT && !(flags & SF_GREEN)) || (flags & SF_FULL); // true iff train CAN'T leave the depot
 
			if ((flags & SF_TRAIN) || (flags & SF_EXIT && !(flags & SF_GREEN)) || (flags & SF_FULL)) {
 
				/* SIGSEG_FREE is set by default */
 
				state = SIGSEG_FULL;
 
			}
 
		}
 

	
 
		/* do not do anything when some buffer was full */
 
@@ -629,7 +632,7 @@ void AddSideToSignalBuffer(TileIndex til
 
 * @param owner owner whose signals we will update
 
 * @return false iff train can leave depot
 
 */
 
bool UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner)
 
SigSegState UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner)
 
{
 
	assert(_globset.IsEmpty());
 
	_globset.Add(tile, side);
src/signal_func.h
Show inline comments
 
@@ -41,7 +41,13 @@ static inline byte SignalOnTrack(Track t
 
	return _signal_on_track[track];
 
}
 

	
 
bool UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner);
 
/** State of the signal segment */
 
enum SigSegState {
 
	SIGSEG_FREE,    ///< Free and has no pre-signal exits or at least one green exit
 
	SIGSEG_FULL,    ///< Occupied by a train
 
};
 

	
 
SigSegState UpdateSignalsOnSegment(TileIndex tile, DiagDirection side, Owner owner);
 
void SetSignalsOnBothDir(TileIndex tile, Track track, Owner owner);
 
void AddTrackToSignalBuffer(TileIndex tile, Track track, Owner owner);
 
void AddSideToSignalBuffer(TileIndex tile, DiagDirection side, Owner owner);
src/train_cmd.cpp
Show inline comments
 
@@ -2262,7 +2262,7 @@ static bool CheckTrainStayInDepot(Vehicl
 

	
 
		v->load_unload_time_rem = 0;
 

	
 
		if (UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner)) {
 
		if (UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner) == SIGSEG_FULL) {
 
			InvalidateWindowClasses(WC_TRAINS_LIST);
 
			return true;
 
		}
0 comments (0 inline, 0 general)