/**
 * Hand Display Object
 * Affiche une main de Riichi avec options de position et orientation
 */

class Hand {
  constructor(options = {}) {
    this.label = options.label || 'Main';
    this.position = options.position || 'left-label'; // 'left-label' or 'top-label'
    this.tilt = options.tilt || 'none'; // 'none', 'left' (90deg), 'right' (-90deg), 'upside-down' (180deg)
    this.containerId = options.containerId || 'tiles-display';
    this.apiUrl = options.apiUrl || '/api/random_hand';
  }

  /**
   * Récupère une main aléatoire et l'affiche
   */
  async render() {
    try {
      const response = await fetch(this.apiUrl);
      const data = await response.json();
      this.displayHand(data.hand);
    } catch (error) {
      console.error('Erreur lors de la récupération de la main:', error);
    }
  }

  /**
   * Affiche la main dans le DOM
   * @param {Array} tiles - Tableau des tuiles à afficher
   */
  displayHand(tiles) {
    const container = document.getElementById(this.containerId);
    
    // Créer la section de la main
    const handDiv = document.createElement('div');
    const classNames = `hand-display ${this.position}`;
    if (this.tilt !== 'none') {
      handDiv.className = `${classNames} tilt-${this.tilt}`;
    } else {
      handDiv.className = classNames;
    }
    
    // Créer le label
    const label = document.createElement('div');
    label.className = 'hand-label';
    label.textContent = this.label;
    handDiv.appendChild(label);
    
    // Créer la grille de tuiles
    const handTiles = document.createElement('div');
    handTiles.className = 'hand-tiles';
    
    tiles.forEach(tile => {
      const tileDiv = document.createElement('div');
      tileDiv.className = 'hand-tile-item';
      tileDiv.innerHTML = tile.svg;
      handTiles.appendChild(tileDiv);
    });
    
    handDiv.appendChild(handTiles);
    container.appendChild(handDiv);
  }
}
