00001 /* $Id: ai_engine.hpp 15524 2009-02-19 19:44:19Z yexo $ */ 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 00088 static int32 GetReliability(EngineID engine_id); 00089 00100 static int32 GetMaxSpeed(EngineID engine_id); 00101 00108 static Money GetPrice(EngineID engine_id); 00109 00117 static int32 GetMaxAge(EngineID engine_id); 00118 00126 static Money GetRunningCost(EngineID engine_id); 00127 00135 static int32 GetPower(EngineID engine_id); 00136 00144 static int32 GetWeight(EngineID engine_id); 00145 00153 static int32 GetMaxTractiveEffort(EngineID engine_id); 00154 00161 static AIVehicle::VehicleType GetVehicleType(EngineID engine_id); 00162 00170 static bool IsWagon(EngineID engine_id); 00171 00183 static bool CanRunOnRail(EngineID engine_id, AIRail::RailType track_rail_type); 00184 00194 static bool HasPowerOnRail(EngineID engine_id, AIRail::RailType track_rail_type); 00195 00203 static AIRoad::RoadType GetRoadType(EngineID engine_id); 00204 00212 static AIRail::RailType GetRailType(EngineID engine_id); 00213 00221 static bool IsArticulated(EngineID engine_id); 00222 00230 static AIAirport::PlaneType GetPlaneType(EngineID engine_id); 00231 }; 00232 00233 #endif /* AI_ENGINE_HPP */