changeset 9789 | b753e2d50d99 |
parent 9785 | 2005c34d0811 |
child 10017 | c0eb11a864d7 |
9788:8d1bdf1ba220 | 9789:b753e2d50d99 |
---|---|
342 if (rt == ROADTYPE_ROAD && HasTileRoadType(tile, ROADTYPE_TRAM) && (flags & DC_EXEC || crossing_check)) return CMD_ERROR; |
342 if (rt == ROADTYPE_ROAD && HasTileRoadType(tile, ROADTYPE_TRAM) && (flags & DC_EXEC || crossing_check)) return CMD_ERROR; |
343 |
343 |
344 if (flags & DC_EXEC) { |
344 if (flags & DC_EXEC) { |
345 RoadTypes rts = GetRoadTypes(tile) & ComplementRoadTypes(RoadTypeToRoadTypes(rt)); |
345 RoadTypes rts = GetRoadTypes(tile) & ComplementRoadTypes(RoadTypeToRoadTypes(rt)); |
346 if (rts == ROADTYPES_NONE) { |
346 if (rts == ROADTYPES_NONE) { |
347 MakeRailNormal(tile, GetTileOwner(tile), GetCrossingRailBits(tile), GetRailType(tile)); |
347 TrackBits tracks = GetCrossingRailBits(tile); |
348 bool reserved = GetCrossingReservation(tile); |
|
349 MakeRailNormal(tile, GetTileOwner(tile), tracks, GetRailType(tile)); |
|
350 if (reserved) SetTrackReservation(tile, tracks); |
|
348 } else { |
351 } else { |
349 SetRoadTypes(tile, rts); |
352 SetRoadTypes(tile, rts); |
350 } |
353 } |
351 MarkTileDirtyByTile(tile); |
354 MarkTileDirtyByTile(tile); |
352 YapfNotifyTrackLayoutChange(tile, FindFirstTrack(GetTrackBits(tile))); |
355 YapfNotifyTrackLayoutChange(tile, FindFirstTrack(GetTrackBits(tile))); |
560 if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR; |
563 if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR; |
561 |
564 |
562 if (flags & DC_EXEC) { |
565 if (flags & DC_EXEC) { |
563 YapfNotifyTrackLayoutChange(tile, FindFirstTrack(GetTrackBits(tile))); |
566 YapfNotifyTrackLayoutChange(tile, FindFirstTrack(GetTrackBits(tile))); |
564 /* Always add road to the roadtypes (can't draw without it) */ |
567 /* Always add road to the roadtypes (can't draw without it) */ |
568 bool reserved = HasBit(GetTrackReservation(tile), AxisToTrack(OtherAxis(roaddir))); |
|
565 MakeRoadCrossing(tile, _current_player, _current_player, _current_player, GetTileOwner(tile), roaddir, GetRailType(tile), RoadTypeToRoadTypes(rt) | ROADTYPES_ROAD, p2); |
569 MakeRoadCrossing(tile, _current_player, _current_player, _current_player, GetTileOwner(tile), roaddir, GetRailType(tile), RoadTypeToRoadTypes(rt) | ROADTYPES_ROAD, p2); |
570 SetCrossingReservation(tile, reserved); |
|
566 UpdateLevelCrossing(tile, false); |
571 UpdateLevelCrossing(tile, false); |
567 MarkTileDirtyByTile(tile); |
572 MarkTileDirtyByTile(tile); |
568 } |
573 } |
569 return CommandCost(EXPENSES_CONSTRUCTION, _price.build_road * (rt == ROADTYPE_ROAD ? 2 : 4)); |
574 return CommandCost(EXPENSES_CONSTRUCTION, _price.build_road * (rt == ROADTYPE_ROAD ? 2 : 4)); |
570 } |
575 } |