src/order_type.h
author rubidium
Thu, 10 Apr 2008 22:17:06 +0000
changeset 10124 a6b11d4d67b3
parent 10119 9b29b2296969
child 10130 906ffae618b0
permissions -rw-r--r--
(svn r12655) -Change: show the current state in the drop down 'buttons'.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2159
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2159
diff changeset
     2
9267
71cf88230dc1 (svn r12470) -Codechange: split order related types from order.h (and openttd.h) to order_type.h.
rubidium
parents: 9266
diff changeset
     3
/** @file order_type.h Types related to orders. */
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
     4
9267
71cf88230dc1 (svn r12470) -Codechange: split order related types from order.h (and openttd.h) to order_type.h.
rubidium
parents: 9266
diff changeset
     5
#ifndef ORDER_TYPE_H
71cf88230dc1 (svn r12470) -Codechange: split order related types from order.h (and openttd.h) to order_type.h.
rubidium
parents: 9266
diff changeset
     6
#define ORDER_TYPE_H
1314
d6a253cf92c3 (svn r1818) -Add: Dynamic orders (up to 64k orders)
truelight
parents: 1093
diff changeset
     7
9267
71cf88230dc1 (svn r12470) -Codechange: split order related types from order.h (and openttd.h) to order_type.h.
rubidium
parents: 9266
diff changeset
     8
#include "core/enum_type.hpp"
71cf88230dc1 (svn r12470) -Codechange: split order related types from order.h (and openttd.h) to order_type.h.
rubidium
parents: 9266
diff changeset
     9
71cf88230dc1 (svn r12470) -Codechange: split order related types from order.h (and openttd.h) to order_type.h.
rubidium
parents: 9266
diff changeset
    10
typedef byte VehicleOrderID;  ///< The index of an order within its current vehicle (not pool related)
71cf88230dc1 (svn r12470) -Codechange: split order related types from order.h (and openttd.h) to order_type.h.
rubidium
parents: 9266
diff changeset
    11
typedef uint16 OrderID;
9272
83630e52b5fe (svn r12475) -Codechange: cleanup coding style in news_gui.cpp.
rubidium
parents: 9267
diff changeset
    12
typedef uint16 DestinationID;
9263
0f1ba0ce5839 (svn r12466) -Codechange: move DestinationID to a more logical location.
rubidium
parents: 9146
diff changeset
    13
4408
84ec2899adfa (svn r6161) -Feature: List of vehicles with the same shared orders
bjarni
parents: 4392
diff changeset
    14
enum {
4712
273ec3b182bf (svn r6624) -Feature: added ability to add refit commands to vehicle orders (can only be done in goto depot orders)
bjarni
parents: 4549
diff changeset
    15
	INVALID_VEH_ORDER_ID = 0xFF,
4408
84ec2899adfa (svn r6161) -Feature: List of vehicles with the same shared orders
bjarni
parents: 4392
diff changeset
    16
};
84ec2899adfa (svn r6161) -Feature: List of vehicles with the same shared orders
bjarni
parents: 4392
diff changeset
    17
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    18
static const OrderID INVALID_ORDER = 0xFFFF;
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    19
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    20
/* Order types */
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    21
enum OrderType {
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    22
	OT_BEGIN         = 0,
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    23
	OT_NOTHING       = 0,
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    24
	OT_GOTO_STATION  = 1,
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    25
	OT_GOTO_DEPOT    = 2,
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    26
	OT_LOADING       = 3,
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    27
	OT_LEAVESTATION  = 4,
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    28
	OT_DUMMY         = 5,
4421
edb874ed70b1 (svn r6176) -Fix r6052: I assumed an typedefd enum would be an uint8, which is a really stupid thing to assume.
truelight
parents: 4414
diff changeset
    29
	OT_GOTO_WAYPOINT = 6,
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    30
	OT_END
4421
edb874ed70b1 (svn r6176) -Fix r6052: I assumed an typedefd enum would be an uint8, which is a really stupid thing to assume.
truelight
parents: 4414
diff changeset
    31
};
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    32
4421
edb874ed70b1 (svn r6176) -Fix r6052: I assumed an typedefd enum would be an uint8, which is a really stupid thing to assume.
truelight
parents: 4414
diff changeset
    33
