changeset 11540:90fff0ff5623 draft

(svn r15901) -Add: AIIndustryType::IsBuiltOnWater(), HasHeliport() and HasDock(). Just like AIIndustry.
author frosch <frosch@openttd.org>
date Mon, 30 Mar 2009 20:48:10 +0000
parents 299754b9228a
children 400b48f0c92b
files bin/ai/regression/regression.nut bin/ai/regression/regression.txt src/ai/api/ai_industrytype.cpp src/ai/api/ai_industrytype.hpp src/ai/api/ai_industrytype.hpp.sq
diffstat 5 files changed, 87 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/bin/ai/regression/regression.nut
+++ b/bin/ai/regression/regression.nut
@@ -635,6 +635,9 @@
 		print("    GetName():               " + AIIndustryType.GetName(i));
 		print("    CanBuildIndustry():      " + AIIndustryType.CanBuildIndustry(i));
 		print("    CanProspectIndustry():   " + AIIndustryType.CanProspectIndustry(i));
+		print("    IsBuiltOnWater():        " + AIIndustryType.IsBuiltOnWater(i));
+		print("    HasHeliport():           " + AIIndustryType.HasHeliport(i));
+		print("    HasDock():               " + AIIndustryType.HasDock(i));
 	}
 }
 
--- a/bin/ai/regression/regression.txt
+++ b/bin/ai/regression/regression.txt
@@ -6926,6 +6926,9 @@
     GetName():               Farm
     CanBuildIndustry():      false
     CanProspectIndustry():   false
+    IsBuiltOnWater():        false
+    HasHeliport():           false
+    HasDock():               false
     Id:                      5
     IsRawIndustry():         true
     ProductionCanIncrease(): true
@@ -6933,6 +6936,9 @@
     GetName():               Oil Rig
     CanBuildIndustry():      false
     CanProspectIndustry():   false
+    IsBuiltOnWater():        true
+    HasHeliport():           true
+    HasDock():               true
     Id:                      12
     IsRawIndustry():         false
     ProductionCanIncrease(): true
@@ -6940,6 +6946,9 @@
     GetName():               Bank
     CanBuildIndustry():      true
     CanProspectIndustry():   false
+    IsBuiltOnWater():        false
+    HasHeliport():           false
+    HasDock():               false
     Id:                      11
     IsRawIndustry():         true
     ProductionCanIncrease(): false
@@ -6947,6 +6956,9 @@
     GetName():               Oil Wells
     CanBuildIndustry():      false
     CanProspectIndustry():   false
+    IsBuiltOnWater():        false
+    HasHeliport():           false
+    HasDock():               false
     Id:                      1
     IsRawIndustry():         false
     ProductionCanIncrease(): true
@@ -6954,6 +6966,9 @@
     GetName():               Power Station
     CanBuildIndustry():      true
     CanProspectIndustry():   false
+    IsBuiltOnWater():        false
+    HasHeliport():           false
+    HasDock():               false
     Id:                      3
     IsRawIndustry():         true
     ProductionCanIncrease(): true
@@ -6961,6 +6976,9 @@
     GetName():               Forest
     CanBuildIndustry():      false
     CanProspectIndustry():   false
+    IsBuiltOnWater():        false
+    HasHeliport():           false
+    HasDock():               false
     Id:                      2
     IsRawIndustry():         false
     ProductionCanIncrease(): true
@@ -6968,6 +6986,9 @@
     GetName():               Sawmill
     CanBuildIndustry():      true
     CanProspectIndustry():   false
+    IsBuiltOnWater():        false
+    HasHeliport():           false
+    HasDock():               false
     Id:                      18
     IsRawIndustry():         true
     ProductionCanIncrease(): true
@@ -6975,6 +6996,9 @@
     GetName():               Iron Ore Mine
     CanBuildIndustry():      false
     CanProspectIndustry():   false
+    IsBuiltOnWater():        false
+    HasHeliport():           false
+    HasDock():               false
     Id:                      0
     IsRawIndustry():         true
     ProductionCanIncrease(): true
@@ -6982,6 +7006,9 @@
     GetName():               Coal Mine
     CanBuildIndustry():      false
     CanProspectIndustry():   false
+    IsBuiltOnWater():        false
+    HasHeliport():           false
+    HasDock():               false
     Id:                      8
     IsRawIndustry():         false
     ProductionCanIncrease(): true
@@ -6989,6 +7016,9 @@
     GetName():               Steel Mill
     CanBuildIndustry():      true
     CanProspectIndustry():   false
+    IsBuiltOnWater():        false
+    HasHeliport():           false
+    HasDock():               false
     Id:                      4
     IsRawIndustry():         false
     ProductionCanIncrease(): true
@@ -6996,6 +7026,9 @@
     GetName():               Oil Refinery
     CanBuildIndustry():      true
     CanProspectIndustry():   false
+    IsBuiltOnWater():        false
+    HasHeliport():           false
+    HasDock():               false
     Id:                      6
     IsRawIndustry():         false
     ProductionCanIncrease(): true
@@ -7003,6 +7036,9 @@
     GetName():               Factory
     CanBuildIndustry():      true
     CanProspectIndustry():   false
+    IsBuiltOnWater():        false
+    HasHeliport():           false
+    HasDock():               false
 
 --Map--
   GetMapSize():     65536
--- a/src/ai/api/ai_industrytype.cpp
+++ b/src/ai/api/ai_industrytype.cpp
@@ -111,3 +111,24 @@
 	uint32 seed = ::InteractiveRandom();
 	return AIObject::DoCommand(0, industry_type, seed, CMD_BUILD_INDUSTRY);
 }
+
+/* static */ bool AIIndustryType::IsBuiltOnWater(IndustryType industry_type)
+{
+	if (!IsValidIndustryType(industry_type)) return false;
+
+	return (::GetIndustrySpec(industry_type)->behaviour & INDUSTRYBEH_BUILT_ONWATER) != 0;
+}
+
+/* static */ bool AIIndustryType::HasHeliport(IndustryType industry_type)
+{
+	if (!IsValidIndustryType(industry_type)) return false;
+
+	return (::GetIndustrySpec(industry_type)->behaviour & INDUSTRYBEH_AI_AIRSHIP_ROUTES) != 0;
+}
+
+/* static */ bool AIIndustryType::HasDock(IndustryType industry_type)
+{
+	if (!IsValidIndustryType(industry_type)) return false;
+
+	return (::GetIndustrySpec(industry_type)->behaviour & INDUSTRYBEH_AI_AIRSHIP_ROUTES) != 0;
+}
--- a/src/ai/api/ai_industrytype.hpp
+++ b/src/ai/api/ai_industrytype.hpp
@@ -113,6 +113,30 @@
 	 * @note If true is returned the money is paid, whether a new industry was build or not.
 	 */
 	static bool ProspectIndustry(IndustryType industry_type);
+
+	/**
+	 * Is this type of industry built on water.
+	 * @param industry_type The type of the industry.
+	 * @pre IsValidIndustryType(industry_type).
+	 * @return True when this type is built on water.
+	 */
+	static bool IsBuiltOnWater(IndustryType industry_type);
+
+	/**
+	 * Does this type of industry have a heliport?
+	 * @param industry_type The type of the industry.
+	 * @pre IsValidIndustryType(industry_type).
+	 * @return True when this type has a heliport.
+	 */
+	static bool HasHeliport(IndustryType industry_type);
+
+	/**
+	 * Does this type of industry have a dock?
+	 * @param industry_type The type of the industry.
+	 * @pre IsValidIndustryType(industry_type).
+	 * @return True when this type has a dock.
+	 */
+	static bool HasDock(IndustryType industry_type);
 };
 
 #endif /* AI_INDUSTRYTYPE_HPP */
--- a/src/ai/api/ai_industrytype.hpp.sq
+++ b/src/ai/api/ai_industrytype.hpp.sq
@@ -28,6 +28,9 @@
 	SQAIIndustryType.DefSQStaticMethod(engine, &AIIndustryType::CanProspectIndustry,   "CanProspectIndustry",   2, ".i");
 	SQAIIndustryType.DefSQStaticMethod(engine, &AIIndustryType::BuildIndustry,         "BuildIndustry",         3, ".ii");
 	SQAIIndustryType.DefSQStaticMethod(engine, &AIIndustryType::ProspectIndustry,      "ProspectIndustry",      2, ".i");
+	SQAIIndustryType.DefSQStaticMethod(engine, &AIIndustryType::IsBuiltOnWater,        "IsBuiltOnWater",        2, ".i");
+	SQAIIndustryType.DefSQStaticMethod(engine, &AIIndustryType::HasHeliport,           "HasHeliport",           2, ".i");
+	SQAIIndustryType.DefSQStaticMethod(engine, &AIIndustryType::HasDock,               "HasDock",               2, ".i");
 
 	SQAIIndustryType.PostRegister(engine);
 }