changeset 11514:c28cdd91492b draft

(svn r15875) -Add: AIBridge::GetBridgeID() so AIs can get the type of bridge that are already build.
author yexo <yexo@openttd.org>
date Sat, 28 Mar 2009 12:04:38 +0000
parents 060289e229f7
children c724fc176439
files bin/ai/regression/regression.nut bin/ai/regression/regression.txt src/ai/api/ai_bridge.cpp src/ai/api/ai_bridge.hpp src/ai/api/ai_bridge.hpp.sq
diffstat 5 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/bin/ai/regression/regression.nut
+++ b/bin/ai/regression/regression.nut
@@ -256,12 +256,15 @@
 	print("  Valid Bridges:        " + j);
 
 	print("  IsBridgeTile():       " + AIBridge.IsBridgeTile(33160));
+	print("  GetBridgeID():        " + AIBridge.GetBridgeID(33160));
 	print("  RemoveBridge():       " + AIBridge.RemoveBridge(33155));
 	print("  GetLastErrorString(): " + AIError.GetLastErrorString());
 	print("  GetOtherBridgeEnd():  " + AIBridge.GetOtherBridgeEnd(33160));
 	print("  BuildBridge():        " + AIBridge.BuildBridge(AIVehicle.VT_ROAD, 5, 33160, 33155));
 	print("  IsBridgeTile():       " + AIBridge.IsBridgeTile(33160));
+	print("  GetBridgeID():        " + AIBridge.GetBridgeID(33160));
 	print("  IsBridgeTile():       " + AIBridge.IsBridgeTile(33155));
+	print("  GetBridgeID():        " + AIBridge.GetBridgeID(33155));
 	print("  GetOtherBridgeEnd():  " + AIBridge.GetOtherBridgeEnd(33160));
 	print("  BuildBridge():        " + AIBridge.BuildBridge(AIVehicle.VT_ROAD, 5, 33160, 33155));
 	print("  GetLastErrorString(): " + AIError.GetLastErrorString());
--- a/bin/ai/regression/regression.txt
+++ b/bin/ai/regression/regression.txt
@@ -743,12 +743,15 @@
     GetMinLength():     -1
   Valid Bridges:        10
   IsBridgeTile():       false
+  GetBridgeID():        -1
   RemoveBridge():       false
   GetLastErrorString(): ERR_PRECONDITION_FAILED
   GetOtherBridgeEnd():  -1
   BuildBridge():        true
   IsBridgeTile():       true
+  GetBridgeID():        5
   IsBridgeTile():       true
+  GetBridgeID():        5
   GetOtherBridgeEnd():  33155
   BuildBridge():        false
   GetLastErrorString(): ERR_ALREADY_BUILT
--- a/src/ai/api/ai_bridge.cpp
+++ b/src/ai/api/ai_bridge.cpp
@@ -23,6 +23,12 @@
 	return ::IsBridgeTile(tile);
 }
 
+/* static */ BridgeID AIBridge::GetBridgeID(TileIndex tile)
+{
+	if (!IsBridgeTile(tile)) return -1;
+	return (BridgeID)::GetBridgeType(tile);
+}
+
 static void _DoCommandReturnBuildBridge2(class AIInstance *instance)
 {
 	if (!AIBridge::_BuildBridgeRoad2()) {
--- a/src/ai/api/ai_bridge.hpp
+++ b/src/ai/api/ai_bridge.hpp
@@ -52,6 +52,14 @@
 	static bool IsBridgeTile(TileIndex tile);
 
 	/**
+	 * Get the BridgeID of a bridge at a given tile.
+	 * @param tile The tile to get the BridgeID from.
+	 * @pre IsBridgeTile(tile).
+	 * @return The BridgeID from the bridge at tile 'tile'.
+	 */
+	static BridgeID GetBridgeID(TileIndex tile);
+
+	/**
 	 * Get the name of a bridge.
 	 * @param bridge_id The bridge to get the name of.
 	 * @pre IsValidBridge(bridge_id).
--- a/src/ai/api/ai_bridge.hpp.sq
+++ b/src/ai/api/ai_bridge.hpp.sq
@@ -36,6 +36,7 @@
 
 	SQAIBridge.DefSQStaticMethod(engine, &AIBridge::IsValidBridge,     "IsValidBridge",     2, ".i");
 	SQAIBridge.DefSQStaticMethod(engine, &AIBridge::IsBridgeTile,      "IsBridgeTile",      2, ".i");
+	SQAIBridge.DefSQStaticMethod(engine, &AIBridge::GetBridgeID,       "GetBridgeID",       2, ".i");
 	SQAIBridge.DefSQStaticMethod(engine, &AIBridge::GetName,           "GetName",           2, ".i");
 	SQAIBridge.DefSQStaticMethod(engine, &AIBridge::GetMaxSpeed,       "GetMaxSpeed",       2, ".i");
 	SQAIBridge.DefSQStaticMethod(engine, &AIBridge::GetPrice,          "GetPrice",          3, ".ii");