diff --git a/api/config.lua b/api/config.lua index 75b81acc..a42fc3be 100644 --- a/api/config.lua +++ b/api/config.lua @@ -699,6 +699,7 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("nameplates", nil, "critters", "1") pfUI:UpdateConfig("nameplates", nil, "totems", "1") pfUI:UpdateConfig("nameplates", nil, "totemicons", "0") + pfUI:UpdateConfig("nameplates", nil, "showguildname", "0") pfUI:UpdateConfig("nameplates", nil, "outfriendly", "0") pfUI:UpdateConfig("nameplates", nil, "outfriendlynpc", "1") diff --git a/env/translations_deDE.lua b/env/translations_deDE.lua index 01cd82a8..191e01b0 100644 --- a/env/translations_deDE.lua +++ b/env/translations_deDE.lua @@ -633,6 +633,7 @@ pfUI_translation["deDE"] = { ["Show Duration Inside Buff"] = nil, ["Show Empty Buttons"] = nil, ["Show FPS and Latency Colors"] = nil, + ["Show Guild Name"] = nil, ["Show Happiness Icon"] = nil, ["Show Health Points"] = nil, ["Show/Hide TimeManager"] = nil, diff --git a/env/translations_enUS.lua b/env/translations_enUS.lua index b1a5d49a..d1d88092 100644 --- a/env/translations_enUS.lua +++ b/env/translations_enUS.lua @@ -633,6 +633,7 @@ pfUI_translation["enUS"] = { ["Show Duration Inside Buff"] = nil, ["Show Empty Buttons"] = nil, ["Show FPS and Latency Colors"] = nil, + ["Show Guild Name"] = nil, ["Show Happiness Icon"] = nil, ["Show Health Points"] = nil, ["Show/Hide TimeManager"] = nil, diff --git a/env/translations_esES.lua b/env/translations_esES.lua index 3f77b516..407d492b 100644 --- a/env/translations_esES.lua +++ b/env/translations_esES.lua @@ -633,6 +633,7 @@ pfUI_translation["esES"] = { ["Show Duration Inside Buff"] = "Mostrar la duración dentro del beneficios", ["Show Empty Buttons"] = "Mostrar botones vacíos", ["Show FPS and Latency Colors"] = "Mostrar FPS y colores de latencia", + ["Show Guild Name"] = nil, ["Show Happiness Icon"] = "Mostrar icono de felicidad", ["Show Health Points"] = "Mostrar puntos de salud", ["Show/Hide TimeManager"] = "Mostrar/Ocultar el gestor de tiempo", diff --git a/env/translations_frFR.lua b/env/translations_frFR.lua index 5f8727f1..2b2f5b33 100644 --- a/env/translations_frFR.lua +++ b/env/translations_frFR.lua @@ -633,6 +633,7 @@ pfUI_translation["frFR"] = { ["Show Duration Inside Buff"] = "Afficher la durée à l'intérieur des améliorations", ["Show Empty Buttons"] = "Afficher les boutons vides", ["Show FPS and Latency Colors"] = nil, + ["Show Guild Name"] = nil, ["Show Happiness Icon"] = "Afficher l'icône Heureux du familier", ["Show Health Points"] = "Afficher les points de vie", ["Show/Hide TimeManager"] = "Afficher/cacher le gestionnaire de temps", diff --git a/env/translations_ruRU.lua b/env/translations_ruRU.lua index 2805eef3..962ef158 100644 --- a/env/translations_ruRU.lua +++ b/env/translations_ruRU.lua @@ -633,6 +633,7 @@ pfUI_translation["ruRU"] = { ["Show Duration Inside Buff"] = "Показать продолжительность внутри баффа", ["Show Empty Buttons"] = "Показать пустые кнопки", ["Show FPS and Latency Colors"] = "Показать частоту кадров и задержку в цвете", + ["Show Guild Name"] = nil, ["Show Happiness Icon"] = "Показать иконку счастья", ["Show Health Points"] = "Показать здоровье", ["Show/Hide TimeManager"] = "Показать/Скрыть менеджер времени", diff --git a/env/translations_zhCN.lua b/env/translations_zhCN.lua index 8bc2795a..9122ad53 100644 --- a/env/translations_zhCN.lua +++ b/env/translations_zhCN.lua @@ -634,6 +634,7 @@ pfUI_translation["zhCN"] = { ["Show Dispel Indicators"] = "显示驱散指示器", ["Show Duration Inside Buff"] = "显示持续时间在Buff里面", ["Show Empty Buttons"] = "显示空按钮", + ["Show Guild Name"] = nil, ["Show FPS and Latency Colors"] = "显示帧数以及延迟颜色", ["Show Happiness Icon"] = "显示高兴值图标", ["Show Health Points"] = "显示生命值", diff --git a/env/translations_zhTW.lua b/env/translations_zhTW.lua index e8fa6161..20a44ad0 100644 --- a/env/translations_zhTW.lua +++ b/env/translations_zhTW.lua @@ -633,6 +633,7 @@ pfUI_translation["zhTW"] = { ["Show Duration Inside Buff"] = "顯示持續時間在Buff裏面", ["Show Empty Buttons"] = nil, ["Show FPS and Latency Colors"] = nil, + ["Show Guild Name"] = nil, ["Show Happiness Icon"] = nil, ["Show Health Points"] = "顯示生命值", ["Show/Hide TimeManager"] = nil, diff --git a/libs/libunitscan.lua b/libs/libunitscan.lua index 5bc64f03..45fab328 100644 --- a/libs/libunitscan.lua +++ b/libs/libunitscan.lua @@ -19,6 +19,7 @@ setfenv(1, pfUI:GetEnvironment()) -- level[Number] - The level of the unit -- elite[String] - The elite state of the unit (See UnitClassification()) -- player[Boolean] - Returns true if unit is a player +-- guild[String] - Returns guild name of unit is a player -- -- Internal functions: -- libunitscan:AddData(db, name, class, level, elite) @@ -34,23 +35,24 @@ local queue = { } function GetUnitData(name, active) if units["players"][name] then local ret = units["players"][name] - return ret.class, ret.level, ret.elite, true + return ret.class, ret.level, ret.elite, true, ret.guild elseif units["mobs"][name] then local ret = units["mobs"][name] - return ret.class, ret.level, ret.elite, nil + return ret.class, ret.level, ret.elite, nil, nil elseif active then queue[name] = true libunitscan:Show() end end -local function AddData(db, name, class, level, elite) +local function AddData(db, name, class, level, elite, guild) if not name or not db then return end units[db] = units[db] or {} units[db][name] = units[db][name] or {} units[db][name].class = class or units[db][name].class units[db][name].level = level or units[db][name].level units[db][name].elite = elite or units[db][name].elite + units[db][name].guild = guild or units[db][name].guild queue[name] = nil end @@ -74,7 +76,8 @@ libunitscan:SetScript("OnEvent", function() local name = UnitName("player") local _, class = UnitClass("player") local level = UnitLevel("player") - AddData("players", name, class, level) + local guild = GetGuildInfo("player") + AddData("players", name, class, level, nil, guild) elseif event == "FRIENDLIST_UPDATE" then local name, class, level @@ -87,11 +90,12 @@ libunitscan:SetScript("OnEvent", function() end elseif event == "GUILD_ROSTER_UPDATE" then - local name, class, level, _ + local name, class, level, _, guild for i = 1, GetNumGuildMembers() do name, _, _, level, class = GetGuildRosterInfo(i) + guild = GetGuildInfo("player") class = L["class"][class] or nil - AddData("players", name, class, level) + AddData("players", name, class, level, nil, guild) end elseif event == "RAID_ROSTER_UPDATE" then @@ -103,21 +107,22 @@ libunitscan:SetScript("OnEvent", function() end elseif event == "PARTY_MEMBERS_CHANGED" then - local name, class, level, unit, _ + local name, class, level, unit, _, guild for i = 1, GetNumPartyMembers() do unit = "party" .. i _, class = UnitClass(unit) name = UnitName(unit) level = UnitLevel(unit) - AddData("players", name, class, level) + guild = GetGuildInfo(unit) + AddData("players", name, class, level, nil, guild) end elseif event == "WHO_LIST_UPDATE" or event == "CHAT_MSG_SYSTEM" then local name, class, level, _ for i = 1, GetNumWhoResults() do - name, _, level, _, class, _ = GetWhoInfo(i) + name, guild, level, _, class, _ = GetWhoInfo(i) class = L["class"][class] or nil - AddData("players", name, class, level) + AddData("players", name, class, level, nil, guild) end elseif event == "UPDATE_MOUSEOVER_UNIT" or event == "PLAYER_TARGET_CHANGED" then @@ -127,7 +132,8 @@ libunitscan:SetScript("OnEvent", function() _, class = UnitClass(scan) level = UnitLevel(scan) name = UnitName(scan) - AddData("players", name, class, level) + guild = GetGuildInfo(scan) + AddData("players", name, class, level, nil, guild) else _, class = UnitClass(scan) elite = UnitClassification(scan) diff --git a/modules/gui.lua b/modules/gui.lua index ea3c0ebb..a9ac46b6 100644 --- a/modules/gui.lua +++ b/modules/gui.lua @@ -2202,6 +2202,7 @@ pfUI:RegisterModule("gui", "vanilla:tbc", function () CreateConfig(U["nameplates"], T["Use Unit Fonts"], C.nameplates, "use_unitfonts", "checkbox") CreateConfig(U["nameplates"], T["Font Style"], C.nameplates.name, "fontstyle", "dropdown", pfUI.gui.dropdowns.fontstyle) CreateConfig(U["nameplates"], T["Replace Totems With Icons"], C.nameplates, "totemicons", "checkbox") + CreateConfig(U["nameplates"], T["Show Guild Name"], C.nameplates, "showguildname", "checkbox") CreateConfig(nil, T["Raid Icon"], nil, nil, "header") CreateConfig(U["nameplates"], T["Raid Icon Position"], C.nameplates, "raidiconpos", "dropdown", pfUI.gui.dropdowns.positions) diff --git a/modules/nameplates.lua b/modules/nameplates.lua index a86278ab..afe2205a 100644 --- a/modules/nameplates.lua +++ b/modules/nameplates.lua @@ -307,6 +307,9 @@ pfUI:RegisterModule("nameplates", "vanilla:tbc", function () nameplate.glow:SetTexture(pfUI.media["img:dot"]) nameplate.glow:Hide() + nameplate.guild = nameplate:CreateFontString(nil, "OVERLAY") + nameplate.guild:SetPoint("BOTTOM", nameplate.health, "BOTTOM", 0, 0) + nameplate.level = nameplate:CreateFontString(nil, "OVERLAY") nameplate.level:SetPoint("RIGHT", nameplate.health, "LEFT", -3, 0) @@ -433,6 +436,8 @@ pfUI:RegisterModule("nameplates", "vanilla:tbc", function () nameplate.health.text:SetFont(font, font_size - 2, "OUTLINE") nameplate.health.text:SetJustifyH(C.nameplates.hptextpos) + nameplate.guild:SetFont(font, font_size, font_style) + nameplate.glow:SetWidth(C.nameplates.width + 60) nameplate.glow:SetHeight(C.nameplates.heighthealth + 30) nameplate.glow:SetVertexColor(glowr, glowg, glowb, glowa) @@ -486,12 +491,13 @@ pfUI:RegisterModule("nameplates", "vanilla:tbc", function () local hpmin, hpmax = plate.original.healthbar:GetMinMaxValues() local name = plate.original.name:GetText() local level = plate.original.level:IsShown() and plate.original.level:GetObjectType() == "FontString" and tonumber(plate.original.level:GetText()) or "??" - local class, ulevel, elite, player = GetUnitData(name, true) + local class, ulevel, elite, player, guild = GetUnitData(name, true) local target = plate.istarget local mouseover = UnitExists("mouseover") and plate.original.glow:IsShown() or nil local unitstr = target and "target" or mouseover and "mouseover" or nil local red, green, blue = plate.original.healthbar:GetStatusBarColor() local unittype = GetUnitType(red, green, blue) or "ENEMY_NPC" + local font_size = C.nameplates.use_unitfonts == "1" and C.global.font_unit_size or C.global.font_size -- ignore players with npc names if plate level is lower than player level if ulevel and ulevel > (level == "??" and -1 or level) then player = nil end @@ -564,20 +570,26 @@ pfUI:RegisterModule("nameplates", "vanilla:tbc", function () plate.level:Hide() plate.name:Hide() plate.health:Hide() - plate.glow:SetPoint("CENTER", plate.health, "CENTER", 0, 16) + plate.guild:Hide() plate.totem:Show() elseif HidePlate(unittype, name, (hpmax-hp == hpmin), target) then plate.level:SetPoint("RIGHT", plate.name, "LEFT", -3, 0) plate.name:SetParent(plate) + plate.guild:SetPoint("BOTTOM", plate.name, "BOTTOM", -2, -(font_size + 2)) plate.level:Show() plate.name:Show() plate.health:Hide() - plate.glow:SetPoint("CENTER", plate.health, "CENTER", 0, 16) + if guild and C.nameplates.showguildname == "1" then + plate.glow:SetPoint("CENTER", plate.name, "CENTER", 0, -(font_size / 2) - 2) + else + plate.glow:SetPoint("CENTER", plate.name, "CENTER", 0, 0) + end plate.totem:Hide() else plate.level:SetPoint("RIGHT", plate.health, "LEFT", -5, 0) plate.name:SetParent(plate.health) + plate.guild:SetPoint("BOTTOM", plate.health, "BOTTOM", 0, -(font_size + 4)) plate.level:Show() plate.name:Show() @@ -589,6 +601,18 @@ pfUI:RegisterModule("nameplates", "vanilla:tbc", function () plate.name:SetText(name) plate.level:SetText(string.format("%s%s", level, (elitestrings[elite] or ""))) + if guild and C.nameplates.showguildname == "1" then + plate.guild:SetText(guild) + if guild == GetGuildInfo("player") then + plate.guild:SetTextColor(0, 0.9, 0, 1) + else + plate.guild:SetTextColor(0.8, 0.8, 0.8, 1) + end + plate.guild:Show() + else + plate.guild:Hide() + end + plate.health:SetMinMaxValues(hpmin, hpmax) plate.health:SetValue(hp)