OpenTTD

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

- File List
- Globals

order_type.h
Go to the documentation of this file.
1 /* $Id: order_type.h 25735 2013-08-20 20:05:31Z 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 ORDER_TYPE_H
13 #define ORDER_TYPE_H
14
15 #include "core/enum_type.hpp"
16
17 typedef byte VehicleOrderID;
18 typedef uint16 OrderID;
19 typedef uint16 OrderListID;
20 typedef uint16 DestinationID;
21
23 static const VehicleOrderID INVALID_VEH_ORDER_ID = 0xFF;
25 static const VehicleOrderID MAX_VEH_ORDER_ID = INVALID_VEH_ORDER_ID - 1;
26
28 static const OrderID INVALID_ORDER = 0xFFFF;
29
34 static const uint IMPLICIT_ORDER_ONLY_CAP = 32;
35
37 enum OrderType {
38 OT_BEGIN = 0,
39 OT_NOTHING = 0,
40 OT_GOTO_STATION = 1,
41 OT_GOTO_DEPOT = 2,
42 OT_LOADING = 3,
43 OT_LEAVESTATION = 4,
44 OT_DUMMY = 5,
45 OT_GOTO_WAYPOINT = 6,
46 OT_CONDITIONAL = 7,
47 OT_IMPLICIT = 8,
48 OT_END
49 };
50
52 typedef SimpleTinyEnumT<OrderType, byte> OrderTypeByte;
53
54
58 enum OrderUnloadFlags {
59 OUF_UNLOAD_IF_POSSIBLE = 0,
60 OUFB_UNLOAD = 1 << 0,
61 OUFB_TRANSFER = 1 << 1,
62 OUFB_NO_UNLOAD = 1 << 2,
63 };
64
68 enum OrderLoadFlags {
69 OLF_LOAD_IF_POSSIBLE = 0,
70 OLFB_FULL_LOAD = 1 << 1,
71 OLF_FULL_LOAD_ANY = 3,
72 OLFB_NO_LOAD = 4,
73 };
74
78 enum OrderNonStopFlags {
79 ONSF_STOP_EVERYWHERE = 0,
80 ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS = 1,
81 ONSF_NO_STOP_AT_DESTINATION_STATION = 2,
82 ONSF_NO_STOP_AT_ANY_STATION = 3,
83 ONSF_END
84 };
85
89 enum OrderStopLocation {
90 OSL_PLATFORM_NEAR_END = 0,
91 OSL_PLATFORM_MIDDLE = 1,
92 OSL_PLATFORM_FAR_END = 2,
93 OSL_END
94 };
95
99 enum OrderDepotTypeFlags {
100 ODTF_MANUAL = 0,
101 ODTFB_SERVICE = 1 << 0,
102 ODTFB_PART_OF_ORDERS = 1 << 1,
103 };
104
108 enum OrderDepotActionFlags {
109 ODATF_SERVICE_ONLY = 0,
110 ODATFB_HALT = 1 << 0,
111 ODATFB_NEAREST_DEPOT = 1 << 1,
112 };
113 DECLARE_ENUM_AS_BIT_SET(OrderDepotActionFlags)
114
115
118 enum OrderConditionVariable {
119 OCV_LOAD_PERCENTAGE,
120 OCV_RELIABILITY,
121 OCV_MAX_SPEED,
122 OCV_AGE,
123 OCV_REQUIRES_SERVICE,
124 OCV_UNCONDITIONALLY,
125 OCV_REMAINING_LIFETIME,
126 OCV_END
127 };
128
132 enum OrderConditionComparator {
133 OCC_EQUALS,
134 OCC_NOT_EQUALS,
135 OCC_LESS_THAN,
136 OCC_LESS_EQUALS,
137 OCC_MORE_THAN,
138 OCC_MORE_EQUALS,
139 OCC_IS_TRUE,
140 OCC_IS_FALSE,
141 OCC_END
142 };
143
144
148 enum ModifyOrderFlags {
149 MOF_NON_STOP,
150 MOF_STOP_LOCATION,
151 MOF_UNLOAD,
152 MOF_LOAD,
153 MOF_DEPOT_ACTION,
154 MOF_COND_VARIABLE,
155 MOF_COND_COMPARATOR,
156 MOF_COND_VALUE,
157 MOF_COND_DESTINATION,
158 MOF_END
159 };
160 template <> struct EnumPropsT<ModifyOrderFlags> : MakeEnumPropsT<ModifyOrderFlags, byte, MOF_NON_STOP, MOF_END, MOF_END, 4> {};
161
165 enum OrderDepotAction {
166 DA_ALWAYS_GO,
167 DA_SERVICE,
168 DA_STOP,
169 DA_END
170 };
171
175 enum ModifyTimetableFlags {
176 MTF_WAIT_TIME,
177 MTF_TRAVEL_TIME,
178 MTF_TRAVEL_SPEED,
179 MTF_END
180 };
181 template <> struct EnumPropsT<ModifyTimetableFlags> : MakeEnumPropsT<ModifyTimetableFlags, byte, MTF_WAIT_TIME, MTF_END, MTF_END, 2> {};
182
183
185 enum CloneOptions {
186 CO_SHARE = 0,
187 CO_COPY = 1,
188 CO_UNSHARE = 2
189 };
190
191 struct Order;
192 struct OrderList;
193
194 #endif /* ORDER_TYPE_H */