diff --git a/Core/AtlasLoot.lua b/Core/AtlasLoot.lua
index 188e450..eaf31df 100644
--- a/Core/AtlasLoot.lua
+++ b/Core/AtlasLoot.lua
@@ -55,9 +55,9 @@ local Anchor_AlphaMap = { "TOPLEFT", "AlphaMapAlphaMapFrame", "TOPLEFT", 0, 0 }
local Anchor_Default = { "TOPLEFT", "AtlasLootDefaultFrame", "TOPLEFT", 45, -85 }
-- Variables to hold hooked Atlas functions
-Hooked_Atlas_Refresh = nil;
-Hooked_Atlas_OnShow = nil;
-Hooked_AtlasScrollBar_Update = nil;
+local Original_Atlas_Refresh;
+local Original_Atlas_OnShow;
+local Original_AtlasScrollBar_Update;
AtlasLootCharDB = {};
@@ -933,12 +933,12 @@ function AtlasLoot_OnVariablesLoaded()
AtlasButton_LoadAtlas();
end
-- Hook the necessary Atlas functions
- Hooked_Atlas_Refresh = Atlas_Refresh;
+ Original_Atlas_Refresh = Atlas_Refresh;
Atlas_Refresh = AtlasLoot_Refresh;
- Hooked_Atlas_OnShow = Atlas_OnShow;
+ Original_Atlas_OnShow = Atlas_OnShow;
Atlas_OnShow = AtlasLoot_Atlas_OnShow;
-- Instead of hooking, replace the scrollbar driver function
- Hooked_AtlasScrollBar_Update = AtlasScrollBar_Update;
+ Original_AtlasScrollBar_Update = AtlasScrollBar_Update;
AtlasScrollBar_Update = AtlasLoot_AtlasScrollBar_Update;
-- Disable options that don't have the supporting mods
if ( not LootLink_SetTooltip and (AtlasLootCharDB.LootlinkTT == true ) ) then
@@ -959,7 +959,7 @@ function AtlasLoot_OnVariablesLoaded()
AtlasLootItemsFrame_Back:SetTexture(0, 0, 0, 0.65);
end
-- If Atlas is installed, set up for Atlas
- if ( Hooked_Atlas_Refresh ) then
+ if ( Original_Atlas_Refresh ) then
AtlasLoot_SetupForAtlas();
-- If a first time user, set up options
if ( AtlasLootCharDB.FirstTime == nil or AtlasLootCharDB.FirstTime == true ) then
@@ -973,7 +973,7 @@ function AtlasLoot_OnVariablesLoaded()
StaticPopup_Show ("ATLASLOOT_SETUP");
AtlasLootCharDB.FirstTime = false;
end
- Hooked_Atlas_Refresh();
+ Original_Atlas_Refresh();
else
-- If we are not using Atlas, keep the items frame out of the way
AtlasLootItemsFrame:Hide();
@@ -1189,47 +1189,33 @@ Hooks the Atlas scroll frame.
Required as the Atlas function cannot deal with the AtlasLoot button template or the added Atlasloot entries
]]
function AtlasLoot_AtlasScrollBar_Update()
- local lineplusoffset;
- if ( not AtlasBossLine1_Text ) then
- return
- end
+ Original_AtlasScrollBar_Update()
local zoneID = ATLAS_DROPDOWNS[AtlasOptions.AtlasType][AtlasOptions.AtlasZone];
- -- Update the contents of the Atlas scroll frame
- FauxScrollFrame_Update(AtlasScrollBar, ATLAS_CUR_LINES, ATLAS_LOOT_BOSS_LINES, 15);
-- Make note of how far in the scroll frame we are
for line = 1, ATLAS_NUM_LINES do
- lineplusoffset = line + FauxScrollFrame_GetOffset(AtlasScrollBar);
- local bossLine = _G["AtlasBossLine" .. line]
- if ( lineplusoffset <= ATLAS_CUR_LINES ) then
- local loot = _G["AtlasBossLine" .. line .. "_Loot"]
- local selected = _G["AtlasBossLine" .. line .. "_Selected"]
- _G["AtlasBossLine" .. line .. "_Text"]:SetText(ATLAS_SCROLL_LIST[lineplusoffset]);
+ local lineplusoffset = line + FauxScrollFrame_GetOffset(AtlasScrollBar);
+ local entry = _G["AtlasEntry" .. line]
+ local loot = _G["AtlasEntry" .. line .. "_Loot"]
+ local selected = _G["AtlasEntry" .. line .. "_Selected"]
+ if ( loot and lineplusoffset <= ATLAS_CUR_LINES ) then
+ _G["AtlasEntry" .. line .. "_Text"]:SetText(ATLAS_SCROLL_LIST[lineplusoffset]);
+ local showIcon = (AtlasLootBossButtons[zoneID] and AtlasLootBossButtons[zoneID][lineplusoffset] and AtlasLootBossButtons[zoneID][lineplusoffset] ~= "") or
+ (AtlasLootWBBossButtons[zoneID] and AtlasLootWBBossButtons[zoneID][lineplusoffset] and AtlasLootWBBossButtons[zoneID][lineplusoffset] ~= "") or
+ (AtlasLootBattlegrounds[zoneID] and AtlasLootBattlegrounds[zoneID][lineplusoffset] and AtlasLootBattlegrounds[zoneID][lineplusoffset] ~= "")
if ( AtlasLootItemsFrame.activeBoss == lineplusoffset ) then
- bossLine:Enable();
+ entry:Enable();
loot:Hide();
selected:Show();
- elseif ( (AtlasLootBossButtons[zoneID] and AtlasLootBossButtons[zoneID][lineplusoffset] and AtlasLootBossButtons[zoneID][lineplusoffset] ~= "") ) then
- bossLine:Enable();
- loot:Show();
- selected:Hide();
- elseif ( (AtlasLootWBBossButtons[zoneID] and AtlasLootWBBossButtons[zoneID][lineplusoffset] and AtlasLootWBBossButtons[zoneID][lineplusoffset] ~= "") ) then
- bossLine:Enable();
- loot:Show();
- selected:Hide();
- elseif ( (AtlasLootBattlegrounds[zoneID] and AtlasLootBattlegrounds[zoneID][lineplusoffset] and AtlasLootBattlegrounds[zoneID][lineplusoffset] ~= "") ) then
- bossLine:Enable();
+ elseif ( showIcon ) then
+ entry:Enable();
loot:Show();
selected:Hide();
else
- bossLine:Disable();
+ entry:Disable();
loot:Hide();
selected:Hide();
end
- bossLine.idnum = lineplusoffset;
- bossLine:Show();
- elseif ( bossLine ) then
- -- Hide lines that are not needed
- bossLine:Hide();
+ entry.idnum = lineplusoffset;
end
end
end
@@ -1239,148 +1225,41 @@ AtlasLoot_Refresh:
Replacement for Atlas_Refresh, required as the template for the boss buttons in Atlas is insufficient
Called whenever the state of Atlas changes
]]
-function AtlasLoot_Refresh()
+function AtlasLoot_Refresh(keepSelection)
-- Reset which loot page is 'current'
- AtlasLootItemsFrame.activeBoss = nil;
- -- Get map selection info from Atlas
- local zoneID = ATLAS_DROPDOWNS[AtlasOptions.AtlasType][AtlasOptions.AtlasZone];
- local data = AtlasMaps;
- local base = {};
- -- Get boss name information
- for k,v in pairs(data[zoneID]) do
- base[k] = v;
+ if ( not keepSelection ) then
+ AtlasLootItemsFrame.activeBoss = nil
end
- -- Display the newly selected texture
- AtlasMap:ClearAllPoints();
- AtlasMap:SetWidth(512);
- AtlasMap:SetHeight(512);
- AtlasMap:SetPoint("TOPLEFT", "AtlasFrame", "TOPLEFT", 18, -84);
- local builtIn = AtlasMap:SetTexture("Interface\\AddOns\\Atlas\\Images\\Maps\\"..zoneID);
- -- If texture was not found in the core Atlas mod, check plugins
- if ( not builtIn ) then
- for k,v in pairs(ATLAS_PLUGINS) do
- if ( AtlasMap:SetTexture("Interface\\AddOns\\"..v.."\\Images\\"..zoneID) ) then
- break;
- end
- end
- end
- -- Setup info panel above boss listing
- local tName = base.ZoneName[1];
- if ( AtlasOptions.AtlasAcronyms and base.Acronym ) then
- local _RED = "|cffcc6666";
- tName = tName.._RED.." ["..base.Acronym.."]";
- end
- AtlasText_ZoneName_Text:SetText(tName);
- local tLoc = "";
- local tLR = "";
- local tML = "";
- local tPL = "";
- if ( base.Location[1] ) then
- tLoc = ATLAS_STRING_LOCATION..": "..base.Location[1];
- end
- if ( base.LevelRange ) then
- tLR = ATLAS_STRING_LEVELRANGE..": "..base.LevelRange;
- end
- if ( base.MinLevel ) then
- tML = ATLAS_STRING_MINLEVEL..": "..base.MinLevel;
- end
- if ( base.PlayerLimit ) then
- tPL = ATLAS_STRING_PLAYERLIMIT..": "..base.PlayerLimit;
- end
- AtlasText_Location_Text:SetText(tLoc);
- AtlasText_LevelRange_Text:SetText(tLR);
- AtlasText_MinLevel_Text:SetText(tML);
- AtlasText_PlayerLimit_Text:SetText(tPL);
- Atlastextbase = base;
- -- Get the size of the Atlas text to append stuff to the bottom. Looks for empty lines
- local i = 1;
- local j = 2;
- while ( (Atlastextbase[i] and Atlastextbase[i] ~= "") or (Atlastextbase[j] and Atlastextbase[j] ~= "")) do
- i = i + 1;
- j = i + 1;
- end
- -- Hide any Atlas objects lurking around that have now been replaced
- for i = 1,ATLAS_CUR_LINES do
- if ( _G["AtlasEntry"..i] ) then
- _G["AtlasEntry"..i]:Hide();
- end
- end
- ATLAS_DATA = Atlastextbase;
- ATLAS_SEARCH_METHOD = data.Search;
- -- Deal with Atlas's search function
- if ( data.Search == nil ) then
- ATLAS_SEARCH_METHOD = AtlasSimpleSearch;
- end
- if ( data.Search ~= false ) then
- AtlasSearchEditBox:Show();
- AtlasNoSearch:Hide();
+ if ( AtlasLootItemsFrame.activeBoss ) then
+ AtlasLootItemsFrame:Show()
else
- AtlasSearchEditBox:Hide();
- AtlasNoSearch:Show();
- ATLAS_SEARCH_METHOD = nil;
+ AtlasLootItemsFrame:Hide()
end
- -- populate the scroll frame entries list, the update func will do the rest
- Atlas_Search("");
- AtlasSearchEditBox:SetText("");
- AtlasSearchEditBox:ClearFocus();
- -- create and align any new entry buttons that we need
- for i = 1,ATLAS_CUR_LINES do
- local f;
- if ( not _G["AtlasBossLine"..i] ) then
- f = CreateFrame("Button", "AtlasBossLine"..i, AtlasFrame, "AtlasLootNewBossLineTemplate");
- f:SetFrameStrata("HIGH");
- if ( i == 1 ) then
- f:SetPoint("TOPLEFT", "AtlasScrollBar", "TOPLEFT", 16, -3);
- else
- f:SetPoint("TOPLEFT", "AtlasBossLine"..(i-1), "BOTTOMLEFT");
- end
- else
- _G["AtlasBossLine"..i.."_Loot"]:Hide();
- _G["AtlasBossLine"..i.."_Selected"]:Hide();
+ -- Call original function
+ Original_Atlas_Refresh()
+
+ for i = 1, ATLAS_NUM_LINES do
+ local entry = _G["AtlasEntry" .. i]
+ if ( entry and not _G["AtlasEntry"..i.."_Loot"] ) then
+ -- Add deselected icon
+ local loot = entry:CreateTexture("$parent_Loot", "OVERLAY");
+ loot:SetWidth(16)
+ loot:SetHeight(16)
+ loot:SetPoint("RIGHT", entry, 0, 0)
+ loot:SetTexture("Interface\\AddOns\\AtlasLoot\\Images\\looticon")
+ loot:Show()
+ -- Add selected icon
+ local selected = entry:CreateTexture("$parent_Selected", "OVERLAY")
+ selected:SetWidth(16)
+ selected:SetHeight(16)
+ selected:SetPoint("RIGHT", entry, 0, 0)
+ selected:SetTexture("Interface\\AddOns\\AtlasLoot\\Images\\gold")
+ selected:Hide()
+ -- Add OnClick function
+ entry:SetScript("OnClick", AtlasLootBoss_OnClick)
+ entry:SetHighlightTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight")
end
end
- -- Hide the loot frame now that a pristine Atlas instance is created
- AtlasLootItemsFrame:Hide();
- Atlas_Search("");
- -- Make sure the scroll bar is correctly offset
- AtlasLoot_AtlasScrollBar_Update();
- -- see if we should display the entrance/instance button or not, and decide what it should say
- local matchFound = {nil};
- local sayEntrance = nil;
- for k,v in pairs(Atlas_EntToInstMatches) do
- if ( k == zoneID ) then
- matchFound = v;
- sayEntrance = false;
- end
- end
- if ( not matchFound[1] ) then
- for k,v in pairs(Atlas_InstToEntMatches) do
- if ( k == zoneID ) then
- matchFound = v;
- sayEntrance = true;
- end
- end
- end
- -- set the button's text, populate the dropdown menu, and show or hide the button
- if ( matchFound[1] ) then
- ATLAS_INST_ENT_DROPDOWN = {};
- for k,v in pairs(matchFound) do
- table.insert(ATLAS_INST_ENT_DROPDOWN, v);
- end
- table.sort(ATLAS_INST_ENT_DROPDOWN, AtlasSwitchDD_Sort);
- if ( sayEntrance ) then
- AtlasSwitchButton:SetText(ATLAS_ENTRANCE_BUTTON);
- else
- AtlasSwitchButton:SetText(ATLAS_INSTANCE_BUTTON);
- end
- AtlasSwitchButton:Show();
- UIDropDownMenu_Initialize(AtlasSwitchDD, AtlasSwitchDD_OnLoad);
- else
- AtlasSwitchButton:Hide();
- end
- if ( TitanPanelButton_UpdateButton ) then
- TitanPanelButton_UpdateButton("Atlas");
- end
end
--[[
@@ -1389,26 +1268,20 @@ Hooks Atlas_OnShow() to add extra setup routines that AtlasLoot needs for
integration purposes.
]]
function AtlasLoot_Atlas_OnShow()
- Atlas_Refresh();
+ AtlasLoot_Refresh(true);
-- We don't want Atlas and the Loot Browser open at the same time, so the Loot Browser is close
if ( AtlasLootDefaultFrame ) then
AtlasLootDefaultFrame:Hide();
AtlasLoot_SetupForAtlas();
end
-- Call the Atlas function
- Hooked_Atlas_OnShow();
+ Original_Atlas_OnShow();
-- If we were looking at a loot table earlier in the session, it is still
-- saved on the item frame, so restore it in Atlas
if ( AtlasLootItemsFrame.activeBoss ) then
- AtlasLootItemsFrame:Show();
+ AtlasLootItemsFrame:Show()
else
- -- If no loot table is selected, set up icons next to boss names
- for i = 1,ATLAS_CUR_LINES do
- if ( _G["AtlasEntry"..i.."_Selected"] and _G["AtlasEntry"..i.."_Selected"]:IsVisible() ) then
- _G["AtlasEntry"..i.."_Loot"]:Show();
- _G["AtlasEntry"..i.."_Selected"]:Hide();
- end
- end
+ AtlasLootItemsFrame:Hide()
end
-- Consult the saved variable table to see whether to show the bottom panel
if ( AtlasLootCharDB.HidePanel == true ) then
@@ -1416,6 +1289,7 @@ function AtlasLoot_Atlas_OnShow()
else
AtlasLootPanel:Show();
end
+ AtlasLoot_AtlasScrollBar_Update()
end
--[[
@@ -1435,7 +1309,8 @@ AtlasLootBoss_OnClick:
Invoked whenever a boss line in Atlas is clicked
Shows a loot page if one is associated with the button
]]
-function AtlasLootBoss_OnClick(name)
+function AtlasLootBoss_OnClick()
+ local name = this:GetName()
local zoneID = ATLAS_DROPDOWNS[AtlasOptions.AtlasType][AtlasOptions.AtlasZone];
local id = this.idnum;
-- If the loot table was already shown and boss clicked again, hide the loot table and fix boss list icons
@@ -2060,7 +1935,6 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss)
if ( AtlasLoot_ButtonRegistry[tablebase.Back_Page] ) then
AtlasLootItemsFrame_BACK.title = AtlasLoot_ButtonRegistry[tablebase.Back_Page].Title;
end
- -- Hide navigation buttons if we click Quicklooks in Atlas
if ( AtlasFrame and AtlasFrame:IsVisible() ) then
local sourceKey
for k, v in pairs(AtlasLoot_Data) do
@@ -2068,11 +1942,13 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss)
sourceKey = k
end
end
- if ( sourceKey == "AtlasLootItems" ) then
+ -- Hide navigation buttons if we click on boss loot in Atlas
+ if ( sourceKey == "AtlasLootItems" or sourceKey == "AtlasLootWBItems" ) then
AtlasLootItemsFrame_BACK:Hide()
AtlasLootItemsFrame_NEXT:Hide()
AtlasLootItemsFrame_PREV:Hide()
end
+ -- Hide navigation buttons if we click Quicklooks in Atlas
for i = 1, 4 do
if ( AtlasLootCharDB["QuickLooks"][i] and dataID == AtlasLootCharDB["QuickLooks"][i][1] ) then
AtlasLootItemsFrame_BACK:Hide();
@@ -2399,12 +2275,10 @@ function AtlasLootItemsFrame_OnCloseButton()
AtlasLootItemsFrame.activeBoss = nil;
-- Fix the boss buttons so the correct icons are displayed
if ( AtlasFrame and AtlasFrame:IsVisible() ) then
- if ( ATLAS_CUR_LINES ) then
- for i = 1,ATLAS_CUR_LINES do
- if ( _G["AtlasBossLine"..i.."_Selected"]:IsVisible() ) then
- _G["AtlasBossLine"..i.."_Selected"]:Hide();
- _G["AtlasBossLine"..i.."_Loot"]:Show();
- end
+ for i = 1, ATLAS_NUM_LINES do
+ if ( _G["AtlasEntry"..i.."_Selected"] and _G["AtlasEntry"..i.."_Selected"]:IsShown() ) then
+ _G["AtlasEntry"..i.."_Selected"]:Hide();
+ _G["AtlasEntry"..i.."_Loot"]:Show();
end
end
end
diff --git a/Core/AtlasLoot.xml b/Core/AtlasLoot.xml
index 4930c3a..815b7f0 100644
--- a/Core/AtlasLoot.xml
+++ b/Core/AtlasLoot.xml
@@ -438,44 +438,6 @@
-
-