From c4ca1f76fa7483a0974886f7e9ee5d5863530531 Mon Sep 17 00:00:00 2001 From: urnati Date: Tue, 28 Dec 2021 14:32:48 -0500 Subject: [PATCH] - Add to release of 1.5.0 - Gold changes to allow 'Merger Servers' to show character gold correctly --- TitanGold/TitanGold.lua | 156 +++++++++++++++++++++++------------------------ 1 file changed, 75 insertions(+), 81 deletions(-) diff --git a/TitanGold/TitanGold.lua b/TitanGold/TitanGold.lua index fe0062f..b02ae8c 100644 --- a/TitanGold/TitanGold.lua +++ b/TitanGold/TitanGold.lua @@ -22,7 +22,7 @@ local GOLD_PERHOUR_STATUS; local GOLD_STARTINGGOLD; local GOLD_SESSIONSTART; local L = LibStub("AceLocale-3.0"):GetLocale("Titan", true) ---local DDM = LibStub:GetLibrary("LibUIDropDownMenu-4.0") +local DDM = LibStub:GetLibrary("LibUIDropDownMenu-4.0") local TitanGold = LibStub("AceAddon-3.0"):NewAddon("TitanGold", "AceTimer-3.0") local GoldTimer = nil; local _G = getfenv(0); @@ -175,7 +175,7 @@ function TitanPanelGoldButton_OnLoad(self) ShowLabelText =true, ShowRegularText = false, ShowColoredText = false, - DisplayOnRightSide = true, + DisplayOnRightSide = false }, savedVariables = { Initialized = true, @@ -194,7 +194,6 @@ function TitanPanelGoldButton_OnLoad(self) MergeServers = false, SeparateServers = true, gold = { total = "112233", neg = false }, - DisplayOnRightSide = false, } }; @@ -252,7 +251,6 @@ end -- DESC: Gets our tool-tip text, what appears when we hover over our item on the Titan bar. -- ******************************************************************************************* function TitanPanelGoldButton_GetTooltipText() - local currentMoneyRichText = ""; local countelements = 0; for _ in pairs (realmNames) do countelements = countelements + 1 end @@ -268,7 +266,7 @@ function TitanPanelGoldButton_GetTooltipText() or TitanGetVar(TITAN_GOLD_ID, "ShowCoinIcons")) -- This next section will sort the array based on user preference - -- either by name, or by gold amount decending. + -- either by name, or by gold amount descending. local GoldSaveSorted = {}; for index, money in pairs(GoldSave) do @@ -298,50 +296,50 @@ function TitanPanelGoldButton_GetTooltipText() end end else - -- Parse the database and display all characters from the same faction and combined servers - for ms = 1, countelements do - local server = realmNames[ms].."::"..UnitFactionGroup("Player"); - GoldSave[GOLD_INDEX].gold = GetMoney("player") - local coin_str = "" - local character, charserver = "", "" - local ttlgold = 0 - local show_labels = (TitanGetVar(TITAN_GOLD_ID, "ShowCoinLabels") - or TitanGetVar(TITAN_GOLD_ID, "ShowCoinIcons")) - - -- This next section will sort the array based on user preference - -- either by name, or by gold amount decending. - - local GoldSaveSorted = {}; - for index, money in pairs(GoldSave) do - character, charserver = string.match(index, '(.*)_(.*)'); - if (charserver) then - charserver = string.gsub(charserver, "%s", ""); - end - if (character) then - if (charserver == server) then - table.insert(GoldSaveSorted, index); -- insert all keys from hash into the array - end + -- Parse the database and display all characters from the same faction across servers + local faction = UnitFactionGroup("Player"); + local server = realmNames[ms] + GoldSave[GOLD_INDEX].gold = GetMoney("player") + local coin_str = "" + local character, charserver = "", "" + local ttlgold = 0 + local show_labels = (TitanGetVar(TITAN_GOLD_ID, "ShowCoinLabels") + or TitanGetVar(TITAN_GOLD_ID, "ShowCoinIcons")) + + -- This next section will sort the array based on user preference + -- either by name, or by gold amount descending. + + local GoldSaveSorted = {}; + for index, money in pairs(GoldSave) do + character, charserver = string.match(index, '(.*)_(.*)'); + local _, char_faction = string.match(charserver, '(.*)::(.*)') + if (charserver) then + charserver = string.gsub(charserver, "%s", ""); + end + if (character) then + if (char_faction == faction) then + table.insert(GoldSaveSorted, index); -- insert all keys from hash into the array end end + end - if TitanGetVar(TITAN_GOLD_ID, "SortByName") then - table.sort(GoldSaveSorted, function (key1, key2) return GoldSave[key1].name < GoldSave[key2].name end) - else - table.sort(GoldSaveSorted, function (key1, key2) return GoldSave[key1].gold > GoldSave[key2].gold end) - end + if TitanGetVar(TITAN_GOLD_ID, "SortByName") then + table.sort(GoldSaveSorted, function (key1, key2) return GoldSave[key1].name < GoldSave[key2].name end) + else + table.sort(GoldSaveSorted, function (key1, key2) return GoldSave[key1].gold > GoldSave[key2].gold end) + end - for i = 1, getn(GoldSaveSorted) do - character, charserver = string.match(GoldSaveSorted[i], '(.*)_(.*)'); - if (charserver) then - charserver = string.gsub(charserver, "%s", ""); - end - if (character) then - if (charserver == server) then - if (GoldSave[GoldSaveSorted[i]].show) then - coin_str = NiceCash(GoldSave[GoldSaveSorted[i]].gold, false, false) - - currentMoneyRichText = currentMoneyRichText.."\n"..character.."-"..realmNames[ms].."\t"..coin_str - end + for i = 1, getn(GoldSaveSorted) do + character, charserver = string.match(GoldSaveSorted[i], '(.*)_(.*)'); + local _, char_faction = string.match(charserver, '(.*)::(.*)') + if (charserver) then + charserver = string.gsub(charserver, "%s", ""); + end + if (character) then + if (char_faction == faction) then + if (GoldSave[GoldSaveSorted[i]].show) then + coin_str = NiceCash(GoldSave[GoldSaveSorted[i]].gold, false, false) + currentMoneyRichText = currentMoneyRichText.."\n"..character.."-"..charserver.."\t"..coin_str end end end @@ -450,7 +448,10 @@ end -- ******************************************************************************************* function TitanPanelGoldButton_TotalGold() local ttlgold = 0; + local cnt = 0; local countelements = 0; + local faction = UnitFactionGroup("Player"); + for _ in pairs (realmNames) do countelements = countelements + 1 end if countelements == 0 or TitanGetVar(TITAN_GOLD_ID, "SeparateServers") then local server = realmName.."::"..UnitFactionGroup("Player"); @@ -467,20 +468,18 @@ function TitanPanelGoldButton_TotalGold() end end else - for ms = 1, countelements do - local server = realmNames[ms].."::"..UnitFactionGroup("Player"); - GoldSave[GOLD_INDEX].gold = GetMoney("player") - - for index, money in pairs(GoldSave) do - local character, charserver = string.match(index, '(.*)_(.*)'); - if (charserver) then - charserver = string.gsub(charserver, "%s", ""); - end - if (character) then - if (charserver == server) then - if GoldSave[index].show then - ttlgold = ttlgold + GoldSave[index].gold; - end + GoldSave[GOLD_INDEX].gold = GetMoney("player") + + for index, money in pairs(GoldSave) do + local character, charserver = string.match(index, '(.*)_(.*)'); + local _, char_faction = string.match(charserver, '(.*)::(.*)') + if (charserver) then + charserver = string.gsub(charserver, "%s", ""); + end + if (character) then + if (char_faction == faction) then + if GoldSave[index].show then + ttlgold = ttlgold + GoldSave[index].gold; end end end @@ -509,7 +508,7 @@ local function ShowMenuButtons(faction) GoldSave[rementry].show = not GoldSave[rementry].show; TitanPanelButton_UpdateButton(TITAN_GOLD_ID) end - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info, L_UIDROPDOWNMENU_MENU_LEVEL); end end end @@ -535,7 +534,7 @@ local function DeleteMenuButtons(faction) else info.disabled = nil; end - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info, L_UIDROPDOWNMENU_MENU_LEVEL); end end end @@ -628,23 +627,21 @@ function TitanPanelRightClickMenu_PrepareGoldMenu() info.func = function() ShowProperLabels("ShowCoinNone") end - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); - + DDM:UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); local info = {}; info.text = L["TITAN_GOLD_COIN_LABELS"]; info.checked = TitanGetVar(TITAN_GOLD_ID, "ShowCoinLabels"); info.func = function() ShowProperLabels("ShowCoinLabels") end - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); - + DDM:UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); local info = {}; info.text = L["TITAN_GOLD_COIN_ICONS"]; info.checked = TitanGetVar(TITAN_GOLD_ID, "ShowCoinIcons"); info.func = function() ShowProperLabels("ShowCoinIcons") end - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); TitanPanelRightClickMenu_AddSpacer(); @@ -654,15 +651,14 @@ function TitanPanelRightClickMenu_PrepareGoldMenu() info.func = function() Seperator("UseSeperatorComma") end - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); - + DDM:UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); local info = {}; info.text = L["TITAN_USE_PERIOD"]; info.checked = TitanGetVar(TITAN_GOLD_ID, "UseSeperatorPeriod"); info.func = function() Seperator("UseSeperatorPeriod") end - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); TitanPanelRightClickMenu_AddSpacer(); @@ -672,15 +668,14 @@ function TitanPanelRightClickMenu_PrepareGoldMenu() info.func = function() Merger("MergeServers") end - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); - + DDM:UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); local info = {}; info.text = L["TITAN_GOLD_SEPARATE"]; info.checked = TitanGetVar(TITAN_GOLD_ID, "SeparateServers"); info.func = function() Merger("SeparateServers") end - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); TitanPanelRightClickMenu_AddSpacer(); @@ -691,7 +686,7 @@ function TitanPanelRightClickMenu_PrepareGoldMenu() TitanToggleVar(TITAN_GOLD_ID, "ShowGoldOnly"); TitanPanelButton_UpdateButton(TITAN_GOLD_ID); end - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info, _G["L_UIDROPDOWNMENU_MENU_LEVEL"]); -- A blank line in the menu TitanPanelRightClickMenu_AddSpacer(); @@ -702,7 +697,7 @@ function TitanPanelRightClickMenu_PrepareGoldMenu() info.text = L["TITAN_GOLD_SHOW_PLAYER"]; info.value = "ToonShow"; info.hasArrow = 1; - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info); -- Delete toon info = {}; @@ -710,7 +705,7 @@ function TitanPanelRightClickMenu_PrepareGoldMenu() info.text = L["TITAN_GOLD_DELETE_PLAYER"]; info.value = "ToonDelete"; info.hasArrow = 1; - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info); -- A blank line in the menu TitanPanelRightClickMenu_AddSpacer(); @@ -720,7 +715,7 @@ function TitanPanelRightClickMenu_PrepareGoldMenu() info.notCheckable = true info.text = L["TITAN_GOLD_CLEAR_DATA_TEXT"]; info.func = TitanGold_ClearDB; - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info); TitanPanelRightClickMenu_AddCommand(L["TITAN_GOLD_RESET_SESS_TEXT"], TITAN_GOLD_ID, "TitanPanelGoldButton_ResetSession"); @@ -729,7 +724,6 @@ function TitanPanelRightClickMenu_PrepareGoldMenu() TitanPanelRightClickMenu_AddToggleIcon(TITAN_GOLD_ID); TitanPanelRightClickMenu_AddToggleLabelText(TITAN_GOLD_ID); TitanPanelRightClickMenu_AddToggleColoredText(TITAN_GOLD_ID); - TitanPanelRightClickMenu_AddToggleRightSide(TITAN_GOLD_ID); TitanPanelRightClickMenu_AddSpacer(); -- Generic function to toggle and hide @@ -742,24 +736,24 @@ function TitanPanelRightClickMenu_PrepareGoldMenu() info.text = L["TITAN_GOLD_FACTION_PLAYER_ALLY"]; info.value = "DeleteAlliance"; info.hasArrow = 1; - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info, L_UIDROPDOWNMENU_MENU_LEVEL); info.text = L["TITAN_GOLD_FACTION_PLAYER_HORDE"]; info.value = "DeleteHorde"; info.hasArrow = 1; - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info, L_UIDROPDOWNMENU_MENU_LEVEL); elseif L_UIDROPDOWNMENU_MENU_LEVEL == 2 and L_UIDROPDOWNMENU_MENU_VALUE == "ToonShow" then local info = {}; info.notCheckable = true info.text = L["TITAN_GOLD_FACTION_PLAYER_ALLY"]; info.value = "ShowAlliance"; info.hasArrow = 1; - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info, L_UIDROPDOWNMENU_MENU_LEVEL); info.text = L["TITAN_GOLD_FACTION_PLAYER_HORDE"]; info.value = "ShowHorde"; info.hasArrow = 1; - TitanPanelRightClickMenu_AddButton(info, TitanPanelRightClickMenu_GetDropdownLevel()); + DDM:UIDropDownMenu_AddButton(info, L_UIDROPDOWNMENU_MENU_LEVEL); end if L_UIDROPDOWNMENU_MENU_LEVEL == 3 and L_UIDROPDOWNMENU_MENU_VALUE == "DeleteAlliance" then -- 1.7.9.5