diff options
-rw-r--r-- | bin/ai/regression/regression.nut | 2 | ||||
-rw-r--r-- | bin/ai/regression/regression.txt | 2 | ||||
-rw-r--r-- | src/ai/api/ai_changelog.hpp | 1 | ||||
-rw-r--r-- | src/ai/api/ai_industry.cpp | 6 | ||||
-rw-r--r-- | src/ai/api/ai_industry.hpp | 10 | ||||
-rw-r--r-- | src/ai/api/ai_industry.hpp.sq | 1 |
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"); |