// Pino: o marcador do lugar. Cai de cima, quica com overshoot, deixa uma sombra no chão e solta dois anéis de onda. // Dentro do MapaBase usa coordenadas do mapa e mantém o tamanho na tela (`tamanho` em px); solto, usa coordenadas da tela. import React, {useContext} from 'react'; import {useCurrentFrame} from 'remotion'; import {COR, MapaCtx, e5, ov, seg} from '../base'; export type PinoProps = { x: number; y: number; /** altura do pino na tela, px (herói: 170–220) */ tamanho?: number; inicio?: number; cor?: string; /** letra ou número no miolo */ miolo?: string; fim?: number; }; export const PinoGrupo: React.FC = ({x, y, tamanho = 190, inicio = 0, cor = COR.magenta, miolo = '', fim = 1e9}) => { const f = useCurrentFrame(); const ctx = useContext(MapaCtx); if (f < inicio - 1 || f > fim + 10) return null; const k = (ctx ? 1 / ctx.s : 1), t = ov(seg(f, inicio, inicio + 18)), sombra = e5(seg(f, inicio + 8, inicio + 18)); const onda = (d: number) => e5(seg(f, inicio + 14 + d, inicio + 40 + d)); const h = tamanho * k; return {[0, 8].map((d) => = inicio + 14 + d ? 1 - onda(d) : 0} />)} {miolo &&
{miolo}
}
; }; /** Pino solto na tela (coordenadas da tela). */ export const Pino: React.FC = (p) => ;