diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 0871bce792..d1255fc827 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -1035,7 +1035,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, if (p2 != 12) cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS] * ((GetTunnelBridgeLength(tile, tile_exit) + 4) >> 2)); // minimal 1 } 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)) { ClrBitTunnelBridgeSignal(tile); ClrBitTunnelBridgeExit(tile_exit); @@ -1046,7 +1046,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, ClrBitTunnelBridgeExit(tile); SetBitTunnelBridgeExit(tile_exit); SetBitTunnelBridgeSignal(tile); - } + } } else{ /* Create one direction tunnel/bridge if required. */ if (p2 == 0) { @@ -1063,7 +1063,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, SetBitTunnelBridgeSignal(tile_exit); SetBitTunnelBridgeExit(tile); } - } + } } MarkTileDirtyByTile(tile); MarkTileDirtyByTile(tile_exit); @@ -1388,20 +1388,20 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin /* Collect cost. */ if (!test_only) { - /* Be user-friendly and try placing signals as much as possible */ - if (ret.Succeeded()) { - had_success = true; - if (IsTileType(tile, MP_TUNNELBRIDGE)) { - if ((!autofill && GetTunnelBridgeDirection(tile) == TrackdirToExitdir(trackdir)) || - (autofill && GetTunnelBridgeDirection(tile) != TrackdirToExitdir(trackdir))) { + /* Be user-friendly and try placing signals as much as possible */ + if (ret.Succeeded()) { + had_success = true; + if (IsTileType(tile, MP_TUNNELBRIDGE)) { + if ((!autofill && GetTunnelBridgeDirection(tile) == TrackdirToExitdir(trackdir)) || + (autofill && GetTunnelBridgeDirection(tile) != TrackdirToExitdir(trackdir))) { + total_cost.AddCost(ret); + } + } else { total_cost.AddCost(ret); } + last_used_ctr = last_suitable_ctr; + last_suitable_tile = INVALID_TILE; } else { - total_cost.AddCost(ret); - } - last_used_ctr = last_suitable_ctr; - last_suitable_tile = INVALID_TILE; - } else { /* The "No railway" error is the least important one. */ if (ret.GetErrorMessage() != STR_ERROR_THERE_IS_NO_RAILROAD_TRACK || last_error.GetErrorMessage() == INVALID_STRING_ID) { @@ -1482,7 +1482,7 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1 cost *= ((GetTunnelBridgeLength(tile, end) + 4) >> 2); CommandCost ret = EnsureNoTrainOnTrack(GetOtherTunnelBridgeEnd(tile), track); - //if (ret.Failed()) return ret; + if (ret.Failed()) return ret; } else { if (!ValParamTrackOrientation(track) || !IsPlainRailTile(tile) || !HasTrack(tile, track)) { return_cmd_error(STR_ERROR_THERE_IS_NO_RAILROAD_TRACK); @@ -1491,11 +1491,13 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1 return_cmd_error(STR_ERROR_THERE_ARE_NO_SIGNALS); } CommandCost ret = EnsureNoTrainOnTrack(tile, track); - //if (ret.Failed()) return ret; + if (ret.Failed()) return ret; } /* Only water can remove signals from anyone */ if (_current_company != OWNER_WATER) { + CommandCost ret = CheckTileOwnership(tile); + if (ret.Failed()) return ret; } /* Do it? */ diff --git a/src/signal.cpp b/src/signal.cpp index 059a3fb032..e3c3da0e91 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -399,7 +399,7 @@ static SigFlags ExploreSegment(Owner owner) if (HasVehicleOnPos(tile, &tile, &TrainInWormholeTileEnum)) flags |= SF_TRAIN; if (!(flags & SF_TRAIN) && IsTunnelBridgeExit(tile)) { if (HasVehicleOnPos(GetOtherTunnelBridgeEnd(tile), &tile, &TrainInWormholeTileEnum)) flags |= SF_TRAIN; - } + } } continue; } diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index e41258db42..e4a62ce425 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -1858,7 +1858,7 @@ void ReverseTrainDirection(Train *v) /* We are inside tunnel/bidge with signals, reversing will close the entrance. */ if (HasWormholeSignals(v->tile)) { /* Flip signal on tunnel entrance tile red. */ - SetBitTunnelBridgeExit(v->tile); + SetBitTunnelBridgeExit(v->tile); MarkTileDirtyByTile(v->tile); /* Clear counters. */ v->wait_counter = 0; @@ -3156,7 +3156,7 @@ static Vehicle *FindSpaceBetweenTrainsEnum(Vehicle *v, void *data) static bool IsToCloseBehindTrain(Vehicle *v, TileIndex tile, bool check_endtile) { Train *t = (Train *)v; - + if (t->force_proceed != 0) return false; if (HasVehicleOnPos(t->tile, v, &FindSpaceBetweenTrainsEnum)) { @@ -3186,7 +3186,7 @@ static bool IsToCloseBehindTrain(Vehicle *v, TileIndex tile, bool check_endtile) static bool CheckTrainStayInWormHole(Train *t, TileIndex tile) { if (t->force_proceed != 0) return false; - + /* When not exit reverse train. */ if (!IsTunnelBridgeExit(tile)) { t->cur_speed = 0; @@ -3199,7 +3199,7 @@ static bool CheckTrainStayInWormHole(Train *t, TileIndex tile) return true; } - return false; + return false; } static void HandleSignalBehindTrain(Train *v, uint signal_number) @@ -3422,7 +3422,7 @@ bool TrainController(Train *v, Vehicle *nomove, bool reverse) goto invalid_rail; } /* Flip signal on tunnel entrance tile red. */ - SetBitTunnelBridgeExit(gp.new_tile); + SetBitTunnelBridgeExit(gp.new_tile); MarkTileDirtyByTile(gp.new_tile); } } diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp index f64bb9296d..a7f356d1fc 100644 --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -1644,7 +1644,7 @@ static void GetTileDesc_TunnelBridge(TileIndex tile, TileDesc *td) if (IsTunnel(tile)) { td->str = (tt == TRANSPORT_RAIL) ? HasWormholeSignals(tile) ? STR_LAI_TUNNEL_DESCRIPTION_RAILROAD_SIGNAL : STR_LAI_TUNNEL_DESCRIPTION_RAILROAD : STR_LAI_TUNNEL_DESCRIPTION_ROAD; - } else { // IsBridge(tile) + } else { // IsBridge(tile) td->str = (tt == TRANSPORT_WATER) ? STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT : HasWormholeSignals(tile) ? STR_LAI_BRIDGE_DESCRIPTION_RAILROAD_SIGNAL : GetBridgeSpec(GetBridgeType(tile))->transport_name[tt]; } td->owner[0] = GetTileOwner(tile);