// if a player files for reinsert using self-interaction
// they're added to the queue along with their nearest base location and the time they filed
// if a player's time in the queue exceeds the configured timeout, a message will be posted every 5 minutes on a cycle based around
// the player's time in the queue stating how long they have been waiting, their name, and their group's name

#include "..\script_component.hpp"

if (!isServer) exitWith {};

// register queue
GVAR(reinsertionQueue) = [];
publicVariable QGVAR(reinsertionQueue);

// server mission start time
GVAR(missionStartServerTime) = serverTime;

// FILE REQUEST CBA HANDLER
[QGVAR(fileReinsertRequest), {
	params ["_player", "_base"];
	[_player, _base] call FUNC(addToQueue);
}] call CBA_fnc_addEventHandler;

// REMOVE REQUEST CBA HANDLER
[QGVAR(removeReinsertRequest), {
	params ["_player"];
	[_player] call FUNC(removeFromQueue);
}] call CBA_fnc_addEventHandler;


// automated wait threshold timer
GVAR(overTimeoutLastNotificationTime) = 0;

[{ // every 60 seconds

	// validate queue
	call FUNC(validateQueue);

	// check if last overTimeout notification was sent more than X minutes ago
	if (
		diag_tickTime - GVAR(overTimeoutLastNotificationTime) > 60*5
	) then {
		// show global queue notification with any players that are over timeout
		call FUNC(globalShowQueue);
	};

}, 60] call CBA_fnc_addPerFrameHandler;

[
	LEVEL_DEBUG,
	QUOTE(COMPONENT),
	"postInit complete",
	[]
] call EFUNC(common,log);
