import React, { useEffect, useState } from "react"; import { OlLocation } from "../components/ollocation"; import { LatLng } from "leaflet"; import { FaBullseye, FaChevronDown, FaChevronUp, FaJetFighter, FaMountain } from "react-icons/fa6"; import { BullseyesDataChangedEvent, MouseMovedEvent, SelectedUnitsChangedEvent, SelectionClearedEvent } from "../../events"; import { computeBearingRangeString, mToFt } from "../../other/utils"; import { Bullseye } from "../../mission/bullseye"; import { Unit } from "../../unit/unit"; export function CoordinatesPanel(props: {}) { const [latlng, setLatlng] = useState(new LatLng(0, 0)); const [elevation, setElevation] = useState(0); const [bullseyes, setBullseyes] = useState(null as null | { [name: string]: Bullseye }); const [selectedUnits, setSelectedUnits] = useState([] as Unit[]); useEffect(() => { MouseMovedEvent.on((latlng, elevation) => { setLatlng(latlng); if (elevation) setElevation(elevation); }); BullseyesDataChangedEvent.on((bullseyes) => setBullseyes(bullseyes)); SelectedUnitsChangedEvent.on((selectedUnits) => setSelectedUnits(selectedUnits)); SelectionClearedEvent.on(() => setSelectedUnits([])); }, []); return (
{bullseyes && (
{bullseyes[2] && (
{" "} {computeBearingRangeString(bullseyes[2].getLatLng(), latlng)}
)} {bullseyes[1] && (
{computeBearingRangeString(bullseyes[1].getLatLng(), latlng)}
)}
{selectedUnits.length == 1 && (
{computeBearingRangeString(selectedUnits[0].getPosition(), latlng)}
)}
)}
{mToFt(elevation).toFixed()}ft
); }