src/ai/api/ai_tilelist_valuator.cpp
author rubidium
Sun, 15 Jul 2007 16:39:11 +0000
branchnoai
changeset 9668 6fe3d2cb9655
parent 9658 e7675771bca4
child 9694 e72987579514
permissions -rw-r--r--
(svn r10582) [NoAI] -Codechange: allow getting the president and company names of other companies as well as their company value and bank balance.
#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, this->width, this->height, this->radius);
}

int32 AITileListDistanceManhattanToTile::Valuate(int32 tile) const
{
	return AIMap::DistanceManhattan(this->tile, tile);
}

int32 AITileListDistanceSquareToTile::Valuate(int32 tile) const
{
	return AIMap::DistanceSquare(this->tile, tile);
}