Merge branch 'signal_tunnels_bridges' into jgrpp
This commit is contained in:
@@ -176,10 +176,24 @@ static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, Owner owner_road, Ow
|
|||||||
* @param bridgetype the type of bridge this bridge ramp belongs to
|
* @param bridgetype the type of bridge this bridge ramp belongs to
|
||||||
* @param d the direction this ramp must be facing
|
* @param d the direction this ramp must be facing
|
||||||
* @param r the rail type of the bridge
|
* @param r the rail type of the bridge
|
||||||
|
* @param upgrade whether the bridge is an upgrade instead of a totally new bridge
|
||||||
*/
|
*/
|
||||||
static inline void MakeRailBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, RailType r)
|
static inline void MakeRailBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, RailType r, bool upgrade)
|
||||||
{
|
{
|
||||||
|
// Backup bridge signal data.
|
||||||
|
auto m2_backup = _m[t].m2;
|
||||||
|
auto m5_backup = _m[t].m5;
|
||||||
|
auto m6_backup = _me[t].m6;
|
||||||
|
|
||||||
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_RAIL, r);
|
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_RAIL, r);
|
||||||
|
|
||||||
|
// Restore bridge signal data if we're upgrading an existing bridge.
|
||||||
|
if (upgrade) {
|
||||||
|
_m[t].m2 = m2_backup;
|
||||||
|
SB(_m[t].m5, 4, 3, GB(m5_backup, 4, 3));
|
||||||
|
SB(_me[t].m6, 0, 2, GB(m6_backup, 0, 2));
|
||||||
|
SB(_me[t].m6, 6, 1, GB(m6_backup, 6, 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -346,7 +346,6 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
|
|||||||
int z_end;
|
int z_end;
|
||||||
Slope tileh_start = GetTileSlope(tile_start, &z_start);
|
Slope tileh_start = GetTileSlope(tile_start, &z_start);
|
||||||
Slope tileh_end = GetTileSlope(tile_end, &z_end);
|
Slope tileh_end = GetTileSlope(tile_end, &z_end);
|
||||||
bool pbs_reservation = false;
|
|
||||||
|
|
||||||
CommandCost terraform_cost_north = CheckBridgeSlopeNorth(direction, &tileh_start, &z_start);
|
CommandCost terraform_cost_north = CheckBridgeSlopeNorth(direction, &tileh_start, &z_start);
|
||||||
CommandCost terraform_cost_south = CheckBridgeSlopeSouth(direction, &tileh_end, &z_end);
|
CommandCost terraform_cost_south = CheckBridgeSlopeSouth(direction, &tileh_end, &z_end);
|
||||||
@@ -401,11 +400,6 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
|
|||||||
if (is_new_owner) owner = company;
|
if (is_new_owner) owner = company;
|
||||||
|
|
||||||
switch (transport_type) {
|
switch (transport_type) {
|
||||||
case TRANSPORT_RAIL:
|
|
||||||
/* Keep the reservation, the path stays valid. */
|
|
||||||
pbs_reservation = HasTunnelBridgeReservation(tile_start);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TRANSPORT_ROAD:
|
case TRANSPORT_ROAD:
|
||||||
/* Do not remove road types when upgrading a bridge */
|
/* Do not remove road types when upgrading a bridge */
|
||||||
roadtypes |= GetRoadTypes(tile_start);
|
roadtypes |= GetRoadTypes(tile_start);
|
||||||
@@ -528,10 +522,8 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
|
|||||||
case TRANSPORT_RAIL:
|
case TRANSPORT_RAIL:
|
||||||
/* Add to company infrastructure count if required. */
|
/* Add to company infrastructure count if required. */
|
||||||
if (is_new_owner && c != NULL) c->infrastructure.rail[railtype] += (bridge_len + 2) * TUNNELBRIDGE_TRACKBIT_FACTOR;
|
if (is_new_owner && c != NULL) c->infrastructure.rail[railtype] += (bridge_len + 2) * TUNNELBRIDGE_TRACKBIT_FACTOR;
|
||||||
MakeRailBridgeRamp(tile_start, owner, bridge_type, dir, railtype);
|
MakeRailBridgeRamp(tile_start, owner, bridge_type, dir, railtype, is_upgrade);
|
||||||
MakeRailBridgeRamp(tile_end, owner, bridge_type, ReverseDiagDir(dir), railtype);
|
MakeRailBridgeRamp(tile_end, owner, bridge_type, ReverseDiagDir(dir), railtype, is_upgrade);
|
||||||
SetTunnelBridgeReservation(tile_start, pbs_reservation);
|
|
||||||
SetTunnelBridgeReservation(tile_end, pbs_reservation);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TRANSPORT_ROAD: {
|
case TRANSPORT_ROAD: {
|
||||||
|
Reference in New Issue
Block a user