OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

station_type.h
Go to the documentation of this file.
1 /* $Id: station_type.h 25890 2013-10-20 13:47:11Z fonsinchen $ */
2
3 /*
4 * This file is part of OpenTTD.
5 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8 */
9
12 #ifndef STATION_TYPE_H
13 #define STATION_TYPE_H
14
15 #include "core/smallvec_type.hpp"
16 #include "core/smallstack_type.hpp"
17 #include "tilearea_type.h"
18 #include <list>
19
20 typedef uint16 StationID;
21 typedef uint16 RoadStopID;
22
23 struct BaseStation;
24 struct Station;
25 struct RoadStop;
26 struct StationSpec;
27 struct Waypoint;
28
29 static const StationID NEW_STATION = 0xFFFE;
30 static const StationID INVALID_STATION = 0xFFFF;
31
32 typedef SmallStack<StationID, StationID, INVALID_STATION, 8, 0xFFFD> StationIDStack;
33
35 enum StationType {
36 STATION_RAIL,
37 STATION_AIRPORT,
38 STATION_TRUCK,
39 STATION_BUS,
40 STATION_OILRIG,
41 STATION_DOCK,
42 STATION_BUOY,
43 STATION_WAYPOINT,
44 };
45
47 enum RoadStopType {
48 ROADSTOP_BUS,
49 ROADSTOP_TRUCK,
50 };
51
53 enum StationFacility {
54 FACIL_NONE = 0,
55 FACIL_TRAIN = 1 << 0,
56 FACIL_TRUCK_STOP = 1 << 1,
57 FACIL_BUS_STOP = 1 << 2,
58 FACIL_AIRPORT = 1 << 3,
59 FACIL_DOCK = 1 << 4,
60 FACIL_WAYPOINT = 1 << 7,
61 };
62 DECLARE_ENUM_AS_BIT_SET(StationFacility)
63 typedef SimpleTinyEnumT<StationFacility, byte> StationFacilityByte;
64
66 enum StationHadVehicleOfType {
67 HVOT_NONE = 0,
68 HVOT_TRAIN = 1 << 1,
69 HVOT_BUS = 1 << 2,
70 HVOT_TRUCK = 1 << 3,
71 HVOT_AIRCRAFT = 1 << 4,
72 HVOT_SHIP = 1 << 5,
73
74 HVOT_WAYPOINT = 1 << 6,
75 };
76 DECLARE_ENUM_AS_BIT_SET(StationHadVehicleOfType)
77 typedef SimpleTinyEnumT<StationHadVehicleOfType, byte> StationHadVehicleOfTypeByte;
78
80 enum CatchmentArea {
81 CA_NONE = 0,
82 CA_BUS = 3,
83 CA_TRUCK = 3,
84 CA_TRAIN = 4,
85 CA_DOCK = 5,
86
87 CA_UNMODIFIED = 4,
88
89 MAX_CATCHMENT = 10,
90 };
91
92 static const uint MAX_LENGTH_STATION_NAME_CHARS = 32;
93
95 typedef std::list<StationID> StationIDList;
96
98 typedef SmallVector<Station *, 2> StationList;
99
104 class StationFinder : TileArea {
105 StationList stations;
106 public:
111 StationFinder(const TileArea &area) : TileArea(area) {}
112 const StationList *GetStations();
113 };
114
115 #endif /* STATION_TYPE_H */