summaryrefslogtreecommitdiff
path: root/src/ai/api/ai_industry.cpp
diff options
context:
space:
mode:
authoryexo <yexo@openttd.org>2009-02-14 21:09:48 +0000
committeryexo <yexo@openttd.org>2009-02-14 21:09:48 +0000
commitcea470e687a0ce6807d344346540b390ea5cc8f8 (patch)
treedbc9660444b4367aed13fb0a9ba170c5192cb268 /src/ai/api/ai_industry.cpp
parent58359b8d6e411eb43fa362ce364d89bb2a0d71c0 (diff)
downloadopenttd-cea470e687a0ce6807d344346540b390ea5cc8f8.tar.xz
(svn r15485) -Change [API CHANGE]: Split AIIndustry::HasHeliportAndDock and GetHeliportAndDockLocation in HasHeliport/HasDock and GetHeliportLocation/GetDockLocation.
Diffstat (limited to 'src/ai/api/ai_industry.cpp')
-rw-r--r--src/ai/api/ai_industry.cpp28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/ai/api/ai_industry.cpp b/src/ai/api/ai_industry.cpp
index 6ef383672..a1493c0b5 100644
--- a/src/ai/api/ai_industry.cpp
+++ b/src/ai/api/ai_industry.cpp
@@ -134,17 +134,39 @@
return (::GetIndustrySpec(::GetIndustry(industry_id)->type)->behaviour & INDUSTRYBEH_BUILT_ONWATER) != 0;
}
-/* static */ bool AIIndustry::HasHeliportAndDock(IndustryID industry_id)
+/* static */ bool AIIndustry::HasHeliport(IndustryID industry_id)
{
if (!IsValidIndustry(industry_id)) return false;
return (::GetIndustrySpec(::GetIndustry(industry_id)->type)->behaviour & INDUSTRYBEH_AI_AIRSHIP_ROUTES) != 0;
}
-/* static */ TileIndex AIIndustry::GetHeliportAndDockLocation(IndustryID industry_id)
+/* static */ TileIndex AIIndustry::GetHeliportLocation(IndustryID industry_id)
{
if (!IsValidIndustry(industry_id)) return INVALID_TILE;
- if (!HasHeliportAndDock(industry_id)) return INVALID_TILE;
+ if (!HasHeliport(industry_id)) return INVALID_TILE;
+
+ const Industry *ind = ::GetIndustry(industry_id);
+ BEGIN_TILE_LOOP(tile_cur, ind->width, ind->height, ind->xy);
+ if (IsTileType(tile_cur, MP_STATION) && IsOilRig(tile_cur)) {
+ return tile_cur;
+ }
+ END_TILE_LOOP(tile_cur, ind->width, ind->height, ind->xy);
+
+ return INVALID_TILE;
+}
+
+/* static */ bool AIIndustry::HasDock(IndustryID industry_id)
+{
+ if (!IsValidIndustry(industry_id)) return false;
+
+ return (::GetIndustrySpec(::GetIndustry(industry_id)->type)->behaviour & INDUSTRYBEH_AI_AIRSHIP_ROUTES) != 0;
+}
+
+/* static */ TileIndex AIIndustry::GetDockLocation(IndustryID industry_id)
+{
+ if (!IsValidIndustry(industry_id)) return INVALID_TILE;
+ if (!HasDock(industry_id)) return INVALID_TILE;
const Industry *ind = ::GetIndustry(industry_id);
BEGIN_TILE_LOOP(tile_cur, ind->width, ind->height, ind->xy);