src/ai/api/ai_tilelist_valuator.cpp
author truelight
Sun, 29 Apr 2007 12:35:39 +0000
branchnoai
changeset 9603 49323bf80ebd
parent 9592 c5c09cfde63a
child 9604 89b96457aae4
permissions -rw-r--r--
(svn r9747) [NoAI] -Add: added AITileListRoadTile and AITileListNeighbourRoad as Valuators for AITileList
#include "ai_tilelist_valuator.hpp"
#include "../../tile.h"
#include "../../road_map.h"

int32 AITileListBuildable::Valuate(int32 tile) const
{
	switch (::GetTileType(tile)) {
		default: return 1;
		case MP_VOID:
		case MP_HOUSE:
		case MP_STATION:
		case MP_INDUSTRY:
		case MP_UNMOVABLE: return 0;
	}
}

int32 AITileListNeighbourRoad::Valuate(int32 tile) const
{
	int32 neighbour = 0;

	if (::IsTileType(tile + ::TileXY(-1, 0), MP_STREET) && ::GetRoadTileType(tile + ::TileXY(-1, 0)) != ROAD_TILE_DEPOT)
		neighbour++;
	if (::IsTileType(tile + ::TileXY( 1, 0), MP_STREET) && ::GetRoadTileType(tile + ::TileXY( 1, 0)) != ROAD_TILE_DEPOT)
		neighbour++;
	if (::IsTileType(tile + ::TileXY( 0,-1), MP_STREET) && ::GetRoadTileType(tile + ::TileXY( 0,-1)) != ROAD_TILE_DEPOT)
		neighbour++;
	if (::IsTileType(tile + ::TileXY( 0, 1), MP_STREET) && ::GetRoadTileType(tile + ::TileXY( 0, 1)) != ROAD_TILE_DEPOT)
		neighbour++;

	return neighbour;
}

int32 AITileListRoadTile::Valuate(int32 tile) const
{
	return ::IsTileType(tile, MP_STREET) && ::GetRoadTileType(tile) != ROAD_TILE_DEPOT;
}