Quantcast

- Regen : Refactor and add icon

urnati [01-20-24 - 10:36]
- Regen : Refactor and add icon
- XP : Remove print on event
Filename
TitanRegen/TitanRegen.blp
TitanRegen/TitanRegen.lua
TitanRegen/TitanRegen_Vanilla.toc
TitanRegen/TitanRegen_Wrath.toc
TitanXP/TitanXP.lua
diff --git a/TitanRegen/TitanRegen.blp b/TitanRegen/TitanRegen.blp
new file mode 100644
index 0000000..69e12f7
Binary files /dev/null and b/TitanRegen/TitanRegen.blp differ
diff --git a/TitanRegen/TitanRegen.lua b/TitanRegen/TitanRegen.lua
new file mode 100644
index 0000000..a460f0e
--- /dev/null
+++ b/TitanRegen/TitanRegen.lua
@@ -0,0 +1,343 @@
+-- **************************************************************************
+-- * TitanClassicRegen.lua
+-- *
+-- * By: TitanMod, Dark Imakuni, Adsertor and the Titan Panel Development Team
+-- **************************************************************************
+
+-- ******************************** Constants *******************************
+local TITAN_REGEN_ID = "Regen"
+local TITAN_BUTTON = "TitanPanel"..TITAN_REGEN_ID.."Button"
+
+local TITAN_REGEN_HP_FORMAT = "%d";
+local TITAN_REGEN_HP_FORMAT_PERCENT = "%.2f";
+local TITAN_REGEN_MP_FORMAT = "%d";
+local TITAN_REGEN_MP_FORMAT_PERCENT = "%.2f";
+local updateTable = {TITAN_REGEN_ID, TITAN_PANEL_UPDATE_ALL};
+-- ******************************** Variables *******************************
+local TITAN_RegenCurrHealth = 0;
+local TITAN_RegenCurrMana = 0;
+local TITAN_RegenMP         = 0;
+local TITAN_RegenHP         = 0;
+local TITAN_RegenCheckedManaState = 0;
+local TITAN_RegenMaxHPRate = 0;
+local TITAN_RegenMinHPRate = 9999;
+local TITAN_RegenMaxMPRate = 0;
+local TITAN_RegenMinMPRate = 9999;
+local TITAN_RegenMPDuringCombat = 0;
+local TITAN_RegenMPCombatTrack = 0;
+local L = LibStub("AceLocale-3.0"):GetLocale(TITAN_ID, true)
+-- ******************************** Functions *******************************
+
+--[[
+-- **************************************************************************
+-- NAME : TitanRegenTemp_GetColoredTextRGB(text, r, g, b)
+-- DESC : Define colors for colored text and display
+-- VARS : text = text to display, r = red value, g = green value, b = blue value
+-- **************************************************************************
+--]]
+local function TitanRegenTemp_GetColoredTextRGB(text, r, g, b)
+     if (text and r and g and b) then
+          local redColorCode = format("%02x", r * 255);
+          local greenColorCode = format("%02x", g * 255);
+          local blueColorCode = format("%02x", b * 255);
+          local colorCode = "|cff"..redColorCode..greenColorCode..blueColorCode;
+          return colorCode..text..FONT_COLOR_CODE_CLOSE;
+     end
+end
+
+--[[
+-- **************************************************************************
+-- NAME : TitanPanelRegenButton_OnLoad()
+-- DESC : Registers the plugin upon it loading
+-- **************************************************************************
+--]]
+function TitanPanelRegenButton_OnLoad(self)
+	local notes = ""
+		.."Adds a regen monitor to Titan Panel to show HP/MANA regen - Classic versions only.\n"
+	self.registry = {
+		id = TITAN_REGEN_ID,
+		category = "Built-ins",
+		version = TITAN_VERSION,
+		menuText = L["TITAN_REGEN_MENU_TEXT"],
+		buttonTextFunction = "TitanPanelRegenButton_GetButtonText",
+		tooltipTitle = L["TITAN_REGEN_MENU_TOOLTIP_TITLE"],
+		tooltipTextFunction = "TitanPanelRegenButton_GetTooltipText",
+		icon = "Interface\\AddOns\\TitanRegen\\TitanRegen",
+		iconWidth = 16,
+		notes = notes,
+		controlVariables = {
+			ShowIcon = true,
+			ShowLabelText = true,
+			ShowRegularText = false,
+			ShowColoredText = true,
+			DisplayOnRightSide = true,
+		},
+		savedVariables = {
+			ShowIcon = true,
+			ShowLabelText = 1,
+			ShowHPRegen = 1,
+			ShowPercentage = false,
+			ShowColoredText = false,
+			DisplayOnRightSide = false,
+		}
+	}
+end
+
+--[[
+-- **************************************************************************
+-- NAME : TitanPanelXPButton_OnEvent
+-- DESC : Parse events registered to addon and act on them
+-- **************************************************************************
+--]]
+function TitanPanelRegenButton_OnEvent(self, event, a1, a2, ...)
+	if ( event == "PLAYER_ENTERING_WORLD") then
+	end
+
+     if ( event == "PLAYER_REGEN_DISABLED") then
+          TITAN_RegenMPDuringCombat = 0;
+          TITAN_RegenMPCombatTrack = 1;
+     end
+
+     if ( event == "PLAYER_REGEN_ENABLED") then
+          TITAN_RegenMPCombatTrack = 0;
+     end
+
+     local currHealth = 0;
+     local currMana = 0;
+     local runUpdate = 0;
+
+     if (TitanGetVar(TITAN_REGEN_ID,"ShowHPRegen") == 1) then
+          if ( event == "UNIT_HEALTH" and a1 == "player") then
+               currHealth = UnitHealth("player");
+               runUpdate = 1;
+               if ( currHealth > TITAN_RegenCurrHealth and TITAN_RegenCurrHealth ~= 0 ) then
+                    TITAN_RegenHP = currHealth-TITAN_RegenCurrHealth;
+
+                    if (TITAN_RegenHP > TITAN_RegenMaxHPRate) then
+                         TITAN_RegenMaxHPRate = TITAN_RegenHP;
+                    end
+                    if (TITAN_RegenHP < TITAN_RegenMinHPRate or TITAN_RegenMinHPRate == 9999) then
+                         TITAN_RegenMinHPRate = TITAN_RegenHP;
+                    end
+               end
+               TITAN_RegenCurrHealth = currHealth;
+          end
+     end
+
+	local pval, ptype = UnitPowerType("player")
+	if (pval == 0) then -- Mana
+		if ( event == "UNIT_POWER_UPDATE" and a1 == "player" and a2 == "MANA") then
+			currMana = UnitPower("player");
+			runUpdate = 1;
+			if ( currMana  > TITAN_RegenCurrMana and TITAN_RegenCurrMana ~= 0 ) then
+				TITAN_RegenMP = currMana-TITAN_RegenCurrMana;
+
+				if (TITAN_RegenMPCombatTrack == 1) then
+					TITAN_RegenMPDuringCombat = TITAN_RegenMPDuringCombat + TITAN_RegenMP;
+				end
+
+				if (TITAN_RegenMP > TITAN_RegenMaxMPRate) then
+					TITAN_RegenMaxMPRate = TITAN_RegenMP;
+				end
+				if (TITAN_RegenMP < TITAN_RegenMinMPRate or TITAN_RegenMinMPRate == 9999) then
+					TITAN_RegenMinMPRate = TITAN_RegenMP;
+				end
+			end
+			TITAN_RegenCurrMana = currMana;
+		end
+	end
+
+	if (runUpdate == 1) then
+		TitanPanelPluginHandle_OnUpdate(updateTable)
+	end
+end
+
+--[[
+-- **************************************************************************
+-- NAME : TitanPanelRegenButton_GetButtonText(id)
+-- DESC : Calculate regeneration logic for button text
+-- VARS : id = button ID
+-- **************************************************************************
+--]]
+function TitanPanelRegenButton_GetButtonText(id)
+	local labelTextHP = "";
+	local valueTextHP = "";
+	local labelTextMP = "";
+	local valueTextMP = "";
+	local OutputStr = "";
+
+	if UnitHealth("player") == UnitHealthMax("player") then
+		TITAN_RegenHP = 0;
+	end
+	if UnitPower("player") == UnitPowerMax("player", 0) then
+		TITAN_RegenMP = 0;
+	end
+
+	-- safety in case both are off, then cant ever turn em on
+	if (TitanGetVar(TITAN_REGEN_ID,"ShowHPRegen") == nil) then
+		TitanSetVar(TITAN_REGEN_ID,"ShowHPRegen",1);
+	end
+
+	if (TitanGetVar(TITAN_REGEN_ID,"ShowHPRegen") == 1) then
+		labelTextHP = L["TITAN_REGEN_BUTTON_TEXT_HP"];
+		if (TitanGetVar(TITAN_REGEN_ID,"ShowPercentage") == 1) then
+			valueTextHP = format(TITAN_REGEN_HP_FORMAT_PERCENT, (TITAN_RegenHP/UnitHealthMax("player"))*100);
+		else
+			valueTextHP = format(TITAN_REGEN_HP_FORMAT, TITAN_RegenHP);
+		end
+		if (TitanGetVar(TITAN_REGEN_ID, "ShowColoredText")) then
+			valueTextHP = TitanUtils_GetGreenText(valueTextHP);
+		else
+			valueTextHP = TitanUtils_GetHighlightText(valueTextHP);
+		end
+	end
+
+	local pval, ptype = UnitPowerType("player")
+	if (pval == 0) then -- Mana only
+		labelTextMP = L["TITAN_REGEN_BUTTON_TEXT_MP"];
+		if (TitanGetVar(TITAN_REGEN_ID,"ShowPercentage") == 1) then
+			valueTextMP = format(TITAN_REGEN_MP_FORMAT_PERCENT, (TITAN_RegenMP/UnitPowerMax("player", 0))*100);
+		else
+			valueTextMP = format(TITAN_REGEN_MP_FORMAT, TITAN_RegenMP);
+		end
+		if (TitanGetVar(TITAN_REGEN_ID, "ShowColoredText")) then
+			valueTextMP = TitanRegenTemp_GetColoredTextRGB(valueTextMP, 0.0, 0.0, 1.0);
+		else
+			valueTextMP = TitanUtils_GetHighlightText(valueTextMP);
+		end
+	else
+		-- Not mana so do not show
+	end
+
+	-- supports turning off labels
+--[[
+print("Regen text"
+.." hp'"..tostring(labelTextHP)..""
+.." "..tostring(valueTextHP).."'"
+.." mp'"..tostring(labelTextMP)..""
+.." "..tostring(valueTextMP).."'"
+)
+--]]
+	return labelTextHP, valueTextHP, labelTextMP, valueTextMP;
+end
+
+--[[
+-- **************************************************************************
+-- NAME : TitanPanelRegenButton_GetTooltipText()
+-- DESC : Display tooltip text
+-- **************************************************************************
+--]]
+function TitanPanelRegenButton_GetTooltipText()
+	local minHP = TITAN_RegenMinHPRate;
+	local minMP = TITAN_RegenMinMPRate;
+
+	if minHP == 9999 then minHP = 0 end;
+	if minMP == 9999 then minMP = 0 end;
+
+	local txt = ""
+
+	txt = txt..
+		format(L["TITAN_REGEN_TOOLTIP1"], UnitHealth("player"),UnitHealthMax("player"),UnitHealthMax("player")-UnitHealth("player")).."\n"..
+		format(L["TITAN_REGEN_TOOLTIP3"], TITAN_RegenMaxHPRate).."\n"..
+		format(L["TITAN_REGEN_TOOLTIP4"], minHP).."\n"
+
+	local pval, ptype = UnitPowerType("player")
+	if (pval == 0) then
+		local regenPercent = 0
+		regenPercent = (TITAN_RegenMPDuringCombat/UnitPowerMax("player", 0))*100;
+
+		txt = txt.."\n"..
+			format(L["TITAN_REGEN_TOOLTIP2"], UnitPower("player"),UnitPowerMax("player", 0),UnitPowerMax("player", 0)-UnitPower("player")).."\n"..
+			format(L["TITAN_REGEN_TOOLTIP5"], TITAN_RegenMaxMPRate).."\n"..
+			format(L["TITAN_REGEN_TOOLTIP6"], minMP).."\n"..
+			format(L["TITAN_REGEN_TOOLTIP7"], TITAN_RegenMPDuringCombat, regenPercent).."\n"
+	else
+		-- L["TITAN_REGEN_TOOLTIP2"] = "Mana: \t"..GREEN_FONT_COLOR_CODE.."%d"..FONT_COLOR_CODE_CLOSE.." / " ..HIGHLIGHT_FONT_COLOR_CODE.."%d"..FONT_COLOR_CODE_CLOSE.." ("..RED_FONT_COLOR_CODE.."%d"..FONT_COLOR_CODE_CLOSE..")";
+		POWER = GREEN_FONT_COLOR_CODE.."%d"..FONT_COLOR_CODE_CLOSE.." / " ..HIGHLIGHT_FONT_COLOR_CODE.."%d"..FONT_COLOR_CODE_CLOSE
+		txt = txt.."\n"..
+			ptype.." \t"..
+			format(POWER, UnitPower("player"),UnitPowerMax("player", pval)).."\n"
+			-- Energy : The formula is (energyRegen)*(1+hastePercent)
+	end
+
+	return txt
+end
+
+--[[
+-- **************************************************************************
+-- NAME : TitanPanelRightClickMenu_PrepareTitanRegenMenu()
+-- DESC : Display rightclick menu options
+-- **************************************************************************
+--]]
+function TitanPanelRightClickMenu_PrepareRegenMenu()
+	local id = TITAN_REGEN_ID;
+	local info;
+
+	TitanPanelRightClickMenu_AddTitle(TitanPlugins[id].menuText);
+
+	info = {};
+	info.text = L["TITAN_REGEN_MENU_SHOW2"];
+	info.func = function()
+		TitanToggleVar(TITAN_REGEN_ID, "ShowHPRegen");
+		TitanPanelButton_UpdateButton(TITAN_REGEN_ID);
+		end
+	info.checked = TitanGetVar(TITAN_REGEN_ID,"ShowHPRegen");
+	L_UIDropDownMenu_AddButton(info);
+
+	info = {};
+	info.text = L["TITAN_REGEN_MENU_SHOW4"];
+	info.func = function()
+		TitanToggleVar(TITAN_REGEN_ID, "ShowPercentage");
+		TitanPanelButton_UpdateButton(TITAN_REGEN_ID);
+		end
+	info.checked = TitanGetVar(TITAN_REGEN_ID,"ShowPercentage");
+	L_UIDropDownMenu_AddButton(info);
+
+	TitanPanelRightClickMenu_AddControlVars(TITAN_REGEN_ID)
+end
+
+local function OnShow(self)
+	self:RegisterEvent("UNIT_HEALTH");
+	self:RegisterEvent("UNIT_POWER_UPDATE");
+	self:RegisterEvent("PLAYER_REGEN_DISABLED");
+	self:RegisterEvent("PLAYER_REGEN_ENABLED");
+end
+
+local function OnHide(self)
+	self:UnregisterEvent("UNIT_HEALTH");
+	self:UnregisterEvent("UNIT_POWER_UPDATE");
+	self:UnregisterEvent("PLAYER_REGEN_DISABLED");
+	self:UnregisterEvent("PLAYER_REGEN_ENABLED");
+end
+
+-- ====== Create needed frames
+local function Create_Frames()
+	if _G[TITAN_BUTTON] then
+		return -- if already created
+	end
+
+	-- general container frame
+	local f = CreateFrame("Frame", nil, UIParent)
+--	f:Hide()
+
+	-- Titan plugin button
+	local window = CreateFrame("Button", TITAN_BUTTON, f, "TitanPanelComboTemplate")
+	window:SetFrameStrata("FULLSCREEN")
+	-- Using SetScript("OnLoad",   does not work
+	TitanPanelRegenButton_OnLoad(window);
+--	TitanPanelButton_OnLoad(window); -- Titan XML template calls this...
+
+	window:SetScript("OnShow", function(self)
+		OnShow(self);
+		TitanPanelButton_OnShow(self);
+	end)
+	window:SetScript("OnHide", function(self)
+		OnHide(self)
+	end)
+	window:SetScript("OnEvent", function(self, event, ...)
+		TitanPanelRegenButton_OnEvent(self, event, ...)
+	end)
+end
+
+
+Create_Frames() -- do the work
diff --git a/TitanRegen/TitanRegen_Vanilla.toc b/TitanRegen/TitanRegen_Vanilla.toc
index 3f756ef..6e7f802 100644
--- a/TitanRegen/TitanRegen_Vanilla.toc
+++ b/TitanRegen/TitanRegen_Vanilla.toc
@@ -6,4 +6,4 @@
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-TitanClassicRegen.xml
\ No newline at end of file
+TitanRegen.lua
\ No newline at end of file
diff --git a/TitanRegen/TitanRegen_Wrath.toc b/TitanRegen/TitanRegen_Wrath.toc
index 03f3e85..891885d 100644
--- a/TitanRegen/TitanRegen_Wrath.toc
+++ b/TitanRegen/TitanRegen_Wrath.toc
@@ -6,4 +6,4 @@
 ## SavedVariables:
 ## OptionalDeps:
 ## Dependencies: TitanClassic
-TitanClassicRegen.xml
\ No newline at end of file
+TitanRegen.lua
\ No newline at end of file
diff --git a/TitanXP/TitanXP.lua b/TitanXP/TitanXP.lua
index 647e39a..d2540d8 100644
--- a/TitanXP/TitanXP.lua
+++ b/TitanXP/TitanXP.lua
@@ -139,7 +139,7 @@ end
 -- **************************************************************************
 --]]
 function TitanPanelXPButton_OnEvent(self, event, a1, a2, ...)
----[[
+--[[
 print("XP _OnEvent"
 .." "..tostring(event)..""
 )