case MP_STATION: c = Company::GetIfValid(GetTileOwner(tile)); if (c != NULL && GetStationType(tile) != STATION_AIRPORT && !IsBuoy(tile) && !IsDock(tile)) c->infrastructure.station++; switch (GetStationType(tile)) { case STATION_RAIL: case STATION_WAYPOINT: if (c != NULL && !IsStationTileBlocked(tile)) c->infrastructure.rail[GetRailType(tile)]++; break; case STATION_BUS: case STATION_TRUCK: { /* Iterate all present road types as each can have a different owner. */ RoadType rt; FOR_EACH_SET_ROADTYPE(rt, GetRoadTypes(tile)) { c = Company::GetIfValid(GetRoadOwner(tile, rt)); if (c != NULL) c->infrastructure.road[rt] += 2; // A road stop has two road bits. } break; } case STATION_DOCK: if (IsDockTile(tile) && !HasTileWaterGround(tile)) { if (c != NULL) c->infrastructure.station += 2; } /* FALL THROUGH */ case STATION_BUOY: if (GetWaterClass(tile) == WATER_CLASS_CANAL) { if (c != NULL) c->infrastructure.water++; } break; default: break; } break;