Merge branch 'signal_tunnels_bridges' into signal_tunnels_bridges-sx

This commit is contained in:
Jonathan G Rennison
2015-10-31 01:31:38 +00:00
2 changed files with 8 additions and 3 deletions

View File

@@ -1040,7 +1040,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
} }
if (flags & DC_EXEC) { if (flags & DC_EXEC) {
if (p2 == 0 && HasWormholeSignals(tile)) { // Toggle signal if already signals present. if (p2 == 0 && HasWormholeSignals(tile)) { // Toggle signal if already signals present.
if (IsTunnelBridgeEntrance (tile)) { if (IsTunnelBridgeEntrance(tile)) {
ClrBitTunnelBridgeSignal(tile); ClrBitTunnelBridgeSignal(tile);
ClrBitTunnelBridgeExit(tile_exit); ClrBitTunnelBridgeExit(tile_exit);
SetBitTunnelBridgeExit(tile); SetBitTunnelBridgeExit(tile);
@@ -1051,7 +1051,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
SetBitTunnelBridgeExit(tile_exit); SetBitTunnelBridgeExit(tile_exit);
SetBitTunnelBridgeSignal(tile); SetBitTunnelBridgeSignal(tile);
} }
} else{ } else {
/* Create one direction tunnel/bridge if required. */ /* Create one direction tunnel/bridge if required. */
if (p2 == 0) { if (p2 == 0) {
SetBitTunnelBridgeSignal(tile); SetBitTunnelBridgeSignal(tile);
@@ -1071,7 +1071,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
} }
MarkTileDirtyByTile(tile); MarkTileDirtyByTile(tile);
MarkTileDirtyByTile(tile_exit); MarkTileDirtyByTile(tile_exit);
AddSideToSignalBuffer(tile, INVALID_DIAGDIR, _current_company); AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile));
YapfNotifyTrackLayoutChange(tile, track); YapfNotifyTrackLayoutChange(tile, track);
} }
return cost; return cost;
@@ -1519,6 +1519,8 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1
_m[end].m2 = 0; _m[end].m2 = 0;
MarkTileDirtyByTile(tile); MarkTileDirtyByTile(tile);
MarkTileDirtyByTile(end); MarkTileDirtyByTile(end);
AddSideToSignalBuffer(tile, INVALID_DIAGDIR, GetTileOwner(tile));
YapfNotifyTrackLayoutChange(tile, track);
return CommandCost(EXPENSES_CONSTRUCTION, cost); return CommandCost(EXPENSES_CONSTRUCTION, cost);
} }

View File

@@ -3203,6 +3203,7 @@ static bool CheckTrainStayInWormHole(Train *t, TileIndex tile)
} }
SigSegState seg_state = _settings_game.pf.reserve_paths ? SIGSEG_PBS : UpdateSignalsOnSegment(tile, INVALID_DIAGDIR, t->owner); SigSegState seg_state = _settings_game.pf.reserve_paths ? SIGSEG_PBS : UpdateSignalsOnSegment(tile, INVALID_DIAGDIR, t->owner);
if (seg_state == SIGSEG_FULL || (seg_state == SIGSEG_PBS && !TryPathReserve(t))) { if (seg_state == SIGSEG_FULL || (seg_state == SIGSEG_PBS && !TryPathReserve(t))) {
t->vehstatus |= VS_TRAIN_SLOWING;
t->cur_speed = 0; t->cur_speed = 0;
return true; return true;
} }
@@ -3423,6 +3424,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
if (v->IsFrontEngine() && v->force_proceed == 0) { if (v->IsFrontEngine() && v->force_proceed == 0) {
if (IsTunnelBridgeWithSignRed(gp.new_tile)) { if (IsTunnelBridgeWithSignRed(gp.new_tile)) {
v->cur_speed = 0; v->cur_speed = 0;
v->vehstatus |= VS_TRAIN_SLOWING;
return false; return false;
} }
if (IsTunnelBridgeExit(gp.new_tile)) { if (IsTunnelBridgeExit(gp.new_tile)) {
@@ -3511,6 +3513,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse)
if (IsToCloseBehindTrain(v, gp.new_tile, distance == 0)) { if (IsToCloseBehindTrain(v, gp.new_tile, distance == 0)) {
if (distance == 0) v->wait_counter = 0; if (distance == 0) v->wait_counter = 0;
v->cur_speed = 0; v->cur_speed = 0;
v->vehstatus |= VS_TRAIN_SLOWING;
return false; return false;
} }
/* flip signal in front to red on bridges*/ /* flip signal in front to red on bridges*/