89 lines
4.1 KiB
Lua
89 lines
4.1 KiB
Lua
--[[
|
|
This file contains all the Atlas specific functions
|
|
]]
|
|
|
|
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
|
|
|
--[[
|
|
AtlasLoot_SetupForAtlas:
|
|
This function sets up the Atlas specific XML objects
|
|
]]
|
|
function AtlasLoot_SetupForAtlas()
|
|
--Position the frame with the AtlasLoot version details in the Atlas frame
|
|
AtlasLootInfo:ClearAllPoints();
|
|
AtlasLootInfo:SetParent(AtlasFrame);
|
|
AtlasLootInfo:SetPoint("TOPLEFT", "AtlasFrame", "TOPLEFT", 546, -3);
|
|
|
|
--Anchor the bottom panel to the Atlas frame
|
|
AtlasLootPanel:ClearAllPoints();
|
|
AtlasLootPanel:SetParent(AtlasFrame);
|
|
AtlasLootPanel:SetPoint("TOP", "AtlasFrame", "BOTTOM", 0, 9);
|
|
|
|
--Anchor the loot table to the Atlas frame
|
|
AtlasLoot_SetItemInfoFrame();
|
|
AtlasLootItemsFrame:Hide();
|
|
AtlasLoot_AnchorFrame = AtlasFrame;
|
|
end
|
|
|
|
--[[
|
|
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)
|
|
|
|
|
|
|
|
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
|
|
if getglobal(name.."_Selected"):IsVisible() then
|
|
getglobal(name.."_Selected"):Hide();
|
|
getglobal(name.."_Loot"):Show();
|
|
AtlasLootItemsFrame:Hide();
|
|
AtlasLootItemsFrame.activeBoss = nil;
|
|
else
|
|
--If an loot table is associated with the button, show it. Note multiple tables need to be checked due to the database structure
|
|
if (AtlasLootBossButtons[zoneID] ~= nil and AtlasLootBossButtons[zoneID][id] ~= nil and AtlasLootBossButtons[zoneID][id] ~= "") then
|
|
if AtlasLoot_IsLootTableAvailable(AtlasLootBossButtons[zoneID][id]) then
|
|
getglobal(name.."_Selected"):Show();
|
|
getglobal(name.."_Loot"):Hide();
|
|
local _,_,boss = string.find(getglobal(name.."_Text"):GetText(), "|c%x%x%x%x%x%x%x%x%s*[%dX']*[%) ]*(.*[^%,])[%,]?$");
|
|
AtlasLoot_ShowBossLoot(AtlasLootBossButtons[zoneID][id], boss, AtlasFrame);
|
|
AtlasLootItemsFrame.activeBoss = id;
|
|
AtlasLoot_AtlasScrollBar_Update();
|
|
AtlasLoot_Lastboss = AtlasLootBossButtons[zoneID][id];
|
|
AtlasLoot_Hold = false;
|
|
end
|
|
elseif (AtlasLootWBBossButtons[zoneID] ~= nil and AtlasLootWBBossButtons[zoneID][id] ~= nil and AtlasLootWBBossButtons[zoneID][id] ~= "") then
|
|
if AtlasLoot_IsLootTableAvailable(AtlasLootWBBossButtons[zoneID][id]) then
|
|
getglobal(name.."_Selected"):Show();
|
|
getglobal(name.."_Loot"):Hide();
|
|
local _,_,boss = string.find(getglobal(name.."_Text"):GetText(), "|c%x%x%x%x%x%x%x%x%s*[%dX]*[%) ]*(.*[^%,])[%,]?$");
|
|
AtlasLoot_ShowBossLoot(AtlasLootWBBossButtons[zoneID][id], boss, AtlasFrame);
|
|
AtlasLootItemsFrame.activeBoss = id;
|
|
AtlasLoot_AtlasScrollBar_Update();
|
|
end
|
|
elseif (AtlasLootBattlegrounds[zoneID] ~= nil and AtlasLootBattlegrounds[zoneID][id] ~= nil and AtlasLootBattlegrounds[zoneID][id] ~= "") then
|
|
if AtlasLoot_IsLootTableAvailable(AtlasLootBattlegrounds[zoneID][id]) then
|
|
getglobal(name.."_Selected"):Show();
|
|
getglobal(name.."_Loot"):Hide();
|
|
local _,_,boss = string.find(getglobal(name.."_Text"):GetText(), "|c%x%x%x%x%x%x%x%x%s*[%wX]*[%) ]*(.*[^%,])[%,]?$");
|
|
AtlasLoot_ShowBossLoot(AtlasLootBattlegrounds[zoneID][id], boss, AtlasFrame);
|
|
AtlasLootItemsFrame.activeBoss = id;
|
|
AtlasLoot_AtlasScrollBar_Update();
|
|
end
|
|
end
|
|
end
|
|
|
|
--This has been invoked from Atlas, so we remove any claim external mods have on the loot table
|
|
AtlasLootItemsFrame.externalBoss = nil;
|
|
|
|
--Hide the AtlasQuest frame if present so that the AtlasLoot items frame is not stuck under it
|
|
if (AtlasQuestInsideFrame) then
|
|
HideUIPanel(AtlasQuestInsideFrame);
|
|
end
|
|
end
|