File diff r14848:8e2ba5b203eb → r14849:27386629fac1
src/ai/api/ai_airport.cpp
Show inline comments
 
@@ -75,73 +75,73 @@
 
	EnforcePrecondition(false, station_id == AIStation::STATION_NEW || station_id == AIStation::STATION_JOIN_ADJACENT || AIStation::IsValidStation(station_id));
 

	
 
	uint p2 = station_id == AIStation::STATION_JOIN_ADJACENT ? 0 : 1;
 
	p2 |= (AIStation::IsValidStation(station_id) ? station_id : INVALID_STATION) << 16;
 
	return AIObject::DoCommand(tile, type, p2, CMD_BUILD_AIRPORT);
 
}
 

	
 
/* static */ bool AIAirport::RemoveAirport(TileIndex tile)
 
{
 
	EnforcePrecondition(false, ::IsValidTile(tile))
 
	EnforcePrecondition(false, IsAirportTile(tile) || IsHangarTile(tile));
 

	
 
	return AIObject::DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR);
 
}
 

	
 
/* static */ int32 AIAirport::GetNumHangars(TileIndex tile)
 
{
 
	if (!::IsValidTile(tile)) return -1;
 
	if (!::IsTileType(tile, MP_STATION)) return -1;
 

	
 
	const Station *st = ::Station::GetByTile(tile);
 
	if (st->owner != _current_company) return -1;
 
	if ((st->facilities & FACIL_AIRPORT) == 0) return -1;
 

	
 
	return st->GetAirportSpec()->nof_depots;
 
	return st->airport.GetSpec()->nof_depots;
 
}
 

	
 
/* static */ TileIndex AIAirport::GetHangarOfAirport(TileIndex tile)
 
{
 
	if (!::IsValidTile(tile)) return INVALID_TILE;
 
	if (!::IsTileType(tile, MP_STATION)) return INVALID_TILE;
 
	if (GetNumHangars(tile) < 1) return INVALID_TILE;
 

	
 
	const Station *st = ::Station::GetByTile(tile);
 
	if (st->owner != _current_company) return INVALID_TILE;
 
	if ((st->facilities & FACIL_AIRPORT) == 0) return INVALID_TILE;
 

	
 
	return st->GetHangarTile(0);
 
}
 

	
 
/* static */ AIAirport::AirportType AIAirport::GetAirportType(TileIndex tile)
 
{
 
	if (!AITile::IsStationTile(tile)) return AT_INVALID;
 

	
 
	StationID station_id = ::GetStationIndex(tile);
 

	
 
	if (!AIStation::HasStationType(station_id, AIStation::STATION_AIRPORT)) return AT_INVALID;
 

	
 
	return (AirportType)::Station::Get(station_id)->airport_type;
 
	return (AirportType)::Station::Get(station_id)->airport.type;
 
}
 

	
 

	
 
/* static */ int AIAirport::GetNoiseLevelIncrease(TileIndex tile, AirportType type)
 
{
 
	extern Town *AirportGetNearestTown(const AirportSpec *as, TileIndex airport_tile);
 
	extern uint8 GetAirportNoiseLevelForTown(const AirportSpec *as, TileIndex town_tile, TileIndex tile);
 

	
 
	if (!::IsValidTile(tile)) return -1;
 
	if (!IsValidAirportType(type)) return -1;
 

	
 
	if (_settings_game.economy.station_noise_level) {
 
		const AirportSpec *as = ::AirportSpec::Get(type);
 
		const Town *t = AirportGetNearestTown(as, tile);
 
		return GetAirportNoiseLevelForTown(as, t->xy, tile);
 
	}
 

	
 
	return 1;
 
}
 

	
 
/* static */ TownID AIAirport::GetNearestTown(TileIndex tile, AirportType type)
 
{
 
	extern Town *AirportGetNearestTown(const AirportSpec *as, TileIndex airport_tile);