Files
GMGenie/Hud.lua
2014-07-02 12:10:38 +02:00

168 lines
5.8 KiB
Lua

--This file is part of Game Master Genie.
--Copyright 2011-2014 Chocochaos
--Game Master Genie is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.
--Game Master Genie is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
--You should have received a copy of the GNU General Public License along with Game Master Genie. If not, see <http://www.gnu.org/licenses/>.
GMGenie.Hud = {};
function GMGenie.Hud.onLoad()
GMGenie_Hud:RegisterEvent("PLAYER_ENTERING_WORLD");
GMGenie_Hud:RegisterEvent("UI_ERROR_MESSAGE");
GMGenie_Hud:SetScript("OnEvent", GMGenie.Hud.readNotice);
GMGenie_Hud_GM:SetAttribute("macrotext1", "/run GMGenie.Hud.toggleGm();");
GMGenie_Hud_Chat:SetAttribute("macrotext1", "/run GMGenie.Hud.toggleChat();");
GMGenie_Hud_Visibility:SetAttribute("macrotext1", "/run GMGenie.Hud.toggleVisibility();");
GMGenie_Hud_Whisper:SetAttribute("macrotext1", "/run GMGenie.Hud.toggleWhisper();");
GMGenie_Hud_Fly:SetAttribute("macrotext1", "/target " .. UnitName("player") .. " \n/run GMGenie.Hud.toggleFly();");
if GMGenie_SavedVars.hudClosed then
GMGenie.Hud.toggle();
end
Chronos.schedule(1, GMGenie.Hud.checkStatus);
GMGenie.Hud.flyStatus(false);
end
function GMGenie.Hud.toggle()
if GMGenie_Hud:IsVisible() then
GMGenie_Hud:Hide();
GMGenie_SavedVars.hudClosed = true;
else
GMGenie_Hud:Show();
GMGenie_SavedVars.hudClosed = false;
end
end
--------------------------------------------------
------------ HUD status functionality ------------
--------------------------------------------------
function GMGenie.Hud.checkStatus()
SendChatMessage(".gm", "GUILD");
SendChatMessage(".gm chat", "GUILD");
SendChatMessage(".gm visible", "GUILD");
SendChatMessage(".whispers", "GUILD");
end
function GMGenie.Hud.gmStatus(status)
GMGenie.Hud.gm = status;
if status then
GMGenie_Hud_GM:SetText("|cffffffffGM mode ON|r");
else
GMGenie_Hud_GM:SetText("|cffbfbfffGM mode OFF|r");
end
end
function GMGenie.Hud.chatStatus(status)
GMGenie.Hud.chat = status;
if status then
GMGenie_Hud_Chat:SetText("|cffffffffChat badge ON|r");
else
GMGenie_Hud_Chat:SetText("|cffbfbfffChat badge OFF|r");
end
end
function GMGenie.Hud.visibilityStatus(status)
GMGenie.Hud.visibility = status;
if status then
GMGenie_Hud_Visibility:SetText("|cffffffffYou are VISIBLE|r");
else
GMGenie_Hud_Visibility:SetText("|cffbfbfffYou are INVISIBLE|r");
end
end
function GMGenie.Hud.whisperStatus(status)
GMGenie.Hud.whisper = status;
if status then
GMGenie_Hud_Whisper:SetText("|cffffffffWhispers are ON|r");
else
GMGenie_Hud_Whisper:SetText("|cffbfbfffWhispers are OFF|r");
end
end
function GMGenie.Hud.flyStatus(status)
GMGenie.Hud.fly = status;
if status then
GMGenie_Hud_Fly:SetText("|cffffffffFlight mode ON|r");
else
GMGenie_Hud_Fly:SetText("|cffbfbfffFlight mode OFF|r");
end
end
function GMGenie.Hud.readNotice(_, event, notice)
if event == "UI_ERROR_MESSAGE" then
if notice == "GM mode is ON" then
GMGenie.Hud.gmStatus(true);
elseif notice == "GM mode is OFF" then
GMGenie.Hud.gmStatus(false);
elseif notice == "GM Chat Badge is ON" then
GMGenie.Hud.chatStatus(true);
elseif notice == "GM Chat Badge is OFF" then
GMGenie.Hud.chatStatus(false);
elseif notice == "You are now visible." then
GMGenie.Hud.visibilityStatus(true);
elseif notice == "You are now invisible." then
GMGenie.Hud.visibilityStatus(false);
GMGenie.Hud.toggleWhisper(GMGenie.Hud.whisper);
end
elseif event == "PLAYER_ENTERING_WORLD" and GMGenie.Hud.fly == true then
GMGenie.Hud.toggleFly(GMGenie.Hud.fly);
end
end
function GMGenie.Hud.toggleGm(status)
if (not GMGenie.Hud.gm and status == nil) or status == true then
SendChatMessage(".gm on", "GUILD");
else
SendChatMessage(".gm off", "GUILD");
end
end
function GMGenie.Hud.toggleChat(status)
if (not GMGenie.Hud.chat and status == nil) or status == true then
SendChatMessage(".gm chat on", "GUILD");
else
SendChatMessage(".gm chat off", "GUILD");
end
end
function GMGenie.Hud.toggleVisibility(status)
if (not GMGenie.Hud.visibility and status == nil) or status == true then
SendChatMessage(".gm visible on", "GUILD");
else
SendChatMessage(".gm visible off", "GUILD");
end
end
function GMGenie.Hud.toggleWhisper(status)
if (not GMGenie.Hud.whisper and status == nil) or status == true then
SendChatMessage(".whispers on", "GUILD");
else
SendChatMessage(".whispers off", "GUILD");
end
end
function GMGenie.Hud.toggleFly(status)
if UnitName("target") == UnitName("player") or UnitName("target") == nil then
if (not GMGenie.Hud.fly and status == nil) or status == true then
SendChatMessage(".gm fly on", "GUILD");
else
SendChatMessage(".gm fly off", "GUILD");
end
else
GMGenie.showGMMessage("Could not target self to change flight mode.");
end
end
function GMGenie.Hud.setSpeed()
if UnitName("target") == UnitName("player") or UnitName("target") == nil then
local speed = GMGenie_Hud_Speed:GetText();
GMGenie_Hud_Speed:ClearFocus();
SendChatMessage(".mod speed all " .. speed, "GUILD");
else
GMGenie.showGMMessage("Be sure to target yourself before setting the speed.");
end
end