Changeset - r1494:9292d08cb137
[Not reviewed]
master
0 2 0
pasky - 19 years ago 2005-03-12 08:52:40
pasky@openttd.org
(svn r1998) Give penalty 100 to the AI for using foundations (buildonslopes). This prevents it from building long road lines on foundations unless really necessary.
2 files changed with 11 insertions and 1 deletions:
0 comments (0 inline, 0 general)
ai.h
Show inline comments
 
@@ -37,6 +37,8 @@
 
#define AI_PATHFINDER_PENALTY 150
 
// The penalty given to a tile that is going up
 
#define AI_PATHFINDER_TILE_GOES_UP_PENALTY 450
 
// The penalty given to a tile which would have to use fundation
 
#define AI_PATHFINDER_FOUNDATION_PENALTY 100
 
// Changing direction is a penalty, to prevent curved ways (with that: slow ways)
 
#define AI_PATHFINDER_DIRECTION_CHANGE_PENALTY 200
 
// Same penalty, only for when road already exists
ai_pathfinder.c
Show inline comments
 
@@ -394,7 +394,11 @@ static int32 AyStar_AiPathFinder_Calcula
 
	}
 

	
 
	// We should give a penalty when the tile is going up or down.. this is one way to do so!
 
	//  Too bad we have to count it from the parent.. but that is not so bad
 
	//  Too bad we have to count it from the parent.. but that is not so bad.
 
	// We also dislike long routes on slopes, since they do not look too realistic
 
	//  when there is a flat land all around, they are more expensive to build, and
 
	//  especially they essentially block the ability to connect or cross the road
 
	//  from one side.
 
	if (parent_ti.tileh != 0 && parent->path.parent != NULL) {
 
		// Skip if the tile was from a bridge or tunnel
 
		if (parent->path.node.user_data[0] == 0 && current->user_data[0] == 0) {
 
@@ -403,12 +407,16 @@ static int32 AyStar_AiPathFinder_Calcula
 
				// Maybe is BRIDGE_NO_FOUNDATION a bit strange here, but it contains just the right information..
 
				if (r >= 15 || (r == 0 && (BRIDGE_NO_FOUNDATION & (1 << ti.tileh)))) {
 
					res += AI_PATHFINDER_TILE_GOES_UP_PENALTY;
 
				} else {
 
					res += AI_PATHFINDER_FOUNDATION_PENALTY;
 
				}
 
			} else {
 
				if (!(IsRoad(parent->path.node.tile) && IsTileType(parent->path.node.tile, MP_TUNNELBRIDGE))) {
 
					r = GetRoadFoundation(parent_ti.tileh, AiNew_GetRoadDirection(parent->path.parent->node.tile, parent->path.node.tile, current->tile));
 
					if (r >= 15 || r == 0)
 
						res += AI_PATHFINDER_TILE_GOES_UP_PENALTY;
 
					else
 
						res += AI_PATHFINDER_FOUNDATION_PENALTY;
 
				}
 
			}
 
		}
0 comments (0 inline, 0 general)