00001 /* $Id: ai_engine.hpp 15307 2009-02-01 16:21:18Z frosch $ */ 00002 00005 #ifndef AI_ENGINE_HPP 00006 #define AI_ENGINE_HPP 00007 00008 #include "ai_object.hpp" 00009 #include "ai_vehicle.hpp" 00010 #include "ai_road.hpp" 00011 #include "ai_rail.hpp" 00012 #include "ai_airport.hpp" 00013 00017 class AIEngine : public AIObject { 00018 public: 00019 static const char *GetClassName() { return "AIEngine"; } 00020 00026 static bool IsValidEngine(EngineID engine_id); 00027 00034 static char *GetName(EngineID engine_id); 00035 00043 static CargoID GetCargoType(EngineID engine_id); 00044 00055 static bool CanRefitCargo(EngineID engine_id, CargoID cargo_id); 00056 00068 static bool CanPullCargo(EngineID engine_id, CargoID cargo_id); 00069 00077 static int32 GetCapacity(EngineID engine_id); 00078 00087 static int32 GetReliability(EngineID engine_id); 00088 00098 static int32 GetMaxSpeed(EngineID engine_id); 00099 00106 static Money GetPrice(EngineID engine_id); 00107 00115 static int32 GetMaxAge(EngineID engine_id); 00116 00124 static Money GetRunningCost(EngineID engine_id); 00125 00132 static AIVehicle::VehicleType GetVehicleType(EngineID engine_id); 00133 00141 static bool IsWagon(EngineID engine_id); 00142 00154 static bool CanRunOnRail(EngineID engine_id, AIRail::RailType track_rail_type); 00155 00165 static bool HasPowerOnRail(EngineID engine_id, AIRail::RailType track_rail_type); 00166 00174 static AIRoad::RoadType GetRoadType(EngineID engine_id); 00175 00183 static AIRail::RailType GetRailType(EngineID engine_id); 00184 00192 static bool IsArticulated(EngineID engine_id); 00193 00201 static AIAirport::PlaneType GetPlaneType(EngineID engine_id); 00202 }; 00203 00204 #endif /* AI_ENGINE_HPP */