import React, { useEffect, useState } from "react"; import { ServerStatusUpdatedEvent } from "../events"; import { ServerStatus } from "../interfaces"; import { FaCheck, FaXmark } from "react-icons/fa6"; import { zeroAppend } from "../other/utils"; import { colors } from "../constants/constants"; export function ServerOverlay() { const [serverStatus, setServerStatus] = useState({} as ServerStatus); useEffect(() => { ServerStatusUpdatedEvent.on((status) => setServerStatus(status)); }, []); let loadColor = colors.OLYMPUS_GREEN; if (serverStatus.load > 1000) loadColor = colors.OLYMPUS_RED; else if (serverStatus.load >= 100 && serverStatus.load < 1000) loadColor = colors.OLYMPUS_ORANGE; let frameRateColor = colors.OLYMPUS_GREEN; if (serverStatus.frameRate < 30) frameRateColor = colors.OLYMPUS_RED; else if (serverStatus.frameRate >= 30 && serverStatus.frameRate < 60) frameRateColor = colors.OLYMPUS_ORANGE; const MThours = serverStatus.missionTime? serverStatus.missionTime.h: 0; const MTminutes = serverStatus.missionTime? serverStatus.missionTime.m: 0; const MTseconds = serverStatus.missionTime? serverStatus.missionTime.s: 0; const EThours = Math.floor((serverStatus.elapsedTime ?? 0) / 3600); const ETminutes = Math.floor((serverStatus.elapsedTime ?? 0) / 60) % 60; const ETseconds = Math.round(serverStatus.elapsedTime ?? 0) % 60; let MTtimeString = `${zeroAppend(MThours, 2)}:${zeroAppend(MTminutes, 2)}:${zeroAppend(MTseconds, 2)}`; let ETtimeString = `${zeroAppend(EThours, 2)}:${zeroAppend(ETminutes, 2)}:${zeroAppend(ETseconds, 2)}`; return (

DCS Olympus server

Connected to DCS:
{serverStatus.connected? : }
Server load:
{serverStatus.load}
Server framerate:
{serverStatus.frameRate} fps
Elapsed time:
{ETtimeString}
Mission local time:
{MTtimeString}
); }