/
## Interface: 40000 |
## Interface: 30300 |
## Title: Urban Achiever |
## Author: Syzgyn Modified by Tomate |
## Notes: Improved Achievement Frame |
## Version 0.11.1.wowi:revision |
## Version 0.10.1.wowi:revision |
## OptionalDeps: Blizzard_AchievementUI |
## SavedVariables: UASV |
## SavedVariablesPerCharacter: UASVPC |
function self:GetSearchString(id) |
if not type(id) == "number" then return end |
local retok, id, name, points, completed, month, day, year, description, _,_, reward = pcall (GetAchievementInfo,id) |
if not retok or not id then return nil end |
local id, name, points, completed, month, day, year, description, _,_, reward = GetAchievementInfo(id) |
if not id then return nil end |
if completed then |
if year < 10 then |
return searchStr:lower() |
end |
function UrbanAchiever_CatButtonScroll(self1, arg1) |
function self:ButtonScroll(arg1, scrollbar, offset) |
--arg1 = 1 for up, -1 for down |
if IsShiftKeyDown() then arg1 = arg1 * 5 end --Shift = longer scroll |
local sMin, sMax = self.frame.catScroll:GetMinMaxValues() |
self.catOffset = math.min(sMax, math.max(sMin, self.catOffset+ (arg1 * -1))) |
self.frame.catScroll:SetValue(self.catOffset) |
if IsShiftKeyDown() then arg1 = arg1 * 5 end --Shift = longer scroll |
local sMin, sMax = self.frame[scrollbar]:GetMinMaxValues() |
self[offset] = math.min(sMax, math.max(sMin, self[offset] + (arg1 * -1))) |
self.frame[scrollbar]:SetValue(self[offset]) |
end |
function UrbanAchiever_AchButtonScroll(self1, arg1) |
--arg1 = 1 for up, -1 for down |
if IsShiftKeyDown() then arg1 = arg1 * 5 end --Shift = longer scroll |
local sMin, sMax = self.frame.achScroll:GetMinMaxValues() |
self.achOffset = math.min(sMax, math.max(sMin, self.achOffset+ (arg1 * -1))) |
self.frame.achScroll:SetValue(self.achOffset) |
end |
function UrbanAchiever_CriteriaButtonScroll(self1, arg1) |
--arg1 = 1 for up, -1 for down |
if IsShiftKeyDown() then arg1 = arg1 * 5 end --Shift = longer scroll |
local sMin, sMax = self.frame.criteriaScroll:GetMinMaxValues() |
self.criteriaOffset = math.min(sMax, math.max(sMin, self.criteriaOffset+ (arg1 * -1))) |
self.frame.criteriaScroll:SetValue(self.criteriaOffset) |
end |
function self:ToggleFrame() |
if self.frame == nil then self:Initialize("","") end |
if self.frame == nil then return end |
self.frame.catScroll:SetWidth(16) |
self.frame.catScroll:SetMinMaxValues(0,0) |
self.frame.catScroll:SetValueStep(1) |
self.frame.catScroll:SetScript("OnValueChanged", UrbanAchiever_OnCatScroll) |
self.frame.catScroll:SetScript("OnValueChanged", function() |
self:OnCatScroll() |
end) |
self.frame.catScroll:SetValue(1) |
--Achievement Button Scroll Bar |
self.frame.achScroll:SetWidth(16) |
self.frame.achScroll:SetMinMaxValues(0,0) |
self.frame.achScroll:SetValueStep(1) |
self.frame.achScroll:SetScript("OnValueChanged",UrbanAchiever_OnAchScroll) |
self.frame.achScroll:SetScript("OnValueChanged", function() |
self:OnAchScroll() |
end) |
self.frame.achScroll:SetValue(1) |
--Achievement Display Frame |
self.frame.criteriaScroll:SetWidth(16) |
self.frame.criteriaScroll:SetMinMaxValues(0,0) |
self.frame.criteriaScroll:SetValueStep(1) |
self.frame.criteriaScroll:SetScript("OnValueChanged", UrbanAchiever_OnCriteriaScroll) |
self.frame.criteriaScroll:SetScript("OnValueChanged", function() |
self:OnCriteriaScroll() |
end) |
self.frame.criteriaScroll:SetValue(1) |
self.frame.criteriaScroll:Show() |
self:RefreshCategoryButtons() |
self:RefreshAchievementButtons() |
end) |
button:SetScript("OnMouseWheel",UrbanAchiever_CatButtonScroll) |
button:SetScript("OnMouseWheel", function() |
self:ButtonScroll(arg1, "catScroll", "catOffset") |
--[[--arg1 = 1 for up, -1 for down |
local sMin, sMax = self.frame.catScroll:GetMinMaxValues() |
self.catOffset = math.min(sMax, math.max(sMin, self.catOffset + (arg1 * -1))) |
self.frame.catScroll:SetValue(self.catOffset) |
--self:RefreshCategoryButtons()]]-- |
end) |
return button |
end |
end |
end |
end) |
button:SetScript("OnMouseWheel", UrbanAchiever_AchButtonScroll) |
button:SetScript("OnMouseWheel", function() |
self:ButtonScroll(arg1, "achScroll", "achOffset") |
--[[--arg1 = 1 for up, -1 for down |
local sMin, sMax = self.frame.achScroll:GetMinMaxValues() |
self.achOffset = math.min(sMax, math.max(sMin, self.achOffset + (arg1 * -1))) |
self.frame.achScroll:SetValue(self.achOffset) |
--self:RefreshAchievementButtons() |
]]-- |
end) |
return button |
end |
button:SetHighlightTexture("Interface\\FriendsFrame\\UI-FriendsFrame-HighlightBar", "ADD") |
button:SetScript("OnMouseWheel", UrbanAchiever_CriteriaButtonScroll) |
button:SetScript("OnMouseWheel", function() |
self:ButtonScroll(arg1, "criteriaScroll", "criteriaOffset") |
end) |
button:SetScript("OnClick", function() |
local id = button:GetID() |
------------------------------------------------------------- |
--Scroll Stuff |
------------------------------------------------------------- |
function UrbanAchiever_OnCatScroll(self1) |
self.catOffset = self1:GetValue() |
function self:OnCatScroll() |
--arg1 = GetValue() |
self.catOffset = arg1 |
self:RefreshCategoryButtons() |
end |
function UrbanAchiever_OnAchScroll(self1) |
self.achOffset = self1:GetValue() |
function self:OnAchScroll() |
--arg1 = GetValue() |
self.achOffset = arg1 |
self:RefreshAchievementButtons(false) |
end |
function UrbanAchiever_OnCriteriaScroll(self1) |
self.criteriaOffset = self1:GetValue() |
function self:OnCriteriaScroll() |
--arg1 = GetValue() |
self.criteriaOffset = arg1 |
self:RefreshCriteriaButtons() |
end |
end |
function self:SetAchievementButton(button, id, offset) |
local retok, id, name, points, completed, month, day, year, description, _,icon, reward = pcall (GetAchievementInfo,id) |
if not retok then return nil end |
local id, name, points, completed, month, day, year, description, _, icon, reward = GetAchievementInfo(id) |
if completed then |
if year < 10 then |
--Update this achievement |
self.masterList[id].searchString = self:GetSearchString(id) |
local retok, id, name, points, completed, month, day, year, description, _,icon, reward = pcall (GetAchievementInfo,id) |
local id, name, points, completed, month, day, year, description, _, icon, reward = GetAchievementInfo(id) |
self.frame.display:Show() |
self.frame.display.icon:SetTexture(icon) |
if criteriaType == CRITERIA_TYPE_ACHIEVEMENT 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 |
_,_,_,_,_,_,_,_,_,icon = GetAchievementInfo(criteriaAssetID) |
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 |