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