--- 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));
}