summaryrefslogtreecommitdiff
path: root/src/object_base.h
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-08-13 12:45:26 +0000
committerrubidium <rubidium@openttd.org>2010-08-13 12:45:26 +0000
commit89b2b9370a877526e2b637b1cd39d6f374dbabdb (patch)
tree7733fbb8b3a39ba160e0d3d5d36aedcd13e7a0dc /src/object_base.h
parentc5ec91098016e92a4872216c77380e522262abc3 (diff)
downloadopenttd-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.h44
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 */