00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef ORDER_TYPE_H
00013 #define ORDER_TYPE_H
00014
00015 #include "core/enum_type.hpp"
00016
00017 typedef byte VehicleOrderID;
00018 typedef uint16 OrderID;
00019 typedef uint16 OrderListID;
00020 typedef uint16 DestinationID;
00021
00023 static const VehicleOrderID INVALID_VEH_ORDER_ID = 0xFF;
00025 static const VehicleOrderID MAX_VEH_ORDER_ID = INVALID_VEH_ORDER_ID - 1;
00026
00028 static const OrderID INVALID_ORDER = 0xFFFF;
00029
00030
00031 enum OrderType {
00032 OT_BEGIN = 0,
00033 OT_NOTHING = 0,
00034 OT_GOTO_STATION = 1,
00035 OT_GOTO_DEPOT = 2,
00036 OT_LOADING = 3,
00037 OT_LEAVESTATION = 4,
00038 OT_DUMMY = 5,
00039 OT_GOTO_WAYPOINT = 6,
00040 OT_CONDITIONAL = 7,
00041 OT_END
00042 };
00043
00045 typedef SimpleTinyEnumT<OrderType, byte> OrderTypeByte;
00046
00047
00051 enum OrderUnloadFlags {
00052 OUF_UNLOAD_IF_POSSIBLE = 0,
00053 OUFB_UNLOAD = 1 << 0,
00054 OUFB_TRANSFER = 1 << 1,
00055 OUFB_NO_UNLOAD = 1 << 2,
00056 };
00057
00061 enum OrderLoadFlags {
00062 OLF_LOAD_IF_POSSIBLE = 0,
00063 OLFB_FULL_LOAD = 1 << 1,
00064 OLF_FULL_LOAD_ANY = 3,
00065 OLFB_NO_LOAD = 4,
00066 };
00067
00071 enum OrderNonStopFlags {
00072 ONSF_STOP_EVERYWHERE = 0,
00073 ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS = 1,
00074 ONSF_NO_STOP_AT_DESTINATION_STATION = 2,
00075 ONSF_NO_STOP_AT_ANY_STATION = 3,
00076 ONSF_END
00077 };
00078
00082 enum OrderStopLocation {
00083 OSL_PLATFORM_NEAR_END = 0,
00084 OSL_PLATFORM_MIDDLE = 1,
00085 OSL_PLATFORM_FAR_END = 2,
00086 OSL_END
00087 };
00088
00092 enum OrderDepotTypeFlags {
00093 ODTF_MANUAL = 0,
00094 ODTFB_SERVICE = 1 << 0,
00095 ODTFB_PART_OF_ORDERS = 1 << 1,
00096 };
00097
00101 enum OrderDepotActionFlags {
00102 ODATF_SERVICE_ONLY = 0,
00103 ODATFB_HALT = 1 << 0,
00104 ODATFB_NEAREST_DEPOT = 1 << 1,
00105 };
00106 DECLARE_ENUM_AS_BIT_SET(OrderDepotActionFlags);
00107
00111 enum OrderConditionVariable {
00112 OCV_LOAD_PERCENTAGE,
00113 OCV_RELIABILITY,
00114 OCV_MAX_SPEED,
00115 OCV_AGE,
00116 OCV_REQUIRES_SERVICE,
00117 OCV_UNCONDITIONALLY,
00118 OCV_END
00119 };
00120
00124 enum OrderConditionComparator {
00125 OCC_EQUALS,
00126 OCC_NOT_EQUALS,
00127 OCC_LESS_THAN,
00128 OCC_LESS_EQUALS,
00129 OCC_MORE_THAN,
00130 OCC_MORE_EQUALS,
00131 OCC_IS_TRUE,
00132 OCC_IS_FALSE,
00133 OCC_END
00134 };
00135
00136
00140 enum ModifyOrderFlags {
00141 MOF_NON_STOP,
00142 MOF_STOP_LOCATION,
00143 MOF_UNLOAD,
00144 MOF_LOAD,
00145 MOF_DEPOT_ACTION,
00146 MOF_COND_VARIABLE,
00147 MOF_COND_COMPARATOR,
00148 MOF_COND_VALUE,
00149 MOF_COND_DESTINATION,
00150 MOF_END
00151 };
00152
00156 enum OrderDepotAction {
00157 DA_ALWAYS_GO,
00158 DA_SERVICE,
00159 DA_STOP,
00160 DA_END
00161 };
00162
00163
00164
00165 enum {
00166 CO_SHARE = 0,
00167 CO_COPY = 1,
00168 CO_UNSHARE = 2
00169 };
00170
00171 struct Order;
00172 struct OrderList;
00173
00174 #endif