wSr`K9^gUuG
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
LZGPP~7Zm(I`%J^L
literal 0
HcmV?d00001
diff --git a/Media/border1.tga b/Media/border1.tga
new file mode 100644
index 0000000000000000000000000000000000000000..f654e26e33fbb22f4808bf6f65baa11dba284b39
GIT binary patch
literal 10560
zcmeI&PmEU88OQN=C{+u}7`w10CRCvbCZ+tbb<;+mL=r5afsvLbmR*sUXcxpq8*oy<
zlA6%i1r%-S2GbT-{HaYy=(y3?#LfT`=z<0u+RfC?@F&7zKyH7Z=XHk3XpQ|Naq*IT
z&%F2C=lT7fbMCo!hI`&tYg()QZ)NMtT`OB(oU^TInpRhu?r{22pquSUIDmLi2R!E{7Xrvo(g}qj_gbj+$G-)o>vUg~4ztoD9dq(QxD^
zX$C^mUk#c5>XUsWh!QPJHWg}Aua-|&KD`sVs|H=y3nA4^4_AU2luqi;;kD2g4ux03
z!Ehk#56!-6Oz1xO`kWIZR*qa6v}n@iaiv_l@~O(IigZmXYg)SA4Sx$K!W-dmV6!*u
z3BL|6gx&IYg=S|p>e^X-RCWhZqGidZLX9eQF7L`{xL$)-Y$Ds?X0E(mPKE1BW&boJeqPbNy#
zo59@wE*SETur>TRYz$9?$HRv3SZLN)v)v~;`kWIZR*qa6v}n@i!HZ{m+Nz#faCEFE
zQ`#TI{wBCIKMg+$Plg|abzyB-6M9Ij4$Z1+%+;#uqu3KfiIyds3N@J2Q^CL=4Q##@mW6MIB??#^nnl$pYEktmYDo|!T9#}o)TmPD!j0>R
zFkJPJXl8_~VKBTATyryQJkpKvyJ1CO^Y!pRSQr+NnID>Y)wn|Qs*mb|AWF0>*;J@e
zrOt&LSMI8~T6I-pe3rUf_i(T%cLWn|e54)@4~DOXxnWM2EqhjI?yY9KPt`|pb`T|6
zmTW52s8Z*`jVt%|(yyY7Z76uAxP_k&Ms6jTcw;1K?DvIx!rkGn@P*LaS&f_RPFnh$
z6C+lRTpF}!(&oX7C-0%ErkY!GI2c|Fd&6_VEn}Lk2UBmPq-O?}cgXAxwFH_O>Zv=r
zo7x>g)XX4DHWg}AsdM4Rb#T0xQR$~bU)U1}Zw%{#1!^sr`g;P4+rxC}w}j^AYUJEp
zeblB0QKDtZrb3M>bs5~ao{~ALxg_27I}|*7w}mId+Tf0{IIRVfZ_KQ2+LGoop_x*R
z)ib5~sNEDqiIyds3N@u9-a&MDzYI1qLPzna{3tAnT9{6Nla;{LEAjJSUBOqvDf#E6w6mj*4Gw0ZEVKV;4+
zVMGZ7VSgAaVSPSNEaBc9Pb^_djwhF(Z(<2@CYC^RtOQ;I<*peXD`8&_c7{zs_^Pld
zkojLqph1f!Z63U;gyHcL`rq&VuoC9w+<#kw+(qHTN~pgcJ0;XL=v;^_lFnM_tc5It
z&U3*7x-$!%Ss43e-B}Brwa{4$6aRee+!38SqH{-d?ug0%t?fJ)I?sj9bD{HG`1C&)
zymxf3TCJ|vjeY6&DR}kyffv9}XBNDyo%r_klYIePufdPS@r80sj0o3QXI;GH}(gD&7G~`
zhvCs+R1b#x18HyWU4pv;%a7W26e~wA4O%p5^Wepk_k?Xnqq-QZp~K;&@bh4%Yyhnd
z4+oM)IyYDmmZ&|eSz+Q1Ej@kCi4iMDE)7~VY4hO4leZc!UZ1Voa(FcihCc;Q++T(5
z;i=%MOUg)>hHnH5^?niyLT$h_^Tp4vK8of?lxSJ9sZgUTnhQ6s+}qpPTk@&7HH?H4
zp)c$WyTUU;x^aC!SPi7zHA|T<3GHtHEM~E|`lu;FlxSJ9sZgUzoeMXvBUOj=YbM)2
zv-I~c5Zsc#4bm8yWNX0q)&;lln(#og&GBKh=%aTon8dd6C
zxSa`?WL8;K(Nw#zZ&x2R3;#?Q2z_CHuozzmZsBJGe+j+e>CpZf&SulFnTEdJAV#bl
zxio0eq|M_@XfN>bI;P62uPjZ?hjwY6(WcF`o(z`ZAH%`$a@Z4I3@mnsUxvCS&91sS
z^7T07aCq}Fsxio0ee9zUXuMk|z&zha8WLu8LXXh=FqYAqmE(D|aXCPDG
zGiip*!jKq!&WRCwxw4J+tuVEeKVkXzzarUsWc8YdzO%e%`L|cjUAt`giif_^`WHRY
B3UdGe
literal 0
HcmV?d00001
diff --git a/Media/border2.tga b/Media/border2.tga
new file mode 100644
index 0000000000000000000000000000000000000000..1629332d9c4f83272f9a8328781ecf26eb0cf7bd
GIT binary patch
literal 4546
zcmeI0Sx-|z6o79LQA}8ZVvNzSn21qZO~eF67Dig=Fwq#$VECe)@P|(?)X_mSO(~P349?
z*nu*XAWNh9ZO?hfoKvQ%r5&{vp!a|#(O8nB>4Uv6-A->CzQPw+g=J?JAyl)4Lwhl%
zw98UTX|;C3PLAF#^!QYDZn@+ZSCqTTy%8Sh76UvP;>%D
z;UzqUColxrU^Jf0pn8ruHv+Ce9rvaU_vDFHPP#I-9>Nr;@*IZY5j=qVko8BStA1TM
z=G
zl=sWGCTojES8a|v=A3JS23oc0elx0p>)#4XNGm*`3%5CE_ADVm!Yi7a(Q(Z>2Vj|n9{|2xULJAX+&Bs
zYR7%nS+oMx^j@?A#cMMFSADx%H>!1`vaI!E-uz#$^yrJsW_Fh?AQ%a#cy)25;IGGUW`Q<-4tWuamir(qN>Tm0z8;^!@BLtCd5Ke{rE
z7C=R?T+p2>90AP?!9^vVZai^qXzO@Mml$j7EZwDG!J?=uGZ3Dh6-EKVcb2yz$*bp>
zbIK^Ij=F150&O;mpCsWiO5=)UObV{Y?R#=wmGg`4shX71YN;L7NJY!@UZ1G4;xmHP
z)V4#Fb{aQrj4$^Y!3&^P<1>N>(ie^n=*8!dZaVW&b!PRn4>~M^VTi3}sbM?kbI5n5
iwbLDz>74iiQ~OAhtgWoiZWLFG%S-vqPsN4VLh=WzT8WVW
literal 0
HcmV?d00001
diff --git a/Media/border3.tga b/Media/border3.tga
new file mode 100644
index 0000000000000000000000000000000000000000..b948a9caccf1bb58017e509407ff1887ed3eb588
GIT binary patch
literal 105490
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
literal 0
HcmV?d00001
diff --git a/NotificationHandler.lua b/NotificationHandler.lua
deleted file mode 100644
index c17432e..0000000
--- a/NotificationHandler.lua
+++ /dev/null
@@ -1,174 +0,0 @@
----@class GT
-local GT = LibStub("AceAddon-3.0"):GetAddon("GatheringTracker")
-local media = LibStub:GetLibrary("LibSharedMedia-3.0")
-
--- Localize global functions
-local ipairs = ipairs
-local math = math
-local max = max
-local next = next
-local pairs = pairs
-local select = select
-local string = string
-local table = table
-local time = time
-local tonumber = tonumber
-local tostring = tostring
-local type = type
-local unpack = unpack
-
-function GT:NotificationHandler(mode, id, amount, value)
- GT.Debug("Notifications Handler", 5, mode, id, amount, value)
-
- local NotificationTriggered = false
-
- if value then
- value = math.ceil(value)
- end
-
- local function NotificationCheck(notiType, buildTable)
- local threshold = tonumber(GT.db.profile.Notifications[notiType].threshold)
-
- local passedValue
- if notiType == "Count" then
- passedValue = amount
- else
- passedValue = value
- end
-
- if passedValue >= threshold then
- GT.Debug(notiType .. " Notifications Threshold Exceeded", 5, mode, id, amount, value)
- if GT.db.profile.Notifications[notiType].interval == 1 then --Interval
- if GT.Notifications[id] and GT.Notifications[id][notiType] > 0 then
- if (passedValue - GT.Notifications[id][notiType]) >= threshold then
- GT.Debug(notiType .. " Notifications Interval Threshold Exceeded", 2, mode, id, amount, value, GT.Notifications[id][notiType])
- GT.Notifications[id][notiType] = math.floor(passedValue / threshold) * threshold
- if not buildTable then
- NotificationTriggered = true
- GT:TriggerNotification(notiType)
- end
- end
- else
- if GT.Notifications[id] then
- if notiType == "Count" then
- GT.Notifications[id] = {
- Count = math.floor(passedValue / threshold) * threshold,
- Gold = (GT.Notifications[id].Gold or 0),
- }
- else
- GT.Notifications[id] = {
- Count = (GT.Notifications[id].Count or 0),
- Gold = math.floor(passedValue / threshold) * threshold,
- }
- end
- else
- if notiType == "Count" then
- GT.Notifications[id] = {
- Count = math.floor(passedValue / threshold) * threshold,
- Gold = 0,
- }
- else
- GT.Notifications[id] = {
- Count = 0,
- Gold = math.floor(passedValue / threshold) * threshold,
- }
- end
- end
- if not buildTable then
- NotificationTriggered = true
- GT:TriggerNotification(notiType)
- end
- end
- end
- if GT.db.profile.Notifications[notiType].interval == 0 then --Exact
- if not GT.Notifications[id] or GT.Notifications[id][notiType] < threshold then
- GT.Debug(notiType .. " Notifications Exact Threshold Exceeded", 2, mode, id, amount, value, GT.Notifications[id][notiType])
- if GT.Notifications[id] then
- if notiType == "Count" then
- GT.Notifications[id] = {
- Count = threshold,
- Gold = (GT.Notifications[id].Gold or 0),
- }
- else
- GT.Notifications[id] = {
- Count = (GT.Notifications[id].Count or 0),
- Gold = threshold,
- }
- end
- else
- if notiType == "Count" then
- GT.Notifications[id] = {
- Count = threshold,
- Gold = 0,
- }
- else
- GT.Notifications[id] = {
- Count = 0,
- Gold = threshold,
- }
- end
- end
- if not buildTable then
- NotificationTriggered = true
- GT:TriggerNotification(notiType)
- end
- end
- end
- end
- end
-
- if GT.db.profile.Notifications.Count.enable then
- if mode == "all" and (GT.db.profile.Notifications.Count.itemAll == 1 or GT.db.profile.Notifications.Count.itemAll == 2) then --All Items or Both
- NotificationCheck("Count", false)
- end
- if mode == "each" and (GT.db.profile.Notifications.Count.itemAll == 0 or GT.db.profile.Notifications.Count.itemAll == 2) then --Each Item or Both
- NotificationCheck("Count", false)
- end
- end
-
- if GT.db.profile.Notifications.Gold.enable and GT.priceSources and GT.db.profile.General.tsmPrice > 0 then
- if mode == "all" and (GT.db.profile.Notifications.Gold.itemAll == 1 or GT.db.profile.Notifications.Gold.itemAll == 2) then --All Items or Both
- NotificationCheck("Gold", false)
- end
- if mode == "each" and (GT.db.profile.Notifications.Gold.itemAll == 0 or GT.db.profile.Notifications.Gold.itemAll == 2) then --Each Item or Both
- if GT.db.profile.General.tsmPrice > 0 then
- local eprice = GT:GetItemPrice(id)
- value = math.ceil(eprice * amount)
- NotificationCheck("Gold", false)
- end
- end
- end
-
- if mode == "PLAYER_ENTERING_WORLD" then
- GT.Debug("Generate Notification Table", 1)
- local playerTotal = 0
- for itemID, data in pairs(GT.InventoryData) do
- id = tonumber(itemID)
- amount = data.count
- playerTotal = playerTotal + amount
- NotificationCheck("Count", true)
- if GT.db.profile.General.tsmPrice > 0 then
- local eprice = GT:GetItemPrice(itemID)
- value = math.ceil(eprice * amount)
- NotificationCheck("Gold", true)
- end
- end
- id = "all"
- amount, value = GT:CalculatePlayerTotal(true, GT.db.profile.General.sessionOnly)
- NotificationCheck("Count", true)
- NotificationCheck("Gold", true)
- end
-end
-
-function GT:TriggerNotification(alertType)
- GT.Debug("Trigger Notifications", 1, alertType, GT.NotificationPause)
- if not GT.NotificationPause then
- --GT.Debug("|cffff6f00" .. GT.metaData.name .. " v" .. GT.metaData.version .. "|r|cff00ff00 Notifications |r" .. alertType, 1)
- if media:IsValid("sound", GT.db.profile.Notifications[alertType].sound) then
- PlaySoundFile(tostring(media:Fetch("sound", GT.db.profile.Notifications[alertType].sound)), "master")
- else
- GT.Debug("Trigger Notifications: Play Default Sound", 1, alertType, GT.NotificationPause, GT.db.profile.Notifications[alertType].sound, GT.defaults.profile.Notifications[alertType].sound)
- PlaySoundFile(tostring(media:Fetch("sound", GT.defaults.profile.Notifications[alertType].sound)), "master")
- end
- end
-end
diff --git a/Utilities.lua b/Utilities.lua
index 917ee18..d6115f9 100644
--- a/Utilities.lua
+++ b/Utilities.lua
@@ -13,6 +13,7 @@ local table = table
local time = time
local tonumber = tonumber
local tostring = tostring
+local tostringall = tostringall
local type = type
local unpack = unpack
@@ -39,6 +40,35 @@ function GT:TableFind(list, str, key)
end
end
+---Gets the number of key,value pairs in an array
+---@param array table
+---@return number
+function GT:GetArraySize(array)
+ local size = 0
+ for _, _ in pairs(array) do
+ size = size + 1
+ end
+ return size
+end
+
+---Converts decimal RGB to Hexcode
+---@param r number
+---@param g number
+---@param b number
+---@param a? number
+---@return string Hexcode
+function GT:RGBtoHex(r, g, b, a)
+ r = Round(r * 255)
+ g = Round(g * 255)
+ b = Round(b * 255)
+ local hex = ("%.2X%.2X%.2X"):format(r, g, b)
+ if a then
+ a = Round(a * 255)
+ hex = ("%.2X%.2X%.2X%.2X"):format(a, r, g, b)
+ end
+ return hex
+end
+
function GT.Debug(text, level, ...)
if not GT.db.profile or GT.db.profile.General.debugOption == 0 then
return
diff --git a/embeds.xml b/embeds.xml
index 64691a0..874745b 100644
--- a/embeds.xml
+++ b/embeds.xml
@@ -8,8 +8,8 @@
-
+
\ No newline at end of file