summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bin/ai/regression/regression.nut2
-rw-r--r--bin/ai/regression/regression.txt2
-rw-r--r--src/ai/api/ai_changelog.hpp1
-rw-r--r--src/ai/api/ai_industry.cpp6
-rw-r--r--src/ai/api/ai_industry.hpp10
-rw-r--r--src/ai/api/ai_industry.hpp.sq1
6 files changed, 22 insertions, 0 deletions
diff --git a/bin/ai/regression/regression.nut b/bin/ai/regression/regression.nut
index 8891ca090..7dc35e1de 100644
--- a/bin/ai/regression/regression.nut
+++ b/bin/ai/regression/regression.nut
@@ -605,6 +605,8 @@ function Regression::Industry()
}
print(" Valid Industries: " + j);
print(" GetIndustryCount(): " + AIIndustry.GetIndustryCount());
+ print(" GetIndustryID(): " + AIIndustry.GetIndustryID(19694));
+ print(" GetIndustryID(): " + AIIndustry.GetIndustryID(19695));
}
function Regression::IndustryList()
diff --git a/bin/ai/regression/regression.txt b/bin/ai/regression/regression.txt
index 9aeb8705e..4542a621a 100644
--- a/bin/ai/regression/regression.txt
+++ b/bin/ai/regression/regression.txt
@@ -6548,6 +6548,8 @@ ERROR: IsEnd() is invalid as Begin() is never called
GetStockpiledCargo(): 0
Valid Industries: 71
GetIndustryCount(): 71
+ GetIndustryID(): 65535
+ GetIndustryID(): 0
--IndustryList--
Count(): 71
diff --git a/src/ai/api/ai_changelog.hpp b/src/ai/api/ai_changelog.hpp
index 3474a1209..b8943a1da 100644
--- a/src/ai/api/ai_changelog.hpp
+++ b/src/ai/api/ai_changelog.hpp
@@ -20,6 +20,7 @@
*
* API additions:
* \li IsEnd for all lists.
+ * \li AIIndustry::GetIndustryID
* \li AIRail::GetMaxSpeed
*
* API removals:
diff --git a/src/ai/api/ai_industry.cpp b/src/ai/api/ai_industry.cpp
index 6fb208ce9..c1cb42ef8 100644
--- a/src/ai/api/ai_industry.cpp
+++ b/src/ai/api/ai_industry.cpp
@@ -27,6 +27,12 @@
return ::Industry::IsValidID(industry_id);
}
+/* static */ IndustryID AIIndustry::GetIndustryID(TileIndex tile)
+{
+ if (!::IsValidTile(tile) || !::IsTileType(tile, MP_INDUSTRY)) return INVALID_INDUSTRY;
+ return ::GetIndustryIndex(tile);
+}
+
/* static */ char *AIIndustry::GetName(IndustryID industry_id)
{
if (!IsValidIndustry(industry_id)) return NULL;
diff --git a/src/ai/api/ai_industry.hpp b/src/ai/api/ai_industry.hpp
index cbaa9f407..815e37ad0 100644
--- a/src/ai/api/ai_industry.hpp
+++ b/src/ai/api/ai_industry.hpp
@@ -37,6 +37,16 @@ public:
static bool IsValidIndustry(IndustryID industry_id);
/**
+ * Get the IndustryID of a tile, if there is an industry.
+ * @param tile The tile to find the IndustryID of.
+ * @return IndustryID of the industry.
+ * @post Use IsValidIndustry() to see if the industry is valid.
+ * @note GetIndustryID will return an invalid IndustryID for the
+ * station tile of industries with a dock/heliport.
+ */
+ static IndustryID GetIndustryID(TileIndex tile);
+
+ /**
* Get the name of the industry.
* @param industry_id The industry to get the name of.
* @pre IsValidIndustry(industry_id).
diff --git a/src/ai/api/ai_industry.hpp.sq b/src/ai/api/ai_industry.hpp.sq
index ed1dd0c32..86c7d90b7 100644
--- a/src/ai/api/ai_industry.hpp.sq
+++ b/src/ai/api/ai_industry.hpp.sq
@@ -28,6 +28,7 @@ void SQAIIndustry_Register(Squirrel *engine)
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetIndustryCount, "GetIndustryCount", 1, ".");
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsValidIndustry, "IsValidIndustry", 2, ".i");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetIndustryID, "GetIndustryID", 2, ".i");
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetName, "GetName", 2, ".i");
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsCargoAccepted, "IsCargoAccepted", 3, ".ii");
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetStockpiledCargo, "GetStockpiledCargo", 3, ".ii");