mirror of https://github.com/OpenTTD/OpenTTD
(svn r13088) -Codechange: use SigSegState enum instead of bool variable (michi_cc)
parent
6bfd695002
commit
08814d50ea
|
@ -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 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 tile, DiagDirection side, Owner owner)
|
|||
* @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);
|
||||
|
|
|
@ -41,7 +41,13 @@ static inline byte SignalOnTrack(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 AddTrackToSignalBuffer(TileIndex tile, Track track, 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;
|
||||
|
||||
if (UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner)) {
|
||||
if (UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner) == SIGSEG_FULL) {
|
||||
InvalidateWindowClasses(WC_TRAINS_LIST);
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue