order_backup.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef ORDER_BACKUP_H
00013 #define ORDER_BACKUP_H
00014
00015 #include "core/pool_type.hpp"
00016 #include "date_type.h"
00017 #include "group_type.h"
00018 #include "order_type.h"
00019 #include "tile_type.h"
00020 #include "vehicle_type.h"
00021
00023 typedef uint8 OrderBackupID;
00024 struct OrderBackup;
00025
00027 typedef Pool<OrderBackup, OrderBackupID, 1, 256> OrderBackupPool;
00029 extern OrderBackupPool _order_backup_pool;
00030
00032 static const uint32 MAKE_ORDER_BACKUP_FLAG = 1U << 31;
00033
00038 struct OrderBackup : OrderBackupPool::PoolItem<&_order_backup_pool> {
00039 private:
00040 friend const struct SaveLoad *GetOrderBackupDescription();
00041 friend void Load_BKOR();
00042 uint32 user;
00043 TileIndex tile;
00044 GroupID group;
00045 Date service_interval;
00046 char *name;
00047
00048 const Vehicle *clone;
00049 VehicleOrderID orderindex;
00050 Order *orders;
00051
00053 OrderBackup() {}
00054
00060 OrderBackup(const Vehicle *v, uint32 user);
00061
00066 void DoRestore(Vehicle *v);
00067
00068 public:
00070 ~OrderBackup();
00071
00078 static void Backup(const Vehicle *v, uint32 user);
00079
00086 static void Restore(Vehicle *v, uint32 user);
00087
00094 static void ResetOfUser(TileIndex tile, uint32 user);
00095
00102 static void ResetUser(uint32 user);
00103
00110 static void Reset(TileIndex tile = INVALID_TILE, bool from_gui = true);
00111
00116 static void ClearGroup(GroupID group);
00117
00125 static void ClearVehicle(const Vehicle *v);
00126 };
00127
00128 #define FOR_ALL_ORDER_BACKUPS_FROM(var, start) FOR_ALL_ITEMS_FROM(OrderBackup, order_backup_index, var, start)
00129 #define FOR_ALL_ORDER_BACKUPS(var) FOR_ALL_ORDER_BACKUPS_FROM(var, 0)
00130
00131 #endif