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 VT_RAIL,
00076 VT_ROAD,
00077 VT_WATER,
00078 VT_AIR,
00079 VT_INVALID = 0xFF,
00080 };
00081
00085 enum VehicleState {
00086 VS_RUNNING,
00087 VS_STOPPED,
00088 VS_IN_DEPOT,
00089 VS_AT_STATION,
00090 VS_BROKEN,
00091 VS_CRASHED,
00092
00093 VS_INVALID = 0xFF,
00094 };
00095
00096 static const VehicleID VEHICLE_INVALID = 0xFFFFF;
00097
00103 static bool IsValidVehicle(VehicleID vehicle_id);
00104
00111 static int32 GetNumWagons(VehicleID vehicle_id);
00112
00123 static bool SetName(VehicleID vehicle_id, Text *name);
00124
00131 static char *GetName(VehicleID vehicle_id);
00132
00140 static ScriptCompany::CompanyID GetOwner(VehicleID vehicle_id);
00141
00148 static TileIndex GetLocation(VehicleID vehicle_id);
00149
00156 static EngineID GetEngineType(VehicleID vehicle_id);
00157
00166 static EngineID GetWagonEngineType(VehicleID vehicle_id, int wagon);
00167
00174 static int32 GetUnitNumber(VehicleID vehicle_id);
00175
00183 static int32 GetAge(VehicleID vehicle_id);
00184
00194 static int32 GetWagonAge(VehicleID vehicle_id, int wagon);
00195
00203 static int32 GetMaxAge(VehicleID vehicle_id);
00204
00212 static int32 GetAgeLeft(VehicleID vehicle_id);
00213
00223 static int32 GetCurrentSpeed(VehicleID vehicle_id);
00224
00231 static VehicleState GetState(VehicleID vehicle_id);
00232
00242 static Money GetRunningCost(VehicleID vehicle_id);
00243
00250 static Money GetProfitThisYear(VehicleID vehicle_id);
00251
00258 static Money GetProfitLastYear(VehicleID vehicle_id);
00259
00260
00268 static Money GetCurrentValue(VehicleID vehicle_id);
00269
00276 static ScriptVehicle::VehicleType GetVehicleType(VehicleID vehicle_id);
00277
00285 static ScriptRoad::RoadType GetRoadType(VehicleID vehicle_id);
00286
00293 static bool IsInDepot(VehicleID vehicle_id);
00294
00301 static bool IsStoppedInDepot(VehicleID vehicle_id);
00302
00321 static VehicleID BuildVehicle(TileIndex depot, EngineID engine_id);
00322
00338 static VehicleID CloneVehicle(TileIndex depot, VehicleID vehicle_id, bool share_orders);
00339
00354 static bool MoveWagon(VehicleID source_vehicle_id, int source_wagon, int dest_vehicle_id, int dest_wagon);
00355
00370 static bool MoveWagonChain(VehicleID source_vehicle_id, int source_wagon, int dest_vehicle_id, int dest_wagon);
00371
00382 static int GetRefitCapacity(VehicleID vehicle_id, CargoID cargo);
00383
00398 static bool RefitVehicle(VehicleID vehicle_id, CargoID cargo);
00399
00411 static bool SellVehicle(VehicleID vehicle_id);
00412
00426 static bool SellWagon(VehicleID vehicle_id, int wagon);
00427
00441 static bool SellWagonChain(VehicleID vehicle_id, int wagon);
00442
00452 static bool SendVehicleToDepot(VehicleID vehicle_id);
00453
00463 static bool SendVehicleToDepotForServicing(VehicleID vehicle_id);
00464
00475 static bool StartStopVehicle(VehicleID vehicle_id);
00476
00487 static bool ReverseVehicle(VehicleID vehicle_id);
00488
00497 static int32 GetCapacity(VehicleID vehicle_id, CargoID cargo);
00498
00506 static int GetLength(VehicleID vehicle_id);
00507
00516 static int32 GetCargoLoad(VehicleID vehicle_id, CargoID cargo);
00517
00523 static GroupID GetGroupID(VehicleID vehicle_id);
00524
00532 static bool IsArticulated(VehicleID vehicle_id);
00533
00540 static bool HasSharedOrders(VehicleID vehicle_id);
00541
00548 static int GetReliability(VehicleID vehicle_id);
00549
00558 static uint GetMaximumOrderDistance(VehicleID vehicle_id);
00559
00560 private:
00564 static bool _SellWagonInternal(VehicleID vehicle_id, int wagon, bool sell_attached_wagons);
00565
00569 static bool _MoveWagonInternal(VehicleID source_vehicle_id, int source_wagon, bool move_attached_wagons, int dest_vehicle_id, int dest_wagon);
00570 };
00571
00572 #endif