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("TitanPanelRecount", "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("TitanRecount", "Version") or L["TITAN_NA"]
TITAN_RECOUNT_VERSION_STRING = "|cffffd700Titan Panel [Recount] "..GREEN_FONT_COLOR_CODE..TITAN_RECOUNT_VERSION.."|cffffd700 by |cffff8c00HonorGoG";
local TITAN_RECOUNT_DEBUG = false;

local TPRID = "Recount"
local TPRVersion = "4.0.0"
local TPRC1 = "|cffffffff"
local TPRC2 = "|cff993300"
local TPRC3 = "|cff00ff00"
local TPRC4 = "|cffffcc00"
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)
--    DEFAULT_CHAT_FRAME:AddMessage(TPRC1.."Titan Panel "..TPRC2.."[Recount] "..TPRC1.."v"..TPRC2..TPRVersion.." "..TPRC1.."by |cff999999Suddendeath2000")
     TPCDefense_Debug("TitanPanelDefenseButton_OnLoad");
     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 = TPRC4..TPRID,
		tooltipTextFunction = "TitanPanelRecountButton_GetTooltipText",
        icon = "Interface\\AddOns\\TitanRecount\\TitanRecount",
        iconButtonWidth = 16,
        iconWidth = 16,
        savedVariables = {
			ShowIcon = 1,
			ShowLabelText = 1,
            ShowTooltipText = 1,
            ShowMenuOptions = 1,
            ShowAdvancedMenus = 1,
            DisplayOnRightSide = 1,
            }
		};
end

function TitanPanelRecountButton_GetTooltipText()
    return TPRC3.."Double Left-Click to Toggle Selected Main Window\n"..TPRC3.."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 = {}

    if  ( _G["L_UIDROPDOWNMENU_MENU_LEVEL"] == 2 ) and ( UIDROPDOWNMENU_MENU_VALUE == TPRDPS )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"])

    elseif  ( _G["L_UIDROPDOWNMENU_MENU_LEVEL"] == 2 ) and ( UIDROPDOWNMENU_MENU_VALUE == TPRHealing )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"])

    elseif  ( _G["L_UIDROPDOWNMENU_MENU_LEVEL"] == 2 ) and ( UIDROPDOWNMENU_MENU_VALUE == TPREnergy )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"])

    elseif  ( _G["L_UIDROPDOWNMENU_MENU_LEVEL"] == 2 ) and ( UIDROPDOWNMENU_MENU_VALUE == TPROther )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"])

    elseif  ( _G["L_UIDROPDOWNMENU_MENU_LEVEL"] == 2 ) and ( UIDROPDOWNMENU_MENU_VALUE == TPRRealtime )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"])

    elseif  ( _G["L_UIDROPDOWNMENU_MENU_LEVEL"] == 2 ) and ( UIDROPDOWNMENU_MENU_VALUE == TPRRaid )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"])

    elseif  ( _G["L_UIDROPDOWNMENU_MENU_LEVEL"] == 2 ) and ( UIDROPDOWNMENU_MENU_VALUE == TPRWindow )then
      TitanPanelRightClickMenu_AddTitle(TPRWindow, _G["L_UIDROPDOWNMENU_MENU_LEVEL"])

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

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

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

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

    else

    TitanPanelRightClickMenu_AddTitle(TPRID)
    TitanPanelRightClickMenu_AddSpacer()

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

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

    info.text = "Window Type"
    info.value = TPRWindow
    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