-
Notifications
You must be signed in to change notification settings - Fork 0
/
QuickLeadingPull.lua
99 lines (76 loc) · 2.73 KB
/
QuickLeadingPull.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
local _, Addon = ...;
local timer;
local function countdown(seconds, chatType)
-- start the timer
local delay = 1;
if(seconds >= 15) then
delay = 5;
elseif(seconds > 10) then
delay = seconds - 10;
end
timer = C_Timer.NewTimer(delay, function()
if(timer == nil) then
return;
end
seconds = seconds - delay
if(seconds <= 0) then
SendChatMessage("Pull!", chatType);
timer = nil;
return;
else
SendChatMessage(seconds, chatType);
countdown(seconds, chatType);
end
end, 1)
end
function Addon.PullCancel(name, reason)
if(timer ~= nil) then
timer:Cancel();
timer = nil;
local chatType = Addon.GetChatType();
if(name == nil) then
if(reason == "cancel") then
SendChatMessage("Pull timer canceled", chatType);
SendAddonMessage("BigWigs", "P^Pull^0", Addon.GetGroupType());
SendAddonMessage("D4", "PT\t0\t" .. Addon.GetInstanceId(), Addon.GetGroupType());
end
else
if(reason == "cancel") then
SendChatMessage("Pull timer canceled by " .. name, chatType);
SendAddonMessage("BigWigs", "P^Pull^0", Addon.GetGroupType());
SendAddonMessage("D4", "PT\t0\t" .. Addon.GetInstanceId(), Addon.GetGroupType());
else
SendChatMessage("Pull timer replaced by " .. name, chatType);
if(UnitIsGroupAssistant(name) == false and UnitIsGroupLeader(name) == false) then
SendAddonMessage("BigWigs", "P^Pull^0", Addon.GetGroupType());
SendAddonMessage("D4", "PT\t0\t" .. Addon.GetInstanceId(), Addon.GetGroupType());
end
end
end
end
end
function Addon.PullTimer(seconds)
-- get group/chat type
local groupType = Addon.GetGroupType();
local chatType = Addon.GetChatType();
-- Pull cancel
if(seconds <= 0) then
-- send message : cancel
if(groupType ~= nil) then
SendAddonMessage("QL_PULL", "cancel", groupType);
end
Addon.PullCancel(nil, "cancel");
return;
end
-- send message : replace
-- include bigwigs and dbm
SendAddonMessage("QL_PULL", "replace", groupType);
SendAddonMessage("BigWigs", "P^Pull^" .. seconds, Addon.GetGroupType());
SendAddonMessage("D4", "PT\t" .. seconds .. "\t" .. Addon.GetInstanceId(), Addon.GetGroupType());
-- Pull in message
SendChatMessage("Pull in " .. seconds .. " seconds", chatType);
-- cancel previous timer
Addon.PullCancel(nil, nil)
-- start countdown
countdown(seconds, chatType);
end