/trunk
self.frame.display.reward = self.frame.display:CreateFontString("$parentReward", "ARTWORK", "GameFontNormal") |
self.frame.display.reward:SetPoint("TOP", self.frame.display, "TOP", 0, -127) |
self.frame.display.reward:SetTextColor(1,1,1) |
--Display completed |
self.frame.display.completed = self.frame.display:CreateFontString("$parentReward", "ARTWORK", "GameFontNormal") |
self.frame.display.completed:SetPoint("TOP", self.frame.display, "TOP", 0, -60) |
self.frame.display.completed:SetTextColor(0,1,0) |
--Display repCriteria |
self.frame.display.repCriteria = self.frame.display:CreateFontString("$parentReward", "ARTWORK", "GameFontNormal") |
self.frame.display.repCriteria:SetPoint("BOTTOM", self.frame.display, "TOP", 0, 3) |
--Display Compare Completed |
self.frame.display.compareDate = self.frame.display:CreateFontString("$parentReward", "ARTWORK", "GameFontNormal") |
--Criteria Buttons |
self.frame.display.criteriaButtons[1] = self:CreateCriteriaButton("$parentCriteriaButton1", self.frame.display) |
self.frame.display.criteriaButtons[1]:SetPoint("TOPLEFT", 0, -160) |
for i=2, 18 do |
self.frame.display.criteriaButtons[1]:SetScript("OnEnter", function(self) |
if ( self.date ) then |
GameTooltip:SetOwner(self, "ANCHOR_RIGHT",-50,0); |
GameTooltip:AddLine(self.date, 1, 1, 1); |
UrbanAchiever:CheckGuildMembersTooltip(self); |
GameTooltip:Show(); |
end |
end) |
self.frame.display.criteriaButtons[1]:SetScript("OnLeave", function(self) |
GameTooltip:Hide(); |
guildMemberRequestFrame = nil; |
end) |
for i=2, 9 do |
self.frame.display.criteriaButtons[i] = self:CreateCriteriaButton("$parentCriteriaButton" .. i, self.frame.display) |
self.frame.display.criteriaButtons[i]:SetPoint("TOPLEFT", self.frame.display.criteriaButtons[i-1], "BOTTOMLEFT") |
self.frame.display.criteriaButtons[i]:SetScript("OnEnter", function(self) |
if ( self.date ) then |
GameTooltip:SetOwner(self, "ANCHOR_RIGHT",-50,0); |
GameTooltip:AddLine(self.date, 1, 1, 1); |
UrbanAchiever:CheckGuildMembersTooltip(self); |
GameTooltip:Show(); |
end |
end) |
self.frame.display.criteriaButtons[i]:SetScript("OnLeave", function(self) |
GameTooltip:Hide(); |
guildMemberRequestFrame = nil; |
end) |
end |
--Display Scroll Bar |
self.frame:Hide() |
end |
function self:CheckGuildMembersTooltip(requestFrame) |
if ( self.currentTab == "guild" ) then |
local achievementId = requestFrame.id; |
local _, achievementName, points, achievementCompleted, month, day, year, description, flags, iconpath = GetAchievementInfo(achievementId); |
-- check if achievement has names, only if completed |
if ( achievementCompleted and bit.band(flags, ACHIEVEMENT_FLAGS_SHOW_GUILD_MEMBERS) == ACHIEVEMENT_FLAGS_SHOW_GUILD_MEMBERS ) then |
local numMembers = GetGuildAchievementNumMembers(achievementId); |
if ( numMembers == 0 ) then |
-- we may not have the members from the server yet |
guildMemberRequestFrame = requestFrame; |
GetGuildAchievementMembers(achievementId); |
else |
-- add a line break if the tooltip shows completed date (meta tooltip) |
if ( GameTooltip:NumLines() > 0 ) then |
GameTooltip:AddLine(" "); |
end |
GameTooltip:AddLine(GUILD_ACHIEVEMENT_EARNED_BY, 1, 1, 1); |
local leftMemberName; |
for i = 1, numMembers do |
if ( leftMemberName ) then |
GameTooltip:AddDoubleLine(leftMemberName, GetGuildAchievementMemberInfo(achievementId, i)); |
leftMemberName = nil; |
else |
leftMemberName = GetGuildAchievementMemberInfo(achievementId, i); |
end |
end |
-- check for leftover name |
if ( leftMemberName ) then |
GameTooltip:AddLine(leftMemberName); |
end |
end |
-- otherwise check if criteria has names |
elseif ( bit.band(flags, ACHIEVEMENT_FLAGS_SHOW_CRITERIA_MEMBERS) == ACHIEVEMENT_FLAGS_SHOW_CRITERIA_MEMBERS ) then |
local numCriteria = GetAchievementNumCriteria(achievementId); |
local firstName = true; |
for i = 1, numCriteria do |
local criteriaString, _, completed, _, _, charName = GetAchievementCriteriaInfo(achievementId, i); |
if ( completed and charName ) then |
if ( firstName ) then |
if ( achievementCompleted ) then |
GameTooltip:AddLine(GUILD_ACHIEVEMENT_EARNED_BY, 1, 1, 1); |
else |
GameTooltip:AddLine(INCOMPLETE, 1, 1, 1); |
end |
firstName = false; |
end |
GameTooltip:AddDoubleLine(criteriaString, charName, 0, 1, 0); |
end |
end |
end |
end |
end |
function self:CreateCategoryButton(name, parent) |
local button = CreateFrame("Button", name, parent) |
button:EnableMouseWheel(true) |
self.frame.display.points:SetText(points) |
self.frame.display.shield:SetTexture("Interface\\AchievementFrame\\UI-Achievement-Shields") |
end |
if self.currentTab == "guild" then |
requiresRep, hasRep, repLevel = GetAchievementGuildRep(self.currentAch); |
if ( requiresRep ) then |
initialOffset = -ACHIEVEMENTBUTTON_CRITERIAROWHEIGHT; |
local gender = UnitSex("player"); |
local factionStandingtext = GetText("FACTION_STANDING_LABEL"..repLevel, gender); |
self.frame.display.repCriteria:SetFormattedText(ACHIEVEMENT_REQUIRES_GUILD_REPUTATION, factionStandingtext); |
if ( hasRep ) then |
self.frame.display.repCriteria:SetTextColor(0, 1, 0); |
else |
self.frame.display.repCriteria:SetTextColor(1, 0, 0); |
end |
self.frame.display.repCriteria:Show(); |
else |
self.frame.display.repCriteria:Hide(); |
end |
else |
self.frame.display.repCriteria:Hide(); |
end |
if completed == "" then |
self.frame.display.shield:SetTexCoord(.5, 1, 0, .5) |
self.frame.display.points:SetVertexColor(.65, .65, .65) |
self.frame.display.reward:SetTextColor(1,1,1) |
self.frame.display.reward:SetText(reward) |
self.frame.display.completed:SetText("") |
else |
self.frame.display.shield:SetTexCoord(0 , .5, 0, .5) |
self.frame.display.points:SetVertexColor(1, 1, 1) |
self.frame.display.reward:SetTextColor(0,1,0) |
self.frame.display.reward:SetText(UACompleted .. ": " .. completed) |
self.frame.display.reward:SetText(reward) |
self.frame.display.completed:SetText(UACompleted .. ": " .. completed) |
end |
if self.isComparing then |
self.frame.display.bar:Hide() |
self.frame.display.compareBar:Hide() |
--for a = 1, GetAchievementNumCriteria(self.currentAch) do |
-- if buttonNum <= #self.frame.display.criteriaButtons and a > self.criteriaOffset then |
for a = self.criteriaOffset + 1, min(#self.frame.display.criteriaButtons + self.criteriaOffset, GetAchievementNumCriteria(self.currentAch)) do |
self.frame.display.criteriaButtons[buttonNum]:Show() |
self.frame.display.criteriaButtons[buttonNum].icon:Hide() |
self.frame.display.criteriaButtons[buttonNum].comparison:Hide() |
offset = 1 |
criteriaName, criteriaType, criteriaCompleted, criteriaQuantity, criteriaReqQuantity,icon ,criteriaFlags, criteriaAssetID, quantityStr = |
criteriaName, criteriaType, criteriaCompleted, criteriaQuantity, criteriaReqQuantity, charName, criteriaFlags, criteriaAssetID, quantityStr = |
GetAchievementCriteriaInfo(self.currentAch, a) |
if criteriaType then --Some Achievements seem to throw out the wrong number of criteria, causing errors. |
if criteriaType == CRITERIA_TYPE_ACHIEVEMENT and criteriaAssetID then |
id, criteriaName, _, criteriaCompleted, month, day, year, _, _, icon = GetAchievementInfo(criteriaAssetID); |
end |
if criteriaCompleted then |
str = "|CFF00FF00" |
else |
end |
end |
if criteriaType == CRITERIA_TYPE_ACHIEVEMENT then |
if criteriaType == CRITERIA_TYPE_ACHIEVEMENT and criteriaAssetID then |
--Its a meta achievement |
retok,_,_,_,_,_,_,_,_,_,icon = pcall (GetAchievementInfo,criteriaAssetID) |
if retok then |
self.frame.display.criteriaButtons[buttonNum].icon:SetTexture(icon) |
self.frame.display.criteriaButtons[buttonNum].icon:Show() |
offset = offset + 16 |
self.frame.display.criteriaButtons[buttonNum]:SetID(criteriaAssetID) |
end |
self.frame.display.criteriaButtons[buttonNum].icon:SetTexture(icon) |
self.frame.display.criteriaButtons[buttonNum].icon:Show() |
offset = offset + 16 |
self.frame.display.criteriaButtons[buttonNum]:SetID(criteriaAssetID) |
elseif (bit.band(criteriaFlags, ACHIEVEMENT_CRITERIA_PROGRESS_BAR) == ACHIEVEMENT_CRITERIA_PROGRESS_BAR) then |
--Its a progress bar |
offset = 1 |
--If theres a progress bar, theres no other achievements |
break |
end |
if month then |
self.frame.display.criteriaButtons[buttonNum].date = string.format(SHORTDATE, day, month, year); |
else |
self.frame.display.criteriaButtons[buttonNum].date = nil; |
end |
if id then |
self.frame.display.criteriaButtons[buttonNum].id = id; |
else |
self.frame.display.criteriaButtons[buttonNum].id = nil; |
end |
self.frame.display.criteriaButtons[buttonNum].text:SetText(str) |
self.frame.display.criteriaButtons[buttonNum].offset:SetWidth(offset) |
buttonNum = buttonNum + 1 |
if self.currentTab == "guild" then |
self.pointsText:SetTextColor(0,1,0); |
self.pointsText:SetText(GetTotalAchievementPoints(true)); |
total, completed = GetNumCompletedAchievements(true); |
self.frame.summaryBar:SetMinMaxValues(0, total) |
self.frame.summaryBar:SetValue(completed) |
self.frame.summaryBar.text:SetText(completed .. "/" .. total) |
self.pointsText:SetText(GetTotalAchievementPoints(true)); |
if self.currentCat == -1 then |
self.frame.summaryBar:SetMinMaxValues(0, total) |
self.frame.summaryBar:SetValue(completed) |
self.frame.summaryBar.text:SetText(completed .. "/" .. total) |
end |
else |
total, completed = GetNumCompletedAchievements(); |
self.frame.summaryBar:SetMinMaxValues(0, total) |
self.frame.summaryBar:SetValue(completed) |
self.frame.summaryBar.text:SetText(completed .. "/" .. total) |
self.pointsText:SetTextColor(1,1,1); |
self.pointsText:SetText(GetTotalAchievementPoints()); |
total, completed = GetNumCompletedAchievements(); |
if self.currentCat == -1 then |
self.frame.summaryBar:SetMinMaxValues(0, total) |
self.frame.summaryBar:SetValue(completed) |
self.frame.summaryBar.text:SetText(completed .. "/" .. total) |
end |
end |
--Stuff for tab highlights |
["5155"] = 1,--Classy Dwarves |
["5152"] = 1,--Stay Classy |
["4912"] = 1,--Guild Level 25 |
["5171"] = 1,--Blood Elf Slayer |
["5195"] = 1,--City Attacker |
["5172"] = 1,--Goblin Slayer |
["5031"] = 1,--Horde Slayer |
["5167"] = 1,--Orc Slayer |
["5168"] = 1,--Tauren Slayer |
["5170"] = 1,--Troll Slayer |
["5169"] = 1,--Undead Slayer |
["5014"] = 1,--Guild Northrend Dungeon Hero |
["5433"] = 2,--Guild Champions |
["5435"] = 2,--Guild Generals |
["5162"] = 2,--Classy Trolls |
["5158"] = 2,--Stay Classy |
["5492"] = 2,--Guild Level 25 |
["5179"] = 2,--Alliance Slayer |
["5194"] = 2,--City Attacker |
["5177"] = 2,--Draenei Slayer |
["5175"] = 2,--Dwarf Slayer |
["5176"] = 2,--Gnome Slayer |
["5173"] = 2,--Human Slayer |
["5174"] = 2,--Night Elf Slayer |
["5178"] = 2,--Worgen Slayer |
["5124"] = 2,--Guild Northrend Dungeon Hero |
} |