src/ai/api/ai_town.hpp
branchnoai
changeset 9427 ef0c109c5661
parent 9425 8eec6d10844a
child 9448 2a4c4340233d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ai/api/ai_town.hpp	Thu Mar 15 22:28:14 2007 +0000
@@ -0,0 +1,76 @@
+/* $Id$ */
+
+/** @file ai_town.hpp Everything to query towns */
+
+#ifndef AI_TOWN_HPP
+#define AI_TOWN_HPP
+
+#include "ai_object.hpp"
+
+class AITown : public AIObject {
+public:
+	/**
+	 * Gets the maximum town index; there are no valid towns with a higher index
+	 * @return the maximum town index
+	 * @post return >= 0
+	 */
+	TownID GetMaxTownID();
+
+	/**
+	 * Gets the number of towns
+	 * @return the number of towns
+	 * @post return >= 0
+	 */
+	int32 GetTownCount();
+
+	/**
+	 * Checks whether the given town index is valid
+	 * @param town_id the index to check
+	 * @return true if and only if the town is valid
+	 */
+	bool IsValidTown(TownID town_id);
+
+	/**
+	 * Get the name of the town
+	 * @param town_id the town to get the name of
+	 * @pre this->IsValidTown(town)
+	 * @return the name of the town
+	 * @note the returned name must be freed
+	 */
+	char *GetName(TownID town_id);
+
+	/**
+	 * Gets the number of inhabitants in the town
+	 * @param town_id the town to get the name of
+	 * @pre this->IsValidTown(town_id)
+	 * @return the number of inhabitants
+	 * @post return >= 0
+	 */
+	int32 GetPopulation(TownID town_id);
+
+	/**
+	 * Gets the location of the town
+	 * @param town_id the location of the town
+	 * @pre this->IsValidTown(town_id)
+	 * @return the location of the town
+	 * @post return >= 0
+	 */
+	TileIndex GetLocation(TownID town_id);
+};
+
+#ifdef DEFINE_SQUIRREL_CLASS
+void SQAITownRegister(Squirrel *engine) {
+	DefSQClass <AITown> SQAITown("AITown");
+	SQAITown.PreRegister(engine);
+	SQAITown.AddConstructor(engine);
+	SQAITown.DefSQFunction(engine, &AITown::GetMaxTownID,  "GetMaxTownID");
+	SQAITown.DefSQFunction(engine, &AITown::GetTownCount,  "GetTownCount");
+	SQAITown.DefSQFunction(engine, &AITown::IsValidTown,   "IsValidTown");
+	SQAITown.DefSQFunction(engine, &AITown::GetName,       "GetName");
+	SQAITown.DefSQFunction(engine, &AITown::GetPopulation, "GetPopulation");
+	SQAITown.DefSQFunction(engine, &AITown::GetLocation,   "GetLocation");
+	SQAITown.PostRegister(engine);
+}
+#endif /* SQUIRREL_CLASS */
+
+#endif /* AI_TOWN_HPP */