Nenue@90
|
1 -- Veneer
|
Nenue@90
|
2 -- TalkingHead.lua
|
Nenue@90
|
3 -- Created: 10/23/2016 5:18 AM
|
Nenue@90
|
4 -- %file-revision%
|
Nenue@90
|
5 --
|
Nenue@90
|
6
|
Nenue@90
|
7 local print = DEVIAN_WORKSPACE and function(...) print('VnTalkingHead', ...) end or nop
|
Nenue@90
|
8
|
Nenue@90
|
9 VeneerTalkingHeadMixin = {
|
Nenue@90
|
10
|
Nenue@90
|
11 anchorPoint = 'BOTTOMLEFT',
|
Nenue@90
|
12 anchorFrom = 'TOPLEFT',
|
Nenue@90
|
13 anchorX = -4,
|
Nenue@102
|
14 anchorY = 96,
|
Nenue@90
|
15 anchorFrame = 'ChatFrame1',
|
Nenue@90
|
16 addonTrigger = 'Blizzard_TalkingHeadUI'
|
Nenue@90
|
17
|
Nenue@90
|
18 }
|
Nenue@93
|
19
|
Nenue@93
|
20 local qf = {}
|
Nenue@93
|
21
|
Nenue@93
|
22
|
Nenue@90
|
23 function VeneerTalkingHeadMixin:OnLoad()
|
Nenue@90
|
24 Veneer:AddHandler(self, self.anchorPoint)
|
Nenue@90
|
25 end
|
Nenue@90
|
26
|
Nenue@90
|
27 function VeneerTalkingHeadMixin:Setup()
|
Nenue@90
|
28 print('|cFF00AAFF'..self:GetName()..'|r:Setup()', TalkingHeadFrame:IsShown(), self:IsShown())
|
Nenue@90
|
29
|
Nenue@90
|
30 self:SetSize(TalkingHeadFrame:GetSize())
|
Nenue@90
|
31 self:SetParent(TalkingHeadFrame)
|
Nenue@90
|
32
|
Nenue@90
|
33 hooksecurefunc(TalkingHeadFrame, 'SetPoint', function(...)
|
Nenue@90
|
34 print('SetPoint', ...)
|
Nenue@90
|
35 print(debugstack())
|
Nenue@90
|
36 end)
|
Nenue@90
|
37
|
Nenue@90
|
38 self:SetShown(true)
|
Nenue@90
|
39 self:ClearAnchor()
|
Nenue@90
|
40 end
|
Nenue@90
|
41
|
Nenue@90
|
42 function VeneerTalkingHeadMixin:ClearAnchor()
|
Nenue@90
|
43
|
Nenue@90
|
44 UIPARENT_MANAGED_FRAME_POSITIONS["TalkingHeadFrame"] = nil
|
Nenue@90
|
45 for i, alertSubSystem in pairs(AlertFrame.alertFrameSubSystems) do
|
Nenue@90
|
46 if alertSubSystem.anchorFrame == TalkingHeadFrame then
|
Nenue@90
|
47 tremove(AlertFrame.alertFrameSubSystems, i)
|
Nenue@90
|
48 return
|
Nenue@90
|
49 end
|
Nenue@90
|
50 end
|
Nenue@90
|
51 end
|
Nenue@90
|
52
|
Nenue@90
|
53 function VeneerTalkingHeadMixin:OnShow()
|
Nenue@90
|
54 if TalkingHeadFrame then
|
Nenue@90
|
55 print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', TalkingHeadFrame:IsShown(), self:IsShown())
|
Nenue@90
|
56 print(debugstack())
|
Nenue@90
|
57 self:Update()
|
Nenue@90
|
58 end
|
Nenue@90
|
59 end
|
Nenue@90
|
60
|
Nenue@90
|
61 function VeneerTalkingHeadMixin:Reanchor()
|
Nenue@90
|
62 self:ClearAllPoints()
|
Nenue@90
|
63 self:SetPoint('BOTTOMLEFT', _G[self.anchorFrame], 'TOPLEFT', -4, 24)
|
Nenue@90
|
64 self:SetPoint('RIGHT', _G[self.anchorFrame], 'RIGHT', 2, 0)
|
Nenue@90
|
65 -- independent module,
|
Nenue@90
|
66 end
|
Nenue@90
|
67
|
Nenue@90
|
68 function VeneerTalkingHeadMixin:OnHide()
|
Nenue@90
|
69 if TalkingHeadFrame then
|
Nenue@90
|
70 print('|cFF00AAFF'..self:GetName()..'|r:OnHide()', TalkingHeadFrame:IsShown(), self:IsShown())
|
Nenue@90
|
71 end
|
Nenue@90
|
72 Veneer:Reanchor()
|
Nenue@90
|
73 end
|
Nenue@90
|
74
|
Nenue@90
|
75 function VeneerTalkingHeadMixin:Update()
|
Nenue@90
|
76
|
Nenue@90
|
77 print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', TalkingHeadFrame:IsShown(), self:IsShown())
|
Nenue@90
|
78 TalkingHeadFrame:ClearAllPoints()
|
Nenue@90
|
79 TalkingHeadFrame:SetAllPoints(self)
|
Nenue@90
|
80
|
Nenue@90
|
81 Veneer:InternalReanchor(self)
|
Nenue@90
|
82 end
|