diff --git a/.gitignore b/.gitignore index 6acf3e760..3b0f5e9f1 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ Libs/LibTranslit/.pkgmeta a.lua functions/pack2.lua *.json +*.afphoto diff --git a/CHANGES.txt b/CHANGES.txt index 8df38ae4a..91b19f9f0 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,10 +1,10 @@ -lightweight tag 5bd30e291f18247a7ed005a957407eab6f25176a v8.2.0.7177.140 -Author: Tercioo -Date: Sat Aug 17 09:50:52 2019 -0300 +lightweight tag 899ac439a17c19a799d30a6a2a0e2faf5cc215e1 DetailsRetail.8.3.0.7348.141 +Author: Tercio Jose +Date: Mon Jul 6 11:27:35 2020 -0300 -commit 5bd30e291f18247a7ed005a957407eab6f25176a -Author: Tercioo -Date: Sat Aug 17 09:50:52 2019 -0300 +commit 899ac439a17c19a799d30a6a2a0e2faf5cc215e1 +Author: Tercio Jose +Date: Mon Jul 6 11:27:35 2020 -0300 - Fixed bookmark panel where sometimes it gives errors, version number correction and fixed the classic version warning. + Fixed an issue affecting the Auto Hide for some users diff --git a/Details.toc b/Details.toc index 36e337450..ac0f77be6 100644 --- a/Details.toc +++ b/Details.toc @@ -1,4 +1,4 @@ -## Interface: 80300 +## Interface: 90001 ## Title: Details! Damage Meter ## Notes: Essential tool to impress that chick in your raid. ## SavedVariables: _detalhes_global @@ -27,13 +27,13 @@ API.lua functions\profiles.lua functions\hooks.lua +functions\bossmods.lua functions\skins.lua functions\boss.lua functions\spells.lua functions\events.lua functions\classes.lua functions\buff.lua -functions\link.lua functions\spellcache.lua functions\attributes.lua functions\savedata.lua @@ -45,46 +45,74 @@ functions\rowanimation.lua functions\raidinfo.lua functions\dungeon.lua functions\pack.lua +functions\mythicdungeon.lua +functions\immersion.lua +functions\schedules.lua +functions\autorun.lua +functions\deathrecap.lua +functions\plater.lua +functions\deathmenu.lua +functions\macros.lua +functions\testbars.lua core\timemachine.lua -gumps\anime.lua -gumps\anime.xml -gumps\janela_copy.lua -gumps\janela_options.lua -gumps\janela_info.lua -gumps\janela_report.lua -gumps\janela_principal.lua -gumps\janela_custom.lua -gumps\janela_welcome.lua -gumps\janela_news.lua -gumps\fw_mods.lua -gumps\switch.lua -gumps\toolbar_button.xml +frames\anime.lua +frames\anime.xml +frames\fw_mods.lua +frames\toolbar_button.xml -classes\classe_error.lua -classes\classe_combate.lua -classes\classe_damage.lua -classes\classe_damage_habilidade.lua -classes\classe_heal.lua -classes\classe_heal_habilidade.lua -classes\classe_energy.lua -classes\classe_energy_habilidade.lua -classes\classe_others.lua -classes\classe_others_habilidade.lua -classes\classe_instancia_include.lua -classes\classe_instancia.lua -classes\classe_target.lua +frames\window_copy.lua +frames\window_options2.lua +frames\window_options2_sections.lua +frames\window_api.lua +frames\window_playerbreakdown.lua +frames\window_playerbreakdown_list.lua +frames\window_report.lua +frames\window_main.lua +frames\window_custom.lua +frames\window_welcome.lua +frames\window_news.lua +frames\window_wa.lua +frames\window_forge.lua +frames\window_switch.lua +frames\window_scrolldamage.lua +frames\window_dump.lua +frames\window_eventtracker.lua +frames\window_currentdps.lua +frames\window_benchmark.lua +frames\window_runcode.lua +frames\window_plater.lua +frames\window_macros.lua +frames\window_profiler.lua +frames\window_rowtexteditor.lua +frames\window_brokertexteditor.lua +frames\window_bookmark.lua +frames\window_classcolor.lua +frames\window_statistics.lua -classes\classe_custom.lua -classes\custom_damage_done.lua -classes\custom_healing_done.lua +classes\class_error.lua +classes\class_combat.lua +classes\class_damage.lua +classes\class_spelldamage.lua +classes\class_heal.lua +classes\class_spellhealing.lua +classes\class_resources.lua +classes\class_spellresources.lua +classes\class_utility.lua +classes\class_spellutility.lua +classes\include_instance.lua +classes\class_instance.lua + +classes\class_custom.lua +classes\custom_damagedone.lua +classes\custom_healingdone.lua core\control.lua -classes\container_combatentes.lua -classes\container_habilidades.lua -classes\container_historico.lua +classes\container_actors.lua +classes\container_spells.lua +classes\container_segments.lua classes\container_pets.lua core\plugins.lua diff --git a/Libs/AceBucket-3.0/AceBucket-3.0.lua b/Libs/AceBucket-3.0/AceBucket-3.0.lua deleted file mode 100644 index 514c05e8c..000000000 --- a/Libs/AceBucket-3.0/AceBucket-3.0.lua +++ /dev/null @@ -1,264 +0,0 @@ ---- A bucket to catch events in. **AceBucket-3.0** provides throttling of events that fire in bursts and --- your addon only needs to know about the full burst. --- --- This Bucket implementation works as follows:\\ --- Initially, no schedule is running, and its waiting for the first event to happen.\\ --- The first event will start the bucket, and get the scheduler running, which will collect all --- events in the given interval. When that interval is reached, the bucket is pushed to the --- callback and a new schedule is started. When a bucket is empty after its interval, the scheduler is --- stopped, and the bucket is only listening for the next event to happen, basically back in its initial state. --- --- In addition, the buckets collect information about the "arg1" argument of the events that fire, and pass those as a --- table to your callback. This functionality was mostly designed for the UNIT_* events.\\ --- The table will have the different values of "arg1" as keys, and the number of occurances as their value, e.g.\\ --- { ["player"] = 2, ["target"] = 1, ["party1"] = 1 } --- --- **AceBucket-3.0** can be embeded into your addon, either explicitly by calling AceBucket:Embed(MyAddon) or by --- specifying it as an embeded library in your AceAddon. All functions will be available on your addon object --- and can be accessed directly, without having to explicitly call AceBucket itself.\\ --- It is recommended to embed AceBucket, otherwise you'll have to specify a custom `self` on all calls you --- make into AceBucket. --- @usage --- MyAddon = LibStub("AceAddon-3.0"):NewAddon("BucketExample", "AceBucket-3.0") --- --- function MyAddon:OnEnable() --- -- Register a bucket that listens to all the HP related events, --- -- and fires once per second --- self:RegisterBucketEvent({"UNIT_HEALTH", "UNIT_MAXHEALTH"}, 1, "UpdateHealth") --- end --- --- function MyAddon:UpdateHealth(units) --- if units.player then --- print("Your HP changed!") --- end --- end --- @class file --- @name AceBucket-3.0.lua --- @release $Id: AceBucket-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ - -local MAJOR, MINOR = "AceBucket-3.0", 4 -local AceBucket, oldminor = LibStub:NewLibrary(MAJOR, MINOR) - -if not AceBucket then return end -- No Upgrade needed - -AceBucket.buckets = AceBucket.buckets or {} -AceBucket.embeds = AceBucket.embeds or {} - --- the libraries will be lazyly bound later, to avoid errors due to loading order issues -local AceEvent, AceTimer - --- Lua APIs -local tconcat = table.concat -local type, next, pairs, select = type, next, pairs, select -local tonumber, tostring, rawset = tonumber, tostring, rawset -local assert, loadstring, error = assert, loadstring, error - --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: LibStub, geterrorhandler - -local bucketCache = setmetatable({}, {__mode='k'}) - ---[[ - xpcall safecall implementation -]] -local xpcall = xpcall - -local function errorhandler(err) - return geterrorhandler()(err) -end - -local function safecall(func, ...) - if func then - return xpcall(func, errorhandler, ...) - end -end - --- FireBucket ( bucket ) --- --- send the bucket to the callback function and schedule the next FireBucket in interval seconds -local function FireBucket(bucket) - local received = bucket.received - - -- we dont want to fire empty buckets - if next(received) ~= nil then - local callback = bucket.callback - if type(callback) == "string" then - safecall(bucket.object[callback], bucket.object, received) - else - safecall(callback, received) - end - - for k in pairs(received) do - received[k] = nil - end - - -- if the bucket was not empty, schedule another FireBucket in interval seconds - bucket.timer = AceTimer.ScheduleTimer(bucket, FireBucket, bucket.interval, bucket) - else -- if it was empty, clear the timer and wait for the next event - bucket.timer = nil - end -end - --- BucketHandler ( event, arg1 ) --- --- callback func for AceEvent --- stores arg1 in the received table, and schedules the bucket if necessary -local function BucketHandler(self, event, arg1) - if arg1 == nil then - arg1 = "nil" - end - - self.received[arg1] = (self.received[arg1] or 0) + 1 - - -- if we are not scheduled yet, start a timer on the interval for our bucket to be cleared - if not self.timer then - self.timer = AceTimer.ScheduleTimer(self, FireBucket, self.interval, self) - end -end - --- RegisterBucket( event, interval, callback, isMessage ) --- --- event(string or table) - the event, or a table with the events, that this bucket listens to --- interval(int) - time between bucket fireings --- callback(func or string) - function pointer, or method name of the object, that gets called when the bucket is cleared --- isMessage(boolean) - register AceEvent Messages instead of game events -local function RegisterBucket(self, event, interval, callback, isMessage) - -- try to fetch the librarys - if not AceEvent or not AceTimer then - AceEvent = LibStub:GetLibrary("AceEvent-3.0", true) - AceTimer = LibStub:GetLibrary("AceTimer-3.0", true) - if not AceEvent or not AceTimer then - error(MAJOR .. " requires AceEvent-3.0 and AceTimer-3.0", 3) - end - end - - if type(event) ~= "string" and type(event) ~= "table" then error("Usage: RegisterBucket(event, interval, callback): 'event' - string or table expected.", 3) end - if not callback then - if type(event) == "string" then - callback = event - else - error("Usage: RegisterBucket(event, interval, callback): cannot omit callback when event is not a string.", 3) - end - end - if not tonumber(interval) then error("Usage: RegisterBucket(event, interval, callback): 'interval' - number expected.", 3) end - if type(callback) ~= "string" and type(callback) ~= "function" then error("Usage: RegisterBucket(event, interval, callback): 'callback' - string or function or nil expected.", 3) end - if type(callback) == "string" and type(self[callback]) ~= "function" then error("Usage: RegisterBucket(event, interval, callback): 'callback' - method not found on target object.", 3) end - - local bucket = next(bucketCache) - if bucket then - bucketCache[bucket] = nil - else - bucket = { handler = BucketHandler, received = {} } - end - bucket.object, bucket.callback, bucket.interval = self, callback, tonumber(interval) - - local regFunc = isMessage and AceEvent.RegisterMessage or AceEvent.RegisterEvent - - if type(event) == "table" then - for _,e in pairs(event) do - regFunc(bucket, e, "handler") - end - else - regFunc(bucket, event, "handler") - end - - local handle = tostring(bucket) - AceBucket.buckets[handle] = bucket - - return handle -end - ---- Register a Bucket for an event (or a set of events) --- @param event The event to listen for, or a table of events. --- @param interval The Bucket interval (burst interval) --- @param callback The callback function, either as a function reference, or a string pointing to a method of the addon object. --- @return The handle of the bucket (for unregistering) --- @usage --- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon", "AceBucket-3.0") --- MyAddon:RegisterBucketEvent("BAG_UPDATE", 0.2, "UpdateBags") --- --- function MyAddon:UpdateBags() --- -- do stuff --- end -function AceBucket:RegisterBucketEvent(event, interval, callback) - return RegisterBucket(self, event, interval, callback, false) -end - ---- Register a Bucket for an AceEvent-3.0 addon message (or a set of messages) --- @param message The message to listen for, or a table of messages. --- @param interval The Bucket interval (burst interval) --- @param callback The callback function, either as a function reference, or a string pointing to a method of the addon object. --- @return The handle of the bucket (for unregistering) --- @usage --- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon", "AceBucket-3.0") --- MyAddon:RegisterBucketEvent("SomeAddon_InformationMessage", 0.2, "ProcessData") --- --- function MyAddon:ProcessData() --- -- do stuff --- end -function AceBucket:RegisterBucketMessage(message, interval, callback) - return RegisterBucket(self, message, interval, callback, true) -end - ---- Unregister any events and messages from the bucket and clear any remaining data. --- @param handle The handle of the bucket as returned by RegisterBucket* -function AceBucket:UnregisterBucket(handle) - local bucket = AceBucket.buckets[handle] - if bucket then - AceEvent.UnregisterAllEvents(bucket) - AceEvent.UnregisterAllMessages(bucket) - - -- clear any remaining data in the bucket - for k in pairs(bucket.received) do - bucket.received[k] = nil - end - - if bucket.timer then - AceTimer.CancelTimer(bucket, bucket.timer) - bucket.timer = nil - end - - AceBucket.buckets[handle] = nil - -- store our bucket in the cache - bucketCache[bucket] = true - end -end - ---- Unregister all buckets of the current addon object (or custom "self"). -function AceBucket:UnregisterAllBuckets() - -- hmm can we do this more efficient? (it is not done often so shouldn't matter much) - for handle, bucket in pairs(AceBucket.buckets) do - if bucket.object == self then - AceBucket.UnregisterBucket(self, handle) - end - end -end - - - --- embedding and embed handling -local mixins = { - "RegisterBucketEvent", - "RegisterBucketMessage", - "UnregisterBucket", - "UnregisterAllBuckets", -} - --- Embeds AceBucket into the target object making the functions from the mixins list available on target:.. --- @param target target object to embed AceBucket in -function AceBucket:Embed( target ) - for _, v in pairs( mixins ) do - target[v] = self[v] - end - self.embeds[target] = true - return target -end - -function AceBucket:OnEmbedDisable( target ) - target:UnregisterAllBuckets() -end - -for addon in pairs(AceBucket.embeds) do - AceBucket:Embed(addon) -end diff --git a/Libs/AceBucket-3.0/AceBucket-3.0.xml b/Libs/AceBucket-3.0/AceBucket-3.0.xml deleted file mode 100644 index 06ab71282..000000000 --- a/Libs/AceBucket-3.0/AceBucket-3.0.xml +++ /dev/null @@ -1,4 +0,0 @@ - -