(svn r13088) -Codechange: use SigSegState enum instead of bool variable (michi_cc)

pull/155/head
smatz 16 years ago
parent 2475959196
commit 9b8d16b7ff

@ -468,12 +468,12 @@ static inline void ResetSets()
* @return false iff presignal entry would be green (needed for trains leaving depot) * @return false iff presignal entry would be green (needed for trains leaving depot)
* @pre IsValidPlayer(owner) * @pre IsValidPlayer(owner)
*/ */
static bool UpdateSignalsInBuffer(Owner owner) static SigSegState UpdateSignalsInBuffer(Owner owner)
{ {
assert(IsValidPlayer(owner)); assert(IsValidPlayer(owner));
bool first = true; // first block? bool first = true; // first block?
bool state = false; // value to return SigSegState state = SIGSEG_FREE; // value to return
TileIndex tile; TileIndex tile;
DiagDirection dir; DiagDirection dir;
@ -532,7 +532,10 @@ static bool UpdateSignalsInBuffer(Owner owner)
if (first) { if (first) {
first = false; 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 */ /* do not do anything when some buffer was full */
@ -629,7 +632,7 @@ void AddSideToSignalBuffer(TileIndex tile, DiagDirection side, Owner owner)
* @param owner owner whose signals we will update * @param owner owner whose signals we will update
* @return false iff train can leave depot * @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()); assert(_globset.IsEmpty());
_globset.Add(tile, side); _globset.Add(tile, side);

@ -41,7 +41,13 @@ static inline byte SignalOnTrack(Track track)
return _signal_on_track[track]; 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 SetSignalsOnBothDir(TileIndex tile, Track track, Owner owner);
void AddTrackToSignalBuffer(TileIndex tile, Track track, Owner owner); void AddTrackToSignalBuffer(TileIndex tile, Track track, Owner owner);
void AddSideToSignalBuffer(TileIndex tile, DiagDirection side, Owner owner); void AddSideToSignalBuffer(TileIndex tile, DiagDirection side, Owner owner);

@ -2262,7 +2262,7 @@ static bool CheckTrainStayInDepot(Vehicle *v)
v->load_unload_time_rem = 0; 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); InvalidateWindowClasses(WC_TRAINS_LIST);
return true; return true;
} }

Loading…
Cancel
Save