#ifndef SUPERTUX_MOVING_OBJECT_H
#define SUPERTUX_MOVING_OBJECT_H
+#include <stdint.h>
+
#include "game_object.hpp"
#include "collision_hit.hpp"
#include "math/vector.hpp"
class Sector;
class CollisionGrid;
+enum CollisionGroup {
+ COLGROUP_DISABLED,
+ COLGROUP_MOVING,
+ // moving object but don't collide against other moving objects
+ COLGROUP_MOVING_ONLY_STATIC,
+ COLGROUP_STATIC,
+ COLGROUP_MOVINGSTATIC,
+ COLGROUP_TOUCHABLE,
+
+ COLGROUP_TILEMAP /* not really used at the moment */
+};
+
/**
* Base class for all dynamic/moving game objects. This class contains things
* for handling the bounding boxes and collision feedback.
*/
virtual HitResponse collision(GameObject& other,
const CollisionHit& hit) = 0;
+ /** called when tiles with special attributes have been touched */
+ virtual void collision_tile(uint32_t tile_attributes)
+ {
+ (void) tile_attributes;
+ }
const Vector& get_pos() const
{
{
bbox.set_pos(pos);
}
+
+ CollisionGroup get_group() const
+ {
+ return group;
+ }
+
+ void set_group(CollisionGroup group)
+ {
+ this->group = group;
+ }
protected:
friend class Sector;
friend class CollisionGrid;
+ friend class Platform;
/** The bounding box of the object (as used for collision detection, this
* isn't necessarily the bounding box for graphics)
/** The movement that will happen till next frame
*/
Vector movement;
+ /** The collision group */
+ CollisionGroup group;
};
#endif