ai_build.c
changeset 1713 659ca3025cc5
parent 1299 39c06aba09aa
child 1891 862800791170
--- a/ai_build.c	Wed Apr 20 22:24:39 2005 +0000
+++ b/ai_build.c	Wed Apr 20 22:30:40 2005 +0000
@@ -12,7 +12,7 @@
 //  Params:
 //    tile : tile where HQ is going to be build
 bool AiNew_Build_CompanyHQ(Player *p, uint tile) {
-	if (DoCommandByTile(tile, 0, 0, DC_AUTO | DC_NO_WATER, CMD_BUILD_COMPANY_HQ) == CMD_ERROR)
+	if (CmdFailed(DoCommandByTile(tile, 0, 0, DC_AUTO | DC_NO_WATER, CMD_BUILD_COMPANY_HQ)))
 		return false;
 	DoCommandByTile(tile, 0, 0, DC_EXEC | DC_AUTO | DC_NO_WATER, CMD_BUILD_COMPANY_HQ);
 	return true;
@@ -29,10 +29,11 @@
 int AiNew_Build_Station(Player *p, byte type, uint tile, byte length, byte numtracks, byte direction, byte flag) {
 	if (type == AI_TRAIN)
 		return DoCommandByTile(tile, direction + (numtracks << 8) + (length << 16), 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_RAILROAD_STATION);
-	else if (type == AI_BUS)
+
+	if (type == AI_BUS)
 		return DoCommandByTile(tile, direction, RS_BUS, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_STOP);
-	else
-		return DoCommandByTile(tile, direction, RS_TRUCK, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_STOP);
+
+	return DoCommandByTile(tile, direction, RS_TRUCK, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_STOP);
 }
 
 // Builds a brdige. The second best out of the ones available for this player
@@ -61,8 +62,8 @@
 	// Now, simply, build the bridge!
 	if (p->ainew.tbt == AI_TRAIN)
 		return DoCommandByTile(tile_a, tile_b, (0<<8) + type2, flag | DC_AUTO, CMD_BUILD_BRIDGE);
-	else
-		return DoCommandByTile(tile_a, tile_b, (0x80 << 8) + type2, flag | DC_AUTO, CMD_BUILD_BRIDGE);
+
+	return DoCommandByTile(tile_a, tile_b, (0x80 << 8) + type2, flag | DC_AUTO, CMD_BUILD_BRIDGE);
 }
 
 
@@ -97,7 +98,7 @@
      		cost += DoCommandByTile(route[part], 0, 0, flag, CMD_BUILD_TUNNEL);
      		PathFinderInfo->position++;
      		// TODO: problems!