/* It needs to be 8bits, because we save and load it as such */
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    34
/** Define basic enum properties */
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    35
template <> struct EnumPropsT<OrderType> : MakeEnumPropsT<OrderType, byte, OT_BEGIN, OT_END, OT_END> {};
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    36
typedef TinyEnumT<OrderType> OrderTypeByte;
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    37
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    38
10081
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    39
/**
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    40
 * Flags related to the unloading order.
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    41
 */
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    42
enum OrderUnloadFlags {
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    43
	OUF_UNLOAD_IF_POSSIBLE = 0,      ///< Unload all cargo that the station accepts.
10117
6a796f06bff4 (svn r12648) -Feature: allow four different non-stop types in a single game instead of two. The "TTDP compatible order" setting now only sets the default behaviour of new trains.
rubidium
parents: 10112
diff changeset
    44
	OUFB_UNLOAD            = 1 << 0, ///< Force unloading all cargo onto the platform, possibly not getting paid.
6a796f06bff4 (svn r12648) -Feature: allow four different non-stop types in a single game instead of two. The "TTDP compatible order" setting now only sets the default behaviour of new trains.
rubidium
parents: 10112
diff changeset
    45
	OUFB_TRANSFER          = 1 << 1, ///< Transfer all cargo onto the platform.
10112
4cff0d575f0b (svn r12643) -Codechange: be more explicit about the orders a vehicle has (non stop and full load are ambiguous and depend on some patch settings).
rubidium
parents: 10109
diff changeset
    46
	OUFB_NO_UNLOAD         = 1 << 2, ///< Totally no unloading will be done.
10081
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    47
};
1615
cee18da24b41 (svn r2119) - Fix: [ 1172878 ] Trains "Go to depot" button: click twice skip to next order (patch by Loic GUILLOUX). I also added short explanation of OF_/OFB_ difference to order.h.
pasky
parents: 1530
diff changeset
    48
10081
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    49
/**
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    50
 * Flags related to the loading order.
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    51
 */
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    52
enum OrderLoadFlags {
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    53
	OLF_LOAD_IF_POSSIBLE = 0,      ///< Load as long as there is cargo that fits in the train.
10117
6a796f06bff4 (svn r12648) -Feature: allow four different non-stop types in a single game instead of two. The "TTDP compatible order" setting now only sets the default behaviour of new trains.
rubidium
parents: 10112
diff changeset
    54
	OLFB_FULL_LOAD       = 1 << 1, ///< Full load the complete the consist.
6a796f06bff4 (svn r12648) -Feature: allow four different non-stop types in a single game instead of two. The "TTDP compatible order" setting now only sets the default behaviour of new trains.
rubidium
parents: 10112
diff changeset
    55
	OLF_FULL_LOAD_ANY    = 3,      ///< Full load the a single cargo of the consist.
10119
9b29b2296969 (svn r12650) -Feature: ability to force a vehicle to not load at a station.
rubidium
parents: 10117
diff changeset
    56
	OLFB_NO_LOAD         = 4,      ///< Do not load anything.
9344
1be7ac6bd504 (svn r12600) -Codechange: make GetNonStopType return a more augmented type; not is there a non-stop order but the kind of non-stop order, so one doesn't need to check _patches.new_nonstop type everywhere.
rubidium
parents: 9339
diff changeset
    57
};
1530
caa16c506a22 (svn r2034) -Codechange: Replaced the rather meaningless LOAD and UNLOAD flags for depots by something more meaningful
celestar
parents: 1314
diff changeset
    58
9344
1be7ac6bd504 (svn r12600) -Codechange: make GetNonStopType return a more augmented type; not is there a non-stop order but the kind of non-stop order, so one doesn't need to check _patches.new_nonstop type everywhere.
rubidium
parents: 9339
diff changeset
    59
/**
1be7ac6bd504 (svn r12600) -Codechange: make GetNonStopType return a more augmented type; not is there a non-stop order but the kind of non-stop order, so one doesn't need to check _patches.new_nonstop type everywhere.
rubidium
parents: 9339
diff changeset
    60
 * Non-stop order flags.
1be7ac6bd504 (svn r12600) -Codechange: make GetNonStopType return a more augmented type; not is there a non-stop order but the kind of non-stop order, so one doesn't need to check _patches.new_nonstop type everywhere.
rubidium
parents: 9339
diff changeset
    61
 */
1be7ac6bd504 (svn r12600) -Codechange: make GetNonStopType return a more augmented type; not is there a non-stop order but the kind of non-stop order, so one doesn't need to check _patches.new_nonstop type everywhere.
rubidium
parents: 9339
diff changeset
    62
enum OrderNonStopFlags {
10081
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    63
	ONSF_STOP_EVERYWHERE                  = 0, ///< The vehicle will stop at any station it passes and the destination.
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    64
	ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS = 1, ///< The vehicle will not stop at any stations it passes except the destination.
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    65
	ONSF_NO_STOP_AT_DESTINATION_STATION   = 2, ///< The vehicle will stop at any station it passes except the destination.
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    66
	ONSF_NO_STOP_AT_ANY_STATION           = 3, ///< The vehicle will not stop at any stations it passes including the destination.
10105
f0d50efea303 (svn r12636) -Codechange: make CmdModifyOrder a little more flexible and remove 'hack' that used the full load flag to set the service if needed flag.
rubidium
parents: 10081
diff changeset
    67
	ONSF_END
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    68
};
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    69
10079
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    70
/**
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    71
 * Reasons that could cause us to go to the depot.
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    72
 */
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    73
enum OrderDepotTypeFlags {
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    74
	ODTF_MANUAL          = 0,      ///< The player initiated this order manually.
10117
6a796f06bff4 (svn r12648) -Feature: allow four different non-stop types in a single game instead of two. The "TTDP compatible order" setting now only sets the default behaviour of new trains.
rubidium
parents: 10112
diff changeset
    75
	ODTFB_SERVICE        = 1 << 0, ///< This depot order is because of the servicing limit.
10079
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    76
	ODTFB_PART_OF_ORDERS = 1 << 1, ///< This depot order is because of a regular order.
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    77
};
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    78
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    79
/**
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    80
 * Actions that can be performed when the vehicle enters the depot.
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    81
 */
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    82
enum OrderDepotActionFlags {
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    83
	ODATF_SERVICE_ONLY   = 0,      ///< Only service the vehicle.
10117
6a796f06bff4 (svn r12648) -Feature: allow four different non-stop types in a single game instead of two. The "TTDP compatible order" setting now only sets the default behaviour of new trains.
rubidium
parents: 10112
diff changeset
    84
	ODATFB_HALT          = 1 << 0, ///< Service the vehicle and then halt it.
10079
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    85
};
99aba130db3c (svn r12615) -Codechange: rename some enums related to depot orders to make it more clear that they are no loading/unloading flags. Also add more type strictness.
rubidium
parents: 9344
diff changeset
    86
10081
e46b9eb2f9c1 (svn r12617) -Codechange: add type safety to the Order's load and unload types.
rubidium
parents: 10079
diff changeset
    87
/**
10105
f0d50efea303 (svn r12636) -Codechange: make CmdModifyOrder a little more flexible and remove 'hack' that used the full load flag to set the service if needed flag.
rubidium
parents: 10081
diff changeset
    88
 * Enumeration for the data to set in CmdModifyOrder.
4077
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 3347
diff changeset
    89
 */
10105
f0d50efea303 (svn r12636) -Codechange: make CmdModifyOrder a little more flexible and remove 'hack' that used the full load flag to set the service if needed flag.
rubidium
parents: 10081
diff changeset
    90
enum ModifyOrderFlags {
f0d50efea303 (svn r12636) -Codechange: make CmdModifyOrder a little more flexible and remove 'hack' that used the full load flag to set the service if needed flag.
rubidium
parents: 10081
diff changeset
    91
	MOF_NON_STOP,      ///< Passes a OrderNonStopFlags.
f0d50efea303 (svn r12636) -Codechange: make CmdModifyOrder a little more flexible and remove 'hack' that used the full load flag to set the service if needed flag.
rubidium
parents: 10081
diff changeset
    92
	MOF_UNLOAD,        ///< Passes an OrderUnloadType.
f0d50efea303 (svn r12636) -Codechange: make CmdModifyOrder a little more flexible and remove 'hack' that used the full load flag to set the service if needed flag.
rubidium
parents: 10081
diff changeset
    93
	MOF_LOAD,          ///< Passes an OrderLoadType
f0d50efea303 (svn r12636) -Codechange: make CmdModifyOrder a little more flexible and remove 'hack' that used the full load flag to set the service if needed flag.
rubidium
parents: 10081
diff changeset
    94
	MOF_DEPOT_ACTION,  ///< Toggle the 'service' if needed flag.
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    95
};
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    96
1615
cee18da24b41 (svn r2119) - Fix: [ 1172878 ] Trains "Go to depot" button: click twice skip to next order (patch by Loic GUILLOUX). I also added short explanation of OF_/OFB_ difference to order.h.
pasky
parents: 1530
diff changeset
    97
1024
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    98
/* Possible clone options */
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
    99
enum {
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
   100
	CO_SHARE   = 0,
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
   101
	CO_COPY    = 1,
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
   102
	CO_UNSHARE = 2
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
   103
};
9b06b01490a4 (svn r1525) -Codechange: rewrote the _order_array, now it can be made dynamic.
truelight
parents:
diff changeset
   104
7887
5740662fc5ce (svn r10760) -Codechange: make the order struct use the pool item class as super class.
rubidium
parents: 7871
diff changeset
   105
struct Order;
4384
293c0d26294c (svn r6137) -Codechange: some very minor cleanups:
truelight
parents: 4354
diff changeset
   106
9267
71cf88230dc1 (svn r12470) -Codechange: split order related types from order.h (and openttd.h) to order_type.h.
rubidium
parents: 9266
diff changeset
   107
#endif /* ORDER_TYPE_H */