From cea470e687a0ce6807d344346540b390ea5cc8f8 Mon Sep 17 00:00:00 2001 From: yexo Date: Sat, 14 Feb 2009 21:09:48 +0000 Subject: (svn r15485) -Change [API CHANGE]: Split AIIndustry::HasHeliportAndDock and GetHeliportAndDockLocation in HasHeliport/HasDock and GetHeliportLocation/GetDockLocation. --- src/ai/api/ai_industry.cpp | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'src/ai/api/ai_industry.cpp') 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); -- cgit v1.2.3-54-g00ecf