truelight@9654: /* $Id$ */ truelight@9654: truelight@9654: #include "ai_airport.hpp" truelight@9654: #include "../../command.h" truelight@9670: #include "../../variables.h" truelight@9654: #include "../../station_map.h" truelight@9654: truelight@9654: truelight@9670: /* static */ bool AIAirport::IsHangarTile(TileIndex tile) truelight@9654: { truelight@9654: /* Outside of the map */ truelight@9654: if (tile >= ::MapSize()) return false; truelight@9654: truelight@9654: return ::IsTileType(tile, MP_STATION) && ::IsHangar(tile); truelight@9654: } truelight@9654: truelight@9670: /* static */ bool AIAirport::IsAirportTile(TileIndex tile) truelight@9654: { truelight@9654: /* Outside of the map */ truelight@9654: if (tile >= ::MapSize()) return false; truelight@9654: truelight@9654: return ::IsTileType(tile, MP_STATION) && ::IsAirport(tile); truelight@9654: } truelight@9654: truelight@9670: /* static */ bool AIAirport::AiportAvailable(AirportType type) truelight@9654: { truelight@9670: if (type > AT_HELISTATION) return 0; truelight@9654: return HASBIT(::GetValidAirports(), type); truelight@9654: } truelight@9654: truelight@9670: /* static */ int32 AIAirport::GetAirportWidth(AirportType type) truelight@9670: { truelight@9670: if (type > AT_HELISTATION) return 0; truelight@9670: return GetAirport(type)->size_x; truelight@9670: } truelight@9670: truelight@9670: /* static */ int32 AIAirport::GetAirportHeight(AirportType type) truelight@9670: { truelight@9670: if (type > AT_HELISTATION) return 0; truelight@9670: return GetAirport(type)->size_y; truelight@9670: } truelight@9670: truelight@9670: /* static */ int32 AIAirport::GetAirportCoverageRadius(AirportType type) truelight@9670: { truelight@9670: if (type > AT_HELISTATION) return 0; truelight@9670: return _patches.modified_catchment ? GetAirport(type)->catchment : 4; truelight@9670: } truelight@9670: truelight@9654: bool AIAirport::BuildAirport(TileIndex tile, AirportType type) truelight@9654: { truelight@9654: /* Outside of the map */ truelight@9654: if (tile >= ::MapSize()) return false; truelight@9670: if (type > AT_HELISTATION) return 0; truelight@9654: truelight@9654: return this->DoCommand(tile, type, 0, CMD_BUILD_AIRPORT); truelight@9654: } truelight@9654: truelight@9654: bool AIAirport::RemoveAirport(TileIndex tile) truelight@9654: { truelight@9654: /* Outside of the map */ truelight@9654: if (tile >= ::MapSize()) return false; truelight@9654: truelight@9654: /* Not a airport tile */ truelight@9654: if (!IsAirportTile(tile) && !IsHangarTile(tile)) return false; truelight@9654: truelight@9654: return this->DoCommand(tile, 0, 0, CMD_LANDSCAPE_CLEAR); truelight@9654: } truelight@9654: truelight@9654: TileIndex AIAirport::GetHangarOfAirport(TileIndex tile) truelight@9654: { truelight@9654: if (!IsTileType(tile, MP_STATION)) return INVALID_TILE; truelight@9654: truelight@9654: const Station *st = GetStationByTile(tile); truelight@9654: if (st->owner != _current_player) return INVALID_TILE; truelight@9654: truelight@9654: return ToTileIndexDiff(st->Airport()->airport_depots[0]) + st->xy; truelight@9654: }