import PartidaBattle from "./PartidaBattle.js";
const canvasMapa = document.getElementById("mapa");
const canvasMiniMapa = document.getElementById("minimapa");


const barcosImg = new Image();
barcosImg.src = "/assets/barcos.png";

barcosImg.onload = function(){
    iniciaJuego();
} 


function getSprites(spriteSheet) {
  const sprites = {
    PORTAAVIONES: [
      { x: 0, y: 0, width: 64, height: 256 },
      { x: 64, y: 192, width: 256, height: 64 },
    ],
    ACORAZADO: [
      { x: 64, y: 0, width: 64, height: 192 },
      { x: 128, y: 128, width: 192, height: 64 },
    ],
    DESTRUCTOR: [
      { x: 128, y: 0, width: 64, height: 128 },
      { x: 192, y: 64, width: 128, height: 64 },
    ],
    FRAGATA: [
      { x: 192, y: 0, width: 64, height: 64 },
      { x: 256, y: 0, width: 64, height: 64 },
    ],
  };

  const spritesObj = {};
  const canvas = document.createElement("canvas");
  const ctx = canvas.getContext("2d");
  for (const key in sprites) {
    if (Object.hasOwnProperty.call(sprites, key)) {
      const spriteArray = sprites[key];
      spritesObj[key] = spriteArray.map((sprite) => {
        canvas.width = sprite.width;
        canvas.height = sprite.height;
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.drawImage(
          spriteSheet,
          sprite.x,
          sprite.y,
          sprite.width,
          sprite.height,
          0,
          0,
          sprite.width,
          sprite.height
        );
        const spriteImage = new Image();
        spriteImage.src = canvas.toDataURL();
        return spriteImage;
      });
    }
  }
  return spritesObj;
}


function iniciaJuego(){
    const canvasMapa = document.getElementById("mapa");
    const canvasMiniMapa = document.getElementById("minimapa");
    const sprites = getSprites(barcosImg);
    const partida = new PartidaBattle(canvasMapa, canvasMiniMapa,sprites);

    gameLoop();

    function gameLoop() {
      partida.draw();
      window.requestAnimationFrame(gameLoop);
    }
}


