Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef AI_TOWN_HPP
00013 #define AI_TOWN_HPP
00014
00015 #include "ai_company.hpp"
00016
00020 class AITown : public AIObject {
00021 public:
00023 static const char *GetClassName() { return "AITown"; }
00024
00028 enum TownAction {
00029
00030
00036 TOWN_ACTION_ADVERTISE_SMALL = 0,
00037
00043 TOWN_ACTION_ADVERTISE_MEDIUM = 1,
00044
00050 TOWN_ACTION_ADVERTISE_LARGE = 2,
00051
00055 TOWN_ACTION_ROAD_REBUILD = 3,
00056
00060 TOWN_ACTION_BUILD_STATUE = 4,
00061
00065 TOWN_ACTION_FUND_BUILDINGS = 5,
00066
00070 TOWN_ACTION_BUY_RIGHTS = 6,
00071
00075 TOWN_ACTION_BRIBE = 7,
00076 };
00077
00081 enum TownRating {
00082 TOWN_RATING_NONE,
00083 TOWN_RATING_APPALLING,
00084 TOWN_RATING_VERY_POOR,
00085 TOWN_RATING_POOR,
00086 TOWN_RATING_MEDIOCRE,
00087 TOWN_RATING_GOOD,
00088 TOWN_RATING_VERY_GOOD,
00089 TOWN_RATING_EXCELLENT,
00090 TOWN_RATING_OUTSTANDING,
00091 TOWN_RATING_INVALID = -1,
00092 };
00093
00097 enum RoadLayout {
00098
00099 ROAD_LAYOUT_ORIGINAL,
00100 ROAD_LAYOUT_BETTER_ROADS,
00101 ROAD_LAYOUT_2x2,
00102 ROAD_LAYOUT_3x3,
00103 ROAD_LAYOUT_INVALID = -1,
00104 };
00105
00111 static int32 GetTownCount();
00112
00118 static bool IsValidTown(TownID town_id);
00119
00126 static char *GetName(TownID town_id);
00127
00135 static int32 GetPopulation(TownID town_id);
00136
00144 static int32 GetHouseCount(TownID town_id);
00145
00152 static TileIndex GetLocation(TownID town_id);
00153
00164 static int32 GetLastMonthProduction(TownID town_id, CargoID cargo_id);
00165
00176 static int32 GetLastMonthTransported(TownID town_id, CargoID cargo_id);
00177
00188 static int32 GetLastMonthTransportedPercentage(TownID town_id, CargoID cargo_id);
00189
00198 static int32 GetDistanceManhattanToTile(TownID town_id, TileIndex tile);
00199
00208 static int32 GetDistanceSquareToTile(TownID town_id, TileIndex tile);
00209
00219 static bool IsWithinTownInfluence(TownID town_id, TileIndex tile);
00220
00227 static bool HasStatue(TownID town_id);
00228
00235 static bool IsCity(TownID town_id);
00236
00244 static int GetRoadReworkDuration(TownID town_id);
00245
00254 static AICompany::CompanyID GetExclusiveRightsCompany(TownID town_id);
00255
00264 static int32 GetExclusiveRightsDuration(TownID town_id);
00265
00273 static bool IsActionAvailable(TownID town_id, TownAction town_action);
00274
00283 static bool PerformTownAction(TownID town_id, TownAction town_action);
00284
00293 static TownRating GetRating(TownID town_id, AICompany::CompanyID company_id);
00294
00301 static int GetAllowedNoise(TownID town_id);
00302
00308 static RoadLayout GetRoadLayout(TownID town_id);
00309 };
00310
00311 #endif