rubidium@10249: /* $Id$ */ rubidium@10249: rubidium@10455: /** @file depot_base.h Base for all depots (except hangars) */ rubidium@10249: rubidium@10249: #ifndef DEPOT_BASE_H rubidium@10249: #define DEPOT_BASE_H rubidium@10249: rubidium@10249: #include "tile_type.h" rubidium@10249: #include "depot_type.h" rubidium@10249: #include "oldpool.h" rubidium@10249: #include "town_type.h" rubidium@10249: rubidium@10249: DECLARE_OLD_POOL(Depot, Depot, 3, 8000) rubidium@10249: rubidium@10249: struct Depot : PoolItem { rubidium@10249: TileIndex xy; rubidium@10249: TownID town_index; rubidium@10249: rubidium@10249: Depot(TileIndex xy = 0) : xy(xy) {} rubidium@10249: ~Depot(); rubidium@10249: rubidium@10249: inline bool IsValid() const { return this->xy != 0; } rubidium@10249: }; rubidium@10249: rubidium@10249: static inline bool IsValidDepotID(DepotID index) rubidium@10249: { rubidium@10249: return index < GetDepotPoolSize() && GetDepot(index)->IsValid(); rubidium@10249: } rubidium@10249: rubidium@10249: Depot *GetDepotByTile(TileIndex tile); rubidium@10249: rubidium@10249: #define FOR_ALL_DEPOTS_FROM(d, start) for (d = GetDepot(start); d != NULL; d = (d->index + 1U < GetDepotPoolSize()) ? GetDepot(d->index + 1U) : NULL) if (d->IsValid()) rubidium@10249: #define FOR_ALL_DEPOTS(d) FOR_ALL_DEPOTS_FROM(d, 0) rubidium@10249: rubidium@10249: #endif /* DEPOT_BASE_H */