MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / TileLoop_Station

Function TileLoop_Station

src/station_cmd.cpp:3735–3802  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3733
3734
3735static void TileLoop_Station(TileIndex tile)
3736{
3737 auto *st = BaseStation::GetByTile(tile);
3738 switch (GetStationType(tile)) {
3739 case StationType::Airport:
3740 TriggerAirportTileAnimation(Station::From(st), tile, AirportAnimationTrigger::TileLoop);
3741 break;
3742
3743 case StationType::Rail:
3744 case StationType::RailWaypoint:
3745 TriggerStationAnimation(st, tile, StationAnimationTrigger::TileLoop);
3746 break;
3747
3748 case StationType::Dock:
3749 if (!IsTileFlat(tile)) break; // only handle water part
3750 [[fallthrough]];
3751
3752 case StationType::Oilrig: //(station part)
3753 case StationType::Buoy:
3754 TileLoop_Water(tile);
3755 break;
3756
3757 case StationType::Truck:
3758 case StationType::Bus:
3759 TriggerRoadStopAnimation(st, tile, StationAnimationTrigger::TileLoop);
3760 break;
3761
3762 case StationType::RoadWaypoint: {
3763 switch (_settings_game.game_creation.landscape) {
3764 case LandscapeType::Arctic:
3765 if (IsRoadWaypointOnSnowOrDesert(tile) != (GetTileZ(tile) > GetSnowLine())) {
3766 ToggleRoadWaypointOnSnowOrDesert(tile);
3767 MarkTileDirtyByTile(tile);
3768 }
3769 break;
3770
3771 case LandscapeType::Tropic:
3772 if (GetTropicZone(tile) == TROPICZONE_DESERT && !IsRoadWaypointOnSnowOrDesert(tile)) {
3773 ToggleRoadWaypointOnSnowOrDesert(tile);
3774 MarkTileDirtyByTile(tile);
3775 }
3776 break;
3777
3778 default: break;
3779 }
3780
3781 HouseZone new_zone = HouseZone::TownEdge;
3782 const Town *t = ClosestTownFromTile(tile, UINT_MAX);
3783 if (t != nullptr) {
3784 new_zone = GetTownRadiusGroup(t, tile);
3785 }
3786
3787 /* Adjust road ground type depending on 'new_zone' */
3788 Roadside new_rs = new_zone != HouseZone::TownEdge ? Roadside::Paved : Roadside::Grass;
3789 Roadside cur_rs = GetRoadWaypointRoadside(tile);
3790
3791 if (new_rs != cur_rs) {
3792 SetRoadWaypointRoadside(tile, cur_rs == Roadside::Barren ? new_rs : Roadside::Barren);

Callers

nothing calls this directly

Calls 15

GetStationTypeFunction · 0.85
TriggerStationAnimationFunction · 0.85
IsTileFlatFunction · 0.85
TileLoop_WaterFunction · 0.85
TriggerRoadStopAnimationFunction · 0.85
GetTileZFunction · 0.85
GetSnowLineFunction · 0.85
GetTropicZoneFunction · 0.85
ClosestTownFromTileFunction · 0.85

Tested by

no test coverage detected