/**
 * Класс сущности "ракетка"
 */
export class Paddle {
  /**
   * @param {number} x координата положения ракетки по оси X
   * @param {number} y координата положения ракетки по оси Y
   * @param {number} width положительное числовое значение ширины ракетки
   * @param {number} height положительное числовое значение высоты ракетки
   */
  constructor(x, y, width, height) {
    this.x = x;
    this.y = y;
    this.width = width;
    this.height = height;
  }

  /**
   * Изменяет X координату ракетки, ограничивая минимальные и максимальные координаты
   * @param {number} x новая X координата
   * @param {number} minX минимальное положение на оси X
   * @param {number} maxX максимальное положение на оси X
   */
  moveTo(x, minX, maxX) {
    switch (true) {
      case minX !== undefined && x <= minX:
        this.x = minX;
        return;
      case maxX !== undefined && x >= maxX - this.width:
        this.x = maxX - this.width;
        return;
      default:
        this.x = x;
    }
  }
}
