import objectdraw.*;
import java.awt.*;

public class Pong extends WindowController {

   // position and dimensions of the court
   private static final int COURT_LEFT = 50;
   private static final int COURT_TOP = 50;
   private static final int COURT_HEIGHT = 300;
   private static final int COURT_WIDTH = 250;
   private static final int COURT_RIGHT = COURT_LEFT + COURT_WIDTH;

   // dimensions of the paddle
   private static final int PADDLE_WIDTH = 50;
   private static final int PADDLE_HEIGHT = 20;

   private static final int PADDLE_Y = COURT_TOP + COURT_HEIGHT - PADDLE_HEIGHT - 1;
   
    private FilledRect paddle;
    private FramedRect boundary;  // the boundary of the playing area.
    
    public void begin() {        
        // make the playing area
        boundary = new FramedRect(COURT_LEFT, COURT_TOP,
                                  COURT_WIDTH, COURT_HEIGHT,
                                  canvas);
        
        // make the paddle
        paddle = new FilledRect(COURT_LEFT + (COURT_WIDTH - PADDLE_WIDTH)/2,
                                COURT_TOP + COURT_HEIGHT - PADDLE_HEIGHT - 1,
                                PADDLE_WIDTH, PADDLE_HEIGHT,
                                canvas);
    }
    
    
    
    // make a new ball when the player clicks
    public void onMouseClick(Location point) {
        new MovingBall(canvas, paddle, boundary);
    }
    
    
    
    public void onMouseMove(Location point) {
        if (point.getX() < COURT_LEFT) {
            // place paddle at left edge of the court
            paddle.moveTo(COURT_LEFT, PADDLE_Y);
        } else if (point.getX() + PADDLE_WIDTH > COURT_RIGHT) {
            // place paddle at right edge of the court
            paddle.moveTo(COURT_RIGHT - PADDLE_WIDTH, PADDLE_Y);
        } else {
            // keep the edge of the paddle lined up with the mouse
            paddle.moveTo(point.getX(), PADDLE_Y);
        }
    }
}