-     		if (cost == CMD_ERROR) {
+     		if (CmdFailed(cost)) {
      			DEBUG(ai,0)("[AiNew - BuildPath] We have a serious problem: tunnel could not be build!");
 				return 0;
      		}
@@ -108,7 +109,7 @@
      		cost += AiNew_Build_Bridge(p, route[part], route[part-1], flag);
      		PathFinderInfo->position++;
      		// TODO: problems!
-     		if (cost == CMD_ERROR) {
+     		if (CmdFailed(cost)) {
      			DEBUG(ai,0)("[AiNew - BuildPath] We have a serious problem: bridge could not be build!");
 				return 0;
      		}
@@ -126,7 +127,7 @@
 	     		old_dir = dir;
 	     		// Build the tile
 	     		res = DoCommandByTile(route[part], 0, dir, flag, CMD_BUILD_SINGLE_RAIL);
-	     		if (res == CMD_ERROR) {
+	     		if (CmdFailed(res)) {
 	     			// Problem.. let's just abort it all!
 	     			p->ainew.state = AI_STATE_NOTHING;
 	     			return 0;
@@ -147,7 +148,7 @@
      		cost += DoCommandByTile(route[part], 0x200, 0, flag, CMD_BUILD_TUNNEL);
      		PathFinderInfo->position++;
      		// TODO: problems!
-     		if (cost == CMD_ERROR) {
+     		if (CmdFailed(cost)) {
      			DEBUG(ai,0)("[AiNew - BuildPath] We have a serious problem: tunnel could not be build!");
 				return 0;
      		}
@@ -158,7 +159,7 @@
      		cost += AiNew_Build_Bridge(p, route[part], route[part+1], flag);
      		PathFinderInfo->position++;
      		// TODO: problems!
-     		if (cost == CMD_ERROR) {
+     		if (CmdFailed(cost)) {
      			DEBUG(ai,0)("[AiNew - BuildPath] We have a serious problem: bridge could not be build!");
 				return 0;
      		}
@@ -181,15 +182,14 @@
 	     			// Build the tile
 	     			res = DoCommandByTile(route[part], dir, 0, flag | DC_NO_WATER, CMD_BUILD_ROAD);
 	     			// Currently, we ignore CMD_ERRORs!
-	     			if (res == CMD_ERROR && flag == DC_EXEC && !IsTileType(route[part], MP_STREET) && !EnsureNoVehicle(route[part])) {
-     					// Problem.. let's just abort it all!
-     					DEBUG(ai,0)("Darn, the route could not be builded.. aborting!");
-    	     			p->ainew.state = AI_STATE_NOTHING;
-    	     			return 0;
-    	     		} else {
-    	     			if (res != CMD_ERROR)
-    	     				cost += res;
-    	     		}
+						if (CmdFailed(res) && flag == DC_EXEC && !IsTileType(route[part], MP_STREET) && !EnsureNoVehicle(route[part])) {
+							// Problem.. let's just abort it all!
+							DEBUG(ai,0)("Darn, the route could not be builded.. aborting!");
+							p->ainew.state = AI_STATE_NOTHING;
+							return 0;
+						}
+
+    	     	if (!CmdFailed(res)) cost += res;
 		     	}
 	     		// Go to the next tile
 	     		part++;
@@ -213,7 +213,7 @@
         // Not supported yet
         return -1;
     } else {
-        int start, count, i, r = CMD_ERROR;
+        int start, count, i, ret = CMD_ERROR;
         start = _cargoc.ai_roadveh_start[p->ainew.cargo];
         count = _cargoc.ai_roadveh_count[p->ainew.cargo];
 
@@ -223,11 +223,11 @@
         	// Also, check if the reliability of the vehicle is above the AI_VEHICLE_MIN_RELIABILTY
         	if (!HASBIT(_engines[i].player_avail, _current_player) || _engines[i].reliability * 100 < AI_VEHICLE_MIN_RELIABILTY << 16) continue;
         	// Can we build it?
-        	r = DoCommandByTile(0, i, 0, DC_QUERY_COST, CMD_BUILD_ROAD_VEH);
-        	if (r != CMD_ERROR) break;
+        	ret = DoCommandByTile(0, i, 0, DC_QUERY_COST, CMD_BUILD_ROAD_VEH);
+        	if (!CmdFailed(ret)) break;
        	}
        	// We did not find a vehicle :(
-       	if (r == CMD_ERROR) { return -1; }
+       	if (CmdFailed(ret)) { return -1; }
        	return i;
     }
 }
@@ -237,25 +237,24 @@
 	int i = AiNew_PickVehicle(p);
 	if (i == -1) return CMD_ERROR;
 
-	if (p->ainew.tbt == AI_TRAIN) {
+	if (p->ainew.tbt == AI_TRAIN)
 		return CMD_ERROR;
-	} else {
-		return DoCommandByTile(tile, i, 0, flag, CMD_BUILD_ROAD_VEH);
-	}
+
+	return DoCommandByTile(tile, i, 0, flag, CMD_BUILD_ROAD_VEH);
 }
 
-int AiNew_Build_Depot(Player *p, uint tile, byte direction, byte flag) {
+int AiNew_Build_Depot(Player *p, uint tile, byte direction, byte flag)
+{
 	static const byte _roadbits_by_dir[4] = {2,1,8,4};
-	int r, r2;
-    if (p->ainew.tbt == AI_TRAIN) {
+	int ret, ret2;
+    if (p->ainew.tbt == AI_TRAIN)
     	return DoCommandByTile(tile, 0, direction, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_TRAIN_DEPOT);
-    } else {
-    	r = DoCommandByTile(tile, direction, 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_DEPOT);
-    	if (r == CMD_ERROR) return r;
-    	// Try to build the road from the depot
-    	r2 = DoCommandByTile(tile + TileOffsByDir(direction), _roadbits_by_dir[direction], 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD);
-    	// If it fails, ignore it..
-    	if (r2 == CMD_ERROR) return r;
-    	return r + r2;
-    }
+
+		ret = DoCommandByTile(tile, direction, 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_DEPOT);
+		if (CmdFailed(ret)) return ret;
+		// Try to build the road from the depot
+		ret2 = DoCommandByTile(tile + TileOffsByDir(direction), _roadbits_by_dir[direction], 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD);
+		// If it fails, ignore it..
+		if (CmdFailed(ret2)) return ret;
+		return ret + ret2;
 }