(svn r22742) -Add: Add function to query exit direction of hangars at airports.

pull/155/head
alberth 13 years ago
parent 452e11a9d7
commit 8b4443953f

@ -135,20 +135,28 @@ struct Airport : public TileArea {
}
/**
* Get the hangar number of the hangar on a specific tile.
* Get the exit direction of the hangar at a specific tile.
* @param tile The tile to query.
* @pre IsHangarTile(tile).
* @return The exit direction of the hangar, taking airport rotation into account.
*/
FORCEINLINE Direction GetHangarExitDirection(TileIndex tile) const
{
const AirportSpec *as = this->GetSpec();
const HangarTileTable *htt = GetHangarDataByTile(tile);
return ChangeDir(htt->dir, DirDifference(this->rotation, as->rotation[0]));
}
/**
* Get the hangar number of the hangar at a specific tile.
* @param tile The tile to query.
* @pre IsHangarTile(tile).
* @return The hangar number of the hangar at the given tile.
*/
FORCEINLINE uint GetHangarNum(TileIndex tile) const
{
const AirportSpec *as = this->GetSpec();
for (uint i = 0; i < as->nof_depots; i++) {
if (this->GetRotatedTileFromOffset(as->depot_table[i].ti) == tile) {
return as->depot_table[i].hangar_num;
}
}
NOT_REACHED();
const HangarTileTable *htt = GetHangarDataByTile(tile);
return htt->hangar_num;
}
/** Get the number of hangars on this airport. */
@ -165,6 +173,24 @@ struct Airport : public TileArea {
}
return num;
}
private:
/**
* Retrieve hangar information of a hangar at a given tile.
* @param tile %Tile containing the hangar.
* @return The requested hangar information.
* @pre The \a tile must be at a hangar tile at an airport.
*/
FORCEINLINE const HangarTileTable *GetHangarDataByTile(TileIndex tile) const
{
const AirportSpec *as = this->GetSpec();
for (uint i = 0; i < as->nof_depots; i++) {
if (this->GetRotatedTileFromOffset(as->depot_table[i].ti) == tile) {
return as->depot_table + i;
}
}
NOT_REACHED();
}
};
typedef SmallVector<Industry *, 2> IndustryVector;

Loading…
Cancel
Save