You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.9 KiB
103 lines
2.9 KiB
local IS_HOOKED = false;
|
|
local MessageQueue;
|
|
|
|
local EventFrame = CreateFrame("Frame");
|
|
|
|
|
|
|
|
local function TurnOffCameraSafeMode(button)
|
|
if NarcissusDB.CameraSafeMode then
|
|
NarcissusDB.CameraSafeMode = false;
|
|
DEFAULT_CHAT_FRAME:AddMessage(" ");
|
|
DEFAULT_CHAT_FRAME:AddMessage("Camera Safe Mode Disabled", 1, 0.82, 0);
|
|
end
|
|
end
|
|
|
|
local LinkData = {
|
|
camera = { --Go to Camera Safe toggle
|
|
callback = TurnOffCameraSafeMode,
|
|
linkText = "Click Here";
|
|
message = "Camera offset has been reset to zero because Camera Safe Mode is on. If you wish to disable this feature, \124Hitem:narcissus:camera:\124h\124cffffffff[Click Here]\124h\124r";
|
|
},
|
|
};
|
|
|
|
|
|
local function ProcessNarcissusLink(f, link, text, button)
|
|
--print(link)
|
|
local linkType, arg1, arg2 = string.match(link, "(.-):([^:]+):([^:]+)");
|
|
if arg1 == "narcissus" and arg2 and LinkData[arg2] then
|
|
LinkData[arg2].callback(button);
|
|
end
|
|
end
|
|
|
|
local function HookChatFrame()
|
|
if not IS_HOOKED then
|
|
IS_HOOKED = true;
|
|
hooksecurefunc("ChatFrame_OnHyperlinkShow", ProcessNarcissusLink);
|
|
end
|
|
end
|
|
|
|
|
|
local function PrintPresetMessage(key)
|
|
if LinkData[key] and DEFAULT_CHAT_FRAME then
|
|
HookChatFrame();
|
|
|
|
if EventFrame.loadingScreenOff then
|
|
DEFAULT_CHAT_FRAME:AddMessage(NARCI_GRADIENT..": "..LinkData[key].message, 1, 0.82, 0);
|
|
else
|
|
if not MessageQueue then
|
|
MessageQueue = {};
|
|
end
|
|
|
|
for i, msgKey in ipairs(MessageQueue) do
|
|
if msgKey == key then
|
|
return
|
|
end
|
|
end
|
|
|
|
table.insert(MessageQueue, key);
|
|
end
|
|
end
|
|
end
|
|
|
|
NarciAPI.PrintPresetMessage = PrintPresetMessage;
|
|
|
|
|
|
|
|
|
|
local function EventFrame_OnUpdate(self, elapsed)
|
|
self.t = self.t + elapsed;
|
|
if self.t > 0 then
|
|
self:SetScript("OnUpdate", nil);
|
|
for i, messageKey in ipairs(MessageQueue) do
|
|
PrintPresetMessage(messageKey);
|
|
end
|
|
MessageQueue = nil;
|
|
end
|
|
end
|
|
|
|
|
|
EventFrame:RegisterEvent("PLAYER_ENTERING_WORLD");
|
|
EventFrame:RegisterEvent("LOADING_SCREEN_ENABLED");
|
|
EventFrame:RegisterEvent("LOADING_SCREEN_DISABLED");
|
|
EventFrame:SetScript("OnEvent", function(self, event, ...)
|
|
if event == "PLAYER_ENTERING_WORLD" then
|
|
self.loadingScreenOff = false;
|
|
elseif event == "LOADING_SCREEN_DISABLED" then
|
|
self.loadingScreenOff = true;
|
|
if MessageQueue then
|
|
self.t = -3;
|
|
self:SetScript("OnUpdate", EventFrame_OnUpdate);
|
|
end
|
|
elseif event == "PLAYER_ENTERING_WORLD" then
|
|
self:UnregisterEvent(event);
|
|
self.loadingScreenOff = false;
|
|
end
|
|
end);
|
|
|
|
|
|
|
|
|
|
--[[
|
|
/script DEFAULT_CHAT_FRAME:AddMessage("\124Hitem:narcissus:camera:\124h[Test Link]\124h\124r");
|
|
--]]
|