src/ai/api/ai_industry.cpp
branchnoai
changeset 10383 bda80b3e9c25
parent 10339 ce6cd68d9eb8
child 10842 681a3954232a
--- a/src/ai/api/ai_industry.cpp	Tue Apr 29 21:06:16 2008 +0000
+++ b/src/ai/api/ai_industry.cpp	Tue Apr 29 21:34:17 2008 +0000
@@ -9,6 +9,7 @@
 #include "../../industry.h"
 #include "../../tile_type.h"
 #include "../../strings_func.h"
+#include "../../station_func.h"
 #include "table/strings.h"
 
 /* static */ IndustryID AIIndustry::GetMaxIndustryID()
@@ -66,12 +67,6 @@
 	return false;
 }
 
-/* static */ TileIndex AIIndustry::GetLocation(IndustryID industry_id)
-{
-	if (!IsValidIndustry(industry_id)) return INVALID_TILE;
-	return ::GetIndustry(industry_id)->xy;
-}
-
 /* static */ uint16 AIIndustry::GetLastMonthProduction(IndustryID industry_id, CargoID cargo_id)
 {
 	if (!IsValidIndustry(industry_id)) return false;
@@ -100,13 +95,32 @@
 	return false;
 }
 
+/* static */ TileIndex AIIndustry::GetLocation(IndustryID industry_id)
+{
+	if (!IsValidIndustry(industry_id)) return INVALID_TILE;
+
+	return ::GetIndustry(industry_id)->xy;
+}
+
+/* static */ int32 AIIndustry::GetAmountOfStationsAround(IndustryID industry_id)
+{
+	if (!IsValidIndustry(industry_id)) return -1;
+
+	Industry *ind = ::GetIndustry(industry_id);
+	return ::FindStationsAroundIndustryTile(ind->xy, ind->width, ind->height).size();
+}
+
 /* static */ int32 AIIndustry::GetDistanceManhattanToTile(IndustryID industry_id, TileIndex tile)
 {
+	if (!IsValidIndustry(industry_id)) return -1;
+
 	return AIMap::DistanceManhattan(tile, GetLocation(industry_id));
 }
 
 /* static */ int32 AIIndustry::GetDistanceSquareToTile(IndustryID industry_id, TileIndex tile)
 {
+	if (!IsValidIndustry(industry_id)) return -1;
+
 	return AIMap::DistanceSquare(tile, GetLocation(industry_id));
 }