chore: flatten Altoholic-Addon/ wrapper + add standard .gitignore/.gitattributes
Each DataStore_* / Altoholic_* addon now lives at the repo root, matching the Exiles fork-layout convention (one folder per addon, no wrapper dir).
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
local addonName = "Altoholic"
|
||||
local addon = _G[addonName]
|
||||
|
||||
local WHITE = "|cFFFFFFFF"
|
||||
|
||||
local view
|
||||
local highlightIndex
|
||||
|
||||
addon.Tabs.Achievements = {}
|
||||
|
||||
local ns = addon.Tabs.Achievements -- ns = namespace
|
||||
|
||||
local function BuildView()
|
||||
view = view or {}
|
||||
wipe(view)
|
||||
|
||||
local cats = GetCategoryList()
|
||||
for _, categoryID in ipairs(cats) do
|
||||
local _, parentID = GetCategoryInfo(categoryID)
|
||||
|
||||
if parentID == -1 then -- add categories, followed by their respective sub-categories
|
||||
table.insert(view, { id = categoryID, isCollapsed = true } )
|
||||
|
||||
for _, subCatID in ipairs(cats) do
|
||||
local _, subCatParentID = GetCategoryInfo(subCatID)
|
||||
if subCatParentID == categoryID then
|
||||
table.insert(view, subCatID )
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function Header_OnClick(frame)
|
||||
highlightIndex = frame.categoryIndex
|
||||
local header = view[highlightIndex]
|
||||
header.isCollapsed = not header.isCollapsed
|
||||
|
||||
ns:Update();
|
||||
AltoholicFrameAchievements:Show()
|
||||
addon.Achievements:SetCategory(header.id)
|
||||
addon.Achievements:Update()
|
||||
end
|
||||
|
||||
local function Item_OnClick(frame)
|
||||
highlightIndex = frame.subCategoryIndex
|
||||
local item = view[highlightIndex]
|
||||
|
||||
ns:Update();
|
||||
AltoholicFrameAchievements:Show()
|
||||
addon.Achievements:SetCategory(item)
|
||||
addon.Achievements:Update()
|
||||
end
|
||||
|
||||
function ns:Update()
|
||||
if not view then
|
||||
BuildView()
|
||||
end
|
||||
|
||||
local VisibleLines = 15
|
||||
|
||||
local categoryIndex -- index of the category in the menu table
|
||||
local categoryCacheIndex -- index of the category in the cache table
|
||||
local MenuCache = {}
|
||||
|
||||
for k, v in pairs (view) do -- rebuild the cache
|
||||
if type(v) == "table" then -- header
|
||||
categoryIndex = k
|
||||
table.insert(MenuCache, { linetype=1, nameIndex=k } )
|
||||
categoryCacheIndex = #MenuCache
|
||||
|
||||
if (highlightIndex) and (highlightIndex == k) then
|
||||
MenuCache[#MenuCache].needsHighlight = true
|
||||
end
|
||||
else
|
||||
if view[categoryIndex].isCollapsed == false then
|
||||
table.insert(MenuCache, { linetype=2, nameIndex=k, parentIndex=categoryIndex } )
|
||||
|
||||
if (highlightIndex) and (highlightIndex == k) then
|
||||
MenuCache[#MenuCache].needsHighlight = true
|
||||
MenuCache[categoryCacheIndex].needsHighlight = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local buttonWidth = 156
|
||||
if #MenuCache > 15 then
|
||||
buttonWidth = 136
|
||||
end
|
||||
|
||||
local scrollFrame = AltoholicAchievementsMenuScrollFrame
|
||||
local offset = FauxScrollFrame_GetOffset( scrollFrame );
|
||||
local itemButtom = "AltoholicTabAchievementsMenuItem"
|
||||
for i=1, VisibleLines do
|
||||
local line = i + offset
|
||||
|
||||
if line > #MenuCache then
|
||||
_G[itemButtom..i]:Hide()
|
||||
else
|
||||
local p = MenuCache[line]
|
||||
|
||||
_G[itemButtom..i]:SetWidth(buttonWidth)
|
||||
_G[itemButtom..i.."NormalText"]:SetWidth(buttonWidth - 21)
|
||||
if p.needsHighlight then
|
||||
_G[itemButtom..i]:LockHighlight()
|
||||
else
|
||||
_G[itemButtom..i]:UnlockHighlight()
|
||||
end
|
||||
|
||||
if p.linetype == 1 then
|
||||
local catName = GetCategoryInfo(view[p.nameIndex].id)
|
||||
|
||||
_G[itemButtom..i.."NormalText"]:SetText(WHITE .. catName)
|
||||
_G[itemButtom..i]:SetScript("OnClick", Header_OnClick)
|
||||
_G[itemButtom..i].categoryIndex = p.nameIndex
|
||||
elseif p.linetype == 2 then
|
||||
local catName = GetCategoryInfo(view[p.nameIndex])
|
||||
|
||||
_G[itemButtom..i.."NormalText"]:SetText("|cFFBBFFBB " .. catName)
|
||||
_G[itemButtom..i]:SetScript("OnClick", Item_OnClick)
|
||||
_G[itemButtom..i].categoryIndex = p.parentIndex
|
||||
_G[itemButtom..i].subCategoryIndex = p.nameIndex
|
||||
end
|
||||
|
||||
_G[itemButtom..i]:Show()
|
||||
end
|
||||
end
|
||||
|
||||
FauxScrollFrame_Update( scrollFrame, #MenuCache, VisibleLines, 20);
|
||||
end
|
||||
Reference in New Issue
Block a user