/trunk
## Interface: 30000 |
## Title: |cFFFFB366Ara|r - Guild & Friends |
## Version: r11 |
## Title: |cFFFFB366Ara|r - Broker - Guild & Friends |
## Version: r12 |
## Author: Ara |
## Notes: A Data Broker plugin that provides guildmates & friends informations and interactions. |
## SavedVariables: AraBrokerGuildFriendsDB |
end |
local l = GetLocale() |
if l == "deDE" then |
if l == "enUS" then |
SetTranslations( "Death Knight", "DEATHKNIGHT" ) |
elseif l == "deDE" then |
SetTranslations( "Hexenmeister", "WARLOCK", "Krieger", "WARRIOR", "J\195\164ger", "HUNTER", "Magier", "MAGE", "Priester", "PRIEST", "Druide", "DRUID", "Paladin", "PALADIN", "Schamane", "SHAMAN", "Schurke", "ROGUE", "Todesritter", "DEATHKNIGHT", "Hexenmeisterin", "WARLOCK", "Kriegerin", "WARRIOR", "J\195\164gerin", "HUNTER", "Magierin", "MAGE", "Priesterin", "PRIEST", "Druidin", "DRUID", "Paladin", "PALADIN", "Schamanin", "SHAMAN", "Schurkin", "ROGUE", "Todesritter", "DEATHKNIGHT" ) |
elseif l == "frFR" then |
SetTranslations( "Démoniste", "WARLOCK", "Guerrier", "WARRIOR", "Chasseur", "HUNTER", "Mage", "MAGE", "Prêtre", "PRIEST", "Druide", "DRUID", "Paladin", "PALADIN", "Chaman", "SHAMAN", "Voleur", "ROGUE", "Chevalier de la mort", "DEATHKNIGHT", "Guerrière", "WARRIOR", "Chasseresse", "HUNTER", "Prêtresse", "PRIEST", "Druidesse", "DRUID", "Chamane", "SHAMAN", "Voleuse", "ROGUE" ) |
local BUTTON_HEIGHT, ICON_SIZE, GAP, TEXT_OFFSET, TIMEOUT = |
15, 13, 10, 5, .05 |
local BUTTON_HEIGHT, ICON_SIZE, GAP, TEXT_OFFSET = |
15, 13, 10, 5 |
local f = CreateFrame( "Frame", "AraBrokerGuildFriends", UIParent ) |
local t = CreateFrame"Frame" |
local block, isGuild, leaving, horde, config |
local block, isGuild, horde, config |
local defaultConfig = { showGuildNotes = true, showGuildName = true, sortType = "class", sortDESC = false, fontSize=12 } |
local guildEntries, friendEntries = {}, {} |
return 1,1,0 |
end |
local function Menu_OnUpdate( frame, elapsed ) |
f.timer = f.timer + elapsed |
if( f.timer <= TIMEOUT )then return end |
f:SetScript( "OnUpdate", nil ) |
block = nil |
return f:Hide() |
end |
local highlight = f:CreateTexture() |
highlight:SetTexture"Interface\\QuestFrame\\UI-QuestTitleHighlight" |
highlight:SetBlendMode"ADD" |
highlight:SetAlpha(0) |
local function Menu_OnEnter(b) |
leaving = false |
f:SetScript("OnUpdate",nil) |
if( b.index )then |
highlight:SetAllPoints(b) |
if( b.index > 1)then highlight:SetAlpha(1) end |
end |
local function Menu_OnLeave(b) |
leaving = true |
f.timer = 0 |
f:SetScript("OnUpdate", Menu_OnUpdate) |
highlight:ClearAllPoints() |
if( b.index and b.index > 1 )then highlight:SetAlpha(0) end |
if( not MouseIsOver(f) )then block = nil f:Hide() end |
end |
local function CreateFS( index, parent, justify, anchor ) |
StaticPopup_Show( button == "LeftButton" and "SET_GUILDPLAYERNOTE" or "SET_GUILDOFFICERNOTE" ) |
end |
else |
SetItemRef("player:"..self.unit, format( "|Hplayer:%s|h[%s]|h", self.unit, self.unit ), "LeftButton") |
SetItemRef("player:"..self.unit, "|Hplayer:"..self.unit.."|h["..self.unit.."]|h", "LeftButton") |
end |
end |
local function ShowTablet( self, _isGuild, entries ) |
f:Show() |
isGuild = _isGuild |
block = not leaving and block or self -- possible source of bugs when fast switching |
block = block or self |
local hasEntries = #entries > 0 |
if( not hasEntries )then |
entries[1] = new( nil, isGuild and ERR_GUILD_PLAYER_NOT_IN_GUILD or "No friends online.", "" ) |
local ldb = LibStub("LibDataBroker-1.1") |
f.GuildBlock = ldb:NewDataObject( "|cFFFFB366Ara|r Guild", { |
type = "data source", |
text = GUILD, |
icon = "Interface\\AddOns\\Ara_Broker_Guild_Friends\\guild.tga", |
OnEnter = f.GuildOnEnter, |
OnLeave = Menu_OnLeave, |
OnClick = function(self,button) OnBlockClick(self,button) end, |
OnClick = OnBlockClick, |
} ) |
f.FriendsBlock = ldb:NewDataObject( "|cFFFFB366Ara|r Friends", { |
type = "data source", |
text = FRIENDS, |
icon = "Interface\\AddOns\\Ara_Broker_Guild_Friends\\friends.tga", |
OnEnter = f.FriendsOnEnter, |
f.red, f.green, f.blue, f.alpha = f:GetBackdropColor() |
f:SetFrameStrata"TOOLTIP" |
f:SetClampedToScreen(true) |
f:EnableMouse( true ) |
f:EnableMouse(true) |
t:SetScript( "OnUpdate", OnUpdate ) |
f:SetScript( "OnEnter", Menu_OnEnter ) |
f:RegisterEvent"FRIENDLIST_UPDATE" |
f:RegisterEvent"CHAT_MSG_SYSTEM" |
RAID_CLASS_COLORS["DEATH KNIGHT"] = RAID_CLASS_COLORS.DEATHKNIGHT |
CLASS_BUTTONS["DEATH KNIGHT"] = CLASS_BUTTONS.DEATHKNIGHT |
ShowFriends() |
if( IsInGuild() )then GuildRoster() else t.guildTimer = 0 end |
f:GuildOnEnter(true) |