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)
|
* @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…
Reference in New Issue