summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/station_cmd.cpp8
-rw-r--r--src/station_map.h19
2 files changed, 14 insertions, 13 deletions
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
index eb11ed5cb..9cb8a9fac 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -1258,8 +1258,12 @@ int32 CmdBuildRoadStop(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
st->rect.BeforeAddTile(tile, StationRect::ADD_TRY);
- MakeRoadStop(tile, st->owner, st->index, type ? RoadStop::TRUCK : RoadStop::BUS, is_drive_through, (DiagDirection)p1);
- if (town_owned_road) SetStopBuiltOnTownRoad(tile);
+ RoadStop::Type rs_type = type ? RoadStop::TRUCK : RoadStop::BUS;
+ if (is_drive_through) {
+ MakeDriveThroughRoadStop(tile, st->owner, st->index, rs_type, (Axis)p1, town_owned_road);
+ } else {
+ MakeRoadStop(tile, st->owner, st->index, rs_type, (DiagDirection)p1);
+ }
UpdateStationVirtCoordDirty(st);
UpdateStationAcceptance(st, false);
diff --git a/src/station_map.h b/src/station_map.h
index 49f759118..f71fd217a 100644
--- a/src/station_map.h
+++ b/src/station_map.h
@@ -169,11 +169,6 @@ static inline bool GetStopBuiltOnTownRoad(TileIndex t)
return HASBIT(_m[t].m6, 3);
}
-static inline void SetStopBuiltOnTownRoad(TileIndex t)
-{
- assert(IsDriveThroughStopTile(t));
- SETBIT(_m[t].m6, 3);
-}
/**
* Gets the direction the road stop entrance points towards.
@@ -312,13 +307,15 @@ static inline void MakeRailStation(TileIndex t, Owner o, StationID sid, Axis a,
SetRailType(t, rt);
}
-static inline void MakeRoadStop(TileIndex t, Owner o, StationID sid, RoadStop::Type rst, bool is_drive_through, DiagDirection d)
+static inline void MakeRoadStop(TileIndex t, Owner o, StationID sid, RoadStop::Type rst, DiagDirection d)
{
- if (is_drive_through) {
- MakeStation(t, o, sid, (rst == RoadStop::BUS ? GFX_BUS_BASE_EXT : GFX_TRUCK_BASE_EXT) + d);
- } else {
- MakeStation(t, o, sid, (rst == RoadStop::BUS ? GFX_BUS_BASE : GFX_TRUCK_BASE) + d);
- }
+ MakeStation(t, o, sid, (rst == RoadStop::BUS ? GFX_BUS_BASE : GFX_TRUCK_BASE) + d);
+}
+
+static inline void MakeDriveThroughRoadStop(TileIndex t, Owner o, StationID sid, RoadStop::Type rst, Axis a, bool on_town_road)
+{
+ MakeStation(t, o, sid, (rst == RoadStop::BUS ? GFX_BUS_BASE_EXT : GFX_TRUCK_BASE_EXT) + a);
+ SB(_m[t].m6, 3, 1, on_town_road);
}
static inline void MakeAirport(TileIndex t, Owner o, StationID sid, byte section)