src/ai/api/ai_vehicle.cpp
branchnoai
changeset 9662 67a558a1aeb8
parent 9654 b836eb5c521f
child 9672 18c71ca987e4
--- a/src/ai/api/ai_vehicle.cpp	Sun Jul 15 00:15:23 2007 +0000
+++ b/src/ai/api/ai_vehicle.cpp	Sun Jul 15 00:31:03 2007 +0000
@@ -9,6 +9,7 @@
 #include "../../depot.h"
 #include "../../engine.h"
 #include "../../player.h"
+#include "../../aircraft.h"
 
 /* static */ bool AIVehicle::IsValidEngine(EngineID engine_id)
 {
@@ -26,6 +27,7 @@
 
 	EngineID best_engine = INVALID_ENGINE;
 	EngineID engine_id;
+	uint best_cargo = 0;
 
 	FOR_ALL_ENGINEIDS_OF_TYPE(engine_id, veh_type) {
 		/* Is the vehicle available for this player */
@@ -38,7 +40,24 @@
 				case VEH_AIRCRAFT: if (cargo != CT_PASSENGERS && !CanRefitTo(engine_id, cargo)) continue; break;
 				default: NOT_REACHED();
 			}
-			best_engine = engine_id;
+			switch (veh_type) {
+				case VEH_ROAD:
+				case VEH_TRAIN:
+				case VEH_SHIP:
+					best_engine = engine_id;
+					break;
+				case VEH_AIRCRAFT:
+					if (cargo != CT_MAIL && best_cargo < AircraftVehInfo(engine_id)->passenger_capacity) {
+						best_engine = engine_id;
+						best_cargo = AircraftVehInfo(engine_id)->passenger_capacity;
+					}
+					if (cargo == CT_MAIL && best_cargo < AircraftVehInfo(engine_id)->mail_capacity) {
+						best_engine = engine_id;
+						best_cargo = AircraftVehInfo(engine_id)->mail_capacity;
+					}
+					break;
+				default: NOT_REACHED();
+			}
 		}
 	}