<?php
/**
 * Apply animation config (spins + speed) into an HTML template string.
 * - $speedRaw can be a factor (0.3..3.0) OR percentage (30..300).
 * - Returns the updated HTML.
 */
function apply_anim_config_to_template(string $html, $spinsRaw, $speedRaw): string {
  // normalizar spins
  $spins = (int)($spinsRaw ?? 2);
  if ($spins < 0) $spins = 0;
  if ($spins > 30) $spins = 30; // limite saudável

  // normalizar velocidade
  $speed = floatval($speedRaw ?? 1.0);
  // se veio como "percentual" (ex 250), converte para fator:
  if ($speed > 3.0) $speed = $speed / 100.0;
  // clamp 0.3x .. 3.0x
  if ($speed < 0.3) $speed = 0.3;
  if ($speed > 3.0) $speed = 3.0;

  // Substituições robustas (aceita espaços/minificação):
  $html = preg_replace('/const\s+ANIM_SPINS\s*=\s*[^;]*;/',  'const ANIM_SPINS = ' . $spins . ';', $html);
  $html = preg_replace('/const\s+ANIM_SPEED\s*=\s*[^;]*;/',  'const ANIM_SPEED = ' . number_format($speed, 3, '.', '') . ';', $html);

  // Se por algum motivo não encontrou as constantes, força override ao final do primeiro <script>
  if (strpos($html, 'const ANIM_SPINS = ' . $spins . ';') === false ||
      strpos($html, 'const ANIM_SPEED = ') === false) {
    $override = "\n// override (generator)\nANIM_SPINS = " . $spins . ";\nANIM_SPEED = " . number_format($speed, 3, '.', '') . ";\n";
    $html = preg_replace('/(<script[^>]*>)/i', "$1" . $override, $html, 1);
  }

  return $html;
}

/* === Exemplo de uso dentro do generator.php ===

  // 1) após buscar a roleta na base:
  $anim_spins = (int)($roulette['anim_spins'] ?? 2);
  $anim_speed = (float)($roulette['anim_speed'] ?? 1.0); // pode ser 0.3..3 ou 30..300

  // 2) gerar HTML base normalmente (carregue template_roleta.html no $html)
  $html = file_get_contents($template_path);

  // 3) aplicar as configs de animação
  $html = apply_anim_config_to_template($html, $anim_spins, $anim_speed);

  // 4) salvar o arquivo público
  file_put_contents($dest_path, $html);

*/ 
