fix collision against spikes too wide, fix paths, try to fix jumping on badguys that...
[supertux.git] / src / badguy / badguy.hpp
index 8b759df..b3ae59f 100644 (file)
@@ -61,11 +61,19 @@ public:
   virtual HitResponse collision(GameObject& other,
       const CollisionHit& hit);
 
+  /** Called when a collision with tile with special attributes occured */
+  virtual void collision_tile(uint32_t tile_attributes);
+
   /** Set the badguy to kill/falling state, which makes him falling of the
    * screen (his sprite is turned upside-down)
    */
   virtual void kill_fall();
 
+  /** Writes out the badguy into the included lisp::Writer. Useful e.g. when
+   * converting an old-format level to the new format.
+   */
+  virtual void save(lisp::Writer& writer);
+
   Vector get_start_position() const
   {
     return start_position;
@@ -123,11 +131,9 @@ protected:
   { return state; }
     
   /**
-   * returns a pointer to the player, try to avoid this function to avoid
-   * problems later when we have multiple players or no player in scripted
-   * sequence.
+   * returns a pointer to the nearest player or 0 if no player is available
    */
-  Player* get_player();
+  Player* get_nearest_player();
   
   Sprite* sprite;
   Physic physic;
@@ -139,7 +145,11 @@ protected:
    * after being deactivated.
    */
   bool is_offscreen();
-  
+  /**
+   * Checks if the badguy may fall off a platform if continuing a given movement.
+   */
+  bool may_fall_off_platform();
+
   Vector start_position;
 
   Direction dir;