00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef SCRIPT_VEHICLE_HPP
00013 #define SCRIPT_VEHICLE_HPP
00014
00015 #include "script_road.hpp"
00016
00021 class ScriptVehicle : public ScriptObject {
00022 public:
00026 enum ErrorMessages {
00028 ERR_VEHICLE_BASE = ScriptError::ERR_CAT_VEHICLE << ScriptError::ERR_CAT_BIT_SIZE,
00029
00031 ERR_VEHICLE_TOO_MANY,
00032
00034 ERR_VEHICLE_NOT_AVAILABLE,
00035
00037 ERR_VEHICLE_BUILD_DISABLED,
00038
00040 ERR_VEHICLE_WRONG_DEPOT,
00041
00043 ERR_VEHICLE_CANNOT_SEND_TO_DEPOT,
00044
00046 ERR_VEHICLE_CANNOT_START_STOP,
00047
00049 ERR_VEHICLE_CANNOT_TURN,
00050
00052 ERR_VEHICLE_CANNOT_REFIT,
00053
00055 ERR_VEHICLE_IS_DESTROYED,
00056
00058 ERR_VEHICLE_NOT_IN_DEPOT,
00059
00061 ERR_VEHICLE_IN_FLIGHT,
00062
00064 ERR_VEHICLE_NO_POWER,
00065
00067 ERR_VEHICLE_TOO_LONG,
00068 };
00069
00074 enum VehicleType {
00075
00076 VT_RAIL,
00077 VT_ROAD,
00078 VT_WATER,
00079 VT_AIR,
00080 VT_INVALID = 0xFF,
00081 };
00082
00086 enum VehicleState {
00087 VS_RUNNING,
00088 VS_STOPPED,
00089 VS_IN_DEPOT,
00090 VS_AT_STATION,
00091 VS_BROKEN,
00092 VS_CRASHED,
00093
00094 VS_INVALID = 0xFF,
00095 };
00096
00097 static const VehicleID VEHICLE_INVALID = 0xFFFFF;
00098
00104 static bool IsValidVehicle(VehicleID vehicle_id);
00105
00112 static int32 GetNumWagons(VehicleID vehicle_id);
00113
00124 static bool SetName(VehicleID vehicle_id, const char *name);
00125
00132 static char *GetName(VehicleID vehicle_id);
00133
00140 static TileIndex GetLocation(VehicleID vehicle_id);
00141
00148 static EngineID GetEngineType(VehicleID vehicle_id);
00149
00158 static EngineID GetWagonEngineType(VehicleID vehicle_id, int wagon);
00159
00166 static int32 GetUnitNumber(VehicleID vehicle_id);
00167
00175 static int32 GetAge(VehicleID vehicle_id);
00176
00186 static int32 GetWagonAge(VehicleID vehicle_id, int wagon);
00187
00195 static int32 GetMaxAge(VehicleID vehicle_id);
00196
00204 static int32 GetAgeLeft(VehicleID vehicle_id);
00205
00215 static int32 GetCurrentSpeed(VehicleID vehicle_id);
00216
00223 static VehicleState GetState(VehicleID vehicle_id);
00224
00234 static Money GetRunningCost(VehicleID vehicle_id);
00235
00242 static Money GetProfitThisYear(VehicleID vehicle_id);
00243
00250 static Money GetProfitLastYear(VehicleID vehicle_id);
00251
00252
00260 static Money GetCurrentValue(VehicleID vehicle_id);
00261
00268 static ScriptVehicle::VehicleType GetVehicleType(VehicleID vehicle_id);
00269
00277 static ScriptRoad::RoadType GetRoadType(VehicleID vehicle_id);
00278
00285 static bool IsInDepot(VehicleID vehicle_id);
00286
00293 static bool IsStoppedInDepot(VehicleID vehicle_id);
00294
00312 static VehicleID BuildVehicle(TileIndex depot, EngineID engine_id);
00313
00328 static VehicleID CloneVehicle(TileIndex depot, VehicleID vehicle_id, bool share_orders);
00329
00343 static bool MoveWagon(VehicleID source_vehicle_id, int source_wagon, int dest_vehicle_id, int dest_wagon);
00344
00358 static bool MoveWagonChain(VehicleID source_vehicle_id, int source_wagon, int dest_vehicle_id, int dest_wagon);
00359
00370 static int GetRefitCapacity(VehicleID vehicle_id, CargoID cargo);
00371
00385 static bool RefitVehicle(VehicleID vehicle_id, CargoID cargo);
00386
00397 static bool SellVehicle(VehicleID vehicle_id);
00398
00411 static bool SellWagon(VehicleID vehicle_id, int wagon);
00412
00425 static bool SellWagonChain(VehicleID vehicle_id, int wagon);
00426
00435 static bool SendVehicleToDepot(VehicleID vehicle_id);
00436
00445 static bool SendVehicleToDepotForServicing(VehicleID vehicle_id);
00446
00456 static bool StartStopVehicle(VehicleID vehicle_id);
00457
00467 static bool ReverseVehicle(VehicleID vehicle_id);
00468
00477 static int32 GetCapacity(VehicleID vehicle_id, CargoID cargo);
00478
00486 static int GetLength(VehicleID vehicle_id);
00487
00496 static int32 GetCargoLoad(VehicleID vehicle_id, CargoID cargo);
00497
00503 static GroupID GetGroupID(VehicleID vehicle_id);
00504
00512 static bool IsArticulated(VehicleID vehicle_id);
00513
00520 static bool HasSharedOrders(VehicleID vehicle_id);
00521
00528 static int GetReliability(VehicleID vehicle_id);
00529
00538 static uint GetMaximumOrderDistance(VehicleID vehicle_id);
00539
00540 private:
00544 static bool _SellWagonInternal(VehicleID vehicle_id, int wagon, bool sell_attached_wagons);
00545
00549 static bool _MoveWagonInternal(VehicleID source_vehicle_id, int source_wagon, bool move_attached_wagons, int dest_vehicle_id, int dest_wagon);
00550 };
00551
00552 #endif