Quantcast
-- LevelCam by Quixadhal
-- Based on the original LevelRecorder by Astromech

-- You can edit the displayed message here
local getMessage = function(event, arg1)
    if event == "PLAYER_LEVEL_UP" then
        return string.format("|cffffff00%s leveled to %d on %s|r", UnitName("player") or "Player", arg1, date("%m/%d/%y %H:%M"))
    elseif event == "PLAYER_DEAD" then
        return string.format("|cffff0000%s DIED at %s|r", UnitName("player") or "Player", date("%m/%d/%y %H:%M"))
    elseif event == "ACHIEVEMENT_EARNED" then
        return string.format("|cffffff00%s earned an achievement on %s|r", UnitName("player") or "Player", date("%m/%d/%y %H:%M"))
    else
        return string.format("|cffffffffUnknown event %s caught?", event)
    end
end

-- Creates the frame and message fontstring
local frame = CreateFrame("Frame")
local message = UIParent:CreateFontString(nil, "OVERLAY")

-- You can edit the position of the message here
message:SetPoint("CENTER", nil, "CENTER")

-- Justification here
message:SetJustifyH("CENTER")
message:SetJustifyV("MIDDLE")

-- And font here
message:SetFont("Fonts\\FRIZQT__.ttf", 32, "THICKOUTLINE")
message:Hide()

-- OnUpdate handler
--local GetTime = GetTime
local timer = 0
local OnUpdate = function(self, elasped)
    timer = timer + elasped
    -- If we have been waiting for one minute
    if timer > 1 then
        -- Take a screenshot and stop updating
        frame:Hide()
        timer = 0
        -- CloseAllWindows()
        UIErrorsFrame:Clear()
        Screenshot()
    end
end

local BattlegroundZones =   {
    ["Warsong Gulch"] = true,
    ["Arathi Basin"] = true,
    ["Alterac Valley"] = true,
    ["Eye of the Storm"] = true,
    ["Strand of the Ancients"] = true,
    ["Isle of Conquest"] = true,
    ["Battle for Gilneas"] = true,
    ["Twin Peaks"] = true,
	["Silvershard Mines"] = true,
	["Temple of Kotmogu"] = true,
    ["Deepwind Gorge"] = true,
   	["Wintergrasp"] = true,
	["Tol Barad"] = true,
}

-- OnEvent handler
local OnEvent = function(self, event, arg1)
    if event == "PLAYER_LEVEL_UP" then
        -- Display message
        message:SetText(getMessage(event, arg1))
        message:Show()
        -- Displayed /played data on the chat frame
        RequestTimePlayed()
        -- Set up the screenshot handler for next update
        frame:Show()
    elseif event == "PLAYER_DEAD" then
        -- Check to make sure we don't screenshot in a battlegrounds zone!
       local _, instanceType = IsInInstance()
       local pvpink = instanceType == "pvp" or instanceType == "arena"
        -- local zoneText = GetZoneText();
        -- if not BattlegroundZones[zoneText] then
        if not pvpink then
            -- Display message
            message:SetText(getMessage(event, arg1))
            message:Show()
            -- Displayed /played data on the chat frame
            RequestTimePlayed()
            -- Set up the screenshot handler for next update
            frame:Show()
        else
            message:Hide()
        end
    elseif event == "ACHIEVEMENT_EARNED" then
        -- Display message
        message:SetText(getMessage(event, arg1))
        message:Show()
        -- Set up the screenshot handler for next update
        frame:Show()
    else -- if event == "SCREENSHOT_SUCCEEDED" or event == "SCREENSHOT_FAILED" then
        message:Hide()
    end
end

-- Sets up the frame
frame:SetScript("OnEvent", OnEvent)
frame:SetScript("OnUpdate", OnUpdate)
frame:RegisterEvent("PLAYER_LEVEL_UP")
frame:RegisterEvent("PLAYER_DEAD")
frame:RegisterEvent("ACHIEVEMENT_EARNED")
frame:RegisterEvent("SCREENSHOT_SUCCEEDED")
frame:RegisterEvent("SCREENSHOT_FAILED")
frame:Hide()