changeset 11858:01c6deebde69 draft

(svn r16252) -Add [NoAI]: AIAirport::GetPrice, returning the building cost of an airport
author yexo <yexo@openttd.org>
date Thu, 07 May 2009 21:30:18 +0000
parents 3870525e843b
children ec6ec69c1fe3
files bin/ai/regression/regression.nut bin/ai/regression/regression.txt src/ai/api/ai_airport.cpp src/ai/api/ai_airport.hpp src/ai/api/ai_airport.hpp.sq
diffstat 5 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/bin/ai/regression/regression.nut
+++ b/bin/ai/regression/regression.nut
@@ -220,6 +220,7 @@
 	}
 
 	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));
--- 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
--- 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;
--- a/src/ai/api/ai_airport.hpp
+++ b/src/ai/api/ai_airport.hpp
@@ -54,6 +54,13 @@
 	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.
 	 * @pre AIMap::IsValidTile(tile).
--- a/src/ai/api/ai_airport.hpp.sq
+++ b/src/ai/api/ai_airport.hpp.sq
@@ -39,6 +39,7 @@
 	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");