const KEY_INTENTOS = 'ruleta_intentos_usados'
const KEY_AGOTADOS = 'ruleta_intentos_agotados'
const MAX_INTENTOS = 3

let intentosInfinitos = false

export function setIntentosInfinitos(valor: boolean) {
  intentosInfinitos = valor
}

function getIntentosUsados(): number {
  if (intentosInfinitos) return 0
  return parseInt(sessionStorage.getItem(KEY_INTENTOS) ?? '0', 10)
}

function setIntentosUsados(n: number): void {
  if (intentosInfinitos) return
  sessionStorage.setItem(KEY_INTENTOS, String(n))
  if (n >= MAX_INTENTOS) {
    sessionStorage.setItem(KEY_AGOTADOS, 'true')
  }
}

export function intentosAgotados(): boolean {
  if (intentosInfinitos) return false
  return sessionStorage.getItem(KEY_AGOTADOS) === 'true'
}

export function intentosRestantes(): number {
  if (intentosInfinitos) return 999
  return Math.max(0, MAX_INTENTOS - getIntentosUsados())
}

export function consumirIntento(): void {
  if (intentosInfinitos) return
  setIntentosUsados(getIntentosUsados() + 1)
}

export function resetIntentos(): void {
  sessionStorage.removeItem(KEY_INTENTOS)
  sessionStorage.removeItem(KEY_AGOTADOS)
}
