Skip to content

Commit e4b126e

Browse files
committed
add class and spec icons to the dropdown
1 parent 39f2c38 commit e4b126e

File tree

2 files changed

+94
-68
lines changed

2 files changed

+94
-68
lines changed

TalentViewer.lua

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@ TalentViewer = {
66
cache = {
77
classNames = {},
88
classFiles = {},
9+
classIconId = {},
910
talents = {},
1011
classSpecs = {},
1112
sortedTalents = {},
1213
sharedTalents = {},
1314
nodes = {},
1415
tierLevel = {},
1516
specIndexToIdMap = {},
17+
specIconId = {},
18+
defaultSpecs = {},
1619
}
1720
}
1821
local cache = TalentViewer.cache
@@ -24,25 +27,26 @@ local LibDBIcon = LibStub('LibDBIcon-1.0')
2427
do
2528
cache.specs = ns.data.specs
2629
cache.talents = ns.data.talents
27-
28-
for i = 1, GetNumClasses() do
29-
cache.classNames[i], cache.classFiles[i], _ = GetClassInfo(i)
30-
cache.sharedTalents[i] = {}
31-
cache.specIndexToIdMap[i] = {}
32-
cache.classSpecs[i] = {}
33-
end
30+
cache.classes = ns.data.classes
3431

3532
for tier = 1, MAX_TALENT_TIERS do
36-
for column = 1, NUM_TALENT_COLUMNS do
37-
table.insert(cache.nodes, tier .. '-' .. column)
38-
end
3933
_, _, cache.tierLevel[tier] = GetTalentTierInfo(tier, 1)
4034
end
4135

36+
for _, classInfo in pairs(cache.classes) do
37+
cache.classNames[classInfo.classId], cache.classFiles[classInfo.classId], _ = GetClassInfo(classInfo.classId)
38+
cache.sharedTalents[classInfo.classId] = {}
39+
cache.specIndexToIdMap[classInfo.classId] = {}
40+
cache.classSpecs[classInfo.classId] = {}
41+
cache.defaultSpecs[classInfo.classId] = classInfo.defaultSpecId
42+
cache.classIconId[classInfo.classId] = classInfo.iconId
43+
end
44+
4245
for _, specInfo in pairs(cache.specs) do
4346
if cache.classNames[specInfo.classId] and specInfo.index < 5 then
4447
_, cache.classSpecs[specInfo.classId][specInfo.specId], _ = GetSpecializationInfoForSpecID(specInfo.specId)
4548
cache.specIndexToIdMap[specInfo.classId][specInfo.index] = specInfo.specId
49+
cache.specIconId[specInfo.specId] = specInfo.specIconId
4650
end
4751
end
4852

@@ -69,7 +73,7 @@ do
6973
if currentSpec then
7074
specId, _ = cache.specIndexToIdMap[classId][currentSpec]
7175
end
72-
specId, _ = specId or cache.specIndexToIdMap[classId][1]
76+
specId, _ = specId or cache.defaultSpecs[classId]
7377
TalentViewer:SelectSpec(classId, specId)
7478
end
7579

@@ -288,7 +292,11 @@ function TalentViewer:BuildMenu(setValueFunc, isCheckedFunc)
288292
local specMenuList = {}
289293
for specId, specName in pairs(classSpecs) do
290294
table.insert(specMenuList,{
291-
text = specName,
295+
text = string.format(
296+
'|T%d:16|t %s',
297+
cache.specIconId[specId],
298+
specName
299+
),
292300
arg1 = specId,
293301
arg2 = classId,
294302
func = setValueFunc,
@@ -297,7 +305,11 @@ function TalentViewer:BuildMenu(setValueFunc, isCheckedFunc)
297305
end
298306

299307
table.insert(menu, {
300-
text = cache.classNames[classId],
308+
text = string.format(
309+
'|T%d:16|t %s',
310+
cache.classIconId[classId],
311+
cache.classNames[classId]
312+
),
301313
hasArrow = true,
302314
menuList = specMenuList,
303315
checked = isCheckedFunc,

data.lua

Lines changed: 69 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,75 @@
1-
local name, ns = ...
1+
local _, ns = ...
22

33
ns.data = {}
4+
ns.data.classes = {
5+
{ classId = 1, fileName = 'WARRIOR', iconId = 626008, defaultSpecId = 71 },
6+
{ classId = 2, fileName = 'PALADIN', iconId = 626003, defaultSpecId = 70 },
7+
{ classId = 3, fileName = 'HUNTER', iconId = 626000, defaultSpecId = 253 },
8+
{ classId = 4, fileName = 'ROGUE', iconId = 626005, defaultSpecId = 259 },
9+
{ classId = 5, fileName = 'PRIEST', iconId = 626004, defaultSpecId = 256 },
10+
{ classId = 6, fileName = 'DEATHKNIGHT', iconId = 135771, defaultSpecId = 251 },
11+
{ classId = 7, fileName = 'SHAMAN', iconId = 626006, defaultSpecId = 262 },
12+
{ classId = 8, fileName = 'MAGE', iconId = 626001, defaultSpecId = 62 },
13+
{ classId = 9, fileName = 'WARLOCK', iconId = 626007, defaultSpecId = 265 },
14+
{ classId = 10, fileName = 'MONK', iconId = 626002, defaultSpecId = 268 },
15+
{ classId = 11, fileName = 'DRUID', iconId = 625999, defaultSpecId = 102 },
16+
{ classId = 12, fileName = 'DEMONHUNTER', iconId = 236415, defaultSpecId = 577 },
17+
}
418
ns.data.specs = {
5-
{ classId = 8, specId = 62, index = 1},
6-
{ classId = 8, specId = 63, index = 2},
7-
{ classId = 8, specId = 64, index = 3},
8-
{ classId = 2, specId = 65, index = 1},
9-
{ classId = 2, specId = 66, index = 2},
10-
{ classId = 2, specId = 70, index = 3},
11-
{ classId = 1, specId = 71, index = 1},
12-
{ classId = 1, specId = 72, index = 2},
13-
{ classId = 1, specId = 73, index = 3},
14-
{ classId = 0, specId = 74, index = 1},
15-
{ classId = 0, specId = 79, index = 3},
16-
{ classId = 0, specId = 81, index = 2},
17-
{ classId = 11, specId = 102, index = 1},
18-
{ classId = 11, specId = 103, index = 2},
19-
{ classId = 11, specId = 104, index = 3},
20-
{ classId = 11, specId = 105, index = 4},
21-
{ classId = 6, specId = 250, index = 1},
22-
{ classId = 6, specId = 251, index = 2},
23-
{ classId = 6, specId = 252, index = 3},
24-
{ classId = 3, specId = 253, index = 1},
25-
{ classId = 3, specId = 254, index = 2},
26-
{ classId = 3, specId = 255, index = 3},
27-
{ classId = 5, specId = 256, index = 1},
28-
{ classId = 5, specId = 257, index = 2},
29-
{ classId = 5, specId = 258, index = 3},
30-
{ classId = 4, specId = 259, index = 1},
31-
{ classId = 4, specId = 260, index = 2},
32-
{ classId = 4, specId = 261, index = 3},
33-
{ classId = 7, specId = 262, index = 1},
34-
{ classId = 7, specId = 263, index = 2},
35-
{ classId = 7, specId = 264, index = 3},
36-
{ classId = 9, specId = 265, index = 1},
37-
{ classId = 9, specId = 266, index = 2},
38-
{ classId = 9, specId = 267, index = 3},
39-
{ classId = 10, specId = 268, index = 1},
40-
{ classId = 10, specId = 269, index = 3},
41-
{ classId = 10, specId = 270, index = 2},
42-
{ classId = 0, specId = 535, index = 1},
43-
{ classId = 0, specId = 536, index = 3},
44-
{ classId = 0, specId = 537, index = 2},
45-
{ classId = 12, specId = 577, index = 1},
46-
{ classId = 12, specId = 581, index = 2},
47-
{ classId = 7, specId = 1444, index = 5},
48-
{ classId = 1, specId = 1446, index = 5},
49-
{ classId = 11, specId = 1447, index = 5},
50-
{ classId = 3, specId = 1448, index = 5},
51-
{ classId = 8, specId = 1449, index = 5},
52-
{ classId = 10, specId = 1450, index = 5},
53-
{ classId = 2, specId = 1451, index = 5},
54-
{ classId = 5, specId = 1452, index = 5},
55-
{ classId = 4, specId = 1453, index = 5},
56-
{ classId = 9, specId = 1454, index = 5},
57-
{ classId = 6, specId = 1455, index = 5},
58-
{ classId = 12, specId = 1456, index = 5},
19+
{ classId = 8, specId = 62, index = 1, specIconId = 135932 },
20+
{ classId = 8, specId = 63, index = 2, specIconId = 135810 },
21+
{ classId = 8, specId = 64, index = 3, specIconId = 135846 },
22+
{ classId = 2, specId = 65, index = 1, specIconId = 135920 },
23+
{ classId = 2, specId = 66, index = 2, specIconId = 236264 },
24+
{ classId = 2, specId = 70, index = 3, specIconId = 135873 },
25+
{ classId = 1, specId = 71, index = 1, specIconId = 132355 },
26+
{ classId = 1, specId = 72, index = 2, specIconId = 132347 },
27+
{ classId = 1, specId = 73, index = 3, specIconId = 132341 },
28+
{ classId = 0, specId = 74, index = 1, specIconId = 236159 },
29+
{ classId = 0, specId = 79, index = 3, specIconId = 132150 },
30+
{ classId = 0, specId = 81, index = 2, specIconId = 132121 },
31+
{ classId = 11, specId = 102, index = 1, specIconId = 136096 },
32+
{ classId = 11, specId = 103, index = 2, specIconId = 132115 },
33+
{ classId = 11, specId = 104, index = 3, specIconId = 132276 },
34+
{ classId = 11, specId = 105, index = 4, specIconId = 136041 },
35+
{ classId = 6, specId = 250, index = 1, specIconId = 135770 },
36+
{ classId = 6, specId = 251, index = 2, specIconId = 135773 },
37+
{ classId = 6, specId = 252, index = 3, specIconId = 135775 },
38+
{ classId = 3, specId = 253, index = 1, specIconId = 461112 },
39+
{ classId = 3, specId = 254, index = 2, specIconId = 236179 },
40+
{ classId = 3, specId = 255, index = 3, specIconId = 461113 },
41+
{ classId = 5, specId = 256, index = 1, specIconId = 135940 },
42+
{ classId = 5, specId = 257, index = 2, specIconId = 237542 },
43+
{ classId = 5, specId = 258, index = 3, specIconId = 136207 },
44+
{ classId = 4, specId = 259, index = 1, specIconId = 236270 },
45+
{ classId = 4, specId = 260, index = 2, specIconId = 236286 },
46+
{ classId = 4, specId = 261, index = 3, specIconId = 132320 },
47+
{ classId = 7, specId = 262, index = 1, specIconId = 136048 },
48+
{ classId = 7, specId = 263, index = 2, specIconId = 237581 },
49+
{ classId = 7, specId = 264, index = 3, specIconId = 136052 },
50+
{ classId = 9, specId = 265, index = 1, specIconId = 136145 },
51+
{ classId = 9, specId = 266, index = 2, specIconId = 136172 },
52+
{ classId = 9, specId = 267, index = 3, specIconId = 136186 },
53+
{ classId = 10, specId = 268, index = 1, specIconId = 608951 },
54+
{ classId = 10, specId = 269, index = 3, specIconId = 608953 },
55+
{ classId = 10, specId = 270, index = 2, specIconId = 608952 },
56+
{ classId = 0, specId = 535, index = 1, specIconId = 236159 },
57+
{ classId = 0, specId = 536, index = 3, specIconId = 132150 },
58+
{ classId = 0, specId = 537, index = 2, specIconId = 132121 },
59+
{ classId = 12, specId = 577, index = 1, specIconId = 1247264 },
60+
{ classId = 12, specId = 581, index = 2, specIconId = 1247265 },
61+
{ classId = 7, specId = 1444, index = 5, specIconId = 136048 },
62+
{ classId = 1, specId = 1446, index = 5, specIconId = 132355 },
63+
{ classId = 11, specId = 1447, index = 5, specIconId = 136096 },
64+
{ classId = 3, specId = 1448, index = 5, specIconId = 461112 },
65+
{ classId = 8, specId = 1449, index = 5, specIconId = 135846 },
66+
{ classId = 10, specId = 1450, index = 5, specIconId = 608953 },
67+
{ classId = 2, specId = 1451, index = 5, specIconId = 135873 },
68+
{ classId = 5, specId = 1452, index = 5, specIconId = 135940 },
69+
{ classId = 4, specId = 1453, index = 5, specIconId = 236270 },
70+
{ classId = 9, specId = 1454, index = 5, specIconId = 136145 },
71+
{ classId = 6, specId = 1455, index = 5, specIconId = 135775 },
72+
{ classId = 12, specId = 1456, index = 5, specIconId = 1247264 },
5973
}
6074
ns.data.talents = {
6175
{ classId = 1, specId = 0, column = 1, row = 2, spellId = 103827},

0 commit comments

Comments
 (0)