@@ -17,25 +17,60 @@ TLM.LevelingModule = Module;
1717
1818Module .CombatLockdownQueue = {};
1919
20+ function Module :OnInitialize ()
21+ self .listener = CreateFrame (" Frame" );
22+ self .listener .Reset = function (listener )
23+ listener .PLAYER_LEVEL_UP = false ;
24+ listener .TRAIT_TREE_CURRENCY_INFO_UPDATED = false ;
25+ listener .elapsed = 0 ;
26+ listener :Hide ();
27+ end
28+ self .listener :Reset ();
29+ self .listener :SetScript (" OnUpdate" , function (listener , elapsed )
30+ listener .elapsed = listener .elapsed + elapsed ;
31+ if listener .elapsed > 5 then
32+ listener :Reset ();
33+ return ;
34+ end
35+ if listener .PLAYER_LEVEL_UP and listener .TRAIT_TREE_CURRENCY_INFO_UPDATED then
36+ listener :Reset ();
37+ if InCombatLockdown () then
38+ self :AddToCombatLockdownQueue (self .ReapplyLoadout , self );
39+ return ;
40+ end
41+ RunNextFrame (function ()
42+ self :ReapplyLoadout ();
43+ end );
44+ end
45+ end );
46+
47+ end
48+
2049function Module :OnEnable ()
21- self :RegisterEvent (" PLAYER_LEVEL_UP" );
50+ self :RegisterEvent (" PLAYER_LEVEL_UP" , " OnEvent" );
51+ self :RegisterEvent (" TRAIT_TREE_CURRENCY_INFO_UPDATED" , " OnEvent" );
2252end
2353
2454function Module :OnDisable ()
2555 self :UnregisterEvent (" PLAYER_LEVEL_UP" );
56+ self :UnregisterEvent (" TRAIT_TREE_CURRENCY_INFO_UPDATED" );
57+ self .listener :Reset ();
2658end
2759
28- function Module :PLAYER_LEVEL_UP ( _ , level )
60+ function Module :OnEvent ( event , ... )
2961 if not Config :GetConfig (" autoApplyOnLevelUp" ) then return ; end
30- if level >= 10 then
31- if InCombatLockdown () then
32- self :AddToCombatLockdownQueue (self .ReapplyLoadout , self );
33- return ;
34- end
35- RunNextFrame (function ()
36- self :ReapplyLoadout ();
37- end );
62+ if event == " PLAYER_LEVEL_UP" then
63+ local level = ... ;
64+ if level < 10 then return ; end
65+ elseif event == " TRAIT_TREE_CURRENCY_INFO_UPDATED" then
66+ local treeID = ... ;
67+ local specID = PlayerUtil .GetCurrentSpecID ();
68+ if not specID then return ; end
69+ local playerTreeID = C_ClassTalents .GetTraitTreeForSpec (specID );
70+ if treeID ~= playerTreeID then return ; end
3871 end
72+ self .listener :Show ();
73+ self .listener [event ] = true ;
3974end
4075
4176function Module :ReapplyLoadout ()
0 commit comments