Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef STATION_TYPE_H
00013 #define STATION_TYPE_H
00014
00015 #include "core/smallvec_type.hpp"
00016 #include "tilearea_type.h"
00017 #include <list>
00018
00019 typedef uint16 StationID;
00020 typedef uint16 RoadStopID;
00021
00022 struct BaseStation;
00023 struct Station;
00024 struct RoadStop;
00025 struct StationSpec;
00026 struct Waypoint;
00027
00028 static const StationID NEW_STATION = 0xFFFE;
00029 static const StationID INVALID_STATION = 0xFFFF;
00030
00032 enum StationType {
00033 STATION_RAIL,
00034 STATION_AIRPORT,
00035 STATION_TRUCK,
00036 STATION_BUS,
00037 STATION_OILRIG,
00038 STATION_DOCK,
00039 STATION_BUOY,
00040 STATION_WAYPOINT,
00041 };
00042
00044 enum RoadStopType {
00045 ROADSTOP_BUS,
00046 ROADSTOP_TRUCK,
00047 };
00048
00050 enum StationFacility {
00051 FACIL_NONE = 0,
00052 FACIL_TRAIN = 1 << 0,
00053 FACIL_TRUCK_STOP = 1 << 1,
00054 FACIL_BUS_STOP = 1 << 2,
00055 FACIL_AIRPORT = 1 << 3,
00056 FACIL_DOCK = 1 << 4,
00057 FACIL_WAYPOINT = 1 << 7,
00058 };
00059 DECLARE_ENUM_AS_BIT_SET(StationFacility)
00060 typedef SimpleTinyEnumT<StationFacility, byte> StationFacilityByte;
00061
00063 enum StationHadVehicleOfType {
00064 HVOT_NONE = 0,
00065 HVOT_TRAIN = 1 << 1,
00066 HVOT_BUS = 1 << 2,
00067 HVOT_TRUCK = 1 << 3,
00068 HVOT_AIRCRAFT = 1 << 4,
00069 HVOT_SHIP = 1 << 5,
00070
00071 HVOT_WAYPOINT = 1 << 6,
00072 };
00073 DECLARE_ENUM_AS_BIT_SET(StationHadVehicleOfType)
00074 typedef SimpleTinyEnumT<StationHadVehicleOfType, byte> StationHadVehicleOfTypeByte;
00075
00077 enum CatchmentArea {
00078 CA_NONE = 0,
00079 CA_BUS = 3,
00080 CA_TRUCK = 3,
00081 CA_TRAIN = 4,
00082 CA_DOCK = 5,
00083
00084 CA_UNMODIFIED = 4,
00085
00086 MAX_CATCHMENT = 10,
00087 };
00088
00089 static const uint MAX_LENGTH_STATION_NAME_CHARS = 32;
00090
00092 typedef std::list<StationID> StationIDList;
00093
00095 typedef SmallVector<Station *, 2> StationList;
00096
00101 class StationFinder : TileArea {
00102 StationList stations;
00103 public:
00108 StationFinder(const TileArea &area) : TileArea(area) {}
00109 const StationList *GetStations();
00110 };
00111
00112 #endif