diff -r 31e558ce0c04 -r d015a5b4b0a8 src/ai/api/ai_road.hpp --- a/src/ai/api/ai_road.hpp Mon Mar 26 23:42:00 2007 +0000 +++ b/src/ai/api/ai_road.hpp Mon Mar 26 23:51:18 2007 +0000 @@ -36,6 +36,70 @@ bool IsRoadTile(TileIndex tile); /** + * Checks whether the given tile is actually a tile with a road depot. + * @param tile the tile to check. + * @pre tile is always positive and smaller than AIMap::GetMapSize(). + * @return true if and only if the tile has a road depot. + */ + bool IsRoadDepotTile(TileIndex tile); + + /** + * Checks whether the given tile is actually a tile with a road station. + * @param tile the tile to check. + * @pre tile is always positive and smaller than AIMap::GetMapSize(). + * @return true if and only if the tile has a road station. + */ + bool IsRoadStationTile(TileIndex tile); + + /** + * Checks whether the given tile is actually a tile with a drive through + * road station. + * @param tile the tile to check. + * @pre tile is always positive and smaller than AIMap::GetMapSize(). + * @return true if and only if the tile has a drive through road station. + */ + bool IsDriveThroughRoadStationTile(TileIndex tile); + + /** + * Checks whether the given tiles are directly connected, i.e. whether + * a road vehicle can travel from the center of the first tile to the + * center of the second tile. + * @param t1 the source tile. + * @param t2 the destination tile. + * @pre t1 is always positive and smaller than AIMap::GetMapSize(). + * @pre t2 is always positive and smaller than AIMap::GetMapSize(). + * @pre t1 and t2 are directly neighbouring tiles. + * @return true if and only if a road vehicle can go from t1 to t2. + */ + bool AreRoadTilesConnected(TileIndex t1, TileIndex t2); + + /** + * Gets the tile in front of a road depot. + * @param depot the road depot tile. + * @pre IsRoadDepotTile(depot). + * @return the tile in front of the depot. + */ + TileIndex GetRoadDepotFrontTile(TileIndex depot); + + /** + * Gets the tile in front of a road station. + * @param station the road station tile. + * @pre IsRoadStationTile(station). + * @return the tile in front of the road station. + */ + TileIndex GetRoadStationFrontTile(TileIndex station); + + /** + * Gets the tile at the back of a drive through road station. + * So, one side of the drive through station is retrieved with + * GetTileInFrontOfStation, the other with this function. + * @param station the road station tile. + * @pre IsDriveThroughRoadStationTile(station). + * @return the tile at the back of the drive through road station. + */ + TileIndex GetDriveThroughBackTile(TileIndex station); + + /** * Builds a road from the center of tile start to the * center of tile end. * @param start the start tile of the road. @@ -121,13 +185,20 @@ SQAIRoad.DefSQStaticMethod(engine, &AIRoad::GetClassName, "GetClassName", 1, "x"); - SQAIRoad.DefSQMethod(engine, &AIRoad::IsRoadTile, "IsRoadTile", 2, "xi"); - SQAIRoad.DefSQMethod(engine, &AIRoad::BuildRoad, "BuildRoad", 3, "xii"); - SQAIRoad.DefSQMethod(engine, &AIRoad::BuildRoadDepot, "BuildRoadDepot", 3, "xii"); - SQAIRoad.DefSQMethod(engine, &AIRoad::BuildRoadStation, "BuildRoadStation", 5, "xiibb"); - SQAIRoad.DefSQMethod(engine, &AIRoad::RemoveRoad, "RemoveRoad", 3, "xii"); - SQAIRoad.DefSQMethod(engine, &AIRoad::RemoveRoadDepot, "RemoveRoadDepot", 2, "xi"); - SQAIRoad.DefSQMethod(engine, &AIRoad::RemoveRoadStation, "RemoveRoadStation", 2, "xi"); + SQAIRoad.DefSQMethod(engine, &AIRoad::IsRoadTile, "IsRoadTile", 2, "xi"); + SQAIRoad.DefSQMethod(engine, &AIRoad::IsRoadDepotTile, "IsRoadDepotTile", 2, "xi"); + SQAIRoad.DefSQMethod(engine, &AIRoad::IsRoadStationTile, "IsRoadStationTile", 2, "xi"); + SQAIRoad.DefSQMethod(engine, &AIRoad::IsDriveThroughRoadStationTile, "IsDriveThroughRoadStationTile", 2, "xi"); + SQAIRoad.DefSQMethod(engine, &AIRoad::AreRoadTilesConnected, "AreRoadTilesConnected", 3, "xii"); + SQAIRoad.DefSQMethod(engine, &AIRoad::GetRoadDepotFrontTile, "GetRoadDepotFrontTile", 2, "xi"); + SQAIRoad.DefSQMethod(engine, &AIRoad::GetRoadStationFrontTile, "GetRoadStationFrontTile", 2, "xi"); + SQAIRoad.DefSQMethod(engine, &AIRoad::GetDriveThroughBackTile, "GetDriveThroughBackTile", 2, "xi"); + SQAIRoad.DefSQMethod(engine, &AIRoad::BuildRoad, "BuildRoad", 3, "xii"); + SQAIRoad.DefSQMethod(engine, &AIRoad::BuildRoadDepot, "BuildRoadDepot", 3, "xii"); + SQAIRoad.DefSQMethod(engine, &AIRoad::BuildRoadStation, "BuildRoadStation", 5, "xiibb"); + SQAIRoad.DefSQMethod(engine, &AIRoad::RemoveRoad, "RemoveRoad", 3, "xii"); + SQAIRoad.DefSQMethod(engine, &AIRoad::RemoveRoadDepot, "RemoveRoadDepot", 2, "xi"); + SQAIRoad.DefSQMethod(engine, &AIRoad::RemoveRoadStation, "RemoveRoadStation", 2, "xi"); SQAIRoad.PostRegister(engine); }