Quantcast
--[[
	{OUTPUT_LICENSE_SHORT}
--]]

local C = Command

C.GroupTools = {}

local GT = C.GroupTools

function GT:IsGroup()
	return UnitExists("party1")
end

function GT:IsRaid()
	return UnitInRaid("player")
end

function GT:IsGroupLeader(name)
	name = name or "player"
	return UnitIsPartyLeader(name) -- or (name == "player" and not self:IsGroup())
end

function GT:IsGroupFull()
	local num = 0
	local max = 40
	if self:IsRaid() then
		num = GetNumRaidMembers()
	elseif self:IsGroup() then
		num = GetNumPartyMembers()
		max = 5
	end
	if num >= max then return true end
	return false
end

function GT:IsRaidLeaderOrAssistant(name)
	name = name or "player"
	if not self:IsRaid() then return false end
	for i=1,GetNumRaidMembers() do
		local name, rank = (select(1, GetRaidRosterInfo(i))), (select(2, GetRaidRosterInfo(i)))
		if name:lower() == UnitName("player"):lower() then
			if rank >= 1 then return true end
		end
	end
	return false
end

function GT:IsRaidAssistant(name)
	name = name or "player"
	return UnitIsRaidOfficer(name)
end

function GT:IsInGroup(name)
	if self:IsRaid() then
		for i=1,GetNumRaidMembers() do
			local n = (select(1, GetRaidRosterInfo(i)))
			if n == name then return true end
		end
	elseif self:IsGroup() then
		return UnitInParty(name)
	end
	return false
end