(svn r10564) [NoAI] -Add: added a AITileList valuator that checks for a NxM buildable spot with the entry from the AITileList as top-left tile
#include "ai_tilelist_valuator.hpp"
#include "ai_tile.hpp"
#include "ai_road.hpp"
#include "ai_map.hpp"
#include "../../tile.h"
#include "../../road_map.h"
int32 AITileListBuildable::Valuate(int32 tile) const
{
return AITile::IsBuildable(tile);
}
int32 AITileListBuildableRectangle::Valuate(int32 tile) const
{
uint tx, ty;
tx = AIMap::GetTileX(tile);
ty = AIMap::GetTileY(tile);
for (uint x = tx; x < this->width + tx; x++) {
for (uint y = ty; y < this->height + ty; y++) {
if (!AITile::IsBuildable(AIMap::GetTileIndex(x, y))) return false;
}
}
return true;
}
int32 AITileListSlope::Valuate(int32 tile) const
{
return AITile::GetSlope(tile);
}
int32 AITileListNeighbourRoadCount::Valuate(int32 tile) const
{
return AIRoad::GetNeighbourRoadCount(tile);
}
int32 AITileListRoadTile::Valuate(int32 tile) const
{
return ::IsTileType(tile, MP_STREET) && ::GetRoadTileType(tile) != ROAD_TILE_DEPOT;
}
int32 AITileListCargoAcceptance::Valuate(int32 tile) const
{
return AITile::GetCargoAcceptance(tile, this->cargo_type);
}
int32 AITileListDistanceManhattanToTile::Valuate(int32 tile) const
{
return AIMap::DistanceManhattan(this->tile, tile);
}
int32 AITileListDistanceSquareToTile::Valuate(int32 tile) const
{
return AIMap::DistanceSquare(this->tile, tile);
}