truelight@9592: #include "ai_tilelist_valuator.hpp" truelight@9617: #include "ai_tile.hpp" truelight@9617: #include "ai_road.hpp" truelight@9655: #include "ai_map.hpp" truelight@9603: #include "../../road_map.h" truelight@9592: truebrain@9753: int32 AITileList_vBuildable::Valuate(int32 tile) const truelight@9592: { truelight@9617: return AITile::IsBuildable(tile); truelight@9592: } truelight@9603: truebrain@9753: int32 AITileList_vWater::Valuate(int32 tile) const truelight@9698: { truelight@9698: return AITile::IsWater(tile); truelight@9698: } truelight@9698: truebrain@9753: int32 AITileList_vBuildableRectangle::Valuate(int32 tile) const truelight@9657: { truelight@9657: uint tx, ty; truelight@9657: truelight@9657: tx = AIMap::GetTileX(tile); truelight@9657: ty = AIMap::GetTileY(tile); truelight@9657: truelight@9657: for (uint x = tx; x < this->width + tx; x++) { truelight@9657: for (uint y = ty; y < this->height + ty; y++) { truelight@9657: if (!AITile::IsBuildable(AIMap::GetTileIndex(x, y))) return false; truelight@9657: } truelight@9657: } truelight@9657: truelight@9657: return true; truelight@9657: } truelight@9657: truebrain@9753: int32 AITileList_vSlope::Valuate(int32 tile) const truelight@9611: { truelight@9617: return AITile::GetSlope(tile); truelight@9611: } truelight@9611: truebrain@9753: int32 AITileList_vHeight::Valuate(int32 tile) const truelight@9700: { truelight@9700: return AITile::GetHeight(tile); truelight@9700: } truelight@9700: truebrain@9753: int32 AITileList_vNeighbourRoadCount::Valuate(int32 tile) const truelight@9603: { truelight@9617: return AIRoad::GetNeighbourRoadCount(tile); truelight@9603: } truelight@9603: truebrain@9753: int32 AITileList_vRoadTile::Valuate(int32 tile) const truelight@9603: { rubidium@9694: return ::IsTileType(tile, MP_ROAD) && ::GetRoadTileType(tile) != ROAD_TILE_DEPOT; truelight@9603: } truelight@9609: truebrain@9753: int32 AITileList_vCargoAcceptance::Valuate(int32 tile) const truelight@9609: { truebrain@9778: return AITile::GetCargoAcceptance(tile, this->cargo_id, this->width, this->height, this->radius); truelight@9609: } truelight@9655: truebrain@9771: int32 AITileList_vCargoProduction::Valuate(int32 tile) const truebrain@9771: { truebrain@9778: return AITile::GetCargoProduction(tile, this->cargo_id, this->width, this->height, this->radius); truebrain@9771: } truebrain@9771: truebrain@9753: int32 AITileList_vDistanceManhattanToTile::Valuate(int32 tile) const truelight@9655: { truelight@9655: return AIMap::DistanceManhattan(this->tile, tile); truelight@9655: } truelight@9655: truebrain@9753: int32 AITileList_vDistanceSquareToTile::Valuate(int32 tile) const truelight@9655: { truelight@9655: return AIMap::DistanceSquare(this->tile, tile); truelight@9655: }