export const BarcoTipo = Object.freeze({
  FRAGATA: 1,
  DESTRUCTOR: 2,
  ACORAZADO: 3,
  PORTAAVIONES: 4,
});

class Barco {
  constructor(id, x, y, longitud, orientacion, barcoImg, tipoNave) {
    this.id=id;
    this.barcoImg = barcoImg;
    this.tipoNave = tipoNave;
    this.xIni = this.x = x;
    this.yIni = this.y = y;
    this.longitud = longitud;
    this.orientacionIni = this.orientacion = orientacion;
    this.seleccionado = false;
    this.posIncorrecta = true;
  }
  clickado(clickX, clickY) {
    if (this.orientacion === 'VERTICAL') {
      return (
        clickX === this.x && clickY >= this.y && clickY < this.y + this.longitud
      );
    } else {
      return (
        clickY === this.y && clickX >= this.x && clickX < this.x + this.longitud
      );
    }
  }
  saveIniPos() {
    this.orientacionIni = this.orientacion;
    this.xIni = this.x;
    this.yIni = this.y;
  }
  restoreIniPos() {
    this.orientacion = this.orientacionIni;
    this.x = this.xIni;
    this.y = this.yIni;
  }
  setXY(x, y) {
    this.x = x;
    this.y = y;
  }
  giraBarco() {
    this.orientacion === 'VERTICAL'
      ? (this.orientacion = 'HORIZONTAL')
      : (this.orientacion = 'VERTICAL');
  }
  draw(ctx) {
    this.orientacion === 'VERTICAL'
      ? ctx.drawImage(this.barcoImg[0], this.x * 64, this.y * 64)
      : ctx.drawImage(this.barcoImg[1], this.x * 64, this.y * 64);
    if (this.seleccionado) {
      ctx.fillStyle = this.posIncorrecta
        ? 'rgba(255, 0, 0, 0.2)'
        : 'rgba(187, 187, 0, 0.2)';
      this.orientacion === 'VERTICAL'
        ? ctx.fillRect(this.x * 64, this.y * 64, 64, 64 * this.longitud)
        : ctx.fillRect(this.x * 64, this.y * 64, 64 * this.longitud, 64);
    }
  }

  toJSON() {
    return {
      id:this.id,
      x:this.x, 
      y:this.y, 
      longitud:this.longitud, 
      orientacion:this.orientacion,
      tipoNave: this.tipoNave
    };
  }



}
export default Barco;
