diff options
author | rubidium <rubidium@openttd.org> | 2010-08-13 12:45:26 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2010-08-13 12:45:26 +0000 |
commit | 89b2b9370a877526e2b637b1cd39d6f374dbabdb (patch) | |
tree | 7733fbb8b3a39ba160e0d3d5d36aedcd13e7a0dc /src/object_base.h | |
parent | c5ec91098016e92a4872216c77380e522262abc3 (diff) | |
download | openttd-89b2b9370a877526e2b637b1cd39d6f374dbabdb.tar.xz |
(svn r20482) -Codechange: move some object related information off the map and unify the relation objects have to towns
Diffstat (limited to 'src/object_base.h')
-rw-r--r-- | src/object_base.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/object_base.h b/src/object_base.h new file mode 100644 index 000000000..2aaf8aa0c --- /dev/null +++ b/src/object_base.h @@ -0,0 +1,44 @@ +/* $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 object_base.h Base for all objects. */ + +#ifndef OBJECT_BASE_H +#define OBJECT_BASE_H + +#include "core/pool_type.hpp" +#include "object_type.h" +#include "tilearea_type.h" +#include "town_type.h" +#include "date_type.h" + +typedef Pool<Object, ObjectID, 64, 64000> ObjectPool; +extern ObjectPool _object_pool; + +/** An object, such as transmitter, on the map. */ +struct Object : ObjectPool::PoolItem<&_object_pool> { + Town *town; ///< Town the object is built in + TileArea location; ///< Location of the object + Date build_date; ///< Date of construction + + /** Make sure the object isn't zeroed. */ + Object() {} + + /** + * Get the object associated with a tile. + * @param tile The tile to fetch the object for. + * @return The object. + */ + static Object *GetByTile(TileIndex tile); +}; + +#define FOR_ALL_OBJECTS_FROM(var, start) FOR_ALL_ITEMS_FROM(Object, object_index, var, start) +#define FOR_ALL_OBJECTS(var) FOR_ALL_OBJECTS_FROM(var, 0) + +#endif /* OBJECT_BASE_H */ |