You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

160 lines
6.7 KiB

local function SetSmallFont(object)
local path, height = GameFontBlackTiny:GetFont();
object:SetFont(path, 9);
end
local function AchievementAlertFrame_SetUp(frame, achievementID, alreadyEarned)
local _, name, points, completed, month, day, year, description, flags, icon, rewardText, isGuildAch, wasEarnedByMe, earnedBy = GetAchievementInfo(achievementID);
frame.id = achievementID;
if ( points < 100 ) then
frame.points:SetFontObject(GameFontNormal);
else
frame.points:SetFontObject(GameFontNormalSmall);
end
frame.points:SetText(points);
if ( points == 0 ) then
frame.points:Hide();
frame.shield:SetTexture([[Interface\AchievementFrame\UI-Achievement-Shields-NoPoints]]);
else
frame.points:Show();
frame.shield:SetTexture([[Interface\AchievementFrame\UI-Achievement-Shields]]);
end
frame.name:SetText(name);
frame.nameLong:SetText(name);
local isLongName = frame.name:IsTruncated();
frame.name:SetShown(not isLongName);
frame.nameLong:SetShown(isLongName);
frame.icon:SetTexture(icon);
local offsetY;
if isGuildAch then
if not frame.guildDisplay then
frame.guildDisplay = true;
frame:SetHeight(98);
frame.background:SetTexture("Interface\\AddOns\\Narcissus\\Art\\Modules\\Achievement\\Classic\\AlertFrameGuildBackground");
frame.background:SetTexCoord(0, 1, 0.1875, 0.8125);
frame.mask:SetTexture("Interface\\AddOns\\Narcissus\\Art\\Modules\\Achievement\\Classic\\AlertFrameGuildMask");
frame.mask:SetHeight(156);
frame.unlockedText:SetText( string.upper(GUILD_ACHIEVEMENT_UNLOCKED) );
frame.points:SetVertexColor(0, 1, 0);
frame.shield:SetTexCoord(0, 0.5, 0.5, 1);
frame.shield:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -16, 14);
frame.guildName:Show();
frame.GuildBorder:Show();
frame.GuildBanner:Show();
frame.icon:SetSize(45, 45);
frame.glow:SetTexture("Interface\\AddOns\\Narcissus\\Art\\Modules\\Achievement\\Classic\\AlertFrameGuildGlow");
frame.shine:SetSize(98, 98);
frame.shine:SetTexture("Interface\\AddOns\\Narcissus\\Art\\Modules\\Achievement\\Classic\\AlertFrameGuildShine");
frame.shineMask:SetTexture("Interface\\AddOns\\Narcissus\\Art\\Modules\\Achievement\\Classic\\AlertFrameGuildShineMask");
offsetY = 3;
end
frame.guildName:SetText( GetGuildInfo("player") );
SetSmallGuildTabardTextures("player", nil, frame.GuildBanner, frame.GuildBorder);
frame.points:SetPoint("CENTER", frame.shield, "CENTER", -1, 3);
else
if frame.guildDisplay then
frame.guildDisplay = nil;
frame:SetHeight(78);
frame.background:SetTexture("Interface\\AddOns\\Narcissus\\Art\\Modules\\Achievement\\Classic\\AlertFrameBackground");
frame.mask:SetTexture("Interface\\AddOns\\Narcissus\\Art\\Modules\\Achievement\\Classic\\AlertFrameMask");
frame.mask:SetHeight(78);
--frame.unlockedText:SetText( string.upper(ACHIEVEMENT_UNLOCKED) );
frame.points:SetVertexColor(1, 0.82, 0);
frame.shield:SetTexCoord(0, 0.5, 0, 0.45);
frame.shield:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -14, 14);
frame.guildName:Hide();
frame.GuildBorder:Hide();
frame.GuildBanner:Hide();
frame.icon:SetSize(52, 52);
frame.glow:SetTexture("Interface\\AddOns\\Narcissus\\Art\\Modules\\Achievement\\Classic\\AlertFrameGlow");
frame.shine:SetSize(78, 78);
frame.shine:SetTexture("Interface\\AddOns\\Narcissus\\Art\\Modules\\Achievement\\Classic\\AlertFrameShine");
frame.shineMask:SetTexture("Interface\\AddOns\\Narcissus\\Art\\Modules\\Achievement\\Classic\\AlertFrameShineMask");
offsetY = 0;
end
if flags == 131072 then
frame.background:SetTexCoord(0, 1, 0.5, 1);
else
frame.background:SetTexCoord(0, 1, 0, 0.5);
end
frame.unlockedText:SetText( string.upper(ACHIEVEMENT_UNLOCKED) );
frame.points:SetPoint("CENTER", frame.shield, "CENTER", -1, 0);
end
SetSmallFont(frame.unlockedText);
return true
end
local function CriteriaAlertFrame_SetUp(frame, achievementID, criteriaString)
frame.id = achievementID;
frame.name:SetText(criteriaString);
frame.unlockedText:SetText( string.upper(ACHIEVEMENT_PROGRESSED) );
SetSmallFont(frame.unlockedText);
end
4 years ago
local EventListener = CreateFrame("Frame");
4 years ago
EventListener:SetScript("OnEvent", function(self, event, ...)
4 years ago
if event == "ACHIEVEMENT_EARNED" then
NarciAchievementAlertSystem:AddAlert(...);
elseif event == "CRITERIA_EARNED" then
NarciCriteriaAlertSystem:AddAlert(...);
end
end)
4 years ago
------------------------------------------------------------------------------------------------------
--Public:
4 years ago
--/run NarciAchievementAlertSystem:AddAlert(13994, true)
NarciCriteriaAlertSystem = AlertFrame:AddQueuedAlertFrameSubSystem("NarciCriteriaAlertFrameTemplate", CriteriaAlertFrame_SetUp, 2, 0);
NarciAchievementAlertSystem = AlertFrame:AddQueuedAlertFrameSubSystem("NarciAchievementAlertFrameTemplate", AchievementAlertFrame_SetUp, 2, 6);
function NarciAchievementAlertSystem:Enable()
EventListener:RegisterEvent("ACHIEVEMENT_EARNED");
EventListener:RegisterEvent("CRITERIA_EARNED");
if AlertFrame then
AlertFrame:UnregisterEvent("ACHIEVEMENT_EARNED");
AlertFrame:UnregisterEvent("CRITERIA_EARNED");
end
end
function NarciAchievementAlertSystem:Disable()
EventListener:UnregisterEvent("ACHIEVEMENT_EARNED");
EventListener:UnregisterEvent("CRITERIA_EARNED");
if AlertFrame then
AlertFrame:RegisterEvent("ACHIEVEMENT_EARNED");
AlertFrame:RegisterEvent("CRITERIA_EARNED");
end
end
function NarciAchievementAlertFrame_OnClick(self, button, down)
if( AlertFrame_OnClick(self, button, down) ) then
return;
end
local id = self.id;
if ( not id ) then
return;
end
4 years ago
if Narci_AchievementFrame then
Narci_AchievementFrame:LocateAchievement(id);
else
Narci.LoadAchievementPanel(id);
end
end
------------------------------------------------------------------------------------------------------
--/run NarciAchievementAlertSystem:AddAlert(13699)
--/run NarciAchievementAlertSystem:AddAlert(5159)
4 years ago
------------------------------------------------------------------------------------------------------