Merge branch 'master' into jgrpp

# Conflicts:
#	src/network/network.cpp
#	src/pathfinder/yapf/yapf.h
#	src/pathfinder/yapf/yapf_ship.cpp
#	src/saveload/afterload.cpp
#	src/ship_cmd.cpp
#	src/station_cmd.cpp
#	src/vehicle.cpp
#	src/vehicle_gui.cpp
This commit is contained in:
Jonathan G Rennison
2024-07-06 18:24:39 +01:00
91 changed files with 438 additions and 401 deletions

View File

@@ -1458,6 +1458,24 @@ static void RestoreTrainReservation(Train *v)
if (IsRailStationTile(v->tile)) SetRailStationPlatformReservation(v->tile, TrackdirToExitdir(ReverseTrackdir(v->GetVehicleTrackdir())), true);
}
/**
* Set rail station tile flags for the given tile.
* @param tile Tile to set flags on.
* @param statspec Statspec of the tile.
*/
void SetRailStationTileFlags(TileIndex tile, const StationSpec *statspec)
{
const StationGfx gfx = GetStationGfx(tile);
bool blocked = statspec != nullptr && HasBit(statspec->blocked, gfx);
/* Default stations do not draw pylons under roofs (gfx >= 4) */
bool pylons = statspec != nullptr ? HasBit(statspec->pylons, gfx) : gfx < 4;
bool wires = statspec == nullptr || !HasBit(statspec->wires, gfx);
SetStationTileBlocked(tile, blocked);
SetStationTileHavePylons(tile, pylons);
SetStationTileHaveWires(tile, wires);
}
/**
* Build rail station
* @param tile_org northern most position of station dragging/placement
@@ -1659,18 +1677,9 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32_
TriggerStationAnimation(st, tile, SAT_BUILT);
}
/* Should be the same as layout but axis component could be wrong... */
StationGfx gfx = GetStationGfx(tile);
bool blocked = statspec != nullptr && HasBit(statspec->blocked, gfx);
/* Default stations do not draw pylons under roofs (gfx >= 4) */
bool pylons = statspec != nullptr ? HasBit(statspec->pylons, gfx) : gfx < 4;
bool wires = statspec == nullptr || !HasBit(statspec->wires, gfx);
SetRailStationTileFlags(tile, statspec);
SetStationTileBlocked(tile, blocked);
SetStationTileHavePylons(tile, pylons);
SetStationTileHaveWires(tile, wires);
if (!blocked) c->infrastructure.rail[rt]++;
if (!IsStationTileBlocked(tile)) c->infrastructure.rail[rt]++;
c->infrastructure.station++;
tile += tile_delta;