Skip to content

Commit 4e076b0

Browse files
committed
feature - Add support for "Initial" specializations
1 parent 4e9e72c commit 4e076b0

File tree

1 file changed

+32
-13
lines changed

1 file changed

+32
-13
lines changed

TalentTreeViewer_TWW/TalentViewer.lua

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,39 @@ end
5151
--- Build class / spec cache
5252
----------------------
5353
do
54+
local initialSpecs = {
55+
[1] = 1446,
56+
[2] = 1451,
57+
[3] = 1448,
58+
[4] = 1453,
59+
[5] = 1452,
60+
[6] = 1455,
61+
[7] = 1444,
62+
[8] = 1449,
63+
[9] = 1454,
64+
[10] = 1450,
65+
[11] = 1447,
66+
[12] = 1456,
67+
[13] = 1465,
68+
};
5469
for classID = 1, GetNumClasses() do
5570
local _;
5671
cache.classNames[classID], cache.classFiles[classID], _ = GetClassInfo(classID);
5772
cache.specIndexToIdMap[classID] = {};
5873
cache.classSpecs[classID] = {};
59-
for specIndex = 1, GetNumSpecializationsForClassID(classID) do
60-
local specID = GetSpecializationInfoForClassID(classID, specIndex);
74+
local numSpecs = GetNumSpecializationsForClassID(classID);
75+
for specIndex = 1, (numSpecs + 1) do
76+
local specID = GetSpecializationInfoForClassID(classID, specIndex) or initialSpecs[classID];
6177
local specName, _, specIcon = select(2, GetSpecializationInfoForSpecID(specID));
78+
local isInitial = specIndex > numSpecs;
79+
if isInitial then
80+
specName = 'Initial ' .. cache.classNames[classID];
81+
end
6282
if specName ~= '' then
6383
cache.specNames[specID] = specName;
6484
cache.classSpecs[classID][specID] = specName;
6585
cache.specIndexToIdMap[classID][specIndex] = specID;
66-
cache.specIconId[specID] = specIcon;
86+
cache.specIconId[specID] = not isInitial and specIcon or ('interface/icons/classicon_' .. cache.classFiles[classID]);
6787
cache.specIdToClassIdMap[specID] = classID;
6888
end
6989
end
@@ -361,8 +381,8 @@ function TalentViewer:InitDropdown()
361381
local specList = {};
362382
local specListReverse = {};
363383
local index = 1;
364-
for _, classSpecs in pairs(cache.classSpecs) do
365-
for specID, _ in pairs(classSpecs) do
384+
for classID, _ in ipairs(cache.classSpecs) do
385+
for _, specID in ipairs(cache.specIndexToIdMap[classID]) do
366386
specList[index] = specID;
367387
specListReverse[specID] = index;
368388
index = index + 1;
@@ -408,23 +428,22 @@ function TalentViewer:BuildMenu(rootDescription)
408428
self:SelectSpec(cache.specIdToClassIdMap[specID], specID, true);
409429
end
410430

411-
for classID, classSpecs in pairs(cache.classSpecs) do
431+
for classID, _ in ipairs(cache.classSpecs) do
432+
local nameFormat = '|T%s:16|t %s';
412433
local elementDescription = rootDescription:CreateRadio(
413-
string.format(
414-
'|Tinterface/icons/classicon_%s:16|t %s',
415-
cache.classFiles[classID],
434+
nameFormat:format(
435+
'interface/icons/classicon_' .. cache.classFiles[classID],
416436
cache.classNames[classID]
417437
),
418438
isClassSelected,
419439
nil,
420440
classID
421441
);
422-
for specID, specName in pairs(classSpecs) do
442+
for _, specID in ipairs(cache.specIndexToIdMap[classID]) do
423443
elementDescription:CreateRadio(
424-
string.format(
425-
'|T%d:16|t %s',
444+
nameFormat:format(
426445
cache.specIconId[specID],
427-
specName
446+
cache.specNames[specID]
428447
),
429448
isSpecSelected,
430449
selectSpec,

0 commit comments

Comments
 (0)