// Ball.hpp: Declaration of the Ball class.
//
// Author: Dominik Slusarczyk <dslusarc@cs.hmc.edu>
// 2/27/04
//

#ifndef __BALL_HPP_INCLUDED
#define __BALL_HPP_INCLUDED

#include "geometry.h"
#include "Room.hpp"

// The default radius of a ball.
const int DEFAULT_BALL_RADIUS = 5;

class Room;

class Ball
{
   public:
      Ball(int radius = DEFAULT_BALL_RADIUS);
      ~Ball();

      // Set the ball's state. 
      void setState(struct State state);

      // Ask the ball to move through dt seconds.
      struct State move(int dt);

      // Ask the ball to draw itself.
      void draw();

      struct State
      {
	    Tuple position;
	    Tuple velocity;
      };

   private:
      int   radius;
      Room* homeroom;
      State state;

      // Disable copy constructor and assignment operator.
      Ball(Ball&);
      Ball operator=(Ball&);
      
};



#endif
