Files
@ r16273:16ddd6e87b1f
Branch filter:
Location: cpp/openttd-patchpack/source/src/order_type.h - annotation
r16273:16ddd6e87b1f
5.9 KiB
text/x-c
(svn r20989) -Change: make extra_grf's pcx files DOS palettes instead of converting them during compilation. Also fix misconverted sprite and some comments
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 | r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r10546:a4ec290c1c46 r8776:03fed455b086 r8771:b6e9d5dbdc1b r10573:2a7f1f002c6b r10573:2a7f1f002c6b r10573:2a7f1f002c6b r10573:2a7f1f002c6b r8771:b6e9d5dbdc1b r10573:2a7f1f002c6b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8900:dfe0b94b8d96 r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r12016:12cc374b77e8 r12016:12cc374b77e8 r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8855:a884f435767d r8855:a884f435767d r8855:a884f435767d r8855:a884f435767d r8855:a884f435767d r8881:c1ed3a9d37b7 r8881:c1ed3a9d37b7 r8876:489205daecc7 r8855:a884f435767d r8771:b6e9d5dbdc1b r8855:a884f435767d r8855:a884f435767d r8855:a884f435767d r8855:a884f435767d r8855:a884f435767d r8881:c1ed3a9d37b7 r8881:c1ed3a9d37b7 r8883:d4a834db67ba r8848:6bd9c22eb5ec r8771:b6e9d5dbdc1b r8848:6bd9c22eb5ec r8848:6bd9c22eb5ec r8848:6bd9c22eb5ec r8848:6bd9c22eb5ec r8855:a884f435767d r8855:a884f435767d r8855:a884f435767d r8855:a884f435767d r8869:e2e8b17142d9 r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8853:c56f6dec859b r11652:5c73940aeb94 r11652:5c73940aeb94 r11652:5c73940aeb94 r11652:5c73940aeb94 r11652:5c73940aeb94 r11652:5c73940aeb94 r11652:5c73940aeb94 r11652:5c73940aeb94 r11652:5c73940aeb94 r11652:5c73940aeb94 r8853:c56f6dec859b r8853:c56f6dec859b r8853:c56f6dec859b r10207:a1fc2f2a33db r8881:c1ed3a9d37b7 r8853:c56f6dec859b r8853:c56f6dec859b r8853:c56f6dec859b r8853:c56f6dec859b r8853:c56f6dec859b r8853:c56f6dec859b r8853:c56f6dec859b r8853:c56f6dec859b r8881:c1ed3a9d37b7 r8894:9a9fa8db264e r8853:c56f6dec859b r14900:c679fdaeebe6 r8853:c56f6dec859b r8855:a884f435767d r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8903:9c0d5a75fa24 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8869:e2e8b17142d9 r8771:b6e9d5dbdc1b r8869:e2e8b17142d9 r11652:5c73940aeb94 r11652:5c73940aeb94 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r10285:43923f0738a2 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r8900:dfe0b94b8d96 r9665:f312055347cc r8900:dfe0b94b8d96 r8771:b6e9d5dbdc1b r15027:bb71fdfcc554 r8771:b6e9d5dbdc1b r10285:43923f0738a2 r10285:43923f0738a2 r10285:43923f0738a2 r10285:43923f0738a2 r10285:43923f0738a2 r10285:43923f0738a2 r10285:43923f0738a2 r10285:43923f0738a2 r10285:43923f0738a2 r10285:43923f0738a2 r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r15173:a59afd6301a6 r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b r10546:a4ec290c1c46 r8771:b6e9d5dbdc1b r8771:b6e9d5dbdc1b | /* $Id$ */
/*
* This file is part of OpenTTD.
* 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.
* 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.
* 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/>.
*/
/** @file order_type.h Types related to orders. */
#ifndef ORDER_TYPE_H
#define ORDER_TYPE_H
#include "core/enum_type.hpp"
typedef byte VehicleOrderID; ///< The index of an order within its current vehicle (not pool related)
typedef uint16 OrderID;
typedef uint16 OrderListID;
typedef uint16 DestinationID;
/** Invalid vehicle order index (sentinel) */
static const VehicleOrderID INVALID_VEH_ORDER_ID = 0xFF;
/** Last valid VehicleOrderID. */
static const VehicleOrderID MAX_VEH_ORDER_ID = INVALID_VEH_ORDER_ID - 1;
/** Invalid order (sentinel) */
static const OrderID INVALID_ORDER = 0xFFFF;
/* Order types */
enum OrderType {
OT_BEGIN = 0,
OT_NOTHING = 0,
OT_GOTO_STATION = 1,
OT_GOTO_DEPOT = 2,
OT_LOADING = 3,
OT_LEAVESTATION = 4,
OT_DUMMY = 5,
OT_GOTO_WAYPOINT = 6,
OT_CONDITIONAL = 7,
OT_END
};
/** It needs to be 8bits, because we save and load it as such */
typedef SimpleTinyEnumT<OrderType, byte> OrderTypeByte;
/**
* Flags related to the unloading order.
*/
enum OrderUnloadFlags {
OUF_UNLOAD_IF_POSSIBLE = 0, ///< Unload all cargo that the station accepts.
OUFB_UNLOAD = 1 << 0, ///< Force unloading all cargo onto the platform, possibly not getting paid.
OUFB_TRANSFER = 1 << 1, ///< Transfer all cargo onto the platform.
OUFB_NO_UNLOAD = 1 << 2, ///< Totally no unloading will be done.
};
/**
* Flags related to the loading order.
*/
enum OrderLoadFlags {
OLF_LOAD_IF_POSSIBLE = 0, ///< Load as long as there is cargo that fits in the train.
OLFB_FULL_LOAD = 1 << 1, ///< Full load the complete the consist.
OLF_FULL_LOAD_ANY = 3, ///< Full load the a single cargo of the consist.
OLFB_NO_LOAD = 4, ///< Do not load anything.
};
/**
* Non-stop order flags.
*/
enum OrderNonStopFlags {
ONSF_STOP_EVERYWHERE = 0, ///< The vehicle will stop at any station it passes and the destination.
ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS = 1, ///< The vehicle will not stop at any stations it passes except the destination.
ONSF_NO_STOP_AT_DESTINATION_STATION = 2, ///< The vehicle will stop at any station it passes except the destination.
ONSF_NO_STOP_AT_ANY_STATION = 3, ///< The vehicle will not stop at any stations it passes including the destination.
ONSF_END
};
/**
* Where to stop the trains.
*/
enum OrderStopLocation {
OSL_PLATFORM_NEAR_END = 0, ///< Stop at the near end of the platform
OSL_PLATFORM_MIDDLE = 1, ///< Stop at the middle of the platform
OSL_PLATFORM_FAR_END = 2, ///< Stop at the far end of the platform
OSL_END
};
/**
* Reasons that could cause us to go to the depot.
*/
enum OrderDepotTypeFlags {
ODTF_MANUAL = 0, ///< Manually initiated order.
ODTFB_SERVICE = 1 << 0, ///< This depot order is because of the servicing limit.
ODTFB_PART_OF_ORDERS = 1 << 1, ///< This depot order is because of a regular order.
};
/**
* Actions that can be performed when the vehicle enters the depot.
*/
enum OrderDepotActionFlags {
ODATF_SERVICE_ONLY = 0, ///< Only service the vehicle.
ODATFB_HALT = 1 << 0, ///< Service the vehicle and then halt it.
ODATFB_NEAREST_DEPOT = 1 << 1, ///< Send the vehicle to the nearest depot.
};
DECLARE_ENUM_AS_BIT_SET(OrderDepotActionFlags)
/**
* Variables (of a vehicle) to 'cause' skipping on.
*/
enum OrderConditionVariable {
OCV_LOAD_PERCENTAGE, ///< Skip based on the amount of load
OCV_RELIABILITY, ///< Skip based on the reliability
OCV_MAX_SPEED, ///< Skip based on the maximum speed
OCV_AGE, ///< Skip based on the age
OCV_REQUIRES_SERVICE, ///< Skip when the vehicle requires service
OCV_UNCONDITIONALLY, ///< Always skip
OCV_END
};
/**
* Comparator for the skip reasoning.
*/
enum OrderConditionComparator {
OCC_EQUALS, ///< Skip if both values are equal
OCC_NOT_EQUALS, ///< Skip if both values are not equal
OCC_LESS_THAN, ///< Skip if the value is less than the limit
OCC_LESS_EQUALS, ///< Skip if the value is less or equal to the limit
OCC_MORE_THAN, ///< Skip if the value is more than the limit
OCC_MORE_EQUALS, ///< Skip if the value is more or equal to the limit
OCC_IS_TRUE, ///< Skip if the variable is true
OCC_IS_FALSE, ///< Skip if the variable is false
OCC_END
};
/**
* Enumeration for the data to set in CmdModifyOrder.
*/
enum ModifyOrderFlags {
MOF_NON_STOP, ///< Passes an OrderNonStopFlags.
MOF_STOP_LOCATION, ///< Passes an OrderStopLocation.
MOF_UNLOAD, ///< Passes an OrderUnloadType.
MOF_LOAD, ///< Passes an OrderLoadType
MOF_DEPOT_ACTION, ///< Selects the OrderDepotAction
MOF_COND_VARIABLE, ///< A conditional variable changes.
MOF_COND_COMPARATOR, ///< A comparator changes.
MOF_COND_VALUE, ///< The value to set the condition to.
MOF_COND_DESTINATION,///< Change the destination of a conditional order.
MOF_END
};
template <> struct EnumPropsT<ModifyOrderFlags> : MakeEnumPropsT<ModifyOrderFlags, byte, MOF_NON_STOP, MOF_END, MOF_END, 4> {};
/**
* Depot action to switch to when doing a MOF_DEPOT_ACTION.
*/
enum OrderDepotAction {
DA_ALWAYS_GO, ///< Always go to the depot
DA_SERVICE, ///< Service only if needed
DA_STOP, ///< Go to the depot and stop there
DA_END
};
/* Possible clone options */
enum CloneOptions {
CO_SHARE = 0,
CO_COPY = 1,
CO_UNSHARE = 2
};
struct Order;
struct OrderList;
#endif /* ORDER_TYPE_H */
|