// 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]);
};