-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCommandHandler.lua
147 lines (110 loc) · 5.8 KB
/
CommandHandler.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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
SLASH_STRILI1 = '/sl'
SlashCmdList["STRILI"] = function(msg, _)
-- pattern matching that skips leading whitespace and whitespace between cmd and args
-- any whitespace at end of args is retained
local startIndex, _, t, args = string.find(msg, "%s*(%w+)%s*(.*)");
local inRaid = (GetNumRaidMembers() > 0);
if startIndex == nil then
StriLi.MainFrame:toggle();
else
if ( tonumber(t) == nil) then
t = string.lower(t);
args = string.lower(args);
if ( t == "c" ) then
if not StriLi.AutoRollAnalyser:getRollInProgress() then
print(CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Rolls.NoRollToCancel.."|r");
return;
elseif not inRaid then
print(CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Commands.InvalideNotInRaid.."|r");
return;
end
StriLi.AutoRollAnalyser:cancelRoll();
print(CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Rolls.RollCanceled.."|r");
return;
elseif (t == "h") or (t == "help")then
print(CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Commands.AvailableCommands..":|r");
print(CONSTS.msgColorStringStart.."/sl h|r");
print(CONSTS.msgColorStringStart.."/sl help|r");
print(CONSTS.msgColorStringStart.."/sl <"..StriLi.Lang.Commands.TimeInSec.."> <Item>|r");
print(CONSTS.msgColorStringStart.."/sl <"..StriLi.Lang.Commands.TimeInSec.."> [@mouseover]|r");
print(CONSTS.msgColorStringStart.."/sl m|r");
print(CONSTS.msgColorStringStart.."/sl makro|r");
print(CONSTS.msgColorStringStart.."/sl macro|r");
print(CONSTS.msgColorStringStart.."/sl rules|r");
print(CONSTS.msgColorStringStart.."/sl post all|r");
print(CONSTS.msgColorStringStart.."/sl post itemless|r");
print(CONSTS.msgColorStringStart.."/sl post rules|r");
return;
elseif t == "makro" or t == "macro" or t == "m" then
local copyMacroBox = CreateFrame("FRAME", "StriLi_MakroFrame", UIParent, "StriLi_CopyVersionFrame_Template");
local editBox = copyMacroBox:GetChildren():GetChildren();
StriLi_MakroFrame_FontString:SetText(StriLi.Lang.XML.CopyMacro);
editBox:SetText("/sl <"..StriLi.Lang.Commands.TimeInSec.."> [@mouseover]");
editBox:HighlightText();
copyMacroBox:Show();
editBox:SetScript("OnEscapePressed", function() copyMacroBox:Hide() end);
return;
elseif t == "post" then
if args == "all" then
if inRaid then
RaidMembersDB:postAllDataToRaid();
elseif inRaid then
print(CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Commands.InvalideNotInRaid.."|r");
return;
end
elseif args == "itemless" then
RaidMembersDB:postNamesOfUnluckyPlayers();
elseif args == "rules" then
if not inRaid then
print(CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Commands.InvalideNotInRaid.."|r");
return;
elseif StriLi_GetPlayerRank(UnitName("player")) < 1 then
print(CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Commands.NoPermRankToLow.."|r");
return;
end
StriLi.LootRules:postToRaid();
return;
end
return;
elseif t == "rules" then
StriLi.LootRules:show();
return;
else
print (CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Commands.FirstArgNum.."|r");
return;
end
end
if not inRaid then
print(CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Commands.InvalideNotInRaid.."|r");
return;
elseif not StriLi_isPlayerMaster() then
print(CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Commands.YourNotMaster.."|r");
return;
elseif StriLi_GetPlayerRank(UnitName("player")) < 1 then
print(CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Commands.NoPermRankToLow.."|r");
return;
end
if StriLi.AutoRollAnalyser:getRollInProgress() then
print (CONSTS.striLiMsgFlag..CONSTS.msgColorStringStart..StriLi.Lang.Rolls.RollAlreadyInProgress.." '/sl c'.|r");
return;
end
if string.lower(args) == "[@mouseover]" then
local _, itemLink = GameTooltip:GetItem();
local _, _, _, _, Id = string.find(itemLink, CONSTS.itemLinkPatern)
if itemLink == nil then return end
StriLi.AutoRollAnalyser:setItemID(tonumber(Id));
StriLi.AutoRollAnalyser:setItem(itemLink);
elseif args ~= "" then
local firstChar = string.sub(args, 1, 1);
if firstChar == "|" then
local _, _, _, _, Id = string.find(args, CONSTS.itemLinkPatern)
StriLi.AutoRollAnalyser:setItemID(tonumber(Id));
else
StriLi.AutoRollAnalyser:setItemID(0); --setting item id to 0 skips the item check
end
StriLi.AutoRollAnalyser:setItem(args)
end
StriLi.AutoRollAnalyser:setTimeForRolls(tonumber(t));
StriLi.AutoRollAnalyser:start();
end
end