Race-G
⚠️ IMPORTANT NOTICE · EN
From Race-G v5.x onwards, documentation and support are provided exclusively in Spanish (Latin America).
⚠️ AVIS IMPORTANT · FR
À partir de la version Race-G v5.x, la documentation et l'assistance sont fournies uniquement en espagnol (Amérique latine).
⚠️ AVVISO IMPORTANTE · IT
Dalla versione Race-G v5.x in poi, la documentazione e l'assistenza sono fornite esclusivamente in spagnolo (America Latina).
⚠️ AVISO IMPORTANTE · PT
A partir da versão Race-G v5.x, a documentação e o suporte são fornecidos única e exclusivamente em espanhol (América Latina).
Race-G 7 · Sesión - Común Banderas y Estados

Banderas y Estados

7 · Sesión - Común

¿Cómo usar Banderas / Situaciones Manuales?

Las banderas manuales son los carteles grandes que sacás al aire a mano: Pace Car, Bandera Roja, Vuelta de Formación, Virtual Safety Car, Actividad Demorada, Última Vuelta, Últimas X Vueltas, Carrera Suspendida, Carrera Cancelada y Vuelta Previa. Comparten la misma ubicación, ancho y alto en pantalla: solo cambia el color, la imagen de fondo y el texto según la que actives. No son la bandera automática del Cuenta Vueltas (amarilla/verde/roja que viene del crono): son estados que vos decidís.

Dos sistemas distintos. Automática: viene del crono en data.flag = yellow/green/red/finish/none y se ve en el Cuenta Vueltas (superior) y en el Crawl Inferior (inferior), cada una configurable aparte. Manual: la disparás vos desde PLAY con un botón, se ve en ov-bandera (cartel central grande) y es la que explicamos acá. Pueden convivir: podés tener amarilla automática arriba y Pace Car manual al centro.

1. Antes de empezar

📦

Mismo lugar para todas

En banderas-module.js la config dice: manual.box = {width:359, height:120, top:40, left:40, align:center}. Ese rectángulo es único para las 10 banderas manuales. Si movés una, movés todas. Así no se te desacomoda al aire.

🎨

Cada estado con su estilo propio

Cada bandera manual es un objeto con bgType (solid/gradient/image), bg, bg2, angle, bgImage, text, textOn, align, fontFamily, fontSize, fontWeight, textColor, shadow, padding, radius. Podés tener Safety Car con imagen /Assets/as.png y fondo naranja, y Bandera Roja con fondo rojo sólido y texto “BANDERA ROJA”.

💾

Guardado en banderas_cfg

Todo se guarda dentro de /api/config → banderas_cfg. No hay tabla aparte. Al guardar desde el Editor Visual (pestaña 🚩 BANDERAS) se dispara socket banderas_cfg_change y todos los layouts conectados lo aplican en vivo con applyExternalConfig.

🖼

Imágenes en Assets/

Las imágenes de fondo de cada bandera manual van en Assets/. Ejemplos de fábrica: /Assets/as.png (Pace Car), /Assets/FormationLap.png, /Assets/vueltaf.jpeg, /Assets/roja.png. Podés subir la tuya desde el Editor de Banderas: acepta PNG, JPG, WEBP y si pegás una ruta local C:\Imagenes\bandera.png la copia a Assets/ vía /api/assets/import_image.

2. Dónde están los botones

🖼️
Falta captura: Screenshots/banderas-botones.pngBloque Banderas / Situaciones en PLAY con botones Formación, Previa, Pace Car, Bandera Roja, Última Vuelta, VSC, Actividad Demorada, Últimas X Vueltas, Suspendida, Cancelada.
🏁

PLAY → Banderas / Situaciones

Bloque movible con 10 botones arrastrables. Cada botón tiene data-label _bnd_* y llama a toggleBandera(this, tipo, extra). El bloque es de ancho completo y se puede reordenar como cualquier LABEL. Atajos: clic = prende, otro clic = apaga.

🔄

Apaga las otras

Cuando prendés una, el código apaga todas las demás banderas manuales automáticamente (recorre _BND_LABELS, setea labelState a false y manda /api/labels visible:false). No podés tener Pace Car y Bandera Roja a la vez: la última que tocás gana.

🏁

Últimas X Vueltas — contador

Botón especial: al hacer clic calcula automáticamente vueltas restantes con rgLapsRemaining(currentData) y manda {n: 4, auto:true}. El texto del estado tiene token {N} que se reemplaza por el número: “ÚLTIMAS {N} VUELTAS” → “ÚLTIMAS 4 VUELTAS”. Si tocás de nuevo, se apaga.

3. Qué hace cada bandera manual

Clave internaLabel visibleDefault de fábricaCuándo usarla
safetyPace Car / Safety Car#c9631a + /Assets/as.png + “PACE CAR” textOnEntra Pace Car. Amarilla + auto de seguridad en pista.
previaVuelta Previa#c9a600 + /Assets/FormationLap.png sin textoVuelta de instalación antes de largada (previa).
formacionVuelta de Formación#c9a600 + /Assets/vueltaf.jpeg sin textoVuelta de formación oficial antes de largar.
rojaBandera Roja#a11212 + /Assets/roja.png + “BANDERA ROJA”Carrera detenida por incidente. Todos a boxes.
vscVirtual Safety Car#c9a600 + “VIRTUAL SAFETY CAR”VSC: ritmo controlado sin Pace Car físico.
demoradaActividad Demorada#555555 + “ACTIVIDAD DEMORADA”Demora por clima, rescate, etc.
ultimaÚltima Vuelta#e0e0e0 + “ÚLTIMA VUELTA”Última vuelta de carrera.
ultimas_xÚltimas X Vueltas#e0e0e0 + “ÚLTIMAS {N} VUELTAS”Recta final: 5, 4, 3 vueltas. El N se calcula solo.
suspendidaCarrera Suspendida#a11212 + “CARRERA SUSPENDIDA”Suspensión momentánea.
canceladaCarrera Cancelada#a11212 + “CARRERA CANCELADA”Cancelación definitiva.

Todos estos textos son editables: podés cambiar “PACE CAR” por “AUTO DE SEGURIDAD” y queda guardado.

4. Dónde se muestran al aire

🖼️
Falta captura: Screenshots/banderas-layout.pngCartel central grande con caja bnd-box, imagen bnd-bg-img y texto bnd-text. Mismo lugar para las 10 banderas.
📺

ov-bandera — cartel central

En layout.html: <div id="ov-bandera"> <div class="bnd-box" id="bnd-box"> <img id="bnd-bg-img"> <div id="bnd-text"></div> </div> </div>. Ocupa toda la pantalla pero la caja interna es de 359x120 por defecto en top:40 left:40. Al activar con showBanderaManual(tipo, extra) se le pone width/height/top/left del box único, se aplica applyFlagBox (fondo + imagen + texto) y se agrega clase show con opacity 1. Al ocultar, quita show.

🏁

Banderas automáticas — Cuenta Vueltas

Arriba en el Cuenta Vueltas (superior) y abajo en Crawl Inferior (inferior): cv-flag-box / ci-flag-box con cv-flag-img / cv-flag-text y ci-flag-img / ci-flag-text. Cada una tiene su propio tamaño (cv_box superior/inferior width/height). Los estados son yellow/green/red/finish/none con defaults: yellow #c9a600 “AMARILLA”, green #1a7d2c sin texto, red #a11212 “ROJA”, finish #111111 + /Flags/finish.png.

📡

Comando que viaja

PLAY manda {cmd:'bandera', tipo:'safety'} o {cmd:'bandera', tipo:'ultimas_x', n:4} vía /api/layout_cmd y /api/labels. layout.html lo recibe por socket o polling y llama a BanderasModule.processBanderaCmd(cmd): si tipo=ocultar → hideBanderaManual(), si no → showBanderaManual(tipo, {n}). Además la config visual viaja por banderas_cfg_change y por /api/layout_data en cada poll.

5. Cómo se configuran — pestaña 🚩 BANDERAS

🖼️
Falta captura: Screenshots/banderas-editor.pngPanel con secciones para cv_flag superior/inferior y manual box + estados con preview, fondo sólido/gradiente/imagen, texto, tipografía, sombra, padding y radius.
⚙

Editor Visual → 🚩 BANDERAS

Pestaña nueva que no usa SE_GROUPS: la arma BanderasModule.buildEditorPanel(onChange) y monta HTML propio en se-banderas-content. Cada fila es un estado con preview en vivo. Al tocar cualquier campo llama a onChange() que hace BanderasModule.saveConfig() con debounce y re-aplica al aire.

🎨

Fondo: sólido / gradiente / imagen

Control bnd-color-section: pastillas Sólido/Gradiente/Imagen. Sólido: color picker + opacidad slider + vista. Gradiente: ángulo 135° por defecto, hasta 3 pasos con color + posición %, barra de vista previa. Imagen: campo de texto con URL /Assets/… + botón Subir. Si pegás ruta local C:\ o \\servidor\share o file://, la detecta isLocalDiskPath y la importa a Assets/ con /api/assets/import_image.

🔤

Texto

Campo texto libre con token {N} para ultimas_x, switch textOn (mostrar o no), align left/center/right, fontFamily con datalist de sugerencias (Roboto Condensed Variable, Arial, Segoe UI, monospace, Impact, Georgia) pero campo libre, fontSize px (0 = default del layout), fontWeight 100-900, textColor sólido o gradiente con background-clip:text, shadowMode none/custom con x/y/blur/color.

📐

Padding y Radius con candado

Dos cajas tipo Corel: padding {t,r,b,l} y radius {tl,tr,tr,br} con candado 🔒🔓. Si está vinculado, editar uno cambia los 4. Si no, cada lado independiente. Se aplican con boxEl.style.padding y borderRadius. Si los 4 radios son 0 no pisa el CSS (deja --cv-flag-border-radius del editor).

6. Parámetros de la caja única (todas las manuales)

ParámetroDefaultQué hace
width / height359 x 120 pxTamaño de la caja del cartel manual. Compartido por las 10.
top / left40, 40 pxPosición absoluta del cartel en el layout. Mové desde Editor Visual o editando box.
aligncenterAlineación del texto dentro de la caja si textOn.
bgTypesolid/image/gradientCómo se pinta fondo.
bg / bg2 / bgMid / bgMidPos / angle / bgGrad#c9631a, etc.Color sólido o gradiente lineal. bgGrad es string completo linear-gradient() del editor de gradientes.
bgImage/Assets/as.png, etc.Imagen de fondo, solo si bgType=image. Se dibuja ENCIMA del color base.
text / textOn“PACE CAR” true, etc.Texto y si se muestra.
fontFamily / fontSize / fontWeight / textColor / shadow—Tipografía y sombra. textColor puede ser gradiente con background-clip:text. fontSize 0 = default layout.

7. Banderas automáticas — config aparte

🟡

Superior e Inferior independientes

STATE.cv_flag.superior y inferior cada uno con yellow/green/red/finish/none. Tamaño propio en STATE.cv_box.superior/inferior {width:null, height:null}: null = usa CSS (--cv-flag-width/height), número = pisa CSS. Así podés tener bandera grande arriba y chica abajo.

🏁

Finish con imagen

Default finish usa /Flags/finish.png como bgImage. Recomendación: PNG a cuadros bien nítido, sin fondo, 400x300 mínimo.

8. Recomendación para PNG nítido

Para banderas manuales con imagen de fondo:

• Formato: PNG-24 con transparencia, no JPG. JPG mete artefactos en bordes de texto y no deja ver el color base debajo.

• Tamaño: Exportá al menos 2x del tamaño al aire. Si la caja es 359x120, exportá 720x240 o 1080x360. El navegador escala para abajo nítido, si escalás para arriba se pixela.

• Texto en la imagen: Evitá meter texto dentro del PNG. Usá el campo text del estado: así queda vectorial, nítido a cualquier resolución y podés cambiar tipografía, color, sombra y traducción sin re-exportar imagen.

• Si necesitás imagen con texto (ej: logo de categoría): exportá con texto en 300dpi, sin compresión, y dejá padding transparente alrededor para que el radius y padding del estado no lo corten.

• Fondos: Si usás imagen + color base, poné en bg un color que combine si la imagen tiene transparencia parcial (ej: Pace Car naranja #c9631a debajo de as.png con transparencia).

• Subida: Desde Editor Visual → campo imagen → Subir → elige archivo → se sube a /api/assets/upload_image → devuelve /Assets/xxx.png. Si pegaste ruta local C:\Users\...\bandera.png, el server la copia a Assets/ automático.

• Cache: Las imágenes en galería usan cache-buster ?t= timestamp. Si cambiás imagen con mismo nombre y no la ves, recargá layout con Ctrl+F5 o renombrá.

9. Flujo de uso en transmisión

Antes del evento: diseñarEditor Visual → pestaña 🚩 BANDERAS → expandí cada estado manual (fila colapsable con chevron) → elegí fondo (sólido/gradiente/imagen), subí PNG a Assets/ si hace falta, escribí texto, elegí tipografía, tamaño, sombra, padding, radius. Guardado auto con debounce → emite banderas_cfg_change.
Posicionar la caja únicaEn la sección “Ubicación/tamaño únicos” ajustá width/height/top/left de manual.box. Es para las 10 a la vez. Probá con una bandera cualquiera al aire para ver posición.
En PLAY: dispararClic en botón de bandera manual → toggleBandera → apaga otras, manda label visible y comando {cmd:bandera, tipo}. Se ve en ov-bandera con clase show. Clic de nuevo → oculta (tipo ocultar).
Últimas X: automáticoClic en Últimas X Vueltas → calcula vueltas restantes y muestra “ÚLTIMAS 4 VUELTAS” con {N} reemplazado. Si cambia el número de vueltas, tocá de nuevo para actualizar.
OcultarClic de nuevo en misma bandera, o clic en otra bandera (auto-apaga anterior), o comando ocultar desde API. En layout: hideBanderaManual() quita clase show y opacity.

10. Precauciones

Una sola a la vez. El sistema apaga todas las demás al prender una. No intentes tener Safety y Roja juntas: la última gana. Es por diseño para no tapar pantalla.

Misma caja para todas. Si achicás width/height para que entre “VSC”, también achicás “BANDERA ROJA”. Diseñá para el texto más largo (VIRTUAL SAFETY CAR).

Texto con token {N} solo en ultimas_x. Solo ese estado reemplaza {N} por número. Si lo ponés en otro estado, queda literal {N}.

Imágenes en Assets/, no en Marcas-Brands ni Flags. Las manuales usan Assets/. Las automáticas de finish usan /Flags/finish.png. No mezcles carpetas o no las encuentra.

Ruta local pegada: Si pegás C:\Imagenes\bandera.png, el server la copia a Assets/ vía import_image. Si la ruta no existe en el servidor, falla con “No se pudo copiar”.

Fuentes de fonts/: Si usás una fuente de carpeta fonts/ que no está declarada en layout, BanderasModule la detecta como missing en usedFamilies() y vuelve a pedir lista con ensureFolderFonts() y re-aplica. Si aún no se ve, recargá layout.

Sombra por defecto SIN sombra. En este módulo shadowMode vacío = none (sin sombra), distinto al resto del editor. Si querés sombra, poné custom y ajustá x/y/blur/color.

Padding y radius 0 no pisa CSS. Si los 4 radios son 0, no setea borderRadius y deja --cv-flag-border-radius del Editor de Estilo. Con algún valor >0, manda el panel.

Bandera automática vs manual conviven. Podés tener amarilla automática en Cuenta Vueltas y Pace Car manual al centro a la vez. No se apagan entre sí.

11. Problemas frecuentes

Lo que vesQué hacer
Toco bandera y no pasa nada al aireVerificá que layout.html esté cargado con banderas-module.js y que BanderasModule.loadConfig() se haya llamado. Mirá consola: debe haber ov-bandera, bnd-box. Si layout está en CasparCG, la config también viaja por /api/layout_data en cada poll, no solo por socket.
Se prende y se apaga solaOtro operador tocó otra bandera: el sistema apaga todas las demás. Coordinen quién dispara banderas.
Imagen no se ve, solo colorbgType debe ser “image” y bgImage con ruta /Assets/xxx.png. Si bgType es solid/gradient, ignora bgImage. Cambiá a Imagen en el editor.
Subí PNG y sigue viejoCache. La galería usa ?t= timestamp pero layout puede cachear. Ctrl+F5 en layout, o renombrá archivo.
Pegué C:\ruta y dice No se pudo copiarEl servidor no tiene acceso a esa ruta (está en tu PC, no en el server). Subí con botón Subir en vez de pegar ruta, o copiá archivo a carpeta compartida accesible por el server.
Texto {N} literalSolo funciona en ultimas_x. En otros estados queda literal. Usalo solo ahí.
Fuente no cambiaEl panel de control fuerza font-family con !important en #se-panel *. BanderasModule usa setTxt con important para pisarlo. Si aún no cambia, verificá que fontFamily esté escrita con comillas: "Roboto Condensed Variable, \"Segoe UI\", sans-serif" y que esté en fonts/ declarada.
Bandera muy grande/chicaAjustá manual.box width/height en editor de Banderas. Es para las 10 a la vez. O ajustá cv_box superior/inferior para automáticas.
Últimas X muestra número viejoEl N se calcula al momento del clic con rgLapsRemaining. Si avanzaron vueltas, tocá de nuevo para actualizar.
No veo pestaña 🚩 BANDERAS en EditorVerificá que /banderas-module.js esté cargado en index.html (script src) y que BanderasModule.buildEditorPanel exista. Si no, recargá index.

12. Lista de control rápida

🗂

Al preparar el evento

Editor Visual → 🚩 BANDERAS → revisar 10 estados manuales: fondo, imagen en Assets/, texto, tipografía, sombra, padding, radius. Posicionar caja única 359x120. Probar cada una al aire.

🔍

Antes de salir al aire

PLAY → Banderas / Situaciones → probar clic en cada una, verificar que apaga las otras, que texto se ve nítido, que imagen no pixela, que Últimas X calcula bien. Verificar automáticas amarilla/verde/roja/finish en Cuenta Vueltas.

🏁

Durante la transmisión

Un clic prende, otro apaga. Últimas X recalcula al tocar. No hay que ir al Editor: solo botonera. Si necesitás cambiar texto al vuelo, Editor → 🚩 BANDERAS → editar texto → guarda auto y se aplica en vivo.

💾

Al terminar

Backup de config.json (contiene banderas_cfg) y carpeta Assets/. Queda para próxima fecha.

AI
Race-G Assistant
Ayudante automatizado por IA
Hola! Bienvenido a Race-G...
Haz tu pregunta aquí, o tal vez te interese:
Cargando…