--- 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();
+ }
}
}