--Register LAM with LibStub
local LIBRARY_NAME = "LibLoadedAddons"
local MAJOR, MINOR = LIBRARY_NAME, 1
local lla, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
if not lla then return end	--the same or newer version of this lib is already loaded into memory

local loadedAddons = {}

------------------------------------------------------------------------
-- 	General Functions  --
------------------------------------------------------------------------
function lla:RegisterAddon(uniqueAddonName, versionNumber)
	if type(versionNumber) ~= "number" then
		return false, "Version number must be a number."
	end

	local version = loadedAddons[uniqueAddonName]

	if version then
		if version == 0 then
			loadedAddons[uniqueAddonName] = versionNumber
			return true
		else
			return false, "Version number already set for this addon"
		end
	end
	return false, "Addon not loaded, addon name not found."
end

function lla:UnregisterAddon(uniqueAddonName)
	if loadedAddons[uniqueAddonName] then
		loadedAddons[uniqueAddonName] = nil
		return true
	end
	return false, "Addon name was not registered"
end

function lla:IsAddonLoaded(uniqueAddonName)
	if loadedAddons[uniqueAddonName] then
		return true, loadedAddons[uniqueAddonName]
	end
	return false
end

local function OnPlayerActivated()
	EVENT_MANAGER:UnregisterForEvent(LIBRARY_NAME, EVENT_ADD_ON_LOADED)
end

local function OnAddOnLoaded(_event, addonName)
	loadedAddons[addonName] = 0
end
---------------------------------------------------------------------------------
--  Register Events --
---------------------------------------------------------------------------------
EVENT_MANAGER:RegisterForEvent(LIBRARY_NAME, EVENT_ADD_ON_LOADED, OnAddOnLoaded)
EVENT_MANAGER:RegisterForEvent(LIBRARY_NAME, EVENT_PLAYER_ACTIVATED, OnPlayerActivated)