Skip to content

Búsqueda de cartas

Pablo Martínez López edited this page Nov 5, 2026 · 1 revision

Búsqueda de cartas

English · Español

La pantalla Buscar (src/features/buscar/) consulta cualquier carta sin deck de por medio: un nombre o la sintaxis de Scryfall, filtros, resultados ordenados y una ficha. Añadir al deck es un botón al final, no el objetivo de la pantalla; por eso es una pantalla propia y no una variante del diálogo Añadir carta.

Ficheros

Fichero Responsabilidad
src-tauri/src/commands/buscar.rs cartas_buscar, carta_ficha, carta_aclaraciones; monta la consulta (consulta, parametros) y la ficha (ficha_de), con tests.
src-tauri/src/scryfall/client.rs Scryfall::buscar_pagina, Scryfall::aclaraciones.
src/stores/busqueda-store.ts useBusqueda: filtros, resultados, página y carta abierta. Es un store porque cambiar de pestaña desmonta la pantalla y lo buscado tiene que seguir ahí al volver.
src/features/buscar/buscar-screen.tsx La pantalla: campo con sugerencias, filtros (panel lateral en escritorio, HojaMenu en lo demás), barra de orden y resultados.
src/features/buscar/filtros-panel.tsx Los controles de los filtros.
src/features/buscar/ficha-carta.tsx El diálogo de la ficha (DialogoAdaptable).
src/features/buscar/simbolos-mana.tsx Los símbolos de maná, pintados con CSS dentro del texto de reglas y los costes.
src/features/buscar/consulta.ts La parte pura: filtros de fábrica, hayCriterio, cuantosFiltros, claveDeFiltros, partirSimbolos, con tests.

Reutiliza RejillaCartas y useSugerencias de features/variants/ y traerCarta para añadir una carta.

Cómo se monta la consulta

La consulta se monta en Rust, como todo lo pesado. FiltrosCartas lleva lo que ha pedido la pantalla:

flowchart LR
  P[FiltrosCartas] --> C[consulta: el parámetro q]
  P --> X[parametros: order, dir, unique, include_multilingual]
  C --> S[/cards/search + page/]
  X --> S
  S --> R[PaginaCartas: cartas, total, hayMas]
Loading
  • texto va tal cual (puede ser sintaxis de Scryfall); con exacto, elegido en las sugerencias, pasa a ser !"nombre".
  • Todos los demás valores pasan por solo_alfanumerico, para que un filtro no pueda colar otra consulta.
  • Colores: c>= (los incluye), c= (exactamente esos) o id<= (identidad dentro de ellos, para un comandante). Incolora con colores no tiene sentido, así que mandan los colores.
  • include_multilingual=true es lo que hace que «rayo» encuentre el nombre impreso en español; sin filtro de idioma, los resultados siguen saliendo en inglés. Solo se quita con «todas las impresiones» y sin idioma, que listaría todas las impresiones en todos los idiomas.

Una consulta vacía devuelve una página vacía sin llamar a Scryfall. Una consulta sin coincidencias (un 404 de Scryfall) también es una página vacía, no un error.

Comportamiento que conviene saber

  • Los filtros buscan solos, el texto no. claveDeFiltros son los filtros sin el texto: cuando cambia, se busca a los 350 ms (los filtros se suelen cambiar varios seguidos). El texto espera a Enter, al botón o a una sugerencia, para no hacer una petición por cada tecla. Volver a la pantalla no busca otra vez.
  • Páginas. Scryfall da hasta 175 cartas por página. Un centinela al final de la rejilla (useVisible, con el viewport del ScrollArea como raíz) pide la siguiente; si falla, deja de pedir y enseña «Reintentar». Las páginas no se recuerdan en busquedas: el store ya las guarda.
  • Respuestas viejas. busqueda-store.ts numera cada petición y tira la respuesta de todas menos la última.
  • La ficha. ficha_de da una entrada por cara: las partidas y las de aventura comparten una imagen y llevan el texto de cada cara; las de doble cara tienen una imagen por cara, y solo ellas llevan el botón de «la otra cara». El texto impreso manda sobre el Oracle, así que una carta en español se lee en español.
  • Precios. Scryfall no da precio a las impresiones que no están en inglés, así que carta_ficha pide la misma impresión en inglés; si falla, la ficha se abre igual, sin precio. Es la misma regla que en Estadísticas.
  • Impresiones. card_prints con el idioma de la carta abierta; las filas de Cockatrice se quitan porque no tienen ficha. Si falla, la ficha sigue valiendo.
  • Aclaraciones. Son de la carta, no de la impresión, así que se piden una vez por nombre de carta, no otra vez al cambiar de impresión. Scryfall solo las tiene en inglés, y el título lo dice.
  • Añadir. traerCarta más insertar al final del deck abierto, con un aviso: el deck no está en pantalla.

Por dónde empezar para ampliarla

  • Un filtro nuevo: un campo en FiltrosCartas y su trozo en consulta (con test), luego el control en filtros-panel.tsx y la cuenta en cuantosFiltros.
  • Un dato nuevo en la ficha: un campo en FichaCarta/CaraFicha (puede que ScryCard ya lo lea) y su línea en ficha-carta.tsx.

Véase también

Documentation · Documentación

Language: English · Español

Use and build · Uso y desarrollo

Architecture · Arquitectura

Data · Datos

Getting cards · Conseguir cartas

Layout, images, PDF · Maquetación, imagen y PDF

Card designer · Diseñador de cartas

Game table · Mesa de juego

Mobile · Móvil

Frontend · Frontend

Reference · Referencia

Clone this wiki locally