rubidium@9380: /* $Id$ */ rubidium@9380: truebrain@9833: /** @file ai_town.cpp Implementation of AITown. */ rubidium@9380: rubidium@9430: #include "ai_town.hpp" truebrain@9814: #include "ai_map.hpp" rubidium@9430: #include "../../town.h" rubidium@9723: #include "../../strings_func.h" rubidium@9723: #include "../../town_type.h" rubidium@9723: #include "../../core/alloc_func.hpp" rubidium@9405: #include "table/strings.h" rubidium@9380: truebrain@9737: /* static */ TownID AITown::GetMaxTownID() rubidium@9380: { rubidium@9380: return ::GetMaxTownIndex(); rubidium@9380: } rubidium@9380: truebrain@9737: /* static */ int32 AITown::GetTownCount() rubidium@9380: { rubidium@9380: return ::GetNumTowns(); rubidium@9380: } rubidium@9380: rubidium@9497: /* static */ bool AITown::IsValidTown(TownID town_id) rubidium@9380: { rubidium@9380: return ::IsValidTownID(town_id); rubidium@9380: } rubidium@9380: truebrain@9737: /* static */ char *AITown::GetName(TownID town_id) rubidium@9380: { truebrain@9736: if (!IsValidTown(town_id)) return NULL; rubidium@9380: static const int len = 64; rubidium@9380: char *town_name = MallocT(len); rubidium@9380: truebrain@9736: ::SetDParam(0, town_id); truebrain@9736: ::GetString(town_name, STR_TOWN, &town_name[len - 1]); rubidium@9380: rubidium@9380: return town_name; rubidium@9380: } rubidium@9380: truebrain@9737: /* static */ int32 AITown::GetPopulation(TownID town_id) rubidium@9380: { truebrain@10194: if (!IsValidTown(town_id)) return -1; rubidium@9380: const Town *t = ::GetTown(town_id); rubidium@9380: return t->population; rubidium@9380: } rubidium@9380: truebrain@9737: /* static */ TileIndex AITown::GetLocation(TownID town_id) rubidium@9380: { truebrain@9736: if (!IsValidTown(town_id)) return INVALID_TILE; rubidium@9380: const Town *t = ::GetTown(town_id); rubidium@9380: return t->xy; rubidium@9380: } truebrain@9814: truebrain@9814: /* static */ int32 AITown::GetDistanceManhattanToTile(TownID town_id, TileIndex tile) truebrain@9814: { truebrain@9814: return AIMap::DistanceManhattan(tile, GetLocation(town_id)); truebrain@9814: } truebrain@9814: truebrain@9814: /* static */ int32 AITown::GetDistanceSquareToTile(TownID town_id, TileIndex tile) truebrain@9814: { truebrain@9814: return AIMap::DistanceSquare(tile, GetLocation(town_id)); truebrain@9814: }