Files @ r23774:59b54c2b48f6
Branch filter:

Location: cpp/openttd-patchpack/source/src/order_backup.h - annotation

Niels Martin Hansen
Change: Limit in-editor warnings in VS 2019

The AllRules ruleset causes the VS 2019 editor to litter warning squiggles all over the place, about things that would never be fixed. Limit it to the smallest ruleset available. Warnings shown now mainly concern potential arithmetic overflows.
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15934:789c54d0000d
r15847:4a3cf48b2f40
r15934:789c54d0000d
r19519:a08cec92f7c7
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15855:2be9e0211a54
r15909:371b0c8f4ce6
r15855:2be9e0211a54
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r19519:a08cec92f7c7
r15847:4a3cf48b2f40
r15855:2be9e0211a54
r15855:2be9e0211a54
r15855:2be9e0211a54
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15849:33fd4f65439e
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15855:2be9e0211a54
r15855:2be9e0211a54
r15855:2be9e0211a54
r15847:4a3cf48b2f40
r15855:2be9e0211a54
r15853:61b6cb670877
r15853:61b6cb670877
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15855:2be9e0211a54
r15855:2be9e0211a54
r15855:2be9e0211a54
r15855:2be9e0211a54
r15855:2be9e0211a54
r15855:2be9e0211a54
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15849:33fd4f65439e
r23367:7aa5d2e62188
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r17629:21e9dfd343cd
r17629:21e9dfd343cd
r17629:21e9dfd343cd
r17629:21e9dfd343cd
r17629:21e9dfd343cd
r15847:4a3cf48b2f40
r17629:21e9dfd343cd
r17629:21e9dfd343cd
r17629:21e9dfd343cd
r17629:21e9dfd343cd
r17629:21e9dfd343cd
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
r15847:4a3cf48b2f40
/* $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_backup.h Functions related to order backups. */

#ifndef ORDER_BACKUP_H
#define ORDER_BACKUP_H

#include "core/pool_type.hpp"
#include "group_type.h"
#include "tile_type.h"
#include "vehicle_type.h"
#include "base_consist.h"

/** Unique identifier for an order backup. */
typedef uint8 OrderBackupID;
struct OrderBackup;

/** The pool type for order backups. */
typedef Pool<OrderBackup, OrderBackupID, 1, 256> OrderBackupPool;
/** The pool with order backups. */
extern OrderBackupPool _order_backup_pool;

/** Flag to pass to the vehicle construction command when an order should be preserved. */
static const uint32 MAKE_ORDER_BACKUP_FLAG = 1U << 31;

/**
 * Data for backing up an order of a vehicle so it can be
 * restored after a vehicle is rebuilt in the same depot.
 */
struct OrderBackup : OrderBackupPool::PoolItem<&_order_backup_pool>, BaseConsist {
private:
	friend const struct SaveLoad *GetOrderBackupDescription(); ///< Saving and loading of order backups.
	friend void Load_BKOR();   ///< Creating empty orders upon savegame loading.
	uint32 user;               ///< The user that requested the backup.
	TileIndex tile;            ///< Tile of the depot where the order was changed.
	GroupID group;             ///< The group the vehicle was part of.

	const Vehicle *clone;      ///< Vehicle this vehicle was a clone of.
	Order *orders;             ///< The actual orders if the vehicle was not a clone.

	/** Creation for savegame restoration. */
	OrderBackup() {}
	OrderBackup(const Vehicle *v, uint32 user);

	void DoRestore(Vehicle *v);

public:
	~OrderBackup();

	static void Backup(const Vehicle *v, uint32 user);
	static void Restore(Vehicle *v, uint32 user);

	static void ResetOfUser(TileIndex tile, uint32 user);
	static void ResetUser(uint32 user);
	static void Reset(TileIndex tile = INVALID_TILE, bool from_gui = true);

	static void ClearGroup(GroupID group);
	static void ClearVehicle(const Vehicle *v);
	static void RemoveOrder(OrderType type, DestinationID destination, bool hangar);
};

/**
 * Iterator over all order backups from a given ID.
 * @param var The variable to iterate with.
 * @param start The start of the iteration.
 */
#define FOR_ALL_ORDER_BACKUPS_FROM(var, start) FOR_ALL_ITEMS_FROM(OrderBackup, order_backup_index, var, start)

/**
 * Iterator over all order backups.
 * @param var The variable to iterate with.
 */
#define FOR_ALL_ORDER_BACKUPS(var) FOR_ALL_ORDER_BACKUPS_FROM(var, 0)

#endif /* ORDER_BACKUP_H */