Quantcast
-- **************************************************************************
-- * TitanRecount.lua
-- *
-- * Originally By Suddendeath2000
-- * Adopted by HonorGoG of the Titan Panel Development Team
-- **************************************************************************
-- * 2019-09-25 : 5.0.0.80200 Adopted by HonorGoG and released for WoW 8.2 and WoW Classic 1.13.2
-- **************************************************************************

-- ********************************** Ace3 **********************************
TPRecount = LibStub("AceAddon-3.0"):NewAddon("TitanClassicRecount", "AceTimer-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("Titan", true)

-- ******************************** Constants *******************************
TITAN_RECOUNT_ID = "Recount";
local _G = getfenv(0);
TITAN_RECOUNT_VERSION = GetAddOnMetadata("TitanClassicRecount", "Version") or L["TITAN_NA"]
TITAN_RECOUNT_VERSION_STRING = "|cffffd700Titan Panel Classic [Recount] "..GREEN_FONT_COLOR_CODE..TITAN_RECOUNT_VERSION.."|cffffd700 by |cffff8c00HonorGoG";
local TITAN_RECOUNT_DEBUG = false;

local TPRRealtime = "Realtime Graphs"
local TPRRaid = "Raid Graphs"
local TPRWindow = "Window Type"
local TPRDPS = "Damage Stats"
local TPRHealing = "Healing Stats"
local TPREnergy = "Energy Stats"
local TPROther = "Other Stats"

function TitanPanelRecountButton_OnLoad(self)
     if (DEFAULT_CHAT_FRAME) then
         DEFAULT_CHAT_FRAME:AddMessage(TITAN_RECOUNT_VERSION_STRING);
     end
     self.registry = {
		id = TITAN_RECOUNT_ID,
	    version = TITAN_RECOUNT_VERSION,
        menuText = TITAN_RECOUNT_ID,
        category = "Interface",
        tooltipTitle = "|cffffcc00"..TITAN_RECOUNT_ID,
		tooltipTextFunction = "TitanPanelRecountButton_GetTooltipText",
        icon = "Interface\\AddOns\\TitanClassicRecount\\TitanClassicRecount",
        iconButtonWidth = 16,
        iconWidth = 16,
        savedVariables = {
			ShowIcon = 1,
			ShowLabelText = 1,
            ShowTooltipText = 1,
            ShowMenuOptions = 1,
            ShowAdvancedMenus = 1,
            DisplayOnRightSide = 1,
            }
		};
end

function TitanPanelRecountButton_GetTooltipText()
    return "|cff00ff00".."Double Left-Click to Toggle Selected Main Window\n".."|cff00ff00".."Right-click to Open Options"
end

function TitanPanelRecountButton_OnDoubleClick(button)
    if button == "LeftButton" then
      	if Recount.MainWindow:IsVisible() then
			Recount.MainWindow:Hide()
    	else
			Recount.MainWindow:Show(); Recount:RefreshMainWindow()
    	end
  	end
end

function TitanPanelRightClickMenu_PrepareRecountMenu()
    local info = {}

    -- level 3
	if L_UIDROPDOWNMENU_MENU_LEVEL == 3 then

        if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "TCRDamage" then
            TitanPanelRightClickMenu_AddTitle(TPRDPS, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Damage Done"
            info.checked = Recount.db.profile.MainWindowMode == 1
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(1) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "DPS"
            info.checked = Recount.db.profile.MainWindowMode == 2
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(2) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Friendly Fire"
            info.checked = Recount.db.profile.MainWindowMode == 3
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(3) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Damage Taken"
            info.checked = Recount.db.profile.MainWindowMode == 4
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(4) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])
        end

        if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "TCRHealing" then
            TitanPanelRightClickMenu_AddTitle(TPRHealing, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Healing Done"
            info.checked = Recount.db.profile.MainWindowMode == 5
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(5) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Healing Taken"
            info.checked = Recount.db.profile.MainWindowMode == 6
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(6) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Overhealing Done"
            info.checked = Recount.db.profile.MainWindowMode == 7
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(7) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])
        end

        if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "TCREnergy" then
            TitanPanelRightClickMenu_AddTitle(TPREnergy, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Mana Gained"
            info.checked = Recount.db.profile.MainWindowMode == 17
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(17) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Energy Gained"
            info.checked = Recount.db.profile.MainWindowMode == 18
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(18) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Rage Gained"
            info.checked = Recount.db.profile.MainWindowMode == 19
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(19) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Runic PowerGained"
            info.checked = Recount.db.profile.MainWindowMode == 20
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(20) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])
        end

        if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "TCROther" then
            TitanPanelRightClickMenu_AddTitle(TPROther, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Deaths"
            info.checked = Recount.db.profile.MainWindowMode == 8
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(8) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "DOT Uptime"
            info.checked = Recount.db.profile.MainWindowMode == 9
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(9) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "HOT Uptime"
            info.checked = Recount.db.profile.MainWindowMode == 10
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(10) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Activity"
            info.checked = Recount.db.profile.MainWindowMode == 11
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(11) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Dispels"
            info.checked = Recount.db.profile.MainWindowMode == 12
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(12) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Dispelled"
            info.checked = Recount.db.profile.MainWindowMode == 13
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(13) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Interrupts"
            info.checked = Recount.db.profile.MainWindowMode == 14
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(14) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Ressers"
            info.checked = Recount.db.profile.MainWindowMode == 15
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(15) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "CC Breakers"
            info.checked = Recount.db.profile.MainWindowMode == 16
            info.func =  function() Recount.MainWindow:Show() Recount:SetMainWindowMode(16) end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])
        end

    -- level 2
    elseif  _G["L_UIDROPDOWNMENU_MENU_LEVEL"] == 2  then

        if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "TCRRealtime" then
            TitanPanelRightClickMenu_AddTitle(TPRRealtime, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Realtime FPS"
            info.func =  function() Recount:CreateRealtimeWindow("FPS","FPS","") end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Realtime Latency"
            info.func =  function() Recount:CreateRealtimeWindow("Latency","LAG","") end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Upstream Traffic"
            info.func =  function() Recount:CreateRealtimeWindow("Upstream Traffic","UP_TRAFFIC","") end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Downstream Traffic"
            info.func =  function() Recount:CreateRealtimeWindow("Downstream Traffic","DOWN_TRAFFIC","") end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Available Bandwidth"
            info.func =  function() Recount:CreateRealtimeWindow("Bandwidth Available","AVAILABLE_BANDWIDTH","") end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])
        end

        if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "TCRRaid" then
            TitanPanelRightClickMenu_AddTitle(TPRRaid, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Raid Damage Per Second"
            info.func =  function() Recount:CreateRealtimeWindow("!RAID","DAMAGE","Raid DPS") end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Raid Damage Taken Per Second"
            info.func =  function() Recount:CreateRealtimeWindow("!RAID","DAMAGETAKEN","Raid DTPS") end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Raid Healing Per Second"
            info.func =  function() Recount:CreateRealtimeWindow("!RAID","HEALING","Raid HPS") end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Raid Healing Taken Per Second"
            info.func =  function() Recount:CreateRealtimeWindow("!RAID","HEALINGTAKEN","Raid HTPS") end
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])
        end

        if _G["L_UIDROPDOWNMENU_MENU_VALUE"] == "TCRWindow" then
            TitanPanelRightClickMenu_AddTitle(TPRWindow, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Damage Stats"
            info.value = "TCRDamage"
            info.hasArrow = 2
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Healing Stats"
            info.value = "TCRHealing"
            info.hasArrow = 2
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Energy Stats"
            info.value = "TCREnergy"
            info.hasArrow = 2
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

            info.text = "Other Stats"
            info.value = "TCROther"
            info.hasArrow = 2
            L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])
        end
    else

    -- level 1
    TitanPanelRightClickMenu_AddTitle(TITAN_RECOUNT_ID)
    TitanPanelRightClickMenu_AddSpacer()

    info.text = "Realtime Graphs"
    info.value = "TCRRealtime"
    info.hasArrow = 1
    L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

    info.text = "Raid Graphs"
    info.value = "TCRRaid"
    info.hasArrow = 1
    L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

    info.text = "Window Type"
    info.value = "TCRWindow"
    info.hasArrow = 1
    L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

    TitanPanelRightClickMenu_AddSpacer()

    info.text = "Report Window"
    info.value = nil
    info.hasArrow = nil
    info.func = function() Recount:ShowReport("Main",Recount.ReportData) end
    L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

    info.text = "Config Window"
    info.value = nil
    info.hasArrow = nil
    info.func = function()  Recount:ShowConfig() end
    L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

    info.text = "Reset Data"
    info.value = nil
    info.hasArrow = nil
    info.func = function() Recount:ShowReset() end
    L_UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

    end
end