Add tunnel/bridge entrance/exit values to entry direction conditional
This commit is contained in:
@@ -3177,6 +3177,7 @@ STR_TRACE_RESTRICT_CONDITIONAL_ORDER_DEPOT :{STRING} {STRIN
|
||||
STR_TRACE_RESTRICT_CONDITIONAL_CARGO :{STRING} train {STRING} cargo: {STRING} then
|
||||
STR_TRACE_RESTRICT_CONDITIONAL_ENTRY_DIRECTION :{STRING} train {STRING} entering from {STRING} tile edge then
|
||||
STR_TRACE_RESTRICT_CONDITIONAL_ENTRY_SIGNAL_FACE :{STRING} train {STRING} entering from {STRING} of signal then
|
||||
STR_TRACE_RESTRICT_CONDITIONAL_ENTRY_SIGNAL_TYPE :{STRING} train {STRING} {STRING} then
|
||||
STR_TRACE_RESTRICT_CONDITIONAL_TILE_INDEX :{STRING} {STRING} {STRING} at {NUM} x {NUM} then
|
||||
STR_TRACE_RESTRICT_CONDITIONAL_GROUP :{STRING} train {STRING} in group: {GROUP} then
|
||||
STR_TRACE_RESTRICT_CONDITIONAL_GROUP_STR :{STRING} train {STRING} in group: {STRING} {BLACK}{STRING}then
|
||||
@@ -3220,6 +3221,8 @@ STR_TRACE_RESTRICT_DIRECTION_NE :north-east
|
||||
STR_TRACE_RESTRICT_DIRECTION_SE :south-east
|
||||
STR_TRACE_RESTRICT_DIRECTION_SW :south-west
|
||||
STR_TRACE_RESTRICT_DIRECTION_NW :north-west
|
||||
STR_TRACE_RESTRICT_DIRECTION_TUNBRIDGE_ENTRANCE :entering tunnel/bridge
|
||||
STR_TRACE_RESTRICT_DIRECTION_TUNBRIDGE_EXIT :exiting tunnel/bridge
|
||||
STR_TRACE_RESTRICT_COMPANY :Company
|
||||
STR_TRACE_RESTRICT_UNDEFINED_COMPANY :Undefined company
|
||||
STR_TRACE_RESTRICT_SLOT_OP :Slot operation
|
||||
|
@@ -328,13 +328,21 @@ void TraceRestrictProgram::Execute(const Train* v, const TraceRestrictProgramInp
|
||||
break;
|
||||
|
||||
case TRDTSV_FRONT:
|
||||
direction_match = IsTileType(input.tile, MP_RAILWAY) && HasSignalOnTrackdir(input.tile, input.trackdir);
|
||||
direction_match = (IsTileType(input.tile, MP_RAILWAY) && HasSignalOnTrackdir(input.tile, input.trackdir)) || IsTileType(input.tile, MP_TUNNELBRIDGE);
|
||||
break;
|
||||
|
||||
case TRDTSV_BACK:
|
||||
direction_match = IsTileType(input.tile, MP_RAILWAY) && !HasSignalOnTrackdir(input.tile, input.trackdir);
|
||||
break;
|
||||
|
||||
case TRDTSV_TUNBRIDGE_ENTER:
|
||||
direction_match = IsTunnelBridgeSignalSimulationEntranceTile(input.tile) && TrackdirEntersTunnelBridge(input.tile, input.trackdir);
|
||||
break;
|
||||
|
||||
case TRDTSV_TUNBRIDGE_EXIT:
|
||||
direction_match = IsTunnelBridgeSignalSimulationExitTile(input.tile) && TrackdirExitsTunnelBridge(input.tile, input.trackdir);
|
||||
break;
|
||||
|
||||
default:
|
||||
NOT_REACHED();
|
||||
break;
|
||||
|
@@ -194,6 +194,8 @@ enum TraceRestrictDirectionTypeSpecialValue {
|
||||
TRNTSV_NW = 3, ///< DIAGDIR_NW: entering at NW tile edge
|
||||
TRDTSV_FRONT = 4, ///< entering at front face of signal
|
||||
TRDTSV_BACK = 5, ///< entering at rear face of signal
|
||||
TRDTSV_TUNBRIDGE_ENTER = 32, ///< signal is a tunnel/bridge entrance
|
||||
TRDTSV_TUNBRIDGE_EXIT = 33, ///< signal is a tunnel/bridge exit
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -263,6 +263,8 @@ static const StringID _direction_value_str[] = {
|
||||
STR_TRACE_RESTRICT_DIRECTION_SE,
|
||||
STR_TRACE_RESTRICT_DIRECTION_SW,
|
||||
STR_TRACE_RESTRICT_DIRECTION_NW,
|
||||
STR_TRACE_RESTRICT_DIRECTION_TUNBRIDGE_ENTRANCE,
|
||||
STR_TRACE_RESTRICT_DIRECTION_TUNBRIDGE_EXIT,
|
||||
INVALID_STRING_ID
|
||||
};
|
||||
static const uint _direction_value_val[] = {
|
||||
@@ -272,6 +274,8 @@ static const uint _direction_value_val[] = {
|
||||
TRNTSV_SE,
|
||||
TRNTSV_SW,
|
||||
TRNTSV_NW,
|
||||
TRDTSV_TUNBRIDGE_ENTER,
|
||||
TRDTSV_TUNBRIDGE_EXIT,
|
||||
};
|
||||
|
||||
/** value drop down list for direction type strings and values */
|
||||
@@ -1125,7 +1129,9 @@ static void DrawInstructionString(const TraceRestrictProgram *prog, TraceRestric
|
||||
break;
|
||||
|
||||
case TRVT_DIRECTION:
|
||||
if (GetTraceRestrictValue(item) >= TRDTSV_FRONT) {
|
||||
if (GetTraceRestrictValue(item) >= TRDTSV_TUNBRIDGE_ENTER) {
|
||||
instruction_string = STR_TRACE_RESTRICT_CONDITIONAL_ENTRY_SIGNAL_TYPE;
|
||||
} else if (GetTraceRestrictValue(item) >= TRDTSV_FRONT) {
|
||||
instruction_string = STR_TRACE_RESTRICT_CONDITIONAL_ENTRY_SIGNAL_FACE;
|
||||
} else {
|
||||
instruction_string = STR_TRACE_RESTRICT_CONDITIONAL_ENTRY_DIRECTION;
|
||||
|
Reference in New Issue
Block a user