From 0ad4f3165858722da509f684ccf4beb9257aa8d3 Mon Sep 17 00:00:00 2001 From: yexo Date: Thu, 7 May 2009 21:30:18 +0000 Subject: [PATCH] (svn r16252) -Add [NoAI]: AIAirport::GetPrice, returning the building cost of an airport --- bin/ai/regression/regression.nut | 1 + bin/ai/regression/regression.txt | 1 + src/ai/api/ai_airport.cpp | 9 +++++++++ src/ai/api/ai_airport.hpp | 7 +++++++ src/ai/api/ai_airport.hpp.sq | 1 + 5 files changed, 19 insertions(+) diff --git a/bin/ai/regression/regression.nut b/bin/ai/regression/regression.nut index 8b77879bd2..82154c9dbe 100644 --- a/bin/ai/regression/regression.nut +++ b/bin/ai/regression/regression.nut @@ -220,6 +220,7 @@ function Regression::Airport() } print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF)); + print(" GetPrice(): " + AIAirport.GetPrice(0)); print(" BuildAirport(): " + AIAirport.BuildAirport(32116, 0, AIStation.STATION_JOIN_ADJACENT)); print(" IsHangarTile(): " + AIAirport.IsHangarTile(32116)); print(" IsAirportTile(): " + AIAirport.IsAirportTile(32116)); diff --git a/bin/ai/regression/regression.txt b/bin/ai/regression/regression.txt index 5a7c96d2a5..7163df68bf 100644 --- a/bin/ai/regression/regression.txt +++ b/bin/ai/regression/regression.txt @@ -620,6 +620,7 @@ GetAirportHeight(9): -1 GetAirportCoverageRadius(9): -1 GetBankBalance(): 100000 + GetPrice(): 84 BuildAirport(): true IsHangarTile(): false IsAirportTile(): true diff --git a/src/ai/api/ai_airport.cpp b/src/ai/api/ai_airport.cpp index ed58701c33..819880f97a 100644 --- a/src/ai/api/ai_airport.cpp +++ b/src/ai/api/ai_airport.cpp @@ -8,12 +8,21 @@ #include "../../company_func.h" #include "../../command_type.h" #include "../../town.h" +#include "../../economy_func.h" /* static */ bool AIAirport::IsValidAirportType(AirportType type) { return type >= AT_SMALL && type <= AT_HELISTATION && HasBit(::GetValidAirports(), type); } +/* static */ Money AIAirport::GetPrice(AirportType type) +{ + if (!IsValidAirportType(type)) return -1; + + const AirportFTAClass *afc = ::GetAirport(type); + return _price.build_airport * afc->size_x * afc->size_y; +} + /* static */ bool AIAirport::IsHangarTile(TileIndex tile) { if (!::IsValidTile(tile)) return false; diff --git a/src/ai/api/ai_airport.hpp b/src/ai/api/ai_airport.hpp index 2456613643..e4541edf63 100644 --- a/src/ai/api/ai_airport.hpp +++ b/src/ai/api/ai_airport.hpp @@ -53,6 +53,13 @@ public: */ static bool IsValidAirportType(AirportType type); + /** + * Get the cost to build this AirportType. + * @param type The AirportType to check. + * @return The cost of building this AirportType. + */ + static Money GetPrice(AirportType type); + /** * Checks whether the given tile is actually a tile with a hangar. * @param tile The tile to check. diff --git a/src/ai/api/ai_airport.hpp.sq b/src/ai/api/ai_airport.hpp.sq index 0a42aa2d78..3825c29ae2 100644 --- a/src/ai/api/ai_airport.hpp.sq +++ b/src/ai/api/ai_airport.hpp.sq @@ -39,6 +39,7 @@ void SQAIAirport_Register(Squirrel *engine) { SQAIAirport.DefSQConst(engine, AIAirport::PT_INVALID, "PT_INVALID"); SQAIAirport.DefSQStaticMethod(engine, &AIAirport::IsValidAirportType, "IsValidAirportType", 2, ".i"); + SQAIAirport.DefSQStaticMethod(engine, &AIAirport::GetPrice, "GetPrice", 2, ".i"); SQAIAirport.DefSQStaticMethod(engine, &AIAirport::IsHangarTile, "IsHangarTile", 2, ".i"); SQAIAirport.DefSQStaticMethod(engine, &AIAirport::IsAirportTile, "IsAirportTile", 2, ".i"); SQAIAirport.DefSQStaticMethod(engine, &AIAirport::GetAirportWidth, "GetAirportWidth", 2, ".i");