// React import { useMemo } from 'react'; import { Circle, Polygon } from 'react-native-maps'; // Components import { DashedCircle, InvertedCircle, InvertedPolygon } from '@/components/common/Layers'; // Contexts import { useTeam } from '@/contexts/teamContext'; // Constants import { ZONE_TYPES } from '@/constants'; export const StartZone = () => { const { teamInfos } = useTeam(); const { startingArea } = teamInfos; return useMemo(() => { if (startingArea) return null; return ( ); }, [startingArea]); }; const latToLatitude = (pos) => ({latitude: pos.lat, longitude: pos.lng}); export const GameZone = () => { const { zoneType, zoneExtremities } = useTeam(); return useMemo(() => { if (!zoneExtremities) return null; const items = []; const nextZoneStrokeColor = "rgb(90, 90, 90)"; const zoneColor = "rgba(25, 83, 169, 0.4)"; const strokeWidth = 3; const lineDashPattern = [30, 10]; switch (zoneType) { case ZONE_TYPES.CIRCLE: if (zoneExtremities.begin) items.push( ); if (zoneExtremities.end) items.push( ); break; case ZONE_TYPES.POLYGON: if (zoneExtremities.begin) items.push( latToLatitude(pos))} fillColor={zoneColor} /> ); if (zoneExtremities.end) items.push( latToLatitude(pos))} strokeColor={nextZoneStrokeColor} strokeWidth={strokeWidth} lineDashPattern={lineDashPattern} /> ); break; default: return null; } return items.length ? items : null; }, [zoneType, zoneExtremities]); };