class DrawingContext;
+ class ObjectRemoveListener;
+
/**
* Base class for all game objects. This contains functions for:
* -querying the actual type of the object
{
wants_to_die = true;
}
+ /** registers a remove listener which will be called if the object
+ * gets removed/destroyed
+ */
+ void add_remove_listener(ObjectRemoveListener* listener)
+ {
+ RemoveListenerListEntry* entry = new RemoveListenerListEntry();
+ entry->next = remove_listeners;
+ entry->listener = listener;
+ remove_listeners = entry;
+ }
+
// flags
enum {
/// the tile so you can stand on it
*/
bool wants_to_die;
+ struct RemoveListenerListEntry
+ {
+ RemoveListenerListEntry* next;
+ ObjectRemoveListener* listener;
+ };
+ RemoveListenerListEntry* remove_listeners;
+
protected:
int flags;
};