OpenTTD Source
12.0-beta2
|
Go to the documentation of this file.
10 #include "../stdafx.h"
16 #include "../order_backup.h"
17 #include "../settings_type.h"
18 #include "../network/network.h"
20 #include "../safeguards.h"
28 uint8 old_flags = this->
flags;
41 case OT_GOTO_DEPOT:
case OT_GOTO_STATION:
case OT_LOADING:
break;
45 if (this->
GetType() != OT_GOTO_DEPOT) {
47 if ((old_flags & 2) != 0) {
49 }
else if ((old_flags & 4) == 0) {
59 if ((old_flags & 1) != 0) {
61 }
else if ((old_flags & 2) != 0) {
84 return Order(
GB(packed, 8, 8) << 16 |
GB(packed, 4, 4) << 8 |
GB(packed, 0, 4));
107 static const SaveLoad _order_desc[] = {
130 SlSetArrayIndex(order->index);
145 len /=
sizeof(uint16);
146 uint16 *orders = MallocT<uint16>(len + 1);
148 SlCopy(orders, len, SLE_UINT16);
150 for (
size_t i = 0; i < len; ++i) {
157 len /=
sizeof(uint32);
158 uint32 *orders = MallocT<uint32>(len + 1);
160 SlCopy(orders, len, SLE_UINT32);
162 for (
size_t i = 0; i < len; ++i) {
163 new (i)
Order(orders[i]);
171 size_t order_index = o->index;
173 if (o->IsType(OT_NOTHING)) {
180 if (prev !=
nullptr) prev->
next = o;
207 static const SaveLoad _orderlist_desc[] = {
211 return _orderlist_desc;
223 SlSetArrayIndex(list->index);
245 SlObject(list, GetOrderListDescription());
252 static const SaveLoad _order_backup_desc[] = {
270 return _order_backup_desc;
287 SlSetArrayIndex(ob->index);
308 SlObject(ob, GetOrderBackupDescription());
void MakeDummy()
Makes this order a Dummy order.
@ REF_ORDER
Load/save a reference to an order.
Order UnpackOldOrder(uint16 packed)
Unpacks a order from savegames made with TTD(Patch)
@ OUFB_UNLOAD
Force unloading all cargo onto the platform, possibly not getting paid.
bool IsType(OrderType type) const
Check whether this order is of the given type.
const SaveLoadCompat _order_sl_compat[]
Original field order for _order_desc.
void SetLoadType(OrderLoadFlags load_type)
Set how the consist must be loaded.
static uint GB(const T x, const uint8 s, const uint8 n)
Fetch n bits from x, started at bit s.
static Titem * GetIfValid(size_t index)
Returns Titem with given index.
@ SL_MIN_VERSION
First savegame version.
@ ODTFB_SERVICE
This depot order is because of the servicing limit.
@ OUFB_TRANSFER
Transfer all cargo onto the platform.
@ OLFB_FULL_LOAD
Full load all cargoes of the consist.
std::reference_wrapper< const ChunkHandler > ChunkHandlerRef
A reference to ChunkHandler.
bool sg_new_nonstop
ttdpatch compatible nonstop handling read from pre v93 savegames
bool _network_server
network-server is active
void SlCopy(void *object, size_t length, VarType conv)
Copy a list of SL_VARs to/from a savegame.
bool new_nonstop
ttdpatch compatible nonstop handling
#define SLE_CONDVAR(base, variable, type, from, to)
Storage of a variable in some savegame versions.
#define SLE_STR(base, variable, type, length)
Storage of a string in every savegame version.
@ ODTF_MANUAL
Manually initiated order.
OrderDepotTypeFlags
Reasons that could cause us to go to the depot.
ClientSettings _settings_client
The current settings for this game.
void AssignOrder(const Order &other)
Assign data to an order (from another order) This function makes sure that the index is maintained co...
Handlers and description of chunk.
const SaveLoadCompat _orderlist_sl_compat[]
Original field order for _orderlist_desc.
void FixPointers() const override
Fix the pointers.
SavegameType _savegame_type
type of savegame we are loading
#define SLE_REF(base, variable, type)
Storage of a reference in every version of a savegame.
OrderType GetType() const
Get the type of order of this order.
const SaveLoadCompat _order_backup_sl_compat[]
Original field order for _order_backup_desc.
@ ONSF_NO_STOP_AT_ANY_STATION
The vehicle will not stop at any stations it passes including the destination.
@ ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS
The vehicle will not stop at any stations it passes except the destination.
@ SLV_5
5.0 1429 5.1 1440 5.2 1525 0.3.6
@ OLF_FULL_LOAD_ANY
Full load a single cargo of the consist.
@ ONSF_STOP_EVERYWHERE
The vehicle will stop at any station it passes and the destination.
A trimmed down version of what std::span will be in C++20.
@ OUF_UNLOAD_IF_POSSIBLE
Unload all cargo that the station accepts.
void Save() const override
Save the chunk.
#define SLE_CONDREF(base, variable, type, from, to)
Storage of a reference in some savegame versions.
@ ODTFB_PART_OF_ORDERS
This depot order is because of a regular order.
static bool IsSavegameVersionBefore(SaveLoadVersion major, byte minor=0)
Checks whether the savegame is below major.
bool _networking
are we in networking mode?
void ConvertFromOldSavegame()
Converts this order from an old savegame's version; it moves all bits to the new location.
@ REF_VEHICLE
Load/save a reference to a vehicle.
void Save() const override
Save the chunk.
void Save() const override
Save the chunk.
@ OLF_LOAD_IF_POSSIBLE
Load as long as there is cargo that fits in the train.
void SetStopLocation(OrderStopLocation stop_location)
Set where we must stop at the platform.
@ ODATFB_HALT
Service the vehicle and then halt it.
@ SL_MAX_VERSION
Highest possible saveload version.
@ SGT_TTD
TTD savegame (can be detected incorrectly)
#define SLE_VAR(base, variable, type)
Storage of a variable in every version of a savegame.
static Pool::IterateWrapper< Titem > Iterate(size_t from=0)
Returns an iterable ensemble of all valid Titem.
void FixPointers() const override
Fix the pointers.
@ OSL_PLATFORM_FAR_END
Stop at the far end of the platform.
size_t SlGetFieldLength()
Get the length of the current object.
Shared order list linking together the linked list of orders and the list of vehicles sharing this or...
void Load() const override
Load the chunk.
bool sg_full_load_any
new full load calculation, any cargo must be full read from pre v93 savegames
void SetDepotOrderType(OrderDepotTypeFlags depot_order_type)
Set the cause to go to the depot.
void SetDepotActionType(OrderDepotActionFlags depot_service_type)
Set what we are going to do in the depot.
#define SLE_SSTR(base, variable, type)
Storage of a std::string in every savegame version.
void Load() const override
Load the chunk.
std::vector< SaveLoad > SlCompatTableHeader(const SaveLoadTable &slt, const SaveLoadCompatTable &slct)
Load a table header in a savegame compatible way.
@ ODATF_SERVICE_ONLY
Only service the vehicle.
@ SLV_192
192 26700 FS#6066 Fix saving of order backups
void SetUnloadType(OrderUnloadFlags unload_type)
Set how the consist must be unloaded.
Data for backing up an order of a vehicle so it can be restored after a vehicle is rebuilt in the sam...
void FixPointers() const override
Fix the pointers.
void SlObject(void *object, const SaveLoadTable &slt)
Main SaveLoad function.
std::vector< SaveLoad > SlTableHeader(const SaveLoadTable &slt)
Save or Load a table header.
static void free(const void *ptr)
Version of the standard free that accepts const pointers.
static Order UnpackVersion4Order(uint16 packed)
Unpacks a order from savegames with version 4 and lower.
Order * next
Pointer to next order. If nullptr, end of list.
uint8 flags
Load/unload types, depot order/action types.
void SetNonStopType(OrderNonStopFlags non_stop_type)
Set whether we must stop at stations or not.
int SlIterateArray()
Iterate through the elements of an array and read the whole thing.
void Load() const override
Load the chunk.
GUISettings gui
settings related to the GUI
@ OLFB_NO_LOAD
Do not load anything.