417 } |
417 } |
418 } |
418 } |
419 |
419 |
420 if (flags & DC_EXEC && railtype != INVALID_RAILTYPE) { |
420 if (flags & DC_EXEC && railtype != INVALID_RAILTYPE) { |
421 Track track = AxisToTrack(direction); |
421 Track track = AxisToTrack(direction); |
422 UpdateSignalsOnSegment(tile_start, INVALID_DIAGDIR, _current_player); |
422 AddSideToSignalBuffer(tile_start, INVALID_DIAGDIR, _current_player); |
423 YapfNotifyTrackLayoutChange(tile_start, track); |
423 YapfNotifyTrackLayoutChange(tile_start, track); |
424 } |
424 } |
425 |
425 |
426 /* for human player that builds the bridge he gets a selection to choose from bridges (DC_QUERY_COST) |
426 /* for human player that builds the bridge he gets a selection to choose from bridges (DC_QUERY_COST) |
427 * It's unnecessary to execute this command every time for every bridge. So it is done only |
427 * It's unnecessary to execute this command every time for every bridge. So it is done only |
547 |
547 |
548 if (flags & DC_EXEC) { |
548 if (flags & DC_EXEC) { |
549 if (GB(p1, 9, 1) == TRANSPORT_RAIL) { |
549 if (GB(p1, 9, 1) == TRANSPORT_RAIL) { |
550 MakeRailTunnel(start_tile, _current_player, direction, (RailType)GB(p1, 0, 4)); |
550 MakeRailTunnel(start_tile, _current_player, direction, (RailType)GB(p1, 0, 4)); |
551 MakeRailTunnel(end_tile, _current_player, ReverseDiagDir(direction), (RailType)GB(p1, 0, 4)); |
551 MakeRailTunnel(end_tile, _current_player, ReverseDiagDir(direction), (RailType)GB(p1, 0, 4)); |
552 UpdateSignalsOnSegment(start_tile, INVALID_DIAGDIR, _current_player); |
552 AddSideToSignalBuffer(start_tile, INVALID_DIAGDIR, _current_player); |
553 YapfNotifyTrackLayoutChange(start_tile, AxisToTrack(DiagDirToAxis(direction))); |
553 YapfNotifyTrackLayoutChange(start_tile, AxisToTrack(DiagDirToAxis(direction))); |
554 } else { |
554 } else { |
555 MakeRoadTunnel(start_tile, _current_player, direction, (RoadTypes)GB(p1, 0, 3)); |
555 MakeRoadTunnel(start_tile, _current_player, direction, (RoadTypes)GB(p1, 0, 3)); |
556 MakeRoadTunnel(end_tile, _current_player, ReverseDiagDir(direction), (RoadTypes)GB(p1, 0, 3)); |
556 MakeRoadTunnel(end_tile, _current_player, ReverseDiagDir(direction), (RoadTypes)GB(p1, 0, 3)); |
557 } |
557 } |
610 |
610 |
611 DoClearSquare(tile); |
611 DoClearSquare(tile); |
612 DoClearSquare(endtile); |
612 DoClearSquare(endtile); |
613 |
613 |
614 /* cannot use INVALID_DIAGDIR for signal update because the tunnel doesn't exist anymore */ |
614 /* cannot use INVALID_DIAGDIR for signal update because the tunnel doesn't exist anymore */ |
615 UpdateSignalsOnSegment(tile, ReverseDiagDir(dir), owner); |
615 AddSideToSignalBuffer(tile, ReverseDiagDir(dir), owner); |
616 UpdateSignalsOnSegment(endtile, dir, owner); |
616 AddSideToSignalBuffer(endtile, dir, owner); |
617 |
617 |
618 Track track = AxisToTrack(DiagDirToAxis(dir)); |
618 Track track = AxisToTrack(DiagDirToAxis(dir)); |
619 YapfNotifyTrackLayoutChange(tile, track); |
619 YapfNotifyTrackLayoutChange(tile, track); |
620 YapfNotifyTrackLayoutChange(endtile, track); |
620 YapfNotifyTrackLayoutChange(endtile, track); |
621 } else { |
621 } else { |
672 MarkTileDirtyByTile(c); |
672 MarkTileDirtyByTile(c); |
673 } |
673 } |
674 |
674 |
675 if (rail) { |
675 if (rail) { |
676 /* cannot use INVALID_DIAGDIR for signal update because the bridge doesn't exist anymore */ |
676 /* cannot use INVALID_DIAGDIR for signal update because the bridge doesn't exist anymore */ |
677 UpdateSignalsOnSegment(tile, ReverseDiagDir(direction), owner); |
677 AddSideToSignalBuffer(tile, ReverseDiagDir(direction), owner); |
678 UpdateSignalsOnSegment(endtile, direction, owner); |
678 AddSideToSignalBuffer(endtile, direction, owner); |
679 |
679 |
680 Track track = AxisToTrack(DiagDirToAxis(direction)); |
680 Track track = AxisToTrack(DiagDirToAxis(direction)); |
681 YapfNotifyTrackLayoutChange(tile, track); |
681 YapfNotifyTrackLayoutChange(tile, track); |
682 YapfNotifyTrackLayoutChange(endtile, track); |
682 YapfNotifyTrackLayoutChange(endtile, track); |
683 } |
683 } |