if ( !hasInterface ) exitWith {};

diag_log text "[MILSIM] (DNI) writing variable loop";

[] spawn {
	while {true} do {
        player setVariable ["DNI_PlayerFPS", floor diag_fps, true];
        sleep 1
	};
};

diag_log text "[MILSIM] (DNI) variable loop complete";

/////////////////////////////////////////////////////////
//Waits until curators are initalized in order to check//
//if player is zeus to run the fps scripts             //
/////////////////////////////////////////////////////////
diag_log text "[MILSIM] (DNI) waiting for curators";

waitUntil {
    private _hasCurators = (count allcurators) > 0;
    private _hasInitializedCurators = (count (call BIS_fnc_listCuratorPlayers)) > 0;
    private _curatorsInitialized = !_hasCurators || _hasInitializedCurators;
    ((time > 2) || _curatorsInitialized)
    };
	
diag_log text "[MILSIM] (DNI) curator init complete";

/////////////////////////////////////////////////////////
//If player is a curator it will run the script and each/
//player will have their FPS appear beneath them       //
/////////////////////////////////////////////////////////
if (player in (call bis_fnc_listcuratorplayers)) then {
	
	diag_log text "[MILSIM] (DNI) player is in curator list, adding Draw3D handler"; 

	addMissionEventHandler ["Draw3D", {
		{
			_distance = position curatorCamera distance _x;
			//if zeus camera is farther than 1200 meters away from the targets the text will not display
			if (_distance < 1200) then {
				_playerFPS = _x getVariable ["DNI_PlayerFPS",50];
				//if the FPS is below 20 it turns red and becomes more visible for zeus to see so they are aware
				if (_playerFPS  <20) then 
				{
					drawIcon3D
					[
						"",//Path to image displayed near text
						[1,0,0,0.7],//color of the text using RGBA
						position _x,//position of the text _x referring to the player in 'allPlayers'
						1,//Width
						2,//height from position, below
						0,//angle
						format["%1 FPS: %2", name _x, str _playerFPS],//text to be displayed
						0,//shadow on text, 0=none,1=shadow,2=outline
						0.05,//text size
						"PuristaMedium",//text font
						"center"//align text left, right, or center
					];
				}
				//if the FPS is above 20 text is smaller and less visible as to not conern zeus as much
				else
				{
					drawIcon3D
					[
						"",//Path to image displayed near text
						[1,1,1,0.3],//color of the text using RGBA
						position _x,//position of the text _x referring to the player in 'allPlayers'
						1,//Width
						2,//height from position, below
						0,//angle
						format["%1 FPS: %2", name _x, str _playerFPS],//text to be displayed
						0,//shadow on text, 0=none,1=shadow,2=outline
						0.03,//text size
						"PuristaMedium",//text font
						"center"//align text left, right, or center
					];
				};
			};
		} forEach allPlayers;
		//Here is the array of units you wish to display the FPS text for, it can be 
		//changed to be an array of specific units or players if you wish
	}];
};
/////////////////////////////////////////////////////////
/////////////////////End FPS Script//////////////////////
/////////////////////////////////////////////////////////