| 3733 | |
| 3734 | |
| 3735 | static 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); |
nothing calls this directly
no test coverage detected