00001 /* $Id: ai_engine.hpp 17080 2009-08-05 23:57:41Z rubidium $ */ 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 int32 GetDesignDate(EngineID engine_id); 00162 00169 static AIVehicle::VehicleType GetVehicleType(EngineID engine_id); 00170 00178 static bool IsWagon(EngineID engine_id); 00179 00191 static bool CanRunOnRail(EngineID engine_id, AIRail::RailType track_rail_type); 00192 00202 static bool HasPowerOnRail(EngineID engine_id, AIRail::RailType track_rail_type); 00203 00211 static AIRoad::RoadType GetRoadType(EngineID engine_id); 00212 00220 static AIRail::RailType GetRailType(EngineID engine_id); 00221 00229 static bool IsArticulated(EngineID engine_id); 00230 00238 static AIAirport::PlaneType GetPlaneType(EngineID engine_id); 00239 }; 00240 00241 #endif /* AI_ENGINE_HPP */