initial commit
This commit is contained in:
90
Libraries/oUF/elements/partyindicator.lua
Normal file
90
Libraries/oUF/elements/partyindicator.lua
Normal file
@@ -0,0 +1,90 @@
|
||||
--[[
|
||||
# Element: Party Indicator
|
||||
Toggles the visibility of an indicator based on if the player was in a group before joining the instance.
|
||||
|
||||
## Widget
|
||||
PartyIndicator - Player only widget.
|
||||
]]
|
||||
|
||||
local _, ns = ...
|
||||
local oUF = ns.oUF
|
||||
|
||||
local function Update(self, event)
|
||||
local element = self.PartyIndicator
|
||||
|
||||
if(element.PreUpdate) then
|
||||
element:PreUpdate()
|
||||
end
|
||||
|
||||
local forced = not event or event == 'ElvUI_UpdateAllElements'
|
||||
if forced or event == 'GROUP_ROSTER_UPDATE' then
|
||||
if IsInGroup(LE_PARTY_CATEGORY_HOME) and IsInGroup(LE_PARTY_CATEGORY_INSTANCE) then
|
||||
element:Show()
|
||||
else
|
||||
element:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
if forced or event == 'UPDATE_CHAT_COLOR' then
|
||||
local private = ChatTypeInfo.PARTY
|
||||
if private and element.HomeIcon then
|
||||
element.HomeIcon:SetVertexColor(private.r, private.g, private.b, 1)
|
||||
end
|
||||
|
||||
local public = ChatTypeInfo.INSTANCE_CHAT
|
||||
if public and element.InstanceIcon then
|
||||
element.InstanceIcon:SetVertexColor(public.r, public.g, public.b, 1)
|
||||
end
|
||||
end
|
||||
|
||||
if(element.PostUpdate) then
|
||||
return element:PostUpdate()
|
||||
end
|
||||
end
|
||||
|
||||
local function Path(self, ...)
|
||||
--[[ Override: PartyIndicator.Override(self, event)
|
||||
Used to completely override the internal update function.
|
||||
|
||||
* self - the parent object
|
||||
* event - the event triggering the update (string)
|
||||
--]]
|
||||
return (self.PartyIndicator.Override or Update) (self, ...)
|
||||
end
|
||||
|
||||
local function ForceUpdate(element)
|
||||
return Path(element.__owner, 'ForceUpdate')
|
||||
end
|
||||
|
||||
local function Enable(self)
|
||||
local element = self.PartyIndicator
|
||||
if element then
|
||||
element.__owner = self
|
||||
element.ForceUpdate = ForceUpdate
|
||||
|
||||
self:RegisterEvent('UPDATE_CHAT_COLOR', Path, true)
|
||||
self:RegisterEvent('GROUP_ROSTER_UPDATE', Path, true)
|
||||
|
||||
if(element.HomeIcon and element.HomeIcon:IsObjectType('Texture') and not element.HomeIcon:GetTexture()) then
|
||||
element.HomeIcon:SetTexture([[Interface\FriendsFrame\UI-Toast-FriendOnlineIcon]])
|
||||
end
|
||||
|
||||
if(element.InstanceIcon and element.InstanceIcon:IsObjectType('Texture') and not element.InstanceIcon:GetTexture()) then
|
||||
element.InstanceIcon:SetTexture([[Interface\FriendsFrame\UI-Toast-FriendOnlineIcon]])
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local function Disable(self)
|
||||
local element = self.PartyIndicator
|
||||
if(element) then
|
||||
element:Hide()
|
||||
|
||||
self:UnregisterEvent('UPDATE_CHAT_COLOR', Path)
|
||||
self:UnregisterEvent('GROUP_ROSTER_UPDATE', Path)
|
||||
end
|
||||
end
|
||||
|
||||
oUF:AddElement('PartyIndicator', Path, Enable, Disable)
|
||||
Reference in New Issue
Block a user