--[[ Addon: util Author: TProg Taonnor Created by @Taonnor ]]-- -- Version Control local VERSION = 1 --[[ Class definition (Static class) ]]-- -- A table in hole lua workspace must be unique -- The group helper is global util table, used in several of my addons -- The table is created as "static" class without constructor and static helper methods if (TaosGroupHelper == nil or TaosGroupHelper.Version == nil or TaosGroupHelper.Version < VERSION) then TaosGroupHelper = {} TaosGroupHelper.__index = TaosGroupHelper TaosGroupHelper.Version = VERSION -- Global Callback Variables TAO_GROUP_CHANGED = "TAO-GroupChanged" TAO_UNIT_GROUPED_CHANGED = "TAO-UnitGroupedChanged" -- local members local name = "TaosGroupHelper" local isUnitGrouped = false --[[ GetIsUnitGrouped Gets the current UnitGrouped state ]]-- function GetIsUnitGrouped() return isUnitGrouped end --[[ Called when group updated ]]-- local function OnGroupUpdate() local isGrouped = IsUnitGrouped("player") if (isGrouped ~= isUnitGrouped) then isUnitGrouped = isGrouped CALLBACK_MANAGER:FireCallbacks(TAO_UNIT_GROUPED_CHANGED, isGrouped) end end --[[ Called when group member joined group ]]-- local function OnGroupMemberJoined() CALLBACK_MANAGER:FireCallbacks(TAO_GROUP_CHANGED) OnGroupUpdate() end --[[ Called when group member left group ]]-- local function OnGroupMemberLeft() CALLBACK_MANAGER:FireCallbacks(TAO_GROUP_CHANGED) OnGroupUpdate() end --[[ Called when loading UI finished ]]-- local function OnPlayerActivated(eventCode) -- Initial state isUnitGrouped = IsUnitGrouped("player") CALLBACK_MANAGER:FireCallbacks(TAO_UNIT_GROUPED_CHANGED, isUnitGrouped) CALLBACK_MANAGER:FireCallbacks(TAO_GROUP_CHANGED) end --[[ Register events ]]-- EVENT_MANAGER:RegisterForEvent(name, EVENT_GROUP_MEMBER_JOINED, OnGroupMemberJoined) EVENT_MANAGER:RegisterForEvent(name, EVENT_GROUP_MEMBER_LEFT, OnGroupMemberLeft) EVENT_MANAGER:RegisterForEvent(name, EVENT_PLAYER_ACTIVATED, OnPlayerActivated) end