Changeset - r17927:20c617fc807b
[Not reviewed]
master
0 1 0
alberth - 13 years ago 2011-08-13 12:44:42
alberth@openttd.org
(svn r22742) -Add: Add function to query exit direction of hangars at airports.
1 file changed with 34 insertions and 8 deletions:
0 comments (0 inline, 0 general)
src/station_base.h
Show inline comments
 
@@ -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;
0 comments (0 inline, 0 general)