summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bin/ai/regression/regression.nut3
-rw-r--r--bin/ai/regression/regression.txt36
-rw-r--r--src/ai/api/ai_industrytype.cpp21
-rw-r--r--src/ai/api/ai_industrytype.hpp24
-rw-r--r--src/ai/api/ai_industrytype.hpp.sq3
5 files changed, 87 insertions, 0 deletions
diff --git a/bin/ai/regression/regression.nut b/bin/ai/regression/regression.nut
index 827145e77..02f2e55bf 100644
--- a/bin/ai/regression/regression.nut
+++ b/bin/ai/regression/regression.nut
@@ -635,6 +635,9 @@ function Regression::IndustryTypeList()
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));
}
}
diff --git a/bin/ai/regression/regression.txt b/bin/ai/regression/regression.txt
index 3eefdd3fb..c3c793179 100644
--- 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
diff --git a/src/ai/api/ai_industrytype.cpp b/src/ai/api/ai_industrytype.cpp
index 83d356a3c..cc2e2abae 100644
--- 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;
+}
diff --git a/src/ai/api/ai_industrytype.hpp b/src/ai/api/ai_industrytype.hpp
index 2b9241745..2d1063b6c 100644
--- a/src/ai/api/ai_industrytype.hpp
+++ b/src/ai/api/ai_industrytype.hpp
@@ -113,6 +113,30 @@ public:
* @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 */
diff --git a/src/ai/api/ai_industrytype.hpp.sq b/src/ai/api/ai_industrytype.hpp.sq
index 0d4c60787..a84cc2489 100644
--- a/src/ai/api/ai_industrytype.hpp.sq
+++ b/src/ai/api/ai_industrytype.hpp.sq
@@ -28,6 +28,9 @@ void SQAIIndustryType_Register(Squirrel *engine) {
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);
}