class Oceano {
  constructor(width, height, celdaSize, sprites) {
    this.sprites = sprites;
    this.celdaSize = celdaSize;
    this.filas = Math.floor(height / celdaSize);
    this.columnas = Math.floor(width / celdaSize);
    this.nFramesAnim = 3;
    this.animFrame = 0;
    this.gameFrame = 0;

    this.lastColumnIndex = this.columnas - 1;
    this.lastRowIndex = this.filas - 1;
    this.lastColumnX = this.lastColumnIndex * this.celdaSize;
    this.lastRowY = this.lastRowIndex * this.celdaSize;
  }

  update() {}

  draw(ctx) {
    this.animFrame = Math.floor(this.gameFrame / 10) % this.nFramesAnim;
    this.gameFrame++;
    const frame = this.animFrame * 9;

    // Dibujar los bordes superior e inferior
    ctx.drawImage(this.sprites[0 + frame], 0, 0);
    ctx.drawImage(this.sprites[2 + frame], this.lastColumnX, 0);
    ctx.drawImage(this.sprites[6 + frame], 0, this.lastRowY);
    ctx.drawImage(this.sprites[8 + frame], this.lastColumnX, this.lastRowY);

    // Dibujar los bordes laterales
    for (let y = 1; y < this.lastRowIndex; y++) {
      ctx.drawImage(this.sprites[3 + frame], 0, y * this.celdaSize);
      ctx.drawImage(
        this.sprites[5 + frame],
        this.lastColumnX,
        y * this.celdaSize
      );
    }
    for (let x = 1; x < this.lastColumnIndex; x++) {
      ctx.drawImage(this.sprites[1 + frame], x * this.celdaSize, 0);
      ctx.drawImage(this.sprites[7 + frame], x * this.celdaSize, this.lastRowY);
    }
    // Dibujar el contenido interno
    for (let y = 1; y < this.lastRowIndex; y++) {
      for (let x = 1; x < this.lastColumnIndex; x++) {
        ctx.drawImage(this.sprites[4], x * this.celdaSize, y * this.celdaSize);
      }
    }
  }
}

export default Oceano;
