projects
/
supertux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Big CMakeLists update.
[supertux.git]
/
src
/
trigger
/
trigger_base.hpp
diff --git
a/src/trigger/trigger_base.hpp
b/src/trigger/trigger_base.hpp
index
f4c4795
..
571dac5
100644
(file)
--- a/
src/trigger/trigger_base.hpp
+++ b/
src/trigger/trigger_base.hpp
@@
-20,39
+20,49
@@
#ifndef SUPERTUX_TRIGGER_BASE_H
#define SUPERTUX_TRIGGER_BASE_H
#ifndef SUPERTUX_TRIGGER_BASE_H
#define SUPERTUX_TRIGGER_BASE_H
+#include <list>
#include "moving_object.hpp"
#include "math/rect.hpp"
#include "sprite/sprite.hpp"
#include "moving_object.hpp"
#include "math/rect.hpp"
#include "sprite/sprite.hpp"
+#include "object_remove_listener.hpp"
class Player;
/** This class is the base class for all objects you can interact with in some
* way. There are several interaction types defined like touch and activate
*/
class Player;
/** This class is the base class for all objects you can interact with in some
* way. There are several interaction types defined like touch and activate
*/
-class TriggerBase : public MovingObject
+class TriggerBase : public MovingObject
, public ObjectRemoveListener
{
public:
enum EventType {
{
public:
enum EventType {
- EVENT_TOUCH, EVENT_ACTIVATE
+ EVENT_TOUCH, /**< Object came into contact */
+ EVENT_LOSETOUCH, /**< Lost contact with object */
+ EVENT_ACTIVATE /**< Action button pressed */
};
};
-
+
TriggerBase();
~TriggerBase();
void update(float elapsed_time);
void draw(DrawingContext& context);
HitResponse collision(GameObject& other, const CollisionHit& hit);
TriggerBase();
~TriggerBase();
void update(float elapsed_time);
void draw(DrawingContext& context);
HitResponse collision(GameObject& other, const CollisionHit& hit);
-
+
/**
* Receive trigger events
*/
virtual void event(Player& player, EventType type) = 0;
/**
* Receive trigger events
*/
virtual void event(Player& player, EventType type) = 0;
+
+ /**
+ * Called by GameObject destructor of an object in losetouch_listeners
+ */
+ virtual void object_removed(GameObject* object);
private:
Sprite* sprite;
bool lasthit;
bool hit;
private:
Sprite* sprite;
bool lasthit;
bool hit;
+
+ std::list<Player*> losetouch_listeners; /**< Players that will be informed when we lose touch with them */
};
#endif /*SUPERTUX_INTERACTIVE_OBJECT_H*/
};
#endif /*SUPERTUX_INTERACTIVE_OBJECT_H*/
-