From 1c8dfb3ab732e707260275500a19cb30d65d05c6 Mon Sep 17 00:00:00 2001 From: Tercio Jose Date: Fri, 18 Nov 2022 16:54:25 -0300 Subject: [PATCH] Release Candidate 1 --- Details.toc | 3 +- Details_TBC.toc | 1 + Details_Wrath.toc | 1 + Libs/DF/button.lua | 49 ++ Libs/DF/cooltip.lua | 6 +- Libs/DF/dropdown.lua | 104 ++- Libs/DF/fw.lua | 12 +- Libs/DF/panel.lua | 141 ++-- Libs/LibOpenRaid/Functions.lua | 157 +++- Libs/LibOpenRaid/GetPlayerInformation.lua | 84 +- Libs/LibOpenRaid/LibOpenRaid.lua | 158 ++-- .../ThingsToMantain_Dragonflight.lua | 73 +- Libs/LibOpenRaid/docs.txt | 6 + boot.lua | 302 ++----- classes/class_combat.lua | 1 + classes/class_custom.lua | 13 +- classes/class_damage.lua | 14 +- classes/class_error.lua | 1 + classes/class_heal.lua | 20 +- classes/class_instance.lua | 38 +- classes/class_resources.lua | 5 +- classes/class_spelldamage.lua | 1 + classes/class_spellhealing.lua | 3 +- classes/class_spellresources.lua | 1 + classes/class_spellutility.lua | 1 + classes/class_utility.lua | 23 +- classes/container_actors.lua | 1 + classes/container_pets.lua | 3 +- classes/container_segments.lua | 3 + classes/container_spells.lua | 1 + classes/custom_damagedone.lua | 1 + classes/custom_healingdone.lua | 3 +- classes/include_instance.lua | 5 +- core/control.lua | 1 + core/gears.lua | 30 + core/parser.lua | 154 ++-- frames/window_all_in_one.lua | 552 ++++++++++++ frames/window_aura_tracker.lua | 18 +- frames/window_cdtracker.lua | 117 ++- frames/window_main.lua | 8 +- frames/window_news.lua | 8 +- frames/window_options2_sections.lua | 15 +- frames/window_playerbreakdown_charts | 523 ++++++++++++ frames/window_scrolldamage.lua | 86 +- functions/api2.lua | 2 + functions/attributes.lua | 3 +- functions/autorun.lua | 1 + functions/boss.lua | 3 +- functions/bossmods.lua | 2 +- functions/buff.lua | 1 + functions/classes.lua | 3 +- functions/coach.lua | 1 + functions/currentdps.lua | 1 + functions/deathmenu.lua | 2 +- functions/deathrecap.lua | 1 + functions/dungeon.lua | 1 + functions/editmode.lua | 1 + functions/events.lua | 3 +- functions/hooks.lua | 3 +- functions/immersion.lua | 1 + functions/loaddata.lua | 3 +- functions/macros.lua | 1 + functions/mythicdungeon.lua | 3 +- functions/pack.lua | 1 + functions/plater.lua | 2 +- functions/playerclass.lua | 1 + functions/private.lua | 32 + functions/profiles.lua | 66 +- functions/raidinfo.lua | 1 + functions/rowanimation.lua | 3 +- functions/savedata.lua | 1 + functions/schedules.lua | 1 + functions/skins.lua | 1 + functions/slash.lua | 147 ++-- functions/spellcache.lua | 250 +++--- functions/spells.lua | 7 +- functions/testbars.lua | 2 +- functions/timedata.lua | 3 +- .../Details_DataStorage.toc | 2 +- .../Details_EncounterDetails.toc | 2 +- .../Details_RaidCheck/Details_RaidCheck.toc | 2 +- plugins/Details_Streamer/Details_Streamer.lua | 796 +++++++++--------- plugins/Details_Streamer/Details_Streamer.toc | 2 +- .../Details_TinyThreat/Details_TinyThreat.lua | 306 +++---- .../Details_TinyThreat/Details_TinyThreat.toc | 2 +- plugins/Details_Vanguard/Details_Vanguard.toc | 2 +- sounds/Details Horn.ogg | Bin 0 -> 60976 bytes sounds/Details Warning 100.ogg | Bin 0 -> 68683 bytes sounds/Details Warning 25.ogg | Bin 0 -> 68499 bytes sounds/Details Warning 50.ogg | Bin 0 -> 68536 bytes sounds/Details Warning 75.ogg | Bin 0 -> 68671 bytes sounds/threat_warning_1.ogg | Bin 94180 -> 0 bytes sounds/threat_warning_2.ogg | Bin 94134 -> 0 bytes sounds/threat_warning_3.ogg | Bin 94197 -> 0 bytes sounds/threat_warning_4.ogg | Bin 94182 -> 0 bytes startup.lua | 65 +- 96 files changed, 3053 insertions(+), 1427 deletions(-) create mode 100644 frames/window_all_in_one.lua create mode 100644 frames/window_playerbreakdown_charts create mode 100644 functions/private.lua create mode 100644 sounds/Details Horn.ogg create mode 100644 sounds/Details Warning 100.ogg create mode 100644 sounds/Details Warning 25.ogg create mode 100644 sounds/Details Warning 50.ogg create mode 100644 sounds/Details Warning 75.ogg delete mode 100644 sounds/threat_warning_1.ogg delete mode 100644 sounds/threat_warning_2.ogg delete mode 100644 sounds/threat_warning_3.ogg delete mode 100644 sounds/threat_warning_4.ogg diff --git a/Details.toc b/Details.toc index d6cd18d3..93f53886 100644 --- a/Details.toc +++ b/Details.toc @@ -1,4 +1,4 @@ -## Interface: 100000 +## Interface: 100002 ## Title: Details! Damage Meter ## Notes: Essential tool to impress that chick in your raid. ## SavedVariables: _detalhes_global @@ -28,6 +28,7 @@ core\util.lua API.lua functions\events.lua +functions\private.lua functions\profiles.lua functions\hooks.lua functions\bossmods.lua diff --git a/Details_TBC.toc b/Details_TBC.toc index bda10f6e..f6f064c2 100644 --- a/Details_TBC.toc +++ b/Details_TBC.toc @@ -25,6 +25,7 @@ indent.lua core\util.lua API.lua +functions\private.lua functions\profiles.lua functions\hooks.lua functions\bossmods.lua diff --git a/Details_Wrath.toc b/Details_Wrath.toc index 8f3fa5db..ed6b0b09 100644 --- a/Details_Wrath.toc +++ b/Details_Wrath.toc @@ -26,6 +26,7 @@ indent.lua core\util.lua API.lua +functions\private.lua functions\profiles.lua functions\hooks.lua functions\bossmods.lua diff --git a/Libs/DF/button.lua b/Libs/DF/button.lua index a8f45c22..fae0155d 100644 --- a/Libs/DF/button.lua +++ b/Libs/DF/button.lua @@ -1029,3 +1029,52 @@ end return colorPickButton end + + function DF:SetRegularButtonTexture(button, texture, left, right, top, bottom) + if (type(left) == "table") then + left, right, top, bottom = unpack(left) + end + + if (not left) then + left, right, top, bottom = 0, 1, 0, 1 + end + + local atlas + if (type(texture) == "string") then + atlas = C_Texture.GetAtlasInfo(texture) + end + + local normalTexture = button:GetNormalTexture() + local pushedTexture = button:GetPushedTexture() + local highlightTexture = button:GetHightlightTexture() + local disabledTexture = button:GetDisabledTexture() + + if (atlas) then + normalTexture:SetAtlas(texture) + pushedTexture:SetAtlas(texture) + highlightTexture:SetAtlas(texture) + disabledTexture:SetAtlas(texture) + else + normalTexture:SetTexture(texture) + pushedTexture:SetTexture(texture) + highlightTexture:SetTexture(texture) + disabledTexture:SetTexture(texture) + normalTexture:SetTexCoord(left, right, top, bottom) + pushedTexture:SetTexCoord(left, right, top, bottom) + highlightTexture:SetTexCoord(left, right, top, bottom) + disabledTexture:SetTexCoord(left, right, top, bottom) + end + end + + function DF:SetRegularButtonVertexColor(button, ...) + local r, g, b, a = DF:ParseColor(...) + local normalTexture = button:GetNormalTexture() + local pushedTexture = button:GetPushedTexture() + local highlightTexture = button:GetHightlightTexture() + local disabledTexture = button:GetDisabledTexture() + + normalTexture:SetVertexColor(r, g, b, a) + pushedTexture:SetVertexColor(r, g, b, a) + highlightTexture:SetVertexColor(r, g, b, a) + disabledTexture:SetVertexColor(r, g, b, a) + end \ No newline at end of file diff --git a/Libs/DF/cooltip.lua b/Libs/DF/cooltip.lua index 17e5e070..f31d22a3 100644 --- a/Libs/DF/cooltip.lua +++ b/Libs/DF/cooltip.lua @@ -28,6 +28,8 @@ function DF:CreateCoolTip() return end + local maxStatusBarValue = 100000000 + local defaultBackdrop = {bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}} local defaultBackdropColor = {0.1215, 0.1176, 0.1294, 0.8000} @@ -1159,7 +1161,7 @@ function DF:CreateCoolTip() function gameCooltip:StatusBar(menuButton, statusBarSettings) if (statusBarSettings) then - menuButton.statusbar:SetValue(statusBarSettings[1]) + menuButton.statusbar:SetValue(Clamp(statusBarSettings[1], 0, maxStatusBarValue)) menuButton.statusbar:SetStatusBarColor(statusBarSettings[2], statusBarSettings[3], statusBarSettings[4], statusBarSettings[5]) menuButton.statusbar:SetHeight(20 + (gameCooltip.OptionsTable.StatusBarHeightMod or 0)) @@ -1171,7 +1173,7 @@ function DF:CreateCoolTip() end if (statusBarSettings[7]) then - menuButton.statusbar2:SetValue(statusBarSettings[7].value) + menuButton.statusbar2:SetValue(Clamp(statusBarSettings[7].value, 0, maxStatusBarValue)) menuButton.statusbar2.texture:SetTexture(statusBarSettings[7].texture or [[Interface\RaidFrame\Raid-Bar-Hp-Fill]]) if (statusBarSettings[7].specialSpark) then menuButton.spark2:Show() diff --git a/Libs/DF/dropdown.lua b/Libs/DF/dropdown.lua index bf47ce38..eb79027f 100644 --- a/Libs/DF/dropdown.lua +++ b/Libs/DF/dropdown.lua @@ -191,10 +191,10 @@ DF:Mixin(DropDownMetaFunctions, DF.ScriptHookMixin) --menu width and height function DropDownMetaFunctions:SetMenuSize(width, height) if (width) then - return rawset(self, "realsizeW", width) + rawset(self, "realsizeW", width) end if (height) then - return rawset(self, "realsizeH", height) + rawset(self, "realsizeH", height) end end @@ -515,6 +515,18 @@ function DropDownMetaFunctions:Selected(thisOption) self.label:SetPoint("left", self.label:GetParent(), "left", 4, 0) end + if (thisOption.centerTexture) then + self.dropdown.centerTexture:SetTexture(thisOption.centerTexture) + else + self.dropdown.centerTexture:SetTexture("") + end + + if (thisOption.rightTexture) then + self.dropdown.rightTexture:SetTexture(thisOption.rightTexture) + else + self.dropdown.rightTexture:SetTexture("") + end + if (thisOption.statusbar) then self.statusbar:SetTexture(thisOption.statusbar) if (thisOption.statusbarcolor) then @@ -540,6 +552,7 @@ function DropDownMetaFunctions:Selected(thisOption) self:SetValue(thisOption.value) end +--on click on any option in the dropdown function DetailsFrameworkDropDownOptionClick(button) --update name and icon on main frame button.object:Selected(button.table) @@ -555,9 +568,11 @@ function DetailsFrameworkDropDownOptionClick(button) button.object.myvaluelabel = button.table.label end +--on click on the dropdown show the menu frame with the options to select function DropDownMetaFunctions:Open() self.dropdown.dropdownframe:Show() self.dropdown.dropdownborder:Show() + self.opened = true if (lastOpened) then lastOpened:Close() @@ -565,6 +580,7 @@ function DropDownMetaFunctions:Open() lastOpened = self end +--close the menu showing the options function DropDownMetaFunctions:Close() --when menu is being close, just hide the border and the script will call back this again if (self.dropdown.dropdownborder:IsShown()) then @@ -585,6 +601,7 @@ function DetailsFrameworkDropDownOptionsFrameOnHide(self) self:GetParent().MyObject:Close() end +--on enter an option in the menu dropdown function DetailsFrameworkDropDownOptionOnEnter(self) if (self.table.desc) then GameCooltip2:Preset(2) @@ -603,10 +620,22 @@ function DetailsFrameworkDropDownOptionOnEnter(self) self.tooltip = true end + if (self.table.audiocue) then + if (DF.CurrentSoundHandle) then + StopSound(DF.CurrentSoundHandle, 0.1) + end + + local willPlay, soundHandle = PlaySoundFile(self.table.audiocue, "Master") + if (willPlay) then + DF.CurrentSoundHandle = soundHandle + end + end + self:GetParent().mouseover:SetPoint("left", self) self:GetParent().mouseover:Show() end +--on leave an option on the menu dropdown function DetailsFrameworkDropDownOptionOnLeave(frame) if (frame.table.desc) then GameCooltip2:ShowMe(false) @@ -615,6 +644,7 @@ function DetailsFrameworkDropDownOptionOnLeave(frame) end --@button is the raw button frame, object is the button capsule +--click on the main dropdown frame (not the menu options popup) function DetailsFrameworkDropDownOnMouseDown(button, buttontype) local object = button.MyObject @@ -645,9 +675,9 @@ function DetailsFrameworkDropDownOnMouseDown(button, buttontype) end for tindex, thisOption in ipairs(optionsTable) do - local show = isOptionVisible(button, thisOption) + local bIsOptionVisible = isOptionVisible(button, thisOption) - if (show) then + if (bIsOptionVisible) then local thisOptionFrame = object.menus[i] showing = showing + 1 @@ -657,14 +687,26 @@ function DetailsFrameworkDropDownOnMouseDown(button, buttontype) thisOptionFrame = DF:CreateDropdownButton(parent, name) local optionIndex = i - 1 - thisOptionFrame:SetPoint("topleft", parent, "topleft", 1, (-optionIndex*20)-0) - thisOptionFrame:SetPoint("topright", parent, "topright", 0, (-optionIndex*20)-0) + thisOptionFrame:SetPoint("topleft", parent, "topleft", 1, (-optionIndex * 20)) + thisOptionFrame:SetPoint("topright", parent, "topright", 0, (-optionIndex * 20)) thisOptionFrame.object = object object.menus[i] = thisOptionFrame end thisOptionFrame:SetFrameStrata(thisOptionFrame:GetParent():GetFrameStrata()) - thisOptionFrame:SetFrameLevel(thisOptionFrame:GetParent():GetFrameLevel()+10) + thisOptionFrame:SetFrameLevel(thisOptionFrame:GetParent():GetFrameLevel() + 10) + + if (thisOption.rightTexture) then + thisOptionFrame.rightTexture:SetTexture(thisOption.rightTexture) + else + thisOptionFrame.rightTexture:SetTexture("") + end + + if (thisOption.centerTexture) then + thisOptionFrame.centerTexture:SetTexture(thisOption.centerTexture) + else + thisOptionFrame.centerTexture:SetTexture("") + end thisOptionFrame.icon:SetTexture(thisOption.icon) if (thisOption.icon) then @@ -742,8 +784,8 @@ function DetailsFrameworkDropDownOnMouseDown(button, buttontype) thisOptionFrame.table = thisOption local labelwitdh = thisOptionFrame.label:GetStringWidth() - if (labelwitdh+40 > frameWitdh) then - frameWitdh = labelwitdh+40 + if (labelwitdh + 40 > frameWitdh) then + frameWitdh = labelwitdh + 40 end thisOptionFrame:Show() @@ -763,7 +805,7 @@ function DetailsFrameworkDropDownOnMouseDown(button, buttontype) local size = object.realsizeH - if (showing*20 > size) then + if (showing * 20 > size) then --show scrollbar and setup scroll object:ShowScroll() scrollFrame:EnableMouseWheel(true) @@ -817,6 +859,10 @@ function DetailsFrameworkDropDownOnMouseDown(button, buttontype) end object:Open() + + --scrollFrame:SetHeight(300) + --scrollChild:SetHeight(300) + --scrollBorder:SetHeight(300) else --clear menu end @@ -1050,8 +1096,8 @@ function DF:NewDropDown(parent, container, name, member, width, height, func, de end dropDownObject.func = func - dropDownObject.realsizeW = 150 - dropDownObject.realsizeH = 150 + dropDownObject.realsizeW = 165 + dropDownObject.realsizeH = 300 dropDownObject.FixedValue = nil dropDownObject.opened = false dropDownObject.menus = {} @@ -1138,6 +1184,16 @@ function DF:CreateNewDropdownFrame(parent, name) icon:SetVertexColor(1, 1, 1, 0.4) newDropdownFrame.icon = icon + local rightTexture = newDropdownFrame:CreateTexture("$parent_RightTexture", "OVERLAY") + rightTexture:SetPoint("right", newDropdownFrame, "right", -2, 0) + rightTexture:SetSize(20, 20) + newDropdownFrame.rightTexture = rightTexture + + local centerTexture = newDropdownFrame:CreateTexture("$parent_CenterTexture", "OVERLAY") + centerTexture:SetPoint("center", newDropdownFrame, "center", 0, 0) + centerTexture:SetSize(20, 20) + newDropdownFrame.centerTexture = centerTexture + local text = newDropdownFrame:CreateFontString("$parent_Text", "ARTWORK", "GameFontHighlightSmall") text:SetPoint("left", icon, "right", 5, 0) text:SetJustifyH("left") @@ -1168,33 +1224,31 @@ function DF:CreateNewDropdownFrame(parent, name) local border = CreateFrame("frame", "$Parent_Border", newDropdownFrame, "BackdropTemplate") border:Hide() border:SetFrameStrata("FULLSCREEN") - border:SetSize(150, 150) + border:SetSize(150, 300) border:SetPoint("topleft", newDropdownFrame, "bottomleft", 0, 0) border:SetBackdrop(borderBackdrop) border:SetScript("OnHide", DetailsFrameworkDropDownOptionsFrameOnHide) border:SetBackdropColor(0, 0, 0, 0.92) - border:SetBackdropBorderColor(0, 0, 0, 1) + border:SetBackdropBorderColor(.2, .2, .2, 0.8) newDropdownFrame.dropdownborder = border local scroll = CreateFrame("ScrollFrame", "$Parent_ScrollFrame", newDropdownFrame, "BackdropTemplate") scroll:SetFrameStrata("FULLSCREEN") - scroll:SetSize(150, 150) + scroll:SetSize(150, 300) scroll:SetPoint("topleft", newDropdownFrame, "bottomleft", 0, 0) scroll:Hide() newDropdownFrame.dropdownframe = scroll local child = CreateFrame("frame", "$Parent_ScrollChild", scroll, "BackdropTemplate") - child:SetSize(150, 150) + --child:SetAllPoints() + child:SetSize(150, 300) child:SetPoint("topleft", scroll, "topleft", 0, 0) - child:SetBackdrop(childBackdrop) - child:SetBackdropColor(0, 0, 0, 1) + DF:ApplyStandardBackdrop(child) local backgroundTexture = child:CreateTexture(nil, "background") backgroundTexture:SetAllPoints() backgroundTexture:SetColorTexture(0, 0, 0, 1) - DF:ApplyStandardBackdrop(child) - local selected = child:CreateTexture("$parent_SelectedTexture", "BACKGROUND") selected:SetSize(150, 16) selected:SetPoint("left", child, "left", 2, 0) @@ -1243,6 +1297,16 @@ function DF:CreateDropdownButton(parent, name) rightButton:SetPoint("right", newButton, "right", -2, 0) rightButton:Hide() + local rightTexture = newButton:CreateTexture("$parent_RightTexture", "OVERLAY") + rightTexture:SetPoint("right", newButton, "right", -2, 0) + rightTexture:SetSize(20, 20) + newButton.rightTexture = rightTexture + + local centerTexture = newButton:CreateTexture("$parent_CenterTexture", "OVERLAY") + centerTexture:SetPoint("center", newButton, "center", 0, 0) + centerTexture:SetSize(20, 20) + newButton.centerTexture = centerTexture + newButton:SetScript("OnMouseDown", DetailsFrameworkDropDownOptionClick) newButton:SetScript("OnEnter", DetailsFrameworkDropDownOptionOnEnter) newButton:SetScript("OnLeave", DetailsFrameworkDropDownOptionOnLeave) diff --git a/Libs/DF/fw.lua b/Libs/DF/fw.lua index 54b47338..e1bbed6c 100644 --- a/Libs/DF/fw.lua +++ b/Libs/DF/fw.lua @@ -1,6 +1,6 @@ -local dversion = 387 +local dversion = 393 local major, minor = "DetailsFramework-1.0", dversion local DF, oldminor = LibStub:NewLibrary(major, minor) @@ -694,7 +694,7 @@ function DF:GroupIterator(callback, ...) end end -function DF:IntegerToTimer(value) +function DF:IntegerToTimer(value) --~formattime return "" .. floor(value/60) .. ":" .. format("%02.f", value%60) end @@ -3372,7 +3372,12 @@ end --this is most copied from the wow client code, few changes applied to customize it function DF:CreateGlowOverlay (parent, antsColor, glowColor) - local glowFrame = CreateFrame("frame", parent:GetName() and "$parentGlow2" or "OverlayActionGlow" .. math.random(1, 10000000), parent, "ActionBarButtonSpellActivationAlert") + local pName = parent:GetName() + local fName = pName and (pName.."Glow2") or "OverlayActionGlow" .. math.random(1, 10000000) + if fName and string.len(fName) > 50 then -- shorten to work around too long names + fName = strsub(fName, string.len(fName)-49) + end + local glowFrame = CreateFrame("frame", fName, parent, "ActionBarButtonSpellActivationAlert") glowFrame:HookScript ("OnShow", glow_overlay_onshow) glowFrame:HookScript ("OnHide", glow_overlay_onhide) @@ -4827,6 +4832,7 @@ end ["getglobal"] = true, ["setmetatable"] = true, ["DevTools_DumpCommand"] = true, + ["ChatEdit_SendText"] = true, --avoid creating macros ["SetBindingMacro"] = true, diff --git a/Libs/DF/panel.lua b/Libs/DF/panel.lua index 1bf14dcf..e2ba0eaf 100644 --- a/Libs/DF/panel.lua +++ b/Libs/DF/panel.lua @@ -1971,48 +1971,64 @@ function detailsFramework:CreateScaleBar(frame, config) --~scale end local no_options = {} -function detailsFramework:CreateSimplePanel(parent, w, h, title, name, panel_options, db) - - if (db and name and not db [name]) then - db [name] = {scale = 1} +--[=[ + options available to panel_options: + NoScripts = false, --if true, won't set OnMouseDown and OnMouseUp (won't be movable) + NoTUISpecialFrame = false, --if true, won't add the frame to 'UISpecialFrames' + DontRightClickClose = false, --if true, won't make the frame close when clicked with the right mouse button + UseScaleBar = false, --if true, will create a scale bar in the top left corner (require a table on 'db' to save the scale) + UseStatusBar = false, --if true, creates a status bar at the bottom of the frame (frame.StatusBar) + NoCloseButton = false, --if true, won't show the close button + NoTitleBar = false, --if true, don't create the title bar +]=] +function detailsFramework:CreateSimplePanel(parent, width, height, title, frameName, panelOptions, savedVariableTable) + if (savedVariableTable and frameName and not savedVariableTable[frameName]) then + savedVariableTable[frameName] = { + scale = 1 + } end - if (not name) then - name = "DetailsFrameworkSimplePanel" .. detailsFramework.SimplePanelCounter + if (not frameName) then + frameName = "DetailsFrameworkSimplePanel" .. detailsFramework.SimplePanelCounter detailsFramework.SimplePanelCounter = detailsFramework.SimplePanelCounter + 1 end if (not parent) then parent = UIParent end - panel_options = panel_options or no_options + panelOptions = panelOptions or no_options - local f = CreateFrame("frame", name, UIParent,"BackdropTemplate") - f:SetSize(w or 400, h or 250) - f:SetPoint("center", UIParent, "center", 0, 0) - f:SetFrameStrata("FULLSCREEN") - f:EnableMouse() - f:SetMovable(true) - f:SetBackdrop(SimplePanel_frame_backdrop) - f:SetBackdropColor(unpack(SimplePanel_frame_backdrop_color)) - f:SetBackdropBorderColor(unpack(SimplePanel_frame_backdrop_border_color)) + local simplePanel = CreateFrame("frame", frameName, UIParent,"BackdropTemplate") + simplePanel:SetSize(width or 400, height or 250) + simplePanel:SetPoint("center", UIParent, "center", 0, 0) + simplePanel:SetFrameStrata("FULLSCREEN") + simplePanel:EnableMouse() + simplePanel:SetMovable(true) + simplePanel:SetBackdrop(SimplePanel_frame_backdrop) + simplePanel:SetBackdropColor(unpack(SimplePanel_frame_backdrop_color)) + simplePanel:SetBackdropBorderColor(unpack(SimplePanel_frame_backdrop_border_color)) - f.DontRightClickClose = panel_options.DontRightClickClose + simplePanel.DontRightClickClose = panelOptions.DontRightClickClose - if (not panel_options.NoTUISpecialFrame) then - tinsert(UISpecialFrames, name) + if (not panelOptions.NoTUISpecialFrame) then + tinsert(UISpecialFrames, frameName) end - local title_bar = CreateFrame("frame", name .. "TitleBar", f,"BackdropTemplate") - title_bar:SetPoint("topleft", f, "topleft", 2, -3) - title_bar:SetPoint("topright", f, "topright", -2, -3) - title_bar:SetHeight(20) - title_bar:SetBackdrop(SimplePanel_frame_backdrop) - title_bar:SetBackdropColor(.2, .2, .2, 1) - title_bar:SetBackdropBorderColor(0, 0, 0, 1) - f.TitleBar = title_bar + if (panelOptions.UseStatusBar) then + local statusBar = detailsFramework:CreateStatusBar(simplePanel) + simplePanel.StatusBar = statusBar + end - local close = CreateFrame("button", name and name .. "CloseButton", title_bar) + local titleBar = CreateFrame("frame", frameName .. "TitleBar", simplePanel,"BackdropTemplate") + titleBar:SetPoint("topleft", simplePanel, "topleft", 2, -3) + titleBar:SetPoint("topright", simplePanel, "topright", -2, -3) + titleBar:SetHeight(20) + titleBar:SetBackdrop(SimplePanel_frame_backdrop) + titleBar:SetBackdropColor(.2, .2, .2, 1) + titleBar:SetBackdropBorderColor(0, 0, 0, 1) + simplePanel.TitleBar = titleBar + + local close = CreateFrame("button", frameName and frameName .. "CloseButton", titleBar) close:SetFrameLevel(detailsFramework.FRAMELEVEL_OVERLAY) close:SetSize(16, 16) @@ -2025,31 +2041,37 @@ function detailsFramework:CreateSimplePanel(parent, w, h, title, name, panel_opt close:SetAlpha(0.7) close:SetScript("OnClick", simple_panel_close_click) - f.Close = close + simplePanel.Close = close - local title_string = title_bar:CreateFontString(name and name .. "Title", "overlay", "GameFontNormal") - title_string:SetTextColor(.8, .8, .8, 1) - title_string:SetText(title or "") - f.Title = title_string + local titleText = titleBar:CreateFontString(frameName and frameName .. "Title", "overlay", "GameFontNormal") + titleText:SetTextColor(.8, .8, .8, 1) + titleText:SetText(title or "") + simplePanel.Title = titleText - if (panel_options.UseScaleBar and db [name]) then - detailsFramework:CreateScaleBar (f, db [name]) - f:SetScale(db [name].scale) + if (panelOptions.UseScaleBar and savedVariableTable [frameName]) then + detailsFramework:CreateScaleBar (simplePanel, savedVariableTable [frameName]) + simplePanel:SetScale(savedVariableTable [frameName].scale) end - f.Title:SetPoint("center", title_bar, "center") - f.Close:SetPoint("right", title_bar, "right", -2, 0) + simplePanel.Title:SetPoint("center", titleBar, "center") + simplePanel.Close:SetPoint("right", titleBar, "right", -2, 0) - if (panel_options.NoCloseButton) then - f.Close:Hide() + if (panelOptions.NoCloseButton) then + simplePanel.Close:Hide() end - f:SetScript("OnMouseDown", simple_panel_mouse_down) - f:SetScript("OnMouseUp", simple_panel_mouse_up) + if (panelOptions.NoTitleBar) then + simplePanel.TitleBar:Hide() + end - f.SetTitle = simple_panel_settitle + if (not panelOptions.NoScripts) then + simplePanel:SetScript("OnMouseDown", simple_panel_mouse_down) + simplePanel:SetScript("OnMouseUp", simple_panel_mouse_up) + end - return f + simplePanel.SetTitle = simple_panel_settitle + + return simplePanel end local Panel1PxBackdrop = {bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 64, @@ -7622,6 +7644,9 @@ detailsFramework.CastFrameFunctions = { CanLazyTick = true, --if true, it'll execute the lazy tick function, it ticks in a much slower pace comparece with the regular tick LazyUpdateCooldown = 0.2, --amount of time to wait for the next lazy update, this updates non critical things like the cast timer + FillOnInterrupt = true, + HideSparkOnInterrupt = true, + --default size Width = 100, Height = 20, @@ -8268,12 +8293,26 @@ detailsFramework.CastFrameFunctions = { UNIT_SPELLCAST_STOP = function(self, unit, ...) local unitID, castID, spellID = ... if (self.castID == castID) then - self.Spark:Hide() + if (self.interrupted) then + if (self.Settings.HideSparkOnInterrupt) then + self.Spark:Hide() + end + else + self.Spark:Hide() + end + self.percentText:Hide() local value = self:GetValue() local _, maxValue = self:GetMinMaxValues() - self:SetValue(self.maxValue or maxValue or 1) + + if (self.interrupted) then + if (self.Settings.FillOnInterrupt) then + self:SetValue(self.maxValue or maxValue or 1) + end + else + self:SetValue(self.maxValue or maxValue or 1) + end self.casting = nil self.finished = true @@ -8357,12 +8396,18 @@ detailsFramework.CastFrameFunctions = { self.channeling = nil self.interrupted = true self.finished = true - self:SetValue(self.maxValue or select(2, self:GetMinMaxValues()) or 1) + + if (self.Settings.FillOnInterrupt) then + self:SetValue(self.maxValue or select(2, self:GetMinMaxValues()) or 1) + end + + if (self.Settings.HideSparkOnInterrupt) then + self.Spark:Hide() + end local castColor = self:GetCastColor() self:SetColor (castColor) --SetColor handles with ParseColors() - self.Spark:Hide() self.percentText:Hide() self.Text:SetText(INTERRUPTED) --auto locale within the global namespace diff --git a/Libs/LibOpenRaid/Functions.lua b/Libs/LibOpenRaid/Functions.lua index 216db14c..c8db2b63 100644 --- a/Libs/LibOpenRaid/Functions.lua +++ b/Libs/LibOpenRaid/Functions.lua @@ -19,6 +19,10 @@ local CONST_COOLDOWN_TYPE_DEFENSIVE_RAID = 4 local CONST_COOLDOWN_TYPE_UTILITY = 5 local CONST_COOLDOWN_TYPE_INTERRUPT = 6 +--hold spellIds and which custom caches the spell is in +--map[spellId] = map[filterName] = true +local spellsWithCustomFiltersCache = {} + --simple non recursive table copy function openRaidLib.TCopy(tableToReceive, tableToCopy) if (not tableToCopy) then @@ -137,8 +141,9 @@ function openRaidLib.GetUnitID(playerName) return openRaidLib.UnitIDCache[playerName] or playerName end - -local filterStringToCooldownType = { --report: "filterStringToCooldownType doesn't include the new filters." +--report: "filterStringToCooldownType doesn't include the new filters." +--answer: custom filter does not have a cooldown type, it is a mesh of spells +local filterStringToCooldownType = { ["defensive-raid"] = CONST_COOLDOWN_TYPE_DEFENSIVE_RAID, ["defensive-target"] = CONST_COOLDOWN_TYPE_DEFENSIVE_TARGET, ["defensive-personal"] = CONST_COOLDOWN_TYPE_DEFENSIVE_PERSONAL, @@ -147,34 +152,116 @@ local filterStringToCooldownType = { --report: "filterStringToCooldownType doesn ["interrupt"] = CONST_COOLDOWN_TYPE_INTERRUPT, } -function openRaidLib.CooldownManager.DoesSpellPassFilters(spellId, filters) - local allCooldownsData = LIB_OPEN_RAID_COOLDOWNS_INFO - local cooldownData = allCooldownsData[spellId] - if (cooldownData) then - for filter in filters:gmatch("([^,%s]+)") do - local cooldownType = filterStringToCooldownType[filter] - if (cooldownData.type == cooldownType) then - return true - elseif (cooldownData[filter]) then --custom filter - return true - end - end - else - return false +local filterStringToCooldownTypeReverse = { + [CONST_COOLDOWN_TYPE_DEFENSIVE_RAID] = "defensive-raid", + [CONST_COOLDOWN_TYPE_DEFENSIVE_TARGET] = "defensive-target", + [CONST_COOLDOWN_TYPE_DEFENSIVE_PERSONAL] = "defensive-personal", + [CONST_COOLDOWN_TYPE_OFFENSIVE] = "ofensive", + [CONST_COOLDOWN_TYPE_UTILITY] = "utility", + [CONST_COOLDOWN_TYPE_INTERRUPT] = "interrupt", +} + +local removeSpellFromCustomFilterCache = function(spellId, filterName) + local spellFilterCache = spellsWithCustomFiltersCache[spellId] + if (spellFilterCache) then + spellFilterCache[filterName] = nil end end +local addSpellToCustomFilterCache = function(spellId, filterName) + local spellFilterCache = spellsWithCustomFiltersCache[spellId] + if (not spellFilterCache) then + spellFilterCache = {} + spellsWithCustomFiltersCache[spellId] = spellFilterCache + end + spellFilterCache[filterName] = true +end + +local getSpellCustomFiltersFromCache = function(spellId) + local spellFilterCache = spellsWithCustomFiltersCache[spellId] + local result = {} + if (spellFilterCache) then + for filterName in pairs(spellFilterCache) do + result[filterName] = true + end + end + return result +end + +--LIB_OPEN_RAID_COOLDOWNS_INFO store all registered cooldowns in the file ThingsToMantain_ +function openRaidLib.CooldownManager.GetAllRegisteredCooldowns() + return LIB_OPEN_RAID_COOLDOWNS_INFO +end + +function openRaidLib.CooldownManager.GetCooldownInfo(spellId) + return openRaidLib.CooldownManager.GetAllRegisteredCooldowns()[spellId] +end + +--return a map of filter names which the spell is in, map: {[filterName] = true} +--API Call documented in the docs.txt as openRaidLib.GetSpellFilters() the declaration is on the main file of the lib +function openRaidLib.CooldownManager.GetSpellFilters(spellId, defaultFilterOnly, customFiltersOnly) + local result = {} + + if (not customFiltersOnly) then + local thisCooldownInfo = openRaidLib.CooldownManager.GetCooldownInfo(spellId) + local cooldownTypeFilter = filterStringToCooldownTypeReverse[thisCooldownInfo.type] + if (cooldownTypeFilter) then + result[cooldownTypeFilter] = true + end + end + + if (defaultFilterOnly) then + return result + end + + local customFilters = getSpellCustomFiltersFromCache(spellId) + for filterName in pairs(customFilters) do + result[filterName] = true + end + + return result +end + +function openRaidLib.CooldownManager.DoesSpellPassFilters(spellId, filters) + --table with information about a single cooldown + local thisCooldownInfo = openRaidLib.CooldownManager.GetCooldownInfo(spellId) + --check if this spell is registered as a cooldown + if (thisCooldownInfo) then + for filter in filters:gmatch("([^,%s]+)") do + --filterStringToCooldownType is a map where the key is the filter name and value is the cooldown type + local cooldownType = filterStringToCooldownType[filter] + --cooldown type is a number from 1 to 8 telling its type + if (cooldownType == thisCooldownInfo.type) then + return true + + --check for custom filter, the custom filter name is set as a key in the cooldownInfo: cooldownInfo[filterName] = true + elseif (thisCooldownInfo[filter]) then + return true + end + end + end + + return false +end + local getCooldownsForFilter = function(unitName, allCooldowns, unitDataFilteredCache, filter) - local allCooldownsData = LIB_OPEN_RAID_COOLDOWNS_INFO + local allCooldownsData = openRaidLib.CooldownManager.GetAllRegisteredCooldowns() local filterTable = unitDataFilteredCache[filter] --if the unit already sent its full list of cooldowns, the cache can be built --when NeedRebuildFilters is true, HasFullCooldownList is always true - --bug: filterTable is nil and HasFullCooldownList is also nil, happening after leaving a grou´p internal callback - if ((not filterTable and openRaidLib.CooldownManager.HasFullCooldownList[unitName]) or openRaidLib.CooldownManager.NeedRebuildFilters[unitName]) then + --bug: filterTable is nil and HasFullCooldownList is also nil, happening after leaving a group internal callback + --November 06, 2022 note: is this bug still happening? + + local doesNotHaveFilterYet = not filterTable and openRaidLib.CooldownManager.HasFullCooldownList[unitName] + local isDirty = openRaidLib.CooldownManager.NeedRebuildFilters[unitName] + + if (doesNotHaveFilterYet or isDirty) then + --reset the filterTable filterTable = {} unitDataFilteredCache[filter] = filterTable + -- for spellId, cooldownInfo in pairs(allCooldowns) do local cooldownData = allCooldownsData[spellId] if (cooldownData) then @@ -190,27 +277,41 @@ local getCooldownsForFilter = function(unitName, allCooldowns, unitDataFilteredC return filterTable end +--API Call +--@filterName: a string representing a name of the filter +--@spells: an array of spellIds +--important: a spell can be part of any amount of custom filters, +--declaring a spell on a new filter does NOT remove it from other filters where it was previously added function openRaidLib.AddCooldownFilter(filterName, spells) --integrity check if (type(filterName) ~= "string") then openRaidLib.DiagnosticError("Usage: openRaidLib.AddFilter(string: filterName, table: spells)", debugstack()) return false - end - if (type(spells) ~= "table") then + elseif (type(spells) ~= "table") then openRaidLib.DiagnosticError("Usage: openRaidLib.AddFilter(string: filterName, table: spells)", debugstack()) return false end - --clear previous filter spell table of the same name - for spellId, cooldownData in pairs(LIB_OPEN_RAID_COOLDOWNS_INFO) do + local allCooldownsData = openRaidLib.CooldownManager.GetAllRegisteredCooldowns() + + --iterate among the all cooldowns table and erase the filterName from all spells + for spellId, cooldownData in pairs(allCooldownsData) do cooldownData[filterName] = nil + removeSpellFromCustomFilterCache(spellId, filterName) end - local allCooldownsData = LIB_OPEN_RAID_COOLDOWNS_INFO + --iterate among spells passed within the spells table and set the new filter on them + --problem: the filter is set directly into the global cooldown table + --this could in rare cases make an addon to override settings of another addon for spellIndex, spellId in ipairs(spells) do local cooldownData = allCooldownsData[spellId] - cooldownData[filterName] = true + if (cooldownData) then + cooldownData[filterName] = true + addSpellToCustomFilterCache(spellId, filterName) + else + openRaidLib.DiagnosticError("A spellId on your spell list for openRaidLib.AddFilter isn't registered as cooldown:", spellId, debugstack()) + end end --tag all cache filters as dirt @@ -222,8 +323,9 @@ function openRaidLib.AddCooldownFilter(filterName, spells) return true end ---@allCooldowns: all cooldowns sent by an unit, {[spellId] = cooldownInfo} ---@filters: string with filters, "defensive-raid, "defensive-personal" +--API Call +--@allCooldowns: all cooldowns sent by a unit, map{[spellId] = cooldownInfo} +--@filters: string with filter names: array{"defensive-raid, "defensive-personal"} function openRaidLib.FilterCooldowns(unitName, allCooldowns, filters) local allDataFiltered = openRaidLib.CooldownManager.UnitDataFilterCache --["unitName"] = {defensive-raid = {[spellId = cooldownInfo]}} local unitDataFilteredCache = allDataFiltered[unitName] @@ -238,7 +340,6 @@ function openRaidLib.FilterCooldowns(unitName, allCooldowns, filters) return filterAlreadyInCache end - local allCooldownsData = LIB_OPEN_RAID_COOLDOWNS_INFO local resultFilters = {} --break the string into pieces and filter cooldowns diff --git a/Libs/LibOpenRaid/GetPlayerInformation.lua b/Libs/LibOpenRaid/GetPlayerInformation.lua index e276887b..a9ebd010 100644 --- a/Libs/LibOpenRaid/GetPlayerInformation.lua +++ b/Libs/LibOpenRaid/GetPlayerInformation.lua @@ -18,6 +18,7 @@ local CONST_TALENT_VERSION_DRAGONFLIGHT = 5 local CONST_BTALENT_VERSION_COVENANTS = 9 local CONST_SPELLBOOK_CLASSSPELLS_TABID = 2 +local CONST_SPELLBOOK_GENERAL_TABID = 1 local isTimewalkWoW = function() local _, _, _, buildInfo = GetBuildInfo() @@ -418,6 +419,23 @@ local getSpellListAsHashTableFromSpellBook = function() --this line might not be compatible with classic local specId, specName, _, specIconTexture = GetSpecializationInfo(GetSpecialization()) local classNameLoc, className, classId = UnitClass("player") + local locPlayerRace, playerRace, playerRaceId = UnitRace("player") + + --get racials from the general tab + local tabName, tabTexture, offset, numSpells, isGuild, offspecId = GetSpellTabInfo(CONST_SPELLBOOK_GENERAL_TABID) + offset = offset + 1 + local tabEnd = offset + numSpells + for entryOffset = offset, tabEnd - 1 do + local spellType, spellId = GetSpellBookItemInfo(entryOffset, "player") + if (spellId and LIB_OPEN_RAID_COOLDOWNS_INFO[spellId] and LIB_OPEN_RAID_COOLDOWNS_INFO[spellId].raceid == playerRaceId) then + spellId = C_SpellBook.GetOverrideSpell(spellId) + local spellName = GetSpellInfo(spellId) + local isPassive = IsPassiveSpell(entryOffset, "player") + if (spellName and not isPassive) then + completeListOfSpells[spellId] = true + end + end + end --get spells from the Spec spellbook for i = 1, GetNumSpellTabs() do @@ -464,13 +482,13 @@ end local updateCooldownAvailableList = function() table.wipe(LIB_OPEN_RAID_PLAYERCOOLDOWNS) - local _, playerClass = UnitClass("player") + local locPlayerRace, playerRace, playerRaceId = UnitRace("player") local spellBookSpellList = getSpellListAsHashTableFromSpellBook() --build a list of all spells assigned as cooldowns for the player class for spellID, spellData in pairs(LIB_OPEN_RAID_COOLDOWNS_INFO) do - if (spellData.class == playerClass) then + if (spellData.class == playerClass or spellData.raceid == playerRaceId) then --need to implement here to get the racial as racial cooldowns does not carry a class if (spellBookSpellList[spellID]) then LIB_OPEN_RAID_PLAYERCOOLDOWNS[spellID] = spellData end @@ -538,32 +556,78 @@ function openRaidLib.CooldownManager.GetPlayerCooldownList() return {} end +--aura frame handles only UNIT_AURA events to grab the duration of the buff placed by the aura +local IS_NEW_UNIT_AURA_AVAILABLE = C_UnitAuras and C_UnitAuras.GetAuraDataBySlot and true + +local auraSpellID +local foundAuraDuration + +local handleBuffAura = function(aura) + local auraInfo = C_UnitAuras.GetAuraDataByAuraInstanceID("player", aura.auraInstanceID) + if (auraInfo) then + local spellId = auraInfo.spellId + if (auraSpellID == spellId) then + auraSpellID = nil + foundAuraDuration = auraInfo.duration + return true + end + end +end + +local getAuraDuration = function(spellId) + --some auras does not have the same spellId of the cast as the spell for its aura duration + --in these cases, it's necessary to declare the buff spellId which tells the duration of the effect by adding 'durationSpellId = spellId' within the cooldown data + local customBuffDuration = LIB_OPEN_RAID_PLAYERCOOLDOWNS[spellId].durationSpellId + --spellId = customBuffDuration or spellId --can't replace the spellId by customBuffDurationSpellId has it wount be found in LIB_OPEN_RAID_PLAYERCOOLDOWNS + + if (IS_NEW_UNIT_AURA_AVAILABLE) then + local batchCount = nil + local usePackedAura = true + auraSpellID = customBuffDuration or spellId + foundAuraDuration = 0 --reset duration + + AuraUtil.ForEachAura("player", "HELPFUL", batchCount, handleBuffAura, usePackedAura) --check auras to find a buff for the spellId + + if (foundAuraDuration == 0) then --if the buff wasn't found, attempt to get the duration from the file + local spellName = GetSpellInfo(spellId) + return LIB_OPEN_RAID_PLAYERCOOLDOWNS[spellId].duration or 0 + end + return foundAuraDuration + else + + end +end + +function openRaidLib.CooldownManager.GetSpellBuffDuration(spellId) + return getAuraDuration(spellId) +end + --check if a player cooldown is ready or if is in cooldown --@spellId: the spellId to check for cooldown +--return timeLeft, charges, startTimeOffset, duration, buffDuration function openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) --check if is a charge spell local cooldownInfo = LIB_OPEN_RAID_COOLDOWNS_INFO[spellId] if (cooldownInfo) then - if (cooldownInfo.charges and cooldownInfo.charges > 1) then - local chargesAvailable, chargesTotal, start, duration = GetSpellCharges(spellId) - + local buffDuration = getAuraDuration(spellId) + local chargesAvailable, chargesTotal, start, duration = GetSpellCharges(spellId) + if chargesAvailable then if (chargesAvailable == chargesTotal) then - return 0, chargesTotal, 0, 0 --all charges are ready to use + return 0, chargesTotal, 0, 0, 0 --all charges are ready to use else --return the time to the next charge local timeLeft = start + duration - GetTime() local startTimeOffset = start - GetTime() - return ceil(timeLeft), chargesAvailable, startTimeOffset, duration --time left, charges, startTime + return ceil(timeLeft), chargesAvailable, startTimeOffset, duration, buffDuration --time left, charges, startTime, duration, buffDuration end - else local start, duration = GetSpellCooldown(spellId) if (start == 0) then --cooldown is ready - return 0, 1, 0, 0 --time left, charges, startTime + return 0, 1, 0, 0, 0 --time left, charges, startTime else local timeLeft = start + duration - GetTime() local startTimeOffset = start - GetTime() - return ceil(timeLeft), 0, ceil(startTimeOffset), duration --time left, charges, startTime, duration + return ceil(timeLeft), 0, ceil(startTimeOffset), duration, buffDuration --time left, charges, startTime, duration, buffDuration end end else diff --git a/Libs/LibOpenRaid/LibOpenRaid.lua b/Libs/LibOpenRaid/LibOpenRaid.lua index 0f6cd720..afde1f30 100644 --- a/Libs/LibOpenRaid/LibOpenRaid.lua +++ b/Libs/LibOpenRaid/LibOpenRaid.lua @@ -14,7 +14,18 @@ Code Rules: - Internal callbacks are the internal communication of the library, e.g. when an event triggers it send to all modules that registered that event. - Public callbacks are callbacks registered by an external addon. -Change Log: +Change Log (most recent on 2022 Nov 18): + - added racials with cooldown type 9 + - added buff duration in the index 6 of the cooldownInfo table returned on any cooldown event + - added 'durationSpellId' for cooldowns where the duration effect is another spell other than the casted cooldown spellId, add this member on cooldown table at LIB_OPEN_RAID_COOLDOWNS_INFO + +------- Nov 07 and older + - added: + * added openRaidLib.GetSpellFilters(spellId, defaultFilterOnly, customFiltersOnly) (see docs) + - passing a spellId of a non registered cooldown on LIB_OPEN_RAID_COOLDOWNS_INFO will trigger a diagnostic error if diagnostic errors are enabled. + - player cast doesn't check anymore for cooldowns in the player spec, now it check towards the cache LIB_OPEN_RAID_PLAYERCOOLDOWNS. + LIB_OPEN_RAID_PLAYERCOOLDOWNS is a cache built with cooldowns present in the player spellbook. + - things to maintain now has 1 file per expansion - player conduits, covenant internally renamed to playerInfo1 and playerInfo2 to make the lib more future proof - player conduits tree is now Borrowed Talents Tree, for future proof @@ -25,29 +36,14 @@ Change Log: * openRaidLib.GetFlaskTierFromAura(auraInfo) * openRaidLib.GetFoodInfoBySpellId(spellId) * openRaidLib.GetFoodTierFromAura(auraInfo) - - added dragonflight talents support + * added dragonflight talents support + * added openRaidLib.RequestCooldownInfo(spellId) + * added openRaidLib.AddCooldownFilter(filterName, spells) - ensure to register events after 'PLAYER_ENTERING_WORLD' has triggered - - added openRaidLib.RequestCooldownInfo(spellId) - - added openRaidLib.AddCooldownFilter(filterName, spells) - - if Ace Comm is installed, use it - - added "KeystoneWipe" callback - - finished keystone info, see docs - - added interrupts to cooldown tracker, new filter: "interrupt" - - after encounter_end cooldowns now check for cooldowns reset. - - each module now controls what to do with regen_enabled. - - filter cooldowns done. - - move portions of the code to other files to make this one smaller. - - major function and variables rename. - - implemented pvp talents. - - player information is always available even when not in a group. - - added cooldown check to se which cooldown has removed or added into the list. - - added two new callbacks: "CooldownAdded" and "CooldownRemoved", see documents. TODO: - - make talents changes also send only cooldowns added or changed - add into gear info how many tier set parts the player has - raid lockouts normal-heroic-mythic - - soulbind character (covenant choise) - probably not used in 10.0 BUGS: - after a /reload, it is not starting new tickers for spells under cooldown @@ -68,7 +64,7 @@ if (WOW_PROJECT_ID ~= WOW_PROJECT_MAINLINE and not isExpansion_Dragonflight()) t end local major = "LibOpenRaid-1.0" -local CONST_LIB_VERSION = 69 +local CONST_LIB_VERSION = 72 LIB_OPEN_RAID_CAN_LOAD = false local unpack = table.unpack or _G.unpack @@ -133,6 +129,7 @@ local unpack = table.unpack or _G.unpack local CONST_COOLDOWN_INDEX_TIMEOFFSET = 3 local CONST_COOLDOWN_INDEX_DURATION = 4 local CONST_COOLDOWN_INDEX_UPDATETIME = 5 + local CONST_COOLDOWN_INDEX_AURA_DURATION = 6 local GetContainerNumSlots = GetContainerNumSlots or C_Container.GetContainerNumSlots local GetContainerItemID = GetContainerItemID or C_Container.GetContainerItemID @@ -1632,14 +1629,14 @@ local cooldownTimeLeftCheck_Ticker = function(tickerObject) end tickerObject.cooldownTimeLeft = tickerObject.cooldownTimeLeft - CONST_COOLDOWN_CHECK_INTERVAL - local timeLeft, charges, startTimeOffset, duration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) + local timeLeft, charges, startTimeOffset, duration, auraDuration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) local bUpdateLocally = false --is the spell ready to use? if (timeLeft == 0) then --it's ready - openRaidLib.CooldownManager.SendPlayerCooldownUpdate(spellId, 0, charges, 0, 0) + openRaidLib.CooldownManager.SendPlayerCooldownUpdate(spellId, 0, charges, 0, 0, 0) openRaidLib.CooldownManager.CooldownTickers[spellId] = nil tickerObject:Cancel() bUpdateLocally = true @@ -1647,7 +1644,7 @@ local cooldownTimeLeftCheck_Ticker = function(tickerObject) --check if the time left has changed, this check if the cooldown got its time reduced and if the cooldown time has been slow down by modRate if (not openRaidLib.isNearlyEqual(tickerObject.cooldownTimeLeft, timeLeft, CONST_COOLDOWN_TIMELEFT_HAS_CHANGED)) then --there's a deviation, send a comm to communicate the change in the time left - openRaidLib.CooldownManager.SendPlayerCooldownUpdate(spellId, timeLeft, charges, startTimeOffset, duration) + openRaidLib.CooldownManager.SendPlayerCooldownUpdate(spellId, timeLeft, charges, startTimeOffset, duration, auraDuration) tickerObject.cooldownTimeLeft = timeLeft bUpdateLocally = true end @@ -1655,9 +1652,9 @@ local cooldownTimeLeftCheck_Ticker = function(tickerObject) if (bUpdateLocally) then --get the cooldown time for this spell - local timeLeft, charges, startTimeOffset, duration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) + local timeLeft, charges, startTimeOffset, duration, auraDuration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) --return 5 values --update the cooldown - openRaidLib.CooldownManager.CooldownSpellUpdate(playerName, spellId, timeLeft, charges, startTimeOffset, duration) + openRaidLib.CooldownManager.CooldownSpellUpdate(playerName, spellId, timeLeft, charges, startTimeOffset, duration, auraDuration) --need 7 values local playerCooldownTable = openRaidLib.GetUnitCooldowns(playerName) local cooldownInfo = openRaidLib.GetUnitCooldownInfo(playerName, spellId) @@ -1696,7 +1693,7 @@ end function openRaidLib.CooldownManager.CleanupCooldownTickers() for spellId, tickerObject in pairs(openRaidLib.CooldownManager.CooldownTickers) do - local timeLeft, charges, startTimeOffset, duration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) + local timeLeft, charges, startTimeOffset, duration, auraDuration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) if (timeLeft == 0) then tickerObject:Cancel() openRaidLib.CooldownManager.CooldownTickers[spellId] = nil @@ -1722,22 +1719,26 @@ end local cooldownGetSpellInfo = function(unitName, spellId) local unitCooldownTable = cooldownGetUnitTable(unitName) - local spellIdTable = unitCooldownTable[spellId] - return spellIdTable + local cooldownInfo = unitCooldownTable[spellId] + return cooldownInfo end --update a single cooldown timer --called when the player casted a cooldown and when received a cooldown update from another player --only update the db, no other action is taken -function openRaidLib.CooldownManager.CooldownSpellUpdate(unitName, spellId, newTimeLeft, newCharges, startTimeOffset, duration) +--cooldownInfo: [1] timeLeft [2] charges [3] startOffset [4] duration [5] updateTime [6] auraDuration +function openRaidLib.CooldownManager.CooldownSpellUpdate(unitName, spellId, newTimeLeft, newCharges, startTimeOffset, duration, auraDuration) + --get the cooldown table where all cooldowns are stored for this unit local unitCooldownTable = cooldownGetUnitTable(unitName) - local spellIdTable = unitCooldownTable[spellId] or {} - spellIdTable[CONST_COOLDOWN_INDEX_TIMELEFT] = newTimeLeft - spellIdTable[CONST_COOLDOWN_INDEX_CHARGES] = newCharges - spellIdTable[CONST_COOLDOWN_INDEX_TIMEOFFSET] = startTimeOffset - spellIdTable[CONST_COOLDOWN_INDEX_DURATION] = duration - spellIdTable[CONST_COOLDOWN_INDEX_UPDATETIME] = GetTime() - unitCooldownTable[spellId] = spellIdTable + --is this a cooldown info? + local cooldownInfo = unitCooldownTable[spellId] or {} + cooldownInfo[CONST_COOLDOWN_INDEX_TIMELEFT] = newTimeLeft + cooldownInfo[CONST_COOLDOWN_INDEX_CHARGES] = newCharges + cooldownInfo[CONST_COOLDOWN_INDEX_TIMEOFFSET] = startTimeOffset + cooldownInfo[CONST_COOLDOWN_INDEX_DURATION] = duration + cooldownInfo[CONST_COOLDOWN_INDEX_UPDATETIME] = GetTime() + cooldownInfo[CONST_COOLDOWN_INDEX_AURA_DURATION] = auraDuration + unitCooldownTable[spellId] = cooldownInfo end --API Calls @@ -1774,6 +1775,10 @@ end return openRaidLib.CooldownManager.DoesSpellPassFilters(spellId, filter) end + function openRaidLib.GetSpellFilters(spellId, defaultFilterOnly, customFiltersOnly) + return openRaidLib.CooldownManager.GetSpellFilters(spellId, defaultFilterOnly, customFiltersOnly) + end + --return values about the cooldown time --values returned: timeLeft, charges, timeOffset, duration, updateTime function openRaidLib.GetCooldownTimeFromUnitSpellID(unitId, spellId) @@ -1781,7 +1786,7 @@ end if (unitCooldownsTable) then local cooldownInfo = unitCooldownsTable[spellId] if (cooldownInfo) then - return unpack(cooldownInfo) + return openRaidLib.CooldownManager.GetCooldownInfoValues(cooldownInfo) end end end @@ -1790,7 +1795,7 @@ end --values returned: timeLeft, charges, timeOffset, duration, updateTime function openRaidLib.GetCooldownTimeFromCooldownInfo(cooldownInfo) if (cooldownInfo) then - return unpack(cooldownInfo) + return openRaidLib.CooldownManager.GetCooldownInfoValues(cooldownInfo) end end @@ -1833,12 +1838,12 @@ end --values returned: isReady, timeLeft, charges, normalized percent, minValue, maxValue, currentValue --values are in the GetTime() format function openRaidLib.GetCooldownStatusFromUnitSpellID(unitId, spellId) - local timeLeft, charges, timeOffset, duration, updateTime + local timeLeft, charges, timeOffset, duration, updateTime, auraDuration local unitCooldownsTable = openRaidLib.GetUnitCooldowns(unitId) if (unitCooldownsTable) then local cooldownInfo = unitCooldownsTable[spellId] if (cooldownInfo) then - timeLeft, charges, timeOffset, duration, updateTime = unpack(cooldownInfo) + timeLeft, charges, timeOffset, duration, updateTime, auraDuration = openRaidLib.CooldownManager.GetCooldownInfoValues(cooldownInfo) end end @@ -1851,39 +1856,40 @@ end --values are in the GetTime() format --GetPercentFromCooldownInfo function openRaidLib.GetCooldownStatusFromCooldownInfo(cooldownInfo) - local timeLeft, charges, timeOffset, duration, updateTime = unpack(cooldownInfo) + local timeLeft, charges, timeOffset, duration, updateTime, auraDuration = openRaidLib.CooldownManager.GetCooldownInfoValues(cooldownInfo) return calculatePercent(timeOffset, duration, updateTime, charges) end --internals + function openRaidLib.CooldownManager.GetCooldownInfoValues(cooldownInfo) + local timeLeft, charges, timeOffset, duration, updateTime, auraDuration = unpack(cooldownInfo) + return timeLeft, charges, timeOffset, duration, updateTime, auraDuration + end + function openRaidLib.CooldownManager.OnPlayerCast(event, spellId, isPlayerPet) --~cast --player casted a spell, check if the spell is registered as cooldown - --local playerSpec = openRaidLib.GetPlayerSpecId() --should be deprecated with cooldowns from spellbook - --if (playerSpec) then - --if (LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[playerSpec] and LIB_OPEN_RAID_COOLDOWNS_BY_SPEC[playerSpec][spellId]) then --kinda deprecated with the new spell from spellbook - --issue: pet spells isn't in this table yet, might mess with pet interrupts - if (LIB_OPEN_RAID_PLAYERCOOLDOWNS[spellId]) then --check if the casted spell is a cooldown the player has available - local playerName = UnitName("player") + --issue: pet spells isn't in this table yet, might mess with pet interrupts + if (LIB_OPEN_RAID_PLAYERCOOLDOWNS[spellId]) then --check if the casted spell is a cooldown the player has available + local playerName = UnitName("player") - --get the cooldown time for this spell - local timeLeft, charges, startTimeOffset, duration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) + --get the cooldown time for this spell + local timeLeft, charges, startTimeOffset, duration, auraDuration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) --return 5 values - --update the cooldown - openRaidLib.CooldownManager.CooldownSpellUpdate(playerName, spellId, timeLeft, charges, startTimeOffset, duration) - local cooldownInfo = cooldownGetSpellInfo(playerName, spellId) + --update the cooldown + openRaidLib.CooldownManager.CooldownSpellUpdate(playerName, spellId, timeLeft, charges, startTimeOffset, duration, auraDuration) --receive 7 values + local cooldownInfo = cooldownGetSpellInfo(playerName, spellId) - --trigger a public callback - local playerCooldownTable = openRaidLib.GetUnitCooldowns(playerName) - openRaidLib.publicCallback.TriggerCallback("CooldownUpdate", "player", spellId, cooldownInfo, playerCooldownTable, openRaidLib.CooldownManager.UnitData) + --trigger a public callback + local playerCooldownTable = openRaidLib.GetUnitCooldowns(playerName) + openRaidLib.publicCallback.TriggerCallback("CooldownUpdate", "player", spellId, cooldownInfo, playerCooldownTable, openRaidLib.CooldownManager.UnitData) - --send to comm - openRaidLib.CooldownManager.SendPlayerCooldownUpdate(spellId, timeLeft, charges, startTimeOffset, duration) + --send to comm + openRaidLib.CooldownManager.SendPlayerCooldownUpdate(spellId, timeLeft, charges, startTimeOffset, duration, auraDuration) - --create a timer to monitor the time of this cooldown - --as there's just a few of them to monitor, there's no issue on creating one timer per spell - cooldownStartTicker(spellId, timeLeft) - end - --end + --create a timer to monitor the time of this cooldown + --as there's just a few of them to monitor, there's no issue on creating one timer per spell + cooldownStartTicker(spellId, timeLeft) + end end --when the player is ressed while in a group, send the cooldown list @@ -2015,8 +2021,8 @@ function openRaidLib.CooldownManager.OnReceiveUnitCooldownChanges(data, unitName local cooldownsAddedUnpacked = openRaidLib.UnpackTable(addedCooldowns, 1, true, true, 5) for spellId, cooldownInfo in pairs(cooldownsAddedUnpacked) do --add the spell into the list of cooldowns of this unit - local timeLeft, charges, timeOffset, duration = unpack(cooldownInfo) - openRaidLib.CooldownManager.CooldownSpellUpdate(unitName, spellId, timeLeft, charges, timeOffset, duration) + local timeLeft, charges, timeOffset, duration, updateTime, auraDuration = openRaidLib.CooldownManager.GetCooldownInfoValues(cooldownInfo) + openRaidLib.CooldownManager.CooldownSpellUpdate(unitName, spellId, timeLeft, charges, timeOffset, duration, auraDuration) --mark the filter cache of this unit as dirt openRaidLib.CooldownManager.NeedRebuildFilters[unitName] = true @@ -2054,15 +2060,16 @@ function openRaidLib.CooldownManager.CheckForSpellsAdeedOrRemoved() for spellId, cooldownInfo in pairs(newCooldownList) do if (not currentCooldowns[spellId]) then --a spell has been added - local timeLeft, charges, timeOffset, duration = unpack(cooldownInfo) - openRaidLib.CooldownManager.CooldownSpellUpdate(playerName, spellId, timeLeft, charges, timeOffset, duration) + local timeLeft, charges, timeOffset, duration, updateTime, auraDuration = openRaidLib.CooldownManager.GetCooldownInfoValues(cooldownInfo) + openRaidLib.CooldownManager.CooldownSpellUpdate(playerName, spellId, timeLeft, charges, timeOffset, duration, auraDuration) - local timeLeft, charges, startTimeOffset, duration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) + local timeLeft, charges, startTimeOffset, duration, auraDuration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) --return 5 values spellsAdded[#spellsAdded+1] = spellId spellsAdded[#spellsAdded+1] = timeLeft spellsAdded[#spellsAdded+1] = charges spellsAdded[#spellsAdded+1] = startTimeOffset spellsAdded[#spellsAdded+1] = duration + spellsAdded[#spellsAdded+1] = auraDuration --mark the filter cache of this unit as dirt openRaidLib.CooldownManager.NeedRebuildFilters[playerName] = true @@ -2126,6 +2133,7 @@ openRaidLib.commHandler.RegisterComm(CONST_COMM_COOLDOWNUPDATE_PREFIX, function( local charges = tonumber(dataAsArray[3]) local startTime = tonumber(dataAsArray[4]) local duration = tonumber(dataAsArray[5]) + local auraDuration = tonumber(dataAsArray[6]) --check integrity if (not spellId or spellId == 0) then @@ -2142,10 +2150,14 @@ openRaidLib.commHandler.RegisterComm(CONST_COMM_COOLDOWNUPDATE_PREFIX, function( elseif (not duration) then return openRaidLib.DiagnosticError("CooldownManager|comm received|duration is invalid") + + elseif (not auraDuration) then + return openRaidLib.DiagnosticError("CooldownManager|comm received|auraDuration is invalid") end --update - openRaidLib.CooldownManager.CooldownSpellUpdate(unitName, spellId, cooldownTimer, charges, startTime, duration) + --unitName, spellId, cooldownTimer, charges, startTime, duration, auraDuration + openRaidLib.CooldownManager.CooldownSpellUpdate(unitName, spellId, cooldownTimer, charges, startTime, duration, auraDuration) local cooldownInfo = cooldownGetSpellInfo(unitName, spellId) local unitCooldownTable = openRaidLib.GetUnitCooldowns(unitName) @@ -2180,8 +2192,8 @@ function openRaidLib.CooldownManager.SendAllPlayerCooldowns() end --send to comm a specific cooldown that was just used, a charge got available or its cooldown is over (ready to use) -function openRaidLib.CooldownManager.SendPlayerCooldownUpdate(spellId, cooldownTimeLeft, charges, startTimeOffset, duration) - local dataToSend = "" .. CONST_COMM_COOLDOWNUPDATE_PREFIX .. "," .. spellId .. "," .. cooldownTimeLeft .. "," .. charges .. "," .. startTimeOffset .. "," .. duration +function openRaidLib.CooldownManager.SendPlayerCooldownUpdate(spellId, cooldownTimeLeft, charges, startTimeOffset, duration, auraDuration) + local dataToSend = "" .. CONST_COMM_COOLDOWNUPDATE_PREFIX .. "," .. spellId .. "," .. cooldownTimeLeft .. "," .. charges .. "," .. startTimeOffset .. "," .. duration .. "," .. auraDuration openRaidLib.commHandler.SendCommData(dataToSend) diagnosticComm("SendPlayerCooldownUpdate| " .. dataToSend) --debug end @@ -2219,8 +2231,8 @@ function openRaidLib.CooldownManager.OnReceiveRequestForCooldownInfoUpdate(data, end --get the cooldown time for this spell - local timeLeft, charges, startTimeOffset, duration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) - openRaidLib.CooldownManager.SendPlayerCooldownUpdate(spellId, timeLeft, charges, startTimeOffset, duration) + local timeLeft, charges, startTimeOffset, duration, auraDuration = openRaidLib.CooldownManager.GetPlayerCooldownStatus(spellId) + openRaidLib.CooldownManager.SendPlayerCooldownUpdate(spellId, timeLeft, charges, startTimeOffset, duration, auraDuration) end openRaidLib.commHandler.RegisterComm(CONST_COMM_COOLDOWNREQUEST_PREFIX, openRaidLib.CooldownManager.OnReceiveRequestForCooldownInfoUpdate) @@ -2533,7 +2545,7 @@ C_Timer.After(0.1, function() --trigger a cooldown usage local duration = cooldownInfo.duration --time left, charges, startTimeOffset, duration - openRaidLib.CooldownManager.CooldownSpellUpdate(unitName, spellId, duration, 0, 0, duration) + openRaidLib.CooldownManager.CooldownSpellUpdate(unitName, spellId, duration, 0, 0, duration, 0) local cooldownInfo = cooldownGetSpellInfo(unitName, spellId) local unitCooldownsTable = openRaidLib.GetUnitCooldowns(unitName) diff --git a/Libs/LibOpenRaid/ThingsToMantain_Dragonflight.lua b/Libs/LibOpenRaid/ThingsToMantain_Dragonflight.lua index c3ff23ea..5d51fa7f 100644 --- a/Libs/LibOpenRaid/ThingsToMantain_Dragonflight.lua +++ b/Libs/LibOpenRaid/ThingsToMantain_Dragonflight.lua @@ -260,6 +260,10 @@ LIB_OPEN_RAID_MELEE_SPECS = { --/dump GetTalentInfo (talentTier, talentColumn, 1) --example: to get the second talent of the last talent line, use: /dump GetTalentInfo (7, 2, 1) +--todo: +--get cooldown duration from the buff placed on the player or target player +--spell scanner not getting the spell from the pet spellbook + LIB_OPEN_RAID_COOLDOWNS_INFO = { -- Filter Types: @@ -269,7 +273,53 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = { -- 4 raid defensive cooldown -- 5 personal utility cooldown -- 6 interrupt + -- 7 dispel -- 8 crowd control + -- 9 racials + + --racials + --maintanance: login into the new race and type /run Details.GenerateRacialSpellList() + --this command give a formated line to paste here + + [312411] = {cooldown = 90, duration = 0, specs = {}, talent = false, charges = 1, raceid = 35, race = "Vulpera", class = "", type = 9}, --Bag of Tricks (Vulpera) + --[312370] = {cooldown = 600, duration = 0, specs = {}, talent = false, charges = 1, raceid = 35, race = "Vulpera", class = "", type = 9}, --Make Camp (Vulpera) + --[312372] = {cooldown = 3600, duration = 0, specs = {}, talent = false, charges = 1, raceid = 35, race = "Vulpera", class = "", type = 9}, --Return to Camp (Vulpera) + --[312425] = {cooldown = 300, duration = 0, specs = {}, talent = false, charges = 1, raceid = 35, race = "Vulpera", class = "", type = 9}, --Rummage Your Bag (Vulpera) + [274738] = {cooldown = 120, duration = 0, specs = {}, talent = false, charges = 1, raceid = 36, race = "MagharOrc", class = "", type = 9}, --Ancestral Call (MagharOrc) + --[292752] = {cooldown = 432000, duration = 0, specs = {}, talent = false, charges = 1, raceid = 31, race = "ZandalariTroll", class = "", type = 9}, --Embrace of the Loa (ZandalariTroll) + --[281954] = {cooldown = 900, duration = 0, specs = {}, talent = false, charges = 1, raceid = 31, race = "ZandalariTroll", class = "", type = 9}, --Pterrordax Swoop (ZandalariTroll) + [291944] = {cooldown = 150, duration = 0, specs = {}, talent = false, charges = 1, raceid = 31, race = "ZandalariTroll", class = "", type = 9}, --Regeneratin' (ZandalariTroll) + [255654] = {cooldown = 120, duration = 0, specs = {}, talent = false, charges = 1, raceid = 28, race = "HighmountainTauren", class = "", type = 9}, --Bull Rush (HighmountainTauren) + [260364] = {cooldown = 180, duration = 0, specs = {}, talent = false, charges = 1, raceid = 27, race = "Nightborne", class = "", type = 9}, --Arcane Pulse (Nightborne) + --[255661] = {cooldown = 600, duration = 0, specs = {}, talent = false, charges = 1, raceid = 27, race = "Nightborne", class = "", type = 9}, --Cantrips (Nightborne) + --[69046] = {cooldown = 1800, duration = 0, specs = {}, talent = false, charges = 1, raceid = 9, race = "Goblin", class = "", type = 9}, --Pack Hobgoblin (Goblin) + [69041] = {cooldown = 90, duration = 0, specs = {}, talent = false, charges = 1, raceid = 9, race = "Goblin", class = "", type = 9}, --Rocket Barrage (Goblin) + [69070] = {cooldown = 90, duration = 0, specs = {}, talent = false, charges = 1, raceid = 9, race = "Goblin", class = "", type = 9}, --Rocket Jump (Goblin) + [20549] = {cooldown = 90, duration = 0, specs = {}, talent = false, charges = 1, raceid = 6, race = "Tauren", class = "", type = 9}, --War Stomp (Tauren) + --[20577] = {cooldown = 120, duration = 0, specs = {}, talent = false, charges = 1, raceid = 5, race = "Scourge", class = "", type = 9}, --Cannibalize (Scourge) + [7744] = {cooldown = 120, duration = 0, specs = {}, talent = false, charges = 1, raceid = 5, race = "Scourge", class = "", type = 9}, --Will of the Forsaken (Scourge) + [20572] = {cooldown = 120, duration = 0, specs = {}, talent = false, charges = 1, raceid = 2, race = "Orc", class = "", type = 9}, --Blood Fury (Orc) + [312924] = {cooldown = 180, duration = 0, specs = {}, talent = false, charges = 1, raceid = 37, race = "Mechagnome", class = "", type = 9}, --Hyper Organic Light Originator (Mechagnome) + --[312890] = {cooldown = 0, duration = 0, specs = {}, talent = false, charges = 1, raceid = 37, race = "Mechagnome", class = "", type = 9}, --Skeleton Pinkie (Mechagnome) + [287712] = {cooldown = 150, duration = 0, specs = {}, talent = false, charges = 1, raceid = 32, race = "KulTiran", class = "", type = 9}, --Haymaker (KulTiran) + [265221] = {cooldown = 120, duration = 0, specs = {}, talent = false, charges = 1, raceid = 34, race = "DarkIronDwarf", class = "", type = 9}, --Fireblood (DarkIronDwarf) + --[265225] = {cooldown = 1800, duration = 0, specs = {}, talent = false, charges = 1, raceid = 34, race = "DarkIronDwarf", class = "", type = 9}, --Mole Machine (DarkIronDwarf) + --[259930] = {cooldown = 900, duration = 0, specs = {}, talent = false, charges = 1, raceid = 30, race = "LightforgedDraenei", class = "", type = 9}, --Forge of Light (LightforgedDraenei) + [255647] = {cooldown = 150, duration = 0, specs = {}, talent = false, charges = 1, raceid = 30, race = "LightforgedDraenei", class = "", type = 9}, --Light's Judgment (LightforgedDraenei) + [256948] = {cooldown = 180, duration = 0, specs = {}, talent = false, charges = 1, raceid = 29, race = "VoidElf", class = "", type = 9}, --Spatial Rift (VoidElf) + --[358733] = {cooldown = 1, duration = 0, specs = {}, talent = false, charges = 1, raceid = 52, race = "Dracthyr", class = "", type = 9}, --Glide (Dracthyr) + [368970] = {cooldown = 90, duration = 0, specs = {}, talent = false, charges = 1, raceid = 52, race = "Dracthyr", class = "", type = 9}, --Tail Swipe (Dracthyr) + [357214] = {cooldown = 90, duration = 0, specs = {}, talent = false, charges = 1, raceid = 52, race = "Dracthyr", class = "", type = 9}, --Wing Buffet (Dracthyr) + [107079] = {cooldown = 120, duration = 0, specs = {}, talent = false, charges = 1, raceid = 25, race = "Pandaren", class = "", type = 9}, --Quaking Palm (Pandaren) + [68992] = {cooldown = 120, duration = 0, specs = {}, talent = false, charges = 1, raceid = 22, race = "Worgen", class = "", type = 9}, --Darkflight (Worgen) + --[68996] = {cooldown = 1, duration = 0, specs = {}, talent = false, charges = 1, raceid = 22, race = "Worgen", class = "", type = 9}, --Two Forms (Worgen) + [26297] = {cooldown = 180, duration = 0, specs = {}, talent = false, charges = 1, raceid = 8, race = "Troll", class = "", type = 9}, --Berserking (Troll) + [20589] = {cooldown = 60, duration = 0, specs = {}, talent = false, charges = 1, raceid = 7, race = "Gnome", class = "", type = 9}, --Escape Artist (Gnome) + [232633] = {cooldown = 120, duration = 0, specs = {}, talent = false, charges = 1, raceid = 10, race = "BloodElf", class = "", type = 9}, --Arcane Torrent (BloodElf) + [59752] = {cooldown = 180, duration = 0, specs = {}, talent = false, charges = 1, raceid = 1, race = "Human", class = "", type = 9}, --Will to Survive (Human) + [20594] = {cooldown = 120, duration = 0, specs = {}, talent = false, charges = 1, raceid = 3, race = "Dwarf", class = "", type = 9}, --Stoneform (Dwarf) + [58984] = {cooldown = 120, duration = 0, specs = {}, talent = false, charges = 1, raceid = 4, race = "NightElf", class = "", type = 9}, --Shadowmeld (NightElf) + [59542] = {cooldown = 180, duration = 0, specs = {}, talent = false, charges = 1, raceid = 11, race = "Draenei", class = "", type = 9}, --Gift of the Naaru (Draenei) --interrupts [6552] = {class = "WARRIOR", specs = {71, 72, 73}, cooldown = 15, silence = 4, talent = false, cooldownWithTalent = false, cooldownTalentId = false, type = 6, charges = 1}, --Pummel @@ -319,6 +369,7 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = { --[343527] = {cooldown = 1 min cooldown, duration = 0, specs = {}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Execution Sentence --[343721] = {cooldown = 1 min cooldown, duration = 0, specs = {}, talent = false, charges = 1, class = "PALADIN", type = 1}, --Final Reckoning --[391054] = {cooldown = 10 min cooldown, duration = 0, specs = {}, talent = false, charges = 1, class = "PALADIN", type = 5}, --Intercession (battle ress) + [20066] = {cooldown = 15, duration = 0, specs = {}, talent = false, charges = 1, class = "PALADIN", type = 8}, --Repentance --warrior -- 71 - Arms @@ -342,6 +393,8 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = { [376079] = {cooldown = 90, duration = 4, specs = {}, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Spear of Bastion [392966] = {cooldown = 90, duration = 20, specs = {73}, talent = false, charges = 1, class = "WARRIOR", type = 2}, --Spell Block [384318] = {cooldown = 90, duration = 0, specs = {71, 72, 73}, talent = false, charges = 1, class = "WARRIOR", type = 1}, --Thunderous Roar + [46968] = {cooldown = 40, duration = 0, specs = {}, talent = false, charges = 1, class = "WARRIOR", type = 8}, --Shockwave + [23920] = {cooldown = 25, duration = 5, specs = {}, talent = false, charges = 1, class = "WARRIOR", type = 5}, --Shockwave --warlock -- 265 - Affliction @@ -383,6 +436,10 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = { [192077] = {cooldown = 120, duration = 15, specs = {262, 263, 264}, talent = false, charges = 1, class = "SHAMAN", type = 5}, --Wind Rush Totem --[198838] = {cooldown = 60, duration = 15, specs = {264}, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Earthen Wall Totem [51485] = {cooldown = 60, duration = 20, specs = {262, 263, 264}, talent = false, charges = 1, class = "SHAMAN", type = 8}, --Earthgrab Totem + --[383017] = {cooldown = 30, duration = 0, specs = {}, talent = false, charges = 1, class = "SHAMAN", type = 4}, --Stoneskin Totem + [51514] = {cooldown = 30, duration = 0, specs = {}, talent = false, charges = 1, class = "SHAMAN", type = 8}, --Hex + [108968] = {cooldown = 5*60, duration = 0, specs = {}, talent = false, charges = 1, class = "PRIEST", type = 3}, --Void Shift + --monk -- 268 - Brewmaster @@ -408,6 +465,7 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = { [115176] = {cooldown = 300, duration = 8, specs = {268}, talent = false, charges = 1, class = "MONK", type = 2}, --Zen Meditation [388686] = {cooldown = 120, duration = 30, specs = {268, 269, 270}, talent = false, charges = 1, class = "MONK", type = 1}, --Summon White Tiger Statue --[322109] = {cooldown = 180, duration = 0, specs = {268, 269, 270}, talent = false, charges = 1, class = "MONK", type = 1}, --Touch of Death + [116841] = {cooldown = 30, duration = 0, specs = {}, talent = false, charges = 1, class = "MONK", type = 5}, --Tiger's Lust --hunter @@ -422,13 +480,14 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = { [109248] = {cooldown = 45, duration = 10, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 8}, --Binding Shot [199483] = {cooldown = 60, duration = 60, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Camouflage [266779] = {cooldown = 120, duration = 20, specs = {255}, talent = false, charges = 1, class = "HUNTER", type = 1}, --Coordinated Assault - [109304] = {cooldown = 120, duration = 0, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Exhilaration + [109304] = {cooldown = 120, duration = 8, durationSpellId = 385540, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Exhilaration [187650] = {cooldown = 25, duration = 60, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 8}, --Freezing Trap [19577] = {cooldown = 60, duration = 5, specs = {253, 255}, talent = false, charges = 1, class = "HUNTER", type = 8}, --Intimidation [201430] = {cooldown = 180, duration = 12, specs = {253}, talent = false, charges = 1, class = "HUNTER", type = 1}, --Stampede - [281195] = {cooldown = 180, duration = 6, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Survival of the Fittest + --[281195] = {cooldown = 180, duration = 6, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Survival of the Fittest [288613] = {cooldown = 180, duration = 15, specs = {254}, talent = false, charges = 1, class = "HUNTER", type = 1}, --Trueshot [264735] = {cooldown = 180, duration = 0, specs = {253, 254, 255}, talent = false, charges = 1, class = "HUNTER", type = 2}, --Survival of the Fittest + [187698] = {cooldown = 30, duration = 0, specs = {}, talent = false, charges = 1, class = "HUNTER", type = 8}, --Tar Trap --druid -- 102 - Balance @@ -458,6 +517,7 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = { [102793] = {cooldown = 60, duration = 10, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 8}, --Ursol's Vortex [124974] = {cooldown = 90, duration = 0, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 3}, --Nature's Vigil [106898] = {cooldown = 120, duration = 8, specs = {102, 103, 104, 105}, talent = false, charges = 1, class = "DRUID", type = 5}, --Stampeding Roar + [5211] = {cooldown = 60, duration = 0, specs = {}, talent = false, charges = 1, class = "DRUID", type = 8}, --Mighty Bash --death knight -- 252 - Unholy @@ -484,7 +544,7 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = { [207289] = {cooldown = 78, duration = 12, specs = {252}, talent = false, charges = 1, class = "DEATHKNIGHT", type = 1}, --Unholy Assault [55233] = {cooldown = 90, duration = 10, specs = {250}, talent = false, charges = 1, class = "DEATHKNIGHT", type = 2}, --Vampiric Blood [212552] = {cooldown = 60, duration = 4, specs = {250, 251, 252}, talent = false, charges = 1, class = "DEATHKNIGHT", type = 2}, --Wraith Walk - + [49576] = {cooldown = 25, duration = 0, specs = {}, talent = false, charges = 1, class = "DEATHKNIGHT", type = 8}, --Death Grip --demon hunter -- 577 - Havoc @@ -510,6 +570,7 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = { -- 62 - Arcane -- 63 - Fire -- 64 - Frost + [365350] = {cooldown = 90, duration = 15, specs = {62}, talent = false, charges = 1, class = "MAGE", type = 1}, --Arcane Surge [12042] = {cooldown = 90, duration = 10, specs = {62}, talent = false, charges = 1, class = "MAGE", type = 1}, --Arcane Power [235313] = {cooldown = 25, duration = 60, specs = {63}, talent = false, charges = 1, class = "MAGE", type = 5}, --Blazing Barrier [235219] = {cooldown = 300, duration = 0, specs = {64}, talent = false, charges = 1, class = "MAGE", type = 2}, --Cold Snap @@ -525,6 +586,7 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = { [235450] = {cooldown = 25, duration = 60, specs = {62}, talent = false, charges = 1, class = "MAGE", type = 5}, --Prismatic Barrier [205021] = {cooldown = 78, duration = 5, specs = {64}, talent = false, charges = 1, class = "MAGE", type = 1}, --Ray of Frost [113724] = {cooldown = 45, duration = 10, specs = {62, 63, 64}, talent = false, charges = 1, class = "MAGE", type = 8}, --Ring of Frost + [31661] = {cooldown = 45, duration = 0, specs = {}, talent = false, charges = 1, class = "MAGE", type = 8}, --Dragon's Breath --priest -- 256 - Discipline @@ -571,11 +633,14 @@ LIB_OPEN_RAID_COOLDOWNS_INFO = { [114018] = {cooldown = 360, duration = 15, specs = {259, 260, 261}, talent = false, charges = 1, class = "ROGUE", type = 5}, --Shroud of Concealment [1856] = {cooldown = 120, duration = 3, specs = {259, 260, 261}, talent = false, charges = 1, class = "ROGUE", type = 1}, --Vanish [79140] = {cooldown = 120, duration = 20, specs = {259}, talent = false, charges = 1, class = "ROGUE", type = 1}, --Vendetta + [1776] = {cooldown = 20, duration = 0, specs = {}, talent = false, charges = 1, class = "ROGUE", type = 8}, --Gouge + [408] = {cooldown = 20, duration = 0, specs = {}, talent = false, charges = 1, class = "ROGUE", type = 8}, --Kidney Shot + [1966] = {cooldown = 15, duration = 0, specs = {}, talent = false, charges = 1, class = "ROGUE", type = 2}, --Feint --evoker -- 1467 - Devastation -- 1468 - Preservation - --[374251] = {cooldown = 60, duration = 0, specs = {1467, 1468}, talent = false, charges = 1, class = "EVOKER", type = 7}, --Cauterizing Flame + [374251] = {cooldown = 60, duration = 0, specs = {1467, 1468}, talent = false, charges = 1, class = "EVOKER", type = 7}, --Cauterizing Flame --[365585] = {cooldown = 8, duration = 0, specs = {1467, 1468}, talent = false, charges = 1, class = "EVOKER", type = 7}, --Expunge --[360823] = {cooldown = 8, duration = 0, specs = {1468}, talent = false, charges = 1, class = "EVOKER", type = 7}, --Naturalize [357210] = {cooldown = 120, duration = 0, specs = {1467, 1468}, talent = false, charges = 1, class = "EVOKER", type = 1}, --Deep Breath diff --git a/Libs/LibOpenRaid/docs.txt b/Libs/LibOpenRaid/docs.txt index 5cc7aac4..3c2493df 100644 --- a/Libs/LibOpenRaid/docs.txt +++ b/Libs/LibOpenRaid/docs.txt @@ -55,6 +55,12 @@ local isReady, normalizedPercent, timeLeft, charges, minValue, maxValue, current @spells: a table containing spellIds {spellId, spellId, spellId, ...} openRaidLib.AddCooldownFilter(filterName, spells) +--get a list of filters which a spell has, returns a table in map format: {[filterName] = true} +--@spellId: the ID of a spell +--@defaultFilterOnly (bool): if true only return built-in filters, example: "defensive-raid", "ofensive". +--@customFiltersOnly (bool): if true onlt return a list of custom filters where the spell was added. +local filterListArray = openRaidLib.GetSpellFilters(spellId, defaultFilterOnly, customFiltersOnly) + --request information about a spell for all units in the raid, units which has this cooldown will report back with a "CooldownUpdate" event openRaidLib.RequestCooldownInfo(spellId) diff --git a/boot.lua b/boot.lua index 68cfa9a4..0344e2f2 100644 --- a/boot.lua +++ b/boot.lua @@ -3,11 +3,11 @@ _ = nil _G._detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0") - + local addonName, Details222 = ... local version, build, date, tocversion = GetBuildInfo() - _detalhes.build_counter = 10259 - _detalhes.alpha_build_counter = 10259 --if this is higher than the regular counter, use it instead + _detalhes.build_counter = 10277 + _detalhes.alpha_build_counter = 10277 --if this is higher than the regular counter, use it instead _detalhes.dont_open_news = true _detalhes.game_version = version _detalhes.userversion = version .. " " .. _detalhes.build_counter @@ -64,15 +64,45 @@ do local Loc = _G.LibStub("AceLocale-3.0"):GetLocale( "Details" ) - --[=[ - - - - - - this is an empty comment section - - - - - --]=] - local news = { + {"v10.0.2.10277.146", "Nov 18th, 2022"}, + "REMINDER: '/details coach' to get damage/healing/deaths in real time as the 21st person (coach) for the next raid tier in dragonflight.", + "", + "New show a time line of spells used by players in the group, Raid Leader: show all attack and defense cooldowns used by the raid.", + "Wago: Details! Standalone version is now hosted on addons.wago.io and WowUp.com.", + "", + + "Details! will count class play time, everyone using Details! from day 1 in Dragonflight should have an accurate play time in the class.", + "Visual updates on default skin.", + "All panels from options to plugins received visual updates.", + "Profiles won't export Auto Hide automations to stop issues with players not knowing why the window is hidding.", + "Details! should decrease the amount of chat spam errors and instead show them in the bug report window like al the other addons.", + "Player Details! Breakdown window: player selection now uses the same font as the regular window.", + "Death log tooltip revamp for more clarity to see the ability name and the damage done.", + "Dragonflight Trinkets damage will show the trinket name after the spell name.", + "'/details scroll' feature: spell name and spell id can now be copied, the frame got a scale bar.", + "Added option: 'Use Dynamic Overall Damage', if enabled swap to Dynamic Overall Damage when combat start while showing Overall Damage.", + "Fixed for most of the user having the problem of the encounter time not showing.", + "Fixed most of the issues with the melee spell name being called 'Word of Recall'.", + "Details! Damage Meter, Deatails! Framework, LibOpenRaid has been successfully updated to Dragonflight.", + "New class Evoker are now fully supported by Details!.", + "", + "Fixed an issue where warlocks was entering in combat from a debug doing damage (Flamanis).", + "Fixed 'Auto of Range' problem in Wrath of the Lich King (Flamanis).", + "Fixed a bug with custom displays when showing players outside the player group (Flamanis).", + "Fixed an issue where specs wheren't sent on Wrath (Flamanis).", + "Fixed Buff Uptime Tooltip where the buff had zero uptime (Flamanis)", + "Fixed shield damage preventing rare error when the absorption was zero (Flamanis).", + "Fixed chat embed system built in Details! from the Skins section (Flamanis).", + "Fixed an issue where damage in battlegrounds was not being sync with battleground score board in Wrath (Flamanis).", + "", + "New Slash Commands:", + "/playedclass: show how much time you have played this class on this expansion.", + "/dumpt : show the value of any table, global, spellId, etc.", + "/details auras: show a panel with your current auras, spell ids and spell payload.", + "/details perf: show performance issues when you get a warning about freezes due to UpdateAddOnMemoryUsage().", + "/details npcid: get the npc id of your target (a box is shown with the number ready to be copied).", + {"v9.2.0.10001.146", "Aug 10th, 2022"}, "New feature: Arena DPS Bar, can be enabled at the Broadcaster Tools section, shows a bar in 'kamehameha' style showing which team is doing more damage in the latest 3 seconds.", "/keystone now has more space for the dungeon name.", @@ -95,225 +125,6 @@ do "Major cleanup and code improvements on dropdowns for library Details! Framework.", "Cleanup on NickTag library.", "Removed LibGroupInSpecT, LibItemUpgradeInfo and LibCompress. These libraries got replaced by OpenRaidLib and LibDeflate.", - - {"v9.2.0.9814.146", "May 15th, 2022"}, - "Added slash command /keystone, this command show keystones of other users with addons using Open Raid library.", - "Added a second Title Bar (disabled by default), is recomended to make the Skin Color (under Window Body) full transparent while using it.", - "Added Overlay Texture and Color options under Bars: General.", - "Added Wallpaper Alignment 'Full Body', this alignment make the wallpaper fill over the title bar.", - "Added Auto Alignment for 'Aligned Text Columns', this option is enabled by default.", - "Added 'Window Area Border' and 'Row Area Border' under 'Window Body' section in the options panel.", - "Added an option to color the Row Border by player class.", - "Added new automation auto hide option: Arena.", - "Blizzard Death Recap kill ability only shows on Dungeons and Raids now.", - "Fixed an issue where player names was overlapping damage numbers with enbaled 'Aligned Text Columns'.", - "Fixed a bug on 'DeathLog Min Healing' option where it was reseting to 1 on each logon.", - "Fixed several bugs with 'Bar Orientation: Right to Left' (fix by Flamanis).", - "Fixed an error on Vanguard plugin.", - "Fixed Spec Icons 'Specialization Alpha' offseted by 2 pixels to the right.", - - {"v9.2.0.9778.146", "April 26th, 2022"}, - --"A cooldown tracker experiment has been added, its options is visible at the Options Panel.", - "Added a search box in the '/details scroll' feature.", - "When using Details! Death Recap, a message is now printed to chat showing what killed you accordingly to Blizzard Death Recap.", - "Fixed some errors while using Mind Control on an arena match.", - "Fixed encounter phase detection while using voice packs for boss mods addons.", - "Fixed an error after killing a boss encounter on heroic dificulty for the first time.", - "Fixed the issue of skins installed after the window has been loaded and the skin was not found at that time.", - "API: added 'UNIT_SPEC' and 'UNIT_TALENTS' event to details! event listener.", - "API: added Details:GetUnitId(unitName) which return the unitId for a given player name.", - - {"v9.2.0.9735.146", "April 8th, 2022"}, - "Arena Enemy Player deaths has been greatly improved on this version.", - "Added M+ Score into the player info tooltip (hover over the spec icon).", - "Fixed windows ungrouping after a /reload (fix by Flamanis).", - "Opening a tooltip from a bar or a menu in the title bar will close the All Displays Panel (from right clicking the title bar).", - "[TBC] fixed an error given by users using old versions of Details! in the raid.", - - {"v9.2.0.9715.146", "March 6th, 2022"}, - "More Tiny Threat fixes and implementations (by Treeston)", - "Fixed Chinese and Taiwan 'Thousand' abbreviation letter (fix by github user Maioro).", - - {"v9.2.0.9699.146", "March 4th, 2022"}, - "Align Text Columns now have a warning at the bracket and separators option", - "Silence from interrupts shall be counted as a crowd control.", - "More phrases in the options panel has been added to translation.", - "A revamp has beed started on the erase data prompt.", - - {"v9.2.0.9696.146", "February 24th, 2022"}, - "Fixed DPS display when using Aligned Text Columns.", - "Fixed percent showing even it's disabled when using Aligned Text Columns.", - - {"v9.2.0.9255.146", "February 22th, 2022"}, - "Added Cosmic Healing Potion to script 'Health Potion & Stone'.", - - {"v9.1.5.9213.146", "February 15th, 2022"}, - "Added an option to change your own bar color.", - "Added 'Ignore this Npc' into the Npc list under the spell list section.", - "Bookmark window now uses the same scale than the options panel.", - "Class Color window now uses the same scale than the options panel.", - "If not casted on the player itself Power Infusion now shows in the buff list of the target.", - "Allowed nicknames on custom displays (by Flamanis).", - "Aligned Text Columns enabled is now default for new installs.", - "Fodder to the flames DH ability won't count damage done by the player on the add summoned.", - "Fixed the load time for the Npc Ids panel on the spell list section.", - "Fixed all issues with the options panel scale.", - "Fixed tooltips overlap when the window is positioned at the top of the screen (fix by Flamanis).", - "Fixed auto hide windows which wasn't saving its group when unhiding (fix by Flamanis).", - "Fixed some XML Headers which was giving errors on loading (fix by github user h0tw1r3).", - "Fixed '/details me' on TBC, which wasn't working correctly (fix by github user Baugstein).", - "Fixed a typo on Vanguard plugin (fix by github user cruzerthebruzer).", - "Fixed font 'NuevaStd' where something the font didn't work at all.", - "Fixed an issue where for some characters the options panel won't open showing an error in the chat instead.", - "New API: combat:GetPlayerDeaths(deadPlayerName).", - "New API: Details:ShowDeathTooltip(combatObject, deathTable) for Cooltip tooltips.", - - {"v9.1.5.9213.145", "December 9th, 2021"}, - "Fixed an issue where after reloading, overall data won't show the players nickname.", - "Fixed overkill damage on death log tooltip.", - "Fixed the percent bars for the healing done target on the player breakdown window.", - "Fixed an issue with resource tooltips.", - - {"v9.1.5.9108.145", "November 02th, 2021"}, - "Necrotic Wake: weapons damage does not count anymore for the player which uses it.", - "Necrotic Wake: a new 'fake player' is shown showing the damage done of all weapons during combat.", - "Necrotic Wake: these npcs now does not award damage done to players anymore: Brittlebone Mage, Brittlebone Warrior, Brittlebone Crossbowman", - "The Other Side: the npc Volatile Memory does not award anymore damage to players.", - "Plaguefall: the npcs Fungret Shroomtender and Plaguebound Fallen does not award anymore damage to players.", - "Sanguine Affix: the amount of healing done by sanguine pools now shows on all segments (was shown only in the overall).", - "Tiny Threat (plugin): fixed an issue when hidding the pull aggro bar makes the first line be invisible.", - "Statistics: fixed several small bugs with guild statistics (/details stats).", - "Scale slider (top left slider shown on panels) are now more responsible.", - - {"v9.1.0.8888.145", "October 7th, 2021"}, - "Search has been added into the options panel", - "Improvements on overkill amount of damage", - "Fonts 'Oswald' and 'NuevaStd' enabled again.", - "Added critical hits to Death Log (by C. Raethke)", - "Added settings to change the color on death log, they are within the class colors panel.", - "Don't show TaintWarning frame if MiniMapBattlefieldFrame is hidden (by Flamanis).", - - {"v9.1.0.8812.145", "September 5th, 2021"}, - "Fonts 'Oswald' and 'NuevaStd' disabled due to some erros on the client side.", - "Death Knight adds now include the icon of the spell whose summoned them.", - "Fixes and improvements on the backend of the addon.", - - {"v9.1.0.8782.145", "August 11th, 2021"}, - "Clicking on the minimap while the options panel is open will close it.", - "Fixed Raid Check plugin position when the window is anchored at the top of the monitor.", - "Shadow priest Void Erruption spells got merged into only one.", - "Added settings to adjust the scale or font size of the title bar menu (right click): /run Details.all_switch_config.font_size = 12; /run Details.all_switch_config.scale = 1.0;", - "Added transliteration to healing done.", - "Tiny Threat (plugin): added options to Hide the Pull Bar and Use Focus Target.", - - {"v9.0.5.8637.144", "June 22nd, 2021"}, - "Major update on Vanguard plugin.", - "Added utility module to Coach, this module will send interrupt, dispel, cc breaks, cooldown usege and battle resses to the Coach.", - "Added plugins into the title bar display menu.", - - {"v9.0.5.8502.144", "May 21th, 2021"}, - "Added options to change the color of each team during an arena match.", - "Fixed One Segment Battleground.", - "Fixed an error with Howl of Terror on Demo Warlocks.", - - {"v9.0.5.8501.144", "May 17th, 2021"}, - "Complete overhaul and rerritten on Fade In and Out animations, this should fix all bugs related to animations not being consistent.", - "Complete overhaul on the broadcaster tool for arenas 'Current DPS'. It shows now a bar indicating the dps of both teams.", - "Yellow arena team now has purple color.", - "Several updates on the combat log engine and bug fixes.", - - {"v9.0.5.8357.144", "March 15th, 2021"}, - "Max amount of segments raised to 40, was 30.", - "Added a 'Sanguine Heal' actor to show how much the void zone healed enemies, shown on Everything mode.", - "Death events are now ignore after the necrolord triggers Forgeborne Reveries.", - "Mythic dungeon settings are reset after importing a profile.", - "Scripts now support Inline text feature.", - "Fixed a rare bug when exporting a profile would result into a bug.", - "Fixed an issue with Spirit Shell overhealing.", - "Fixed a rare bug on dispel toooltips giving errors.", - "Fixed a bug on exporting scripts.", - "Fixed an error given when an a battleground opponent die.", - "Fixed an issue where sometimes entering an arena cause errors.", - "Fixed some issues with pet detection.", - - {"v9.0.2.8246.144", "February 17th, 2021"}, - "Added healing done to Coach feature (in testing).", - "Ignore Forgeborne Reveries healing done (Necrolords ability).", - "Arena enemy deaths now are shown in the Deaths display.", - "Guild statistics data has been wiped, this system had a major improvement overall.", - "Fixed 'Clear Overall Data' on Logout which wasn't clearing.", - - {"v9.0.2.8192.144", "January 27th, 2021"}, - "If you get issues with nicknames, disable any weakaura which modifies this feature.", - "Advanced Death Logs plugin got some fixes and should work properly.", - "Added the word 'Overall' at the end of the title bar text when the segment is overall.", - "Added covenant and durability into the Raid Check plugin.", - "Added API Window:SetTitleBarText(text) and Window:GetTitleBarText().", - "Fixed some issues where Details! printed 'combat start time not found.'", - "Fixed damage per Phase.", - "Fixed resizing window with no background error.", - "Fixed 'Always Show player' on ascending sort direction.", - "Added more foods into the Ready Check plugin.", - "Fixed some issues with the coach fearure.", - - {"v9.0.2.8154.144", "January 14th, 2021"}, - "Added total damage bars into the player list in the Breakdown window.", - "Added 'Square' or 'Roll' mode to Details! Streamer plugin, to change the statusbar mode to Squares, visit the options panel for the plugin.", - "Added Binding Shot to crowd control (Hunter)", - "Merged all whirlwind damage (Warrior).", - "Fixed errors on the 1-10 tutorial levels while playing Demon Hunters.", - "Fixed some cases of DeathLog not showing healing", - "Fixed windows making a group after '/details toggle', while the option to not make groups enabled.", - "Fixed some issues with the custom display 'Potion Used' and 'Health Potion & Stone'.", - "Fixed the breakdown window where using the comparisson tab sometimes made the frame to overlap with the aura tab.", - - {"v9.0.2.8001.144", "December 19th, 2020"}, - "Added Details! Coach as a new experimental feature, you may want to test using /details coach", - "Coach feature allows the raid leader to stay outside the raid while seeing in real time player deaths and damage information.", - "Fixed issues with some raid encounters in Castle Nathria.", - "Druid Kyrian Spirits ability now has some rules to credit the druid for damage and heal.", - "Several small bug fixes has been done.", - - {"v9.0.1.8001.144", "November 30rd, 2020"}, - "Added back the report to bnet friend.", - "@Flamanis: fixed issues on custom displays.", - - {"v9.0.1.7950.144", "November 3rd, 2020"}, - "Added the baseline for the Coach feature, for testing use '/details coach', all users in the raid must have details! up to date.", - "Added container_spells:GetOrCreateSpell(id, shouldCreate, token).", - "Added Details:GetRaidLeader(), return the RL name.", - "Fixed Tiny Threat not showing threat.", - "Fixed annoucement interrupt enable toggle checkbox was reseting on logon.", - - {"v9.0.1.7938.142", "October 29th, 2020"}, - "Added option to select the icon buttons in the title bar.", - - {"v9.0.1.7739.142", "August 18th, 2020"}, - "More development on the new plugin Cast Timeline.", - "More development on Details! Scroll Damage.", - "Added options to opt-out show pets on solo play.", - "Added back Profiles and Plugins into the options panel.", - "Many framework fixes from retail ported to shadowlands.", - {"v9.0.1.7721.142", "August 14th, 2020"}, - "Encounter time in the title bar got new code and might work now for some people that had issues with it.", - "Fixed an error with the Welcome Window showing errors.", - "Statusbar got fixed, it should now show it's widgets normally.", - "Alignment for the title bar text also got fixed.", - {"v9.0.1.7707.142", "August 11th, 2020"}, - "While in The Concil of Blood, Details! now deletes the damage done to alive bosses when one of them dies. This condition can be turned off with /run Details.exp90temp.delete_damage_TCOB = false", - "Many Important Npcs like Jaina and Thrall shows as group members of your group.", - "More progress on the options panel overhaul.", - "General bug fixes.", - {"v9.0.1.7590.142", "July 31th, 2020"}, - "New options panel in progress", - "Added options for the 'Inline' right texts in the window", - "General round of fixes", - {"v9.0.1.7544.142", "July 25th, 2020"}, - "Changed texts alignment to be parallel.", - "Changed icons to white color.", - "Added player list on the Player Breakdown Window.", - "Added a new plugin: 'Cast Timeline' available at the Player Breakdown Window.", - "Added macro '/Details me' to open your Breakdown Window.", } local newsString = "|cFFF1F1F1" @@ -325,7 +136,11 @@ do local date = line[2] newsString = newsString .. "|cFFFFFF00" .. version .. " (|cFFFF8800" .. date .. "|r):|r\n\n" else - newsString = newsString .. "|cFFFFFF00-|r " .. line .. "\n\n" + if (line ~= "") then + newsString = newsString .. "|cFFFFFF00-|r " .. line .. "\n\n" + else + newsString = newsString .. " \n" + end end end @@ -980,15 +795,16 @@ do SharedMedia:Register("font", "Harry P", [[Interface\Addons\Details\fonts\HARRYP__.TTF]]) SharedMedia:Register("font", "FORCED SQUARE", [[Interface\Addons\Details\fonts\FORCED SQUARE.ttf]]) - SharedMedia:Register("sound", "d_gun1", [[Interface\Addons\Details\sounds\sound_gun2.ogg]]) - SharedMedia:Register("sound", "d_gun2", [[Interface\Addons\Details\sounds\sound_gun3.ogg]]) - SharedMedia:Register("sound", "d_jedi1", [[Interface\Addons\Details\sounds\sound_jedi1.ogg]]) - SharedMedia:Register("sound", "d_whip1", [[Interface\Addons\Details\sounds\sound_whip1.ogg]]) + SharedMedia:Register("sound", "Details Gun1", [[Interface\Addons\Details\sounds\sound_gun2.ogg]]) + SharedMedia:Register("sound", "Details Gun2", [[Interface\Addons\Details\sounds\sound_gun3.ogg]]) + SharedMedia:Register("sound", "Details Jedi1", [[Interface\Addons\Details\sounds\sound_jedi1.ogg]]) + SharedMedia:Register("sound", "Details Whip1", [[Interface\Addons\Details\sounds\sound_whip1.ogg]]) + SharedMedia:Register("sound", "Details Horn", [[Interface\Addons\Details\sounds\Details Horn.ogg]]) - SharedMedia:Register("sound", "Details Threat Warning Volume 1", [[Interface\Addons\Details\sounds\threat_warning_1.ogg]]) - SharedMedia:Register("sound", "Details Threat Warning Volume 2", [[Interface\Addons\Details\sounds\threat_warning_2.ogg]]) - SharedMedia:Register("sound", "Details Threat Warning Volume 3", [[Interface\Addons\Details\sounds\threat_warning_3.ogg]]) - SharedMedia:Register("sound", "Details Threat Warning Volume 4", [[Interface\Addons\Details\sounds\threat_warning_4.ogg]]) + SharedMedia:Register("sound", "Details Warning", [[Interface\Addons\Details\sounds\Details Warning 100.ogg]]) + --SharedMedia:Register("sound", "Details Warning (Volume 75%)", [[Interface\Addons\Details\sounds\Details Warning 75.ogg]]) + --SharedMedia:Register("sound", "Details Warning Volume 50%", [[Interface\Addons\Details\sounds\Details Warning 50.ogg]]) + --SharedMedia:Register("sound", "Details Warning Volume 25%", [[Interface\Addons\Details\sounds\Details Warning 25.ogg]]) @@ -1004,6 +820,14 @@ do end function dumpt(value) --[[GLOBAL]] + --check if this is a spellId + local spellId = tonumber(value) + if (spellId) then + local spellInfo = {GetSpellInfo(spellId)} + if (type(spellInfo[1]) == "string") then + return Details:Dump(spellInfo) + end + end return Details:Dump(value) end diff --git a/classes/class_combat.lua b/classes/class_combat.lua index 0223a661..058c5e3d 100644 --- a/classes/class_combat.lua +++ b/classes/class_combat.lua @@ -2,6 +2,7 @@ local _detalhes = _G._detalhes local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) local _ + local addonName, Details222 = ... --[[global]] DETAILS_TOTALS_ONLYGROUP = true diff --git a/classes/class_custom.lua b/classes/class_custom.lua index 68783e3e..eb7e03bf 100644 --- a/classes/class_custom.lua +++ b/classes/class_custom.lua @@ -1,7 +1,7 @@ - local _detalhes = _G._detalhes - local _ + local _ = nil _detalhes.custom_function_cache = {} + local addonName, Details222 = ... ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --local pointers @@ -1160,6 +1160,14 @@ end end + function Details222.GetCustomDisplayIDByName(customDisplayName) + for customDisplayID, customObject in ipairs(_detalhes.custom) do + if (customObject.name == customDisplayName) then + return customDisplayID + end + end + end + function _detalhes:AddDefaultCustomDisplays() local PotionUsed = { @@ -2258,6 +2266,7 @@ local DynamicOverallDamage = { name = Loc ["STRING_CUSTOM_DYNAMICOVERAL"], --"Dynamic Overall Damage", + displayName = Loc ["STRING_ATTRIBUTE_DAMAGE_DONE"], icon = [[Interface\Buttons\Spell-Reset]], attribute = false, spellid = false, diff --git a/classes/class_damage.lua b/classes/class_damage.lua index 1a5b934c..d6a229c2 100644 --- a/classes/class_damage.lua +++ b/classes/class_damage.lua @@ -3,8 +3,9 @@ local Details = _G.Details local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) local Translit = LibStub("LibTranslit-1.0") - local gump = Details.gump - local _ + local gump = Details.gump + local _ = nil + local addonName, Details222 = ... ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --local pointers @@ -13,12 +14,10 @@ local _math_floor = math.floor --lua local local _table_sort = table.sort --lua local local tinsert = table.insert --lua local - local _table_size = table.getn --lua local local setmetatable = setmetatable --lua local local _getmetatable = getmetatable --lua local local ipairs = ipairs --lua local local pairs = pairs --lua local - local rawget= rawget --lua local local _math_min = math.min --lua local local _math_max = math.max --lua local local abs = math.abs --lua local @@ -39,15 +38,10 @@ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --constants - local alvo_da_habilidade = Details.alvo_da_habilidade local container_habilidades = Details.container_habilidades - local container_combatentes = Details.container_combatentes local atributo_damage = Details.atributo_damage local atributo_misc = Details.atributo_misc - local habilidade_dano = Details.habilidade_dano - local container_damage_target = Details.container_type.CONTAINER_DAMAGETARGET_CLASS local container_damage = Details.container_type.CONTAINER_DAMAGE_CLASS - local container_friendlyfire = Details.container_type.CONTAINER_FRIENDLYFIRE local modo_GROUP = Details.modos.group local modo_ALL = Details.modos.all @@ -1630,7 +1624,7 @@ end ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --main refresh function -function atributo_damage:RefreshWindow (instancia, combatObject, forcar, exportar, refreshRequired) +function atributo_damage:RefreshWindow(instancia, combatObject, forcar, exportar, refreshRequired) local showing = combatObject[class_type] --o que esta sendo mostrado -> [1] - dano [2] - cura --pega o container com ._NameIndexTable ._ActorTable --not have something to show diff --git a/classes/class_error.lua b/classes/class_error.lua index 241e62c2..2052cf48 100644 --- a/classes/class_error.lua +++ b/classes/class_error.lua @@ -1,5 +1,6 @@ do local _detalhes = _G._detalhes + local addonName, Details222 = ... local _error = { ["error"] = true, diff --git a/classes/class_heal.lua b/classes/class_heal.lua index c0588d5c..7dbd6eac 100644 --- a/classes/class_heal.lua +++ b/classes/class_heal.lua @@ -1,6 +1,13 @@ +local _detalhes = _G._detalhes +local _ +local addonName, Details222 = ... + +local AceLocale = LibStub("AceLocale-3.0") +local Loc = AceLocale:GetLocale ( "Details" ) +local Translit = LibStub("LibTranslit-1.0") + --lua locals -local _cstr = string.format local _math_floor = math.floor local setmetatable = setmetatable local pairs = pairs @@ -10,7 +17,6 @@ local type = type local _table_sort = table.sort local _cstr = string.format local tinsert = table.insert -local _bit_band = bit.band local _math_min = math.min local _math_ceil = math.ceil --api locals @@ -18,18 +24,8 @@ local GetSpellInfo = GetSpellInfo local _GetSpellInfo = _detalhes.getspellinfo local IsInRaid = IsInRaid local IsInGroup = IsInGroup -local _UnitName = UnitName -local GetNumGroupMembers = GetNumGroupMembers local _string_replace = _detalhes.string.replace --details api - -local _detalhes = _G._detalhes -local _ - -local AceLocale = LibStub("AceLocale-3.0") -local Loc = AceLocale:GetLocale ( "Details" ) -local Translit = LibStub("LibTranslit-1.0") - local gump = _detalhes.gump local alvo_da_habilidade = _detalhes.alvo_da_habilidade diff --git a/classes/class_instance.lua b/classes/class_instance.lua index 263f6a96..881efd46 100644 --- a/classes/class_instance.lua +++ b/classes/class_instance.lua @@ -6,7 +6,6 @@ local type= type --lua local local ipairs = ipairs --lua local local pairs = pairs --lua local local _math_floor = math.floor --lua local -local abs = math.abs --lua local local _table_remove = table.remove --lua local local _getmetatable = getmetatable --lua local local setmetatable = setmetatable --lua local @@ -14,27 +13,23 @@ local _string_len = string.len --lua local local _unpack = unpack --lua local local _cstr = string.format --lua local local _SendChatMessage = SendChatMessage --wow api locals -local _GetChannelName = GetChannelName --wow api locals local _UnitExists = UnitExists --wow api locals local _UnitName = UnitName --wow api locals local _UnitIsPlayer = UnitIsPlayer --wow api locals local _UnitGroupRolesAssigned = DetailsFramework.UnitGroupRolesAssigned --wow api locals local _detalhes = _G._detalhes +local _ +local addonName, Details222 = ... local gump = _detalhes.gump -local historico = _detalhes.historico - local modo_raid = _detalhes._detalhes_props["MODO_RAID"] local modo_alone = _detalhes._detalhes_props["MODO_ALONE"] local modo_grupo = _detalhes._detalhes_props["MODO_GROUP"] local modo_all = _detalhes._detalhes_props["MODO_ALL"] -local _ - local atributos = _detalhes.atributos local sub_atributos = _detalhes.sub_atributos -local segmentos = _detalhes.segmentos --STARTUP reativa as instancias e regenera as tabelas das mesmas function _detalhes:RestartInstances() @@ -2301,6 +2296,29 @@ function _detalhes:TrocaTabela(instancia, segmento, atributo, sub_atributo, inic _detalhes:Msg("invalid attribute, switching to damage done.") end + if (Details.auto_swap_to_dynamic_overall and Details.in_combat and UnitAffectingCombat("player")) then + if (segmento >= 0) then + if (atributo == 5) then + local dynamicOverallDataCustomID = Details222.GetCustomDisplayIDByName(Loc["STRING_CUSTOM_DYNAMICOVERAL"]) + if (dynamicOverallDataCustomID == sub_atributo) then + atributo = 1 + sub_atributo = 1 + end + end + + elseif (segmento == -1) then + if (atributo == 1) then + if (sub_atributo == 1) then + local dynamicOverallDataCustomID = Details222.GetCustomDisplayIDByName(Loc["STRING_CUSTOM_DYNAMICOVERAL"]) + if (dynamicOverallDataCustomID) then + atributo = 5 + sub_atributo = dynamicOverallDataCustomID + end + end + end + end + end + --Muda o segmento caso necess�rio if (segmento ~= current_segmento or _detalhes.initializing or iniciando_instancia) then --na troca de segmento, conferir se a instancia esta frozen @@ -2419,6 +2437,7 @@ function _detalhes:TrocaTabela(instancia, segmento, atributo, sub_atributo, inic _detalhes.popup:Select(2, instancia.sub_atributo, atributo) end + --DEPRECATED if (_detalhes.cloud_process) then if (_detalhes.debug) then _detalhes:Msg("(debug) instancia #"..instancia.meu_id.." found cloud process.") @@ -2426,7 +2445,7 @@ function _detalhes:TrocaTabela(instancia, segmento, atributo, sub_atributo, inic local atributo = instancia.atributo local time_left = (_detalhes.last_data_requested+7) - _detalhes._tempo - + if (atributo == 1 and _detalhes.in_combat and not _detalhes:CaptureGet("damage") and _detalhes.host_by) then if (_detalhes.debug) then _detalhes:Msg("(debug) instancia need damage cloud.") @@ -2446,7 +2465,7 @@ function _detalhes:TrocaTabela(instancia, segmento, atributo, sub_atributo, inic else time_left = nil end - + if (time_left) then if (_detalhes.debug) then _detalhes:Msg("(debug) showing instance alert.") @@ -2454,6 +2473,7 @@ function _detalhes:TrocaTabela(instancia, segmento, atributo, sub_atributo, inic instancia:InstanceAlert (Loc ["STRING_PLEASE_WAIT"], {[[Interface\COMMON\StreamCircle]], 22, 22, true}, time_left) end end + --END OF DEPRECATED _detalhes:InstanceCall(_detalhes.CheckPsUpdate) _detalhes:SendEvent("DETAILS_INSTANCE_CHANGEATTRIBUTE", nil, instancia, atributo, sub_atributo) diff --git a/classes/class_resources.lua b/classes/class_resources.lua index 17ca06e9..e13b2d11 100644 --- a/classes/class_resources.lua +++ b/classes/class_resources.lua @@ -7,10 +7,6 @@ local tinsert = table.insert local setmetatable = setmetatable local ipairs = ipairs local pairs = pairs -local rawget= rawget -local _math_min = math.min -local _math_max = math.max -local _bit_band = bit.band local _unpack = unpack local type = type --api locals @@ -25,6 +21,7 @@ local _detalhes = _G._detalhes local AceLocale = LibStub("AceLocale-3.0") local Loc = AceLocale:GetLocale ( "Details" ) local _ +local addonName, Details222 = ... local gump = _detalhes.gump diff --git a/classes/class_spelldamage.lua b/classes/class_spelldamage.lua index bd965ec4..a07e1939 100644 --- a/classes/class_spelldamage.lua +++ b/classes/class_spelldamage.lua @@ -1,6 +1,7 @@ -- damage ability file local _detalhes = _G._detalhes local _ + local addonName, Details222 = ... ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --local pointers diff --git a/classes/class_spellhealing.lua b/classes/class_spellhealing.lua index 0ce6b641..6a1c43bd 100644 --- a/classes/class_spellhealing.lua +++ b/classes/class_spellhealing.lua @@ -2,7 +2,8 @@ local _detalhes = _G._detalhes local _ - + local addonName, Details222 = ... + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --constants diff --git a/classes/class_spellresources.lua b/classes/class_spellresources.lua index f4097138..ae7b4b53 100644 --- a/classes/class_spellresources.lua +++ b/classes/class_spellresources.lua @@ -2,6 +2,7 @@ local _detalhes = _G._detalhes local _ + local addonName, Details222 = ... ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --local pointers diff --git a/classes/class_spellutility.lua b/classes/class_spellutility.lua index 1d144e8d..46855cb4 100644 --- a/classes/class_spellutility.lua +++ b/classes/class_spellutility.lua @@ -1,6 +1,7 @@ -- misc ability file local _detalhes = _G._detalhes local _ + local addonName, Details222 = ... ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --local pointers diff --git a/classes/class_utility.lua b/classes/class_utility.lua index 3fdc7e7d..4e5ed081 100644 --- a/classes/class_utility.lua +++ b/classes/class_utility.lua @@ -2,14 +2,9 @@ local _cstr = string.format local _math_floor = math.floor local tinsert = table.insert -local _table_size = table.getn local ipairs = ipairs local pairs = pairs -local rawget= rawget local min = math.min -local _math_max = math.max -local abs = math.abs -local _bit_band = bit.band local unpack = unpack local type = type --api locals @@ -18,7 +13,6 @@ local GameTooltip = GameTooltip local IsInRaid = IsInRaid local IsInGroup = IsInGroup local GetNumGroupMembers = GetNumGroupMembers -local _GetNumSubgroupMembers = GetNumSubgroupMembers local _UnitAura = UnitAura local UnitGUID = UnitGUID local _UnitName = UnitName @@ -32,39 +26,24 @@ local _detalhes = _G._detalhes local Details = _detalhes local AceLocale = LibStub("AceLocale-3.0") local Loc = AceLocale:GetLocale ( "Details" ) +local addonName, Details222 = ... local gump = _detalhes.gump local _ -local alvo_da_habilidade = _detalhes.alvo_da_habilidade local container_habilidades = _detalhes.container_habilidades -local container_combatentes = _detalhes.container_combatentes -local container_pets = _detalhes.container_pets local atributo_misc = _detalhes.atributo_misc -local habilidade_misc = _detalhes.habilidade_misc -local container_damage_target = _detalhes.container_type.CONTAINER_DAMAGETARGET_CLASS -local container_playernpc = _detalhes.container_type.CONTAINER_PLAYERNPC local container_misc = _detalhes.container_type.CONTAINER_MISC_CLASS -local container_misc_target = _detalhes.container_type.CONTAINER_ENERGYTARGET_CLASS local modo_GROUP = _detalhes.modos.group local modo_ALL = _detalhes.modos.all local class_type = _detalhes.atributos.misc -local DATA_TYPE_START = _detalhes._detalhes_props.DATA_TYPE_START -local DATA_TYPE_END = _detalhes._detalhes_props.DATA_TYPE_END - -local div_abre = _detalhes.divisores.abre -local div_fecha = _detalhes.divisores.fecha -local div_lugar = _detalhes.divisores.colocacao - local ToKFunctions = _detalhes.ToKFunctions -local SelectedToKFunction = ToKFunctions[1] local UsingCustomLeftText = false local UsingCustomRightText = false -local FormatTooltipNumber = ToKFunctions[8] local TooltipMaximizedMethod = 1 local info = _detalhes.playerDetailWindow diff --git a/classes/container_actors.lua b/classes/container_actors.lua index d110d440..11cdf4fc 100644 --- a/classes/container_actors.lua +++ b/classes/container_actors.lua @@ -4,6 +4,7 @@ local Details = _G.Details local DF = _G.DetailsFramework local _ + local addonName, Details222 = ... local CONST_CLIENT_LANGUAGE = DF.ClientLanguage diff --git a/classes/container_pets.lua b/classes/container_pets.lua index 0fe953d9..23d0b44c 100644 --- a/classes/container_pets.lua +++ b/classes/container_pets.lua @@ -1,6 +1,8 @@ local _detalhes = _G._detalhes local gump = _detalhes.gump local container_pets = _detalhes.container_pets +local _ +local addonName, Details222 = ... -- api locals local UnitGUID = _G.UnitGUID @@ -14,7 +16,6 @@ local GetNumGroupMembers = _G.GetNumGroupMembers local setmetatable = setmetatable local _bit_band = bit.band --lua local local pairs = pairs -local ipairs = ipairs local wipe = table.wipe --details locals diff --git a/classes/container_segments.lua b/classes/container_segments.lua index 68502f8b..26f2fc55 100644 --- a/classes/container_segments.lua +++ b/classes/container_segments.lua @@ -6,6 +6,9 @@ local tinsert = table.insert local wipe = table.wipe local Details = _G._detalhes +local _ +local addonName, Details222 = ... + local combatClass = Details.combate local segmentClass = Details.historico local timeMachine = Details.timeMachine diff --git a/classes/container_spells.lua b/classes/container_spells.lua index 63cfcbed..dc4e74cb 100644 --- a/classes/container_spells.lua +++ b/classes/container_spells.lua @@ -2,6 +2,7 @@ local _detalhes = _G._detalhes local _ +local addonName, Details222 = ... ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --local pointers diff --git a/classes/custom_damagedone.lua b/classes/custom_damagedone.lua index aea20b3b..bbd5cf7f 100644 --- a/classes/custom_damagedone.lua +++ b/classes/custom_damagedone.lua @@ -12,6 +12,7 @@ local _detalhes = _G._detalhes local _ +local addonName, Details222 = ... ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --local pointers diff --git a/classes/custom_healingdone.lua b/classes/custom_healingdone.lua index 970662cb..008c8c0c 100644 --- a/classes/custom_healingdone.lua +++ b/classes/custom_healingdone.lua @@ -5,7 +5,8 @@ local _detalhes = _G._detalhes local _ - + local addonName, Details222 = ... + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --local pointers diff --git a/classes/include_instance.lua b/classes/include_instance.lua index a5b8ea31..1a217fb8 100644 --- a/classes/include_instance.lua +++ b/classes/include_instance.lua @@ -6,9 +6,10 @@ --values added into 'instance_skin_ignored_values' won't be passed when the user exports the profile or exports the skin individually. - local _detalhes = _G._detalhes local SharedMedia = LibStub:GetLibrary("LibSharedMedia-3.0") +local addonName, Details222 = ... +local _ = nil function _detalhes:ResetInstanceConfig (maintainsnap) for key, value in pairs(_detalhes.instance_defaults) do @@ -157,6 +158,8 @@ _detalhes.instance_defaults = { menu_icons_alpha = 1, --blackwhiite icons desaturated_menu = false, --mode segment attribute report + --menu icons color + menu_icons_color = {1, 1, 1}, --icons on menu menu_icons = {true, true, true, true, true, false, space = -2, shadow = false}, --mode segment attribute report reset close --menu icons size multiplicator factor diff --git a/core/control.lua b/core/control.lua index bc688a65..37f1ca73 100644 --- a/core/control.lua +++ b/core/control.lua @@ -5,6 +5,7 @@ local SharedMedia = LibStub:GetLibrary("LibSharedMedia-3.0") local _tempo = time() local _ + local addonName, Details222 = ... ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --local pointers diff --git a/core/gears.lua b/core/gears.lua index 50d8fe08..6cb747c3 100644 --- a/core/gears.lua +++ b/core/gears.lua @@ -9,6 +9,7 @@ local floor = floor local GetNumGroupMembers = GetNumGroupMembers local CONST_INSPECT_ACHIEVEMENT_DISTANCE = 1 --Compare Achievements, 28 yards +local CONST_SPELLBOOK_GENERAL_TABID = 1 local CONST_SPELLBOOK_CLASSSPELLS_TABID = 2 local storageDebug = false --remember to turn this to false! @@ -2968,6 +2969,35 @@ function Details.GenerateSpecSpellList() end) end +function Details.GenerateRacialSpellList() + local racialsSpells = "|n" + local locClassName, unitClass = UnitClass("player") + local locPlayerRace, playerRace, playerRaceId = UnitRace("player") + --get general spells from the spell book + local tabName, tabTexture, offset, numSpells, isGuild, offspecId = GetSpellTabInfo(CONST_SPELLBOOK_GENERAL_TABID) + offset = offset + 1 + local tabEnd = offset + numSpells + for entryOffset = offset, tabEnd - 1 do + local spellType, spellId = GetSpellBookItemInfo(entryOffset, "player") + if (spellId) then + local spell = Spell:CreateFromSpellID(spellId) + local subSpellName = spell:GetSpellSubtext() + if (subSpellName == "Racial") then + spellId = C_SpellBook.GetOverrideSpell(spellId) + local spellName = GetSpellInfo(spellId) + local isPassive = IsPassiveSpell(entryOffset, "player") + if (spellName and not isPassive) then + local cooldownTime = floor(GetSpellBaseCooldown(spellId) / 1000) + racialsSpells = racialsSpells .. "[" .. spellId .. "] = {cooldown = " .. cooldownTime .. ", duration = 0, specs = {}, talent = false, charges = 1, raceid = " .. playerRaceId .. ", race = \"".. playerRace .."\", class = \"\", type = 9}, --" .. spellName .. " (" .. playerRace .. ")|n" + end + end + end + end + + racialsSpells = racialsSpells .. "|n" + dumpt(racialsSpells) +end + --fill the passed table with spells from talents and spellbook, affect only the active spec function Details.FillTableWithPlayerSpells(completeListOfSpells) local specId, specName, _, specIconTexture = GetSpecializationInfo(GetSpecialization()) diff --git a/core/parser.lua b/core/parser.lua index ee17cea2..1e227ce0 100755 --- a/core/parser.lua +++ b/core/parser.lua @@ -2,11 +2,7 @@ local _detalhes = _G._detalhes local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) - local _tempo = time() - local _ local DetailsFramework = DetailsFramework - local isTBC = DetailsFramework.IsTBCWow() - local isWOTLK = DetailsFramework.IsWotLKWow() ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --local pointers @@ -33,10 +29,15 @@ local _UnitGroupRolesAssigned = DetailsFramework.UnitGroupRolesAssigned local _GetSpellInfo = _detalhes.getspellinfo + local isWOTLK = DetailsFramework.IsWotLKWow() + local _tempo = time() + local _, Details222 = ... + _ = nil local escudo = _detalhes.escudos --details local local parser = _detalhes.parser --details local local absorb_spell_list = _detalhes.AbsorbSpells --details local + local trinketData = {} local cc_spell_list = DetailsFramework.CrowdControlSpells local container_habilidades = _detalhes.container_habilidades --details local @@ -186,12 +187,9 @@ } --spellIds override - local override_spellId + local override_spellId = {} - if (isTBC) then - override_spellId = {} - - elseif (isWOTLK) then + if (isWOTLK) then override_spellId = { --Scourge Strike [55090] = 55271, @@ -314,7 +312,6 @@ --tbc spell caches local TBC_PrayerOfMendingCache = {} local TBC_EarthShieldCache = {} - local TBC_LifeBloomLatestHeal local TBC_JudgementOfLightCache = { _damageCache = {} } @@ -440,8 +437,8 @@ --in combat flag local _in_combat = false local _current_encounter_id - local _is_storing_cleu = false local _in_resting_zone = false + local _global_combat_counter = 0 --deathlog local _death_event_amt = 16 @@ -515,7 +512,7 @@ Details.SpecialSpellActorsName = {} --add sanguine affix - if (not isTBC) then + if (not isWOTLK) then if (Details.SanguineHealActorName) then Details.SpecialSpellActorsName[Details.SanguineHealActorName] = SPELLID_SANGUINE_HEAL end @@ -913,7 +910,7 @@ end --end - if (isTBC or isWOTLK) then + if (isWOTLK) then --is the target an enemy with judgement of light? if (TBC_JudgementOfLightCache[alvo_name] and false) then --store the player name which just landed a damage @@ -941,9 +938,9 @@ if (_detalhes.encounter_table.id and _detalhes.encounter_table["start"] >= GetTime() - 3 and _detalhes.announce_firsthit.enabled) then local link if (spellid <= 10) then - link = GetSpellInfo(spellid) + link = _GetSpellInfo(spellid) else - link = GetSpellLink(spellid) + link = _GetSpellInfo(spellid) end if (_detalhes.WhoAggroTimer) then @@ -1395,9 +1392,31 @@ end end - if (_is_storing_cleu) then - _current_combat_cleu_events [_current_combat_cleu_events.n] = {_tempo, _token_ids [token] or 0, who_name, alvo_name or "", spellid, amount} - _current_combat_cleu_events.n = _current_combat_cleu_events.n + 1 + if (trinketData[spellid] and _in_combat) then + local thisData = trinketData[spellid] + if (thisData.lastCombatId == _global_combat_counter) then + if (thisData.lastPlayerName == who_name) then + if (thisData.lastActivation < (time - 40)) then + local cooldownTime = time - thisData.lastActivation + thisData.totalCooldownTime = thisData.totalCooldownTime + cooldownTime + thisData.activations = thisData.activations + 1 + thisData.lastActivation = time + + thisData.averageTime = floor(thisData.totalCooldownTime / thisData.activations) + if (cooldownTime < thisData.minTime) then + thisData.minTime = cooldownTime + end + + if (cooldownTime > thisData.maxTime) then + thisData.maxTime = cooldownTime + end + end + end + else + thisData.lastCombatId = _global_combat_counter + thisData.lastActivation = time + thisData.lastPlayerName = who_name + end end return spell_damage_func (spell, alvo_serial, alvo_name, alvo_flags, amount, who_name, resisted, blocked, absorbed, critical, glacing, token, isoffhand, isreflected) @@ -1925,7 +1944,6 @@ --SUMMON serach key: ~summon | ----------------------------------------------------------------------------------------------------------------------------------------- function parser:summon (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellName) - --[[statistics]]-- _detalhes.statistics.pets_summons = _detalhes.statistics.pets_summons + 1 if (not _detalhes.capture_real ["damage"] and not _detalhes.capture_real ["heal"]) then @@ -2195,15 +2213,7 @@ cura_efetiva = cura_efetiva + amount - overhealing end - if (isTBC) then - --life bloom explosion (second part of the heal) - if (spellid == SPELLID_DRUID_LIFEBLOOM_HEAL) then - TBC_LifeBloomLatestHeal = cura_efetiva - return - end - end - - if (isTBC or isWOTLK) then + if (isWOTLK) then --earth shield if (spellid == SPELLID_SHAMAN_EARTHSHIELD_HEAL) then --get the information of who placed the buff into this actor @@ -2431,11 +2441,6 @@ end end - if (_is_storing_cleu) then - _current_combat_cleu_events [_current_combat_cleu_events.n] = {_tempo, _token_ids [token] or 0, who_name, alvo_name or "", spellid, amount} - _current_combat_cleu_events.n = _current_combat_cleu_events.n + 1 - end - if (is_shield) then --return spell:Add (alvo_serial, alvo_name, alvo_flags, cura_efetiva, who_name, 0, nil, overhealing, true) return spell_heal_func (spell, alvo_serial, alvo_name, alvo_flags, cura_efetiva, who_name, 0, nil, overhealing, true) @@ -2564,7 +2569,7 @@ necro_cheat_deaths[who_serial] = true end - if (isTBC or isWOTLK) then + if (isWOTLK) then if (SHAMAN_EARTHSHIELD_BUFF[spellid]) then TBC_EarthShieldCache[alvo_name] = {who_serial, who_name, who_flags} @@ -2619,7 +2624,7 @@ _detalhes.tabela_pets:Adicionar(alvo_serial, alvo_name, alvo_flags, who_serial, who_name, 0x00000417) end - if (isTBC or isWOTLK) then --buff applied + if (isWOTLK) then --buff applied if (spellid == 27162 and false) then --Judgement Of Light --which player applied the judgement of light on this mob TBC_JudgementOfLightCache[alvo_name] = {who_serial, who_name, who_flags} @@ -2856,15 +2861,6 @@ end end - --buff refresh - if (isTBC) then - if (SHAMAN_EARTHSHIELD_BUFF[spellid]) then - TBC_EarthShieldCache[alvo_name] = {who_serial, who_name, who_flags} - - elseif (spellid == SPELLID_PRIEST_POM_BUFF) then - TBC_PrayerOfMendingCache[alvo_name] = {who_serial, who_name, who_flags} - end - end ------------------------------------------------------------------------------------------------ --recording buffs @@ -2896,7 +2892,7 @@ bargastBuffs[alvo_serial] = (bargastBuffs[alvo_serial] or 0) + 1 end - if (isTBC or isWOTLK) then --buff refresh + if (isWOTLK) then --buff refresh if (spellid == 27162 and false) then --Judgement Of Light --which player applied the judgement of light on this mob TBC_JudgementOfLightCache[alvo_name] = {who_serial, who_name, who_flags} @@ -3001,23 +2997,6 @@ necro_cheat_deaths[who_serial] = nil end - if (isTBC) then - --shaman earth shield - if (SHAMAN_EARTHSHIELD_BUFF[spellid]) then - TBC_EarthShieldCache[alvo_name] = nil - end - - --druid life bloom - if (spellid == SPELLID_DRUID_LIFEBLOOM_BUFF) then - local healAmount = TBC_LifeBloomLatestHeal - if (healAmount) then - --award the heal to the buff caster name - parser:heal("SPELL_HEAL", time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, spellschool, healAmount, 0, 0, false, false) - TBC_LifeBloomLatestHeal = nil - end - end - end - --druid kyrian empower bounds (9.0 kyrian covenant - probably remove on 10.0) if (spellid == SPELLID_KYRIAN_DRUID and alvo_name) then druid_kyrian_bounds[alvo_name] = nil @@ -3071,7 +3050,7 @@ who_serial, who_name, who_flags = "", enemyName, 0xa48 end - if (isTBC or isWOTLK) then --buff removed + if (isWOTLK) then --buff removed if (spellid == 27162 and false) then --Judgement Of Light TBC_JudgementOfLightCache[alvo_name] = nil end @@ -5248,6 +5227,35 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 _detalhes:SchedulePetUpdate(1) end + local autoSwapDynamicOverallData = function(instance, inCombat) + local mainDisplayGroup, subDisplay = instance:GetDisplay() + local customDisplayAttributeId = 5 + + --entering in combat, swap to dynamic overall damage + if (inCombat) then + if (mainDisplayGroup == DETAILS_ATTRIBUTE_DAMAGE and subDisplay == DETAILS_SUBATTRIBUTE_DAMAGEDONE) then + local segment = instance:GetSegment() + if (segment == DETAILS_SEGMENTID_OVERALL) then + local dynamicOverallDataCustomID = Details222.GetCustomDisplayIDByName(Loc["STRING_CUSTOM_DYNAMICOVERAL"]) + instance:SetDisplay(segment, customDisplayAttributeId, dynamicOverallDataCustomID) + end + end + else + --leaving combat + if (mainDisplayGroup == customDisplayAttributeId) then + local dynamicOverallDataCustomID = Details222.GetCustomDisplayIDByName(Loc["STRING_CUSTOM_DYNAMICOVERAL"]) + if (subDisplay == dynamicOverallDataCustomID) then + local segment = instance:GetSegment() + if (segment == DETAILS_SEGMENTID_OVERALL) then + instance:SetDisplay(true, DETAILS_ATTRIBUTE_DAMAGE, DETAILS_SUBATTRIBUTE_DAMAGEDONE) + end + end + end + + end + end + + function _detalhes.parser_functions:PLAYER_REGEN_DISABLED(...) C_Timer.After(0, function() if (not Details.bossTargetAtPull) then @@ -5260,6 +5268,15 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 end end) + if (Details.auto_swap_to_dynamic_overall) then + Details:InstanceCall(autoSwapDynamicOverallData, true) + end + + Details.combat_id_global = Details.combat_id_global + 1 + _global_combat_counter = Details.combat_id_global + + trinketData = Details:GetTrinketData() + if (_detalhes.zone_type == "pvp" and not _detalhes.use_battleground_server_parser) then if (_in_combat) then _detalhes:SairDoCombate() @@ -5460,7 +5477,10 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 function _detalhes.parser_functions:CHALLENGE_MODE_START(...) --send mythic dungeon start event - print("parser event", "CHALLENGE_MODE_START", ...) + if (_detalhes.debug) then + print("parser event", "CHALLENGE_MODE_START", ...) + end + local zoneName, instanceType, difficultyID, difficultyName, maxPlayers, dynamicDifficulty, isDynamic, instanceMapID, instanceGroupSize = GetInstanceInfo() if (difficultyID == 8) then _detalhes:SendEvent("COMBAT_MYTHICDUNGEON_START") @@ -5488,6 +5508,10 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 end end + if (Details.auto_swap_to_dynamic_overall) then + Details:InstanceCall(autoSwapDynamicOverallData, false) + end + --elapsed combat time _detalhes.LatestCombatDone = GetTime() _detalhes.tabela_vigente.CombatEndedAt = GetTime() @@ -6397,7 +6421,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 for i = 1, players do local name, killingBlows, honorableKills, deaths, honorGained, faction, race, rank, class, classToken, damageDone, healingDone, bgRating, ratingChange, preMatchMMR, mmrChange, talentSpec - if (isTBC or isWOTLK) then + if (isWOTLK) then name, killingBlows, honorableKills, deaths, honorGained, faction, rank, race, class, classToken, damageDone, healingDone, bgRating, ratingChange, preMatchMMR, mmrChange, talentSpec = GetBattlefieldScore(i) else name, killingBlows, honorableKills, deaths, honorGained, faction, race, class, classToken, damageDone, healingDone, bgRating, ratingChange, preMatchMMR, mmrChange, talentSpec = GetBattlefieldScore(i) diff --git a/frames/window_all_in_one.lua b/frames/window_all_in_one.lua new file mode 100644 index 00000000..0d1b9497 --- /dev/null +++ b/frames/window_all_in_one.lua @@ -0,0 +1,552 @@ + --prĂ³ximo: ao criar uma janela AllInOne, precisa criar uma nova instancia no Details! + --na tabela de configuraĂ§Ă£o precisa dizer que Ă© uma all in one e o details vai chamar esse arquivo pra atualizar + + --(ainda aqui) parei atualizando o height da titlebar + --proximo passo: atualizar o resto das propriedade da title bar + --fazer as funcções para setar os valores na titleBar + --verificar se precisa adicionar funcções no mixin dos bottões como SetTexture, SetVertexColor + + --tem que fazer a funĂ§Ă£o de ShowWindow() e ToggleWindows() + --fazer a criaĂ§Ă£o do header e fazer o header ser redirecionado (aumentar ou diminuir o tamanho by dragging) + + local LibWindow = LibStub("LibWindow-1.1") + local df = DetailsFramework + local detailsFramework = DetailsFramework + + local textureCoords = { + show_mainmenu = {0/256, 32/256, 0, 1}, + show_segments = {32/256, 64/256, 0, 1}, + show_report = {96/256, 128/256, 0, 1}, + show_reset = {128/256, 160/256, 0, 1}, + show_displays = {66/256, 93/256, 0, 1}, + show_close = {160/256, 192/256, 0, 1}, + } + + --namespace + Details.AllInOneWindow = { + --store the frame of all AllInOne windows, this table does not same with the addon + FramesCreated = {}, + WindowsOpened = 0, + + --return a table: {{settings}, {settings}, {settings}, {settings}, ...} + GetAllSettings = function() + --setting within profile + return Details.all_in_one_windows + end, + + --return the amount of settings by calling the above function and returning the amount of indexes + GetNumSettings = function() + return #Details.AllInOneWindow.GetAllSettings() + end, + + --return which will be the next settingID if a new setting is added + GetNextSettingID = function() + return #Details.all_in_one_windows + 1 + end, + + --return the settingTable of a settingID + GetSettingsByID = function(ID) + return Details.AllInOneWindow.GetAllSettings()[ID] + end, + + --add a setting and return the settingID + AddSetting = function(newSettingTable) + local allSettings = Details.AllInOneWindow.GetAllSettings() + allSettings[#allSettings+1] = newSettingTable + return #allSettings + end, + + --frames already created on this session + GetAllFrames = function() + return Details.AllInOneWindow.FramesCreated + end, + + GetNumFrames = function() + return #Details.AllInOneWindow.GetAllFrames() + end, + + GetFrameBySettingID = function(settingId) + local numFramesCreated = Details.AllInOneWindow.GetNumFrames() + for id = 1, numFramesCreated do + local window = Details.AllInOneWindow.GetFrameByID(id) + if (window:GetSettingsID() == settingId) then + return window:GetSettings() + end + end + end, + + AddFrame = function(frame) + Details.AllInOneWindow.FramesCreated[#Details.AllInOneWindow.FramesCreated+1] = frame + return #Details.AllInOneWindow.FramesCreated+1 + end, + + GetFrameByID = function(ID) + return Details.AllInOneWindow.FramesCreated[ID] + end, + + RestoreAllWindows = function() + + end, + + ShowWindow = function(settingId) + + end, + + HideWindow = function(settingId) + assert(type(settingId) ~= "number", "Details.AllInOneWindow.HideWindow require a number on 'settingId'") + local settings = Details.AllInOneWindow.GetAllSettings() + local windowSetting = settings[settingId] + assert(type(windowSetting) ~= "table", "Details.AllInOneWindow.HideWindow settings not found for settingId: " .. settingId) + + if (windowSetting) then + if (windowSetting.isOpened) then + windowSetting.isOpened = false + --get the window being used by this setting + local window = Details.AllInOneWindow.GetFrameBySettingID(settingId) + if (window) then + window:Hide() + end + end + end + end, + + HideAllWindows = function() + local numSettings = Details.AllInOneWindow.GetNumSettings() + --table with all the settings for all AllInOne windows in the current profile + local settings = Details.AllInOneWindow.GetAllSettings() + for settingId = 1, numSettings do + local windowSetting = Details.AllInOneWindow.GetSettingsByID(settingId) + if (windowSetting.isOpened) then + Details.AllInOneWindow.HideWindow(settingId) + end + end + end, + + ToggleWindows = function() + + end, + } + + local menuButtonMixin = { + GetSettingName = function(button) + return button.settingName + end, + } + + local menuSupportFrameMixin = { + Constructor = function(menuSupportFrame) + menuSupportFrame:SetSize(1, 1) + menuSupportFrame.allButtons = {} + + menuSupportFrame:CreateMenuButton("CloseMenu", "show_close") + menuSupportFrame:CreateMenuButton("MainMenu", "show_mainmenu") + menuSupportFrame:CreateMenuButton("SegmentsMenu", "show_segments") + menuSupportFrame:CreateMenuButton("DisplaysMenu", "show_report") + menuSupportFrame:CreateMenuButton("ReportMenu", "show_reset") + menuSupportFrame:CreateMenuButton("ResetMenu", "show_displays") + end, + + GetNumButtons = function(supportFrame) + return #supportFrame.allButtons + end, + + GetButtonByIndex = function(supportFrame, buttonIndex) + return supportFrame.allButtons[buttonIndex] + end, + + CreateMenuButton = function(supportFrame, name, settingName) + local newButton = CreateFrame("button", "$parent" .. name, supportFrame) + newButton:SetSize(20, 20) + newButton:SetScale(1) + supportFrame.allButtons[#supportFrame.allButtons+1] = newButton + df:Mixin(newButton, menuButtonMixin) + newButton.settingName = settingName + return newButton + end, + + Refresh = function(supportFrame) + local window = supportFrame:GetParent():GetParent() + --problem: it is getting the settings from the AllInOneWindow settings, it should get from Details! default window settings + --this settings should return the regular window setting from Details! on _detalhes.tabela_instancias[windowId] + local settings = window:GetSettings().titlebar.menu_buttons + + supportFrame:ClearAllPoints() + supportFrame:SetSize(1, 1) + supportFrame:SetScale(settings.scale) + supportFrame:SetAlpha(settings.alpha) + + --buttons currently allowed to show by the user settings + local allShownButtons = {} + for i = 1, supportFrame:GetNumButtons() do + local button = supportFrame:GetButtonByIndex(i) + if (settings[button:GetSettingName()]) then + allShownButtons[#allShownButtons+1] = button + button:Show() + df:SetRegularButtonTexture(button, settings.texture_file, textureCoords[button:GetSettingName()]) + df:SetRegularButtonVertexColor(button, settings.color) + else + button:Hide() + end + end + + --hardcoded to place the menu buttons in the left side of the window + --if needed this can be "right" with the header leave space for it + local attachPoint = "left" + + if (settings.alignment == "horizontal") then + --make it attach to the left side of the title bar or the right side of the title bar + supportFrame:SetPoint(attachPoint, window.TitleBar, attachPoint, settings.x_offset, settings.y_offset) + + local paddingAmount = attachPoint == "left" and settings.padding or (settings.padding * -1) + for i = 1, #allShownButtons do + local button = allShownButtons[i] + if (i ==1) then + button:SetPoint(attachPoint, supportFrame, attachPoint, 0, 0) + else + local previousButton = allShownButtons[i - 1] + local sideToAttach = attachPoint == "left" and "right" or "left" + button:SetPoint(attachPoint, previousButton, sideToAttach, paddingAmount, 0) + end + end + + elseif (settings.alignment == "vertical") then + if (attachPoint == "left") then + supportFrame:SetPoint("topright", window.TitleBar, "topleft", settings.x_offset, settings.y_offset) + else + supportFrame:SetPoint("topleft", window.TitleBar, "topright", settings.x_offset, settings.y_offset) + end + + --here left == top to bottom | right = bottom to top + local paddingAmount = attachPoint == "left" and settings.padding or (settings.padding * -1) + local attachTo = attachPoint == "left" and "top" or "bottom" + for i = 1, #allShownButtons do + local button = allShownButtons[i] + if (i ==1) then + button:SetPoint(attachTo, supportFrame, attachTo, 0, 0) + else + local previousButton = allShownButtons[i - 1] + local sideToAttach = attachTo == "left" and "bottom" or "top" + button:SetPoint(attachTo, previousButton, sideToAttach, paddingAmount, 0) + end + end + end + end, + } + + local titleBarMixin = { + --run when the title bar is created + Constructor = function(titleBar) + titleBar:EnableMouse(false) + + --create support frame for control buttons, it also will create the control buttons as children + titleBar:CreateMenuSupportFrame() + + --create the elapsed time string + titleBar:CreateCombatTimeString() + titleBar:SetCombatTimeText("02:36") --debug + end, + + GetSettings = function(titleBar) + --get the settings from the main window + return titleBar:GetParent():GetSettings() + end, + + SetSetting = function() + --this function exists and get overriden by the SetSetting of the window mixin + end, + + SetTitleBarHeight = function(titleBar, height) + assert(type(height) == "number", "Invalid height, usage: TitleBar:SetTitleBarHeight(height)") + titleBar:SetHeight(height) + titleBar:SetSetting(height, "titlebar", "height") + titleBar:Refresh() + end, + + SetTitleBarTextSize = function(window, size) + if (not size or type(size) ~= "number") then + return + end + df:SetFontSize(window.TitleBar.CombatTime, size) + + end, + + SetTitleBarTextColor = function(window, color) + local r, g, b, a = df:ParseColor(color) + df:SetFontColor(window.TitleBar.CombatTime, r, g, b, a) + end, + + SetTitleBarTextFont = function(window, font) + + end, + + SetTitleBarTextOutline = function(window, outline) + + end, + + SetTitleBarTextShadow = function(window, shadow, xOffset, yOffset) + + end, + + CreateCombatTimeString = function(titleBar) + local combatTimeString = titleBar:CreateFontString("$parentCombatTime", "overlay", "GameFontNormal") + titleBar.CombatTime = combatTimeString + return titleBar.CombatTime + end, + + GetCombatTimeString = function(titleBar) + return titleBar.CombatTime + end, + + SetCombatTimeText = function(titleBar, combatTime) + local combatTimeString = titleBar:GetCombatTimeString() + if (type(combatTime) == "string") then + combatTimeString:SetText(combatTime) + + elseif (type(combatTime) == "number") then + local timeAsString = DetailsFramework:IntegerToTimer(combatTime) + combatTimeString:SetText(timeAsString) + else + --if no valid time passed, clear the timer + combatTimeString:SetText("") + end + end, + + Refresh = function(titleBar) + local config = titleBar:GetSettings() + + --height + local height = config.titlebar.height + titleBar:SetHeight(height) + + local timerShown = config.timer_show + + local menuSupportFrame = titleBar:GetMenuSupportFrame() + menuSupportFrame:Update() + + --[=[ + --height = 20, + timer_show = true, + timer_ignore_openworld = true, + timer_only_encounters = false, + + text_size = 10, + text_font = "Friz Quadrata TT", + text_outline = "NONE", + text_shadow = { + enabled = false, + color = {1, 1, 1, 1}, + x_offset = 1, + y_offset = -1, + }, + --]=] + + end, + + GetMenuSupportFrame = function(titleBar) + return titleBar.MenuSupportFrame + end, + + --menu support frame is the frame which will parent the menu buttons (cogwheel, segments, report button, etc) + CreateMenuSupportFrame = function(titleBar) + local menuSupportFrame = CreateFrame("frame", "$parentMenuSupportFrame", titleBar, "BackdropTemplate") + titleBar.MenuSupportFrame = menuSupportFrame + detailsFramework:Mixin(menuSupportFrame, menuSupportFrameMixin) + menuSupportFrame:Constructor() + return menuSupportFrame + end, + + } + + local AllInOneWindowMixin = { + SetSetting = function(window, value, ...) + local config = window:GetSettings() + local currentTable = config + local lastKey = "" + for index, key in ipairs({...}) do + if (type(currentTable[key]) == "table") then + currentTable = currentTable[value] + else + lastKey = key + end + end + currentTable[lastKey] = value + end, + + IsOpened = function(window) + return Details.AllInOneWindow.GetSettingsByID(window:GetSettingsID()).isOpened + end, + + SetWindowSize = function(self, width, height) + + end, + + GetSettings = function(window) + return window.settings + end, + + SetSettingID = function(window, newSettingId) + assert(type(newSettingId) ~= "number", "window.SetSettingID require a number on 'newSettingId'") + local settings = Details.AllInOneWindow.GetSettingsByID(newSettingId) + if (settings) then + window.id = newSettingId + window.settings = settings + else + error("window.SetSettingID could not find a settings for ID " .. newSettingId) + end + end, + + GetSettingsID = function(window) + return window.id + end, + + CreateTitleBar = function(window) + local titleBar = CreateFrame("frame", "$parentTitleBar", window, "BackdropTemplate") + window.TitleBar = titleBar + df:Mixin(titleBar, titleBarMixin) + titleBar:Constructor() + return titleBar + end, + + GetTitleBar = function(window) + return window.TitleBar + end, + + Refresh = function(window) + local settingsId = window:GetSettingsID() + local settings = window:GetSettings() + + if (not settings.isOpened) then + window:Hide() + return + end + + local titleBar = window:GetTitleBar() + titleBar:Refresh() + end, + } + + --override + titleBarMixin.SetSetting = AllInOneWindowMixin.SetSetting + + local defaultWindowSettings = { + isOpened = true, + + libwindow = {}, + width = 350, -- + height = 150, -- + + titlebar = { + --done here: all options can be retrived from details! settings + menu_buttons = {}, + + }, + + } + + --create only the frame for a new window ~newwindow ñewwindow + function Details.AllInOneWindow.CreateFrame(settingId) + --create the new window + local newWindowFrame = CreateFrame("frame", "DetailsNewWindow" .. settingId, UIParent, "BackdropTemplate") + newWindowFrame.id = settingId + df:Mixin(newWindowFrame, AllInOneWindowMixin) + + newWindowFrame:SetPoint("center", UIParent, "center", -400, 0) + + --create the title bar + newWindowFrame:CreateTitleBar() + + --creare header + + + + --create scroll bar + + + + --create resizers + + + + --add the frame to the frame pool + local frameId = Details.AllInOneWindow.AddFrame(newWindowFrame) + return newWindowFrame + end + + --[=[ + lib window need to be on the AllInOneWindow:Update() so it can register the new libwindow table on profile change + --register on libwindow + LibWindow.RegisterConfig(newWindow, windowSettings.libwindow) + LibWindow.RestorePosition(newWindow) + LibWindow.MakeDraggable(newWindow) + + --set the size using the settings + newWindow:SetSize(windowSettings.width, windowSettings.height) + + --rnable mouse for click through + newWindow:EnableMouse(true) + --setmovable for locked + newWindow:SetMovable(true) + + --title bar position (default on top) + titleBar:SetPoint("topleft", newWindow, "topleft", 0, 0) + titleBar:SetPoint("topright", newWindow, "topright", 0, 0) + --title bar height + titleBar:SetHeight(20) + + --combat time position + combatTimeString:SetPoint("left", titleBar, "left", 2, 0) + --]=] + + --create the settings for a new window plus the frames + function Details:CreateNewAllInOneWindow() + --get profile settings + local profileSettings = Details:GetSettingsForAll_AllInOneWindows() + + --get what is the ID if a new window is added + local nextSettingId = Details.AllInOneWindow.GetNextSettingID() + + --copy the settings prototype + local windowSettings = df.table.deploy({}, defaultWindowSettings) + --add the new settings table into the profile where the new window settings are stored + local settingId = Details.AllInOneWindow.AddSetting(windowSettings) + + --create window body + local windowFrame = Details.AllInOneWindow.CreateFrame(settingId) + + return windowFrame + end + + --assuming this will run when the profile is loaded + + + --used when a profile finished loading + --CURRENT THE ONLY ENTRY POINT + function Details.AllInOneWindow.ReloadAll() + --get the amount of settings + local numSettings = Details.AllInOneWindow.GetNumSettings() + + --table with all window frames already created on this session + local framesCreated = Details.AllInOneWindow.GetAllFrames() + --next frame to be used + local frameIndex = 1 + + for settingId = 1, numSettings do + local windowSetting = Details.AllInOneWindow.GetSettingsByID(settingId) + if (windowSetting.isOpened) then + local windowFrame = framesCreated[frameIndex] + if (not windowFrame) then + windowFrame = Details.AllInOneWindow.CreateFrame(settingId) + end + frameIndex = frameIndex + 1 + windowFrame:SetSettingID(settingId) + --setup the frame using the settings + windowFrame:Refresh() + end + end + end + + + + + + diff --git a/frames/window_aura_tracker.lua b/frames/window_aura_tracker.lua index 0ab460db..7bacc2b9 100644 --- a/frames/window_aura_tracker.lua +++ b/frames/window_aura_tracker.lua @@ -147,7 +147,7 @@ function Details.AuraTracker.CreatePanel() local statusBar = DetailsFramework:CreateStatusBar(auraTrackerFrame) statusBar.text = statusBar:CreateFontString(nil, "overlay", "GameFontNormal") statusBar.text:SetPoint("left", statusBar, "left", 5, 0) - statusBar.text:SetText("Details! Damage Meter") + statusBar.text:SetText("By Terciob | Part of Details! Damage Meter") DetailsFramework:SetFontSize(statusBar.text, 11) DetailsFramework:SetFontColor(statusBar.text, "gray") @@ -156,8 +156,8 @@ function Details.AuraTracker.CreatePanel() {text = "", width = 20}, {text = "Aura Name", width = 162}, {text = "Spell Id", width = 100}, - {text = "Lua Table", width = 250}, - {text = "Points", width = 100}, + {text = "Lua Table", width = 200}, + {text = "Payload (Points)", width = 296}, } local headerOptions = { padding = 2, @@ -260,6 +260,9 @@ local formatToLuaTable = { end, } +--if you need your own table format, override the function below as: function(auraInfo) return "" end +--[[GLOBAL]] DETAILS_AURATRACKER_LUATABLE_FUNC = nil + --[371354] = {[131] = 1, [151] = 2, [174] = 3, [1] = 131, [2] = 151, [3] = 174}, --Phial of the Eye in the Storm function Details.AuraTracker.RefreshScroll(self, data, offset, totalLines) @@ -273,8 +276,13 @@ function Details.AuraTracker.RefreshScroll(self, data, offset, totalLines) line.Icon.texture = auraInfo.icon line.Name.text = auraInfo.name line.SpellId.text = auraInfo.spellId - line.LuaTableEntry.text = formatToLuaTable.doFormat5(auraInfo) --doFormat2NoIndex - line.Points.text = formatToLuaTable.doFormat2NoIndexFromCache(auraInfo) + local globalfunc = DETAILS_AURATRACKER_LUATABLE_FUNC + line.LuaTableEntry.text = globalfunc and globalfunc(auraInfo) or formatToLuaTable.doFormat2NoIndex(auraInfo) --doFormat2NoIndex + line.Points.text = formatToLuaTable.doFormat5(auraInfo) + + line.Name:SetCursorPosition(0) + line.LuaTableEntry:SetCursorPosition(0) + line.Points:SetCursorPosition(0) end end end diff --git a/frames/window_cdtracker.lua b/frames/window_cdtracker.lua index 1d4599ab..0d6d4551 100644 --- a/frames/window_cdtracker.lua +++ b/frames/window_cdtracker.lua @@ -5,13 +5,20 @@ local DF = _G.DetailsFramework local openRaidLib = LibStub:GetLibrary("LibOpenRaid-1.0", true) --namespace -Details.CooldownTracking = {} +Details.CooldownTracking = { + cooldownPanels = {}, +} ---return if the cooldown tracker is enabled +--return truen if the cooldown tracker is enabled function Details.CooldownTracking.IsEnabled() return Details.ocd_tracker.enabled end +--return a hash table with all cooldown panels created [filterName] = Frame +function Details.CooldownTracking.GetAllPanels() + return Details.CooldownTracking.cooldownPanels +end + --enable the cooldown tracker function Details.CooldownTracking.EnableTracker() Details.ocd_tracker.enabled = true @@ -31,8 +38,9 @@ function Details.CooldownTracking.DisableTracker() Details.ocd_tracker.enabled = false --hide the panel - if (DetailsOnlineCDTrackerScreenPanel) then - DetailsOnlineCDTrackerScreenPanel:Hide() + local allPanels = Details.CooldownTracking.GetAllPanels() + for filterName, frameObject in pairs(allPanels) do + frameObject:Hide() end --unregister callbacks @@ -59,7 +67,13 @@ end --@unitCooldows: a table with [spellId] = cooldownInfo --@allUnitsCooldowns: a table containing all units [unitName] = {[spellId] = cooldownInfo} function Details.CooldownTracking.OnReceiveSingleCooldownUpdate(unitId, spellId, cooldownInfo, unitCooldows, allUnitsCooldowns) - local screenPanel = DetailsOnlineCDTrackerScreenPanel + --TODO: make a function inside lib open raid to get the filters the cooldown is in + --I dont known which panel will be used + --need to get the filter name which that spell belong + --and then check if that filter is enabled + local allPanels = Details.CooldownTracking.GetAllPanels() + + local screenPanel = allPanels["main"] --this should be replaced with the cooldown panel local gotUpdated = false local unitName = GetUnitName(unitId, true) @@ -102,8 +116,10 @@ end --Frames --hide all bars created - function Details.CooldownTracking.HideAllBars() - for _, bar in ipairs(DetailsOnlineCDTrackerScreenPanel.bars) do + function Details.CooldownTracking.HideAllBars(filterName) + filterName = filterName or "main" + local allPanels = Details.CooldownTracking.GetAllPanels() + for _, bar in ipairs(allPanels[filterName].bars) do bar:ClearAllPoints() bar:Hide() @@ -126,49 +142,56 @@ end return cooldownFrame end + local eventFrame = CreateFrame("frame") + eventFrame:RegisterEvent("GROUP_ROSTER_UPDATE") + eventFrame:SetScript("OnShow", function() + eventFrame:RegisterEvent("GROUP_ROSTER_UPDATE") + end) + + eventFrame:SetScript("OnHide", function() + eventFrame:UnregisterEvent("GROUP_ROSTER_UPDATE") + end) + + eventFrame:SetScript("OnEvent", function(self, event) + if (event == "GROUP_ROSTER_UPDATE") then + if (eventFrame.scheduleRosterUpdate) then + return + end + eventFrame.scheduleRosterUpdate = C_Timer.NewTimer(1, Details.CooldownTracking.RefreshCooldownFrames) + end + end) + --create the screen panel, goes into the UIParent and show cooldowns - function Details.CooldownTracking.CreateScreenFrame() - DetailsOnlineCDTrackerScreenPanel = CreateFrame("frame", "DetailsOnlineCDTrackerScreenPanel", UIParent, "BackdropTemplate") - local screenPanel = DetailsOnlineCDTrackerScreenPanel - screenPanel:Hide() - screenPanel:SetSize(Details.ocd_tracker.width, Details.ocd_tracker.height) - screenPanel:SetPoint("center", 0, 0) - screenPanel:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true}) - screenPanel:SetBackdropColor(0, 0, 0, .55) - screenPanel:SetBackdropBorderColor(0, 0, 0, .3) - screenPanel:EnableMouse(true) + function Details.CooldownTracking.CreateScreenFrame(filterName) + filterName = filterName or "main" + local frameName = "DetailsOnlineCDTrackerScreenPanel" .. filterName + local cooldownPanel = CreateFrame("frame", frameName, UIParent, "BackdropTemplate") + cooldownPanel:Hide() + cooldownPanel:SetSize(Details.ocd_tracker.width, Details.ocd_tracker.height) + cooldownPanel:SetPoint("center", 0, 0) + DetailsFramework:ApplyStandardBackdrop(cooldownPanel) + cooldownPanel:EnableMouse(true) --register on libwindow local libWindow = LibStub("LibWindow-1.1") - libWindow.RegisterConfig(screenPanel, _detalhes.ocd_tracker.pos) - libWindow.MakeDraggable(screenPanel) - libWindow.RestorePosition(screenPanel) + Details.ocd_tracker.frames[filterName] = Details.ocd_tracker.frames[filterName] or {} + libWindow.RegisterConfig(cooldownPanel, Details.ocd_tracker.frames[filterName]) + libWindow.MakeDraggable(cooldownPanel) + libWindow.RestorePosition(cooldownPanel) - screenPanel:RegisterEvent("GROUP_ROSTER_UPDATE") - screenPanel:SetScript("OnShow", function() - screenPanel:RegisterEvent("GROUP_ROSTER_UPDATE") - end) - screenPanel:SetScript("OnHide", function() - screenPanel:UnregisterEvent("GROUP_ROSTER_UPDATE") - end) + cooldownPanel.bars = {} + cooldownPanel.cooldownCache = Details.ocd_tracker.current_cooldowns + cooldownPanel.playerCache = {} + cooldownPanel.statusBarFrameIndex = 1 - screenPanel:SetScript("OnEvent", function(self, event) - if (event == "GROUP_ROSTER_UPDATE") then - if (screenPanel.scheduleRosterUpdate) then - return - end - screenPanel.scheduleRosterUpdate = C_Timer.NewTimer(1, Details.CooldownTracking.RefreshCooldownFrames) - end - end) + local allPanels = Details.CooldownTracking.GetAllPanels() + allPanels[filterName] = cooldownPanel - screenPanel.bars = {} - screenPanel.cooldownCache = Details.ocd_tracker.current_cooldowns - screenPanel.playerCache = {} - screenPanel.statusBarFrameIndex = 1 - - return screenPanel + return cooldownPanel end + + function Details.CooldownTracking.SetupCooldownFrame(cooldownFrame) local spellIcon = GetSpellTexture(cooldownFrame.spellId) if (spellIcon) then @@ -184,8 +207,10 @@ end function Details.CooldownTracking.ProcessUnitCooldowns(unitId, unitCooldowns, cooldownsOrganized) if (unitCooldowns) then local unitInfo = openRaidLib.GetUnitInfo(unitId) + local filterName = false if (unitInfo) then - local screenPanel = DetailsOnlineCDTrackerScreenPanel + local allPanels = Details.CooldownTracking.GetAllPanels() + local screenPanel = allPanels[filterName or "main"] for spellId, cooldownInfo in pairs(unitCooldowns) do --get a bar local cooldownFrame = Details.CooldownTracking.GetOrCreateNewCooldownFrame(screenPanel, screenPanel.statusBarFrameIndex) @@ -212,8 +237,9 @@ end end --update cooldown frames based on the amount of players in the group or raid - function Details.CooldownTracking.RefreshCooldownFrames() - local screenPanel = DetailsOnlineCDTrackerScreenPanel + function Details.CooldownTracking.RefreshCooldownFrames(filterName) + local allPanels = Details.CooldownTracking.GetAllPanels() + local screenPanel = allPanels[filterName or "main"] if (not screenPanel) then screenPanel = Details.CooldownTracking.CreateScreenFrame() @@ -537,7 +563,8 @@ end } - DF:BuildMenu(f, generalOptions, 5, -30, 150, true, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template) + generalOptions.always_boxfirst = true + DF:BuildMenu(f, generalOptions, 5, -30, 150, false, options_text_template, options_dropdown_template, options_switch_template, true, options_slider_template, options_button_template) --cooldown selection local cooldownProfile = Details.ocd_tracker.cooldowns diff --git a/frames/window_main.lua b/frames/window_main.lua index efc7aea5..6f62f787 100644 --- a/frames/window_main.lua +++ b/frames/window_main.lua @@ -28,6 +28,9 @@ local IsInInstance = _G.IsInInstance local tokFunctions = Details.ToKFunctions +local _, Details222 = ... +_ = nil + --constants local baseframe_strata = "LOW" local defaultBackdropSt = { @@ -7933,7 +7936,10 @@ function Details:RefreshTitleBarText() if (instanceMode == DETAILS_MODE_GROUP or instanceMode == DETAILS_MODE_ALL) then local segment = self:GetSegment() if (segment == DETAILS_SEGMENTID_OVERALL) then - sName = sName .. " " .. Loc["STRING_OVERALL"] + local dynamicOverallDataCustomID = Details222.GetCustomDisplayIDByName(Loc["STRING_CUSTOM_DYNAMICOVERAL"]) + if ((dynamicOverallDataCustomID ~= self.sub_atributo) and self.atributo ~= 5) then + sName = sName .. " " .. Loc["STRING_OVERALL"] + end elseif (segment >= 2) then sName = sName .. " [" .. segment .. "]" diff --git a/frames/window_news.lua b/frames/window_news.lua index 5615ff2c..3c16c1e6 100644 --- a/frames/window_news.lua +++ b/frames/window_news.lua @@ -2,12 +2,17 @@ local Details = _G.Details local Loc = LibStub("AceLocale-3.0"):GetLocale( "Details" ) local gump = Details.gump -local _ +local _, Details222 = ... +_ = nil function Details:OpenNewsWindow(textToShow, dumpValues, keeptext) Details.latest_news_saw = Details.userversion local newsFrame = Details:CreateOrOpenNewsWindow() + local animationHub = DetailsFramework:CreateAnimationHub(newsFrame) + local fadeInAnim1 = DetailsFramework:CreateAnimation(animationHub, "alpha", 1, 0.2, 0, 0.2) + local fadeInAnim2 = DetailsFramework:CreateAnimation(animationHub, "alpha", 2, 1.5, 0.5, 1) + fadeInAnim2:SetStartDelay(1.3) if (dumpValues == "change_log" or textToShow == "LeftButton") then newsFrame:Text (Loc ["STRING_VERSION_LOG"]) @@ -57,6 +62,7 @@ function Details:OpenNewsWindow(textToShow, dumpValues, keeptext) end newsFrame:Show() + animationHub:Play() end function Details:CreateOrOpenNewsWindow() diff --git a/frames/window_options2_sections.lua b/frames/window_options2_sections.lua index e3acbe43..744d9ca4 100644 --- a/frames/window_options2_sections.lua +++ b/frames/window_options2_sections.lua @@ -33,9 +33,9 @@ local Loc = _G.LibStub("AceLocale-3.0"):GetLocale("Details") local SharedMedia = _G.LibStub:GetLibrary("LibSharedMedia-3.0") local LDB = _G.LibStub("LibDataBroker-1.1", true) local LDBIcon = LDB and _G.LibStub("LibDBIcon-1.0", true) -local _ +local addonName, Details222 = ... +local _ = nil local unpack = _G.unpack - local tinsert = _G.tinsert local startX = 200 @@ -518,6 +518,17 @@ do desc = Loc ["STRING_OPTIONS_OVERALL_LOGOFF_DESC"], boxfirst = true, }, + {--auto switch to dynamic overall data when selecting overall data + type = "toggle", + get = function() return _detalhes.auto_swap_to_dynamic_overall end, + set = function(self, fixedparam, value) + Details.auto_swap_to_dynamic_overall = value + afterUpdate() + end, + name = "Use Dynamic Overall Damage", + desc = "When showing Damage Done Overall, swap to Dynamic Overall Damage on entering combat.", + boxfirst = true, + }, {type = "blank"}, diff --git a/frames/window_playerbreakdown_charts b/frames/window_playerbreakdown_charts new file mode 100644 index 00000000..803a12a3 --- /dev/null +++ b/frames/window_playerbreakdown_charts @@ -0,0 +1,523 @@ + +--whenever it say 'CombatID' it is referencing the Details! unique combatId +--whenever it say 'SegmentID' it is referencing the internal chart data registered for some details! combat + +local Details = _G.Details +local detailsFramework = _G.DetailsFramework +local addonName, detailsInternal = ... + +local CONST_LATEST_SEGMENT = 1 + +local tinsert = table.insert +local tremove = table.remove + +local CONST_TICKER_NAME = "ChartDataTicker" +local CONST_TICKER_INTERVAL = 3 + +--create the chart object +detailsInternal.Charts = {} +local chartsObject = detailsInternal.Charts + +--store all segments data +chartsObject.SegmentsData = {} +--current segment being displayed in the charts +chartsObject.SegmentOnVisualization = 0 + +--this table will hold the saved variable which tells which infomation to get during combat +chartsObject.DataToCapture = {} + +function chartsObject.GetConfigToCaptureData() + return chartsObject.DataToCapture +end + +function chartsObject.SetConfigToCaptureData(configTable) + chartsObject.DataToCapture = configTable +end + +function chartsObject.GetSavedVariable() + return Details.data_harvested_for_charts +end + +function chartsObject.StoreChartsForCurrentCombat() + local savedVariableTable = chartsObject.GetSavedVariable() + + --Details.data_harvested_for_charts +end + +function chartsObject.BuildPlayersTable(playersTable) + if (IsInRaid()) then + for i = 1, GetNumGroupMembers() do + local unitName = GetUnitName("raid" .. i, true) + playersTable[unitName] = {} + end + + elseif (InIsParty()) then + for i = 1, GetNumGroupMembers() - 1 do + local unitName = GetUnitName("party" .. i, true) + playersTable[unitName] = {} + end + playersTable[UnitName("player")] = {} + else + playersTable[UnitName("player")] = {} + end +end + +function chartsObject.CreateTableToReceiveChartData() + local t = {} + + --get the list of players captures + local configsForCaptureData = chartsObject.GetConfigToCaptureData() + + --data set to capture data of each individual player + local playerCaptures = configsForCaptureData.players + --data set to capture data of some combat attribute or totals + local combatTotalCaptures = configsForCaptureData.totals + + if (#playerCaptures > 0) then + t.players = {} + for i = 1, #playerCaptures do + local capturePreset = playerCaptures[i] + local playersTable = {} + t.players[capturePreset.name] = playersTable + chartsObject.BuildPlayersTable(playersTable) + end + end + + if (#combatTotalCaptures > 0) then + t.totals = {} + for i = 1, #combatTotalCaptures do + local capturePreset = combatTotalCaptures[i] + t.totals[capturePreset.name] = {} + end + end + + return t +end + +--function to grab data during combat +function chartsObject.Ticker() + if (chartsObject.HasValidAndOpenCombat()) then + --get Details! combat object + local detaisCurrentCombat = Details:GetCurrentCombat() + + --get the list of players captures + local configsForCaptureData = chartsObject.GetConfigToCaptureData() + + --data set to capture data of each individual player + local playerCaptures = configsForCaptureData.players + --data set to capture data of some combat attribute or totals + local combatTotalCaptures = configsForCaptureData.totals + + local currentSegmentData = chartsObject.GetCurrentSegmentData() + local chartData = currentSegmentData.ChartData + + if (#playerCaptures > 0) then + --PAREI AQUI, PRECISA PEGAR O CAPTURE NAME, A TABELA COM OS NOMES DOS JOGADORES E PEGAR OS DADOS DO SEGMENTO DO DETAILS! + --DEPOIS TEM QUE FECHAR ISSO AQUI E GRAGAR NO SEGMENT DA CHART + --DEPOIS FAZER O MENU DE SELECIONAR O SEGMENTO MOSTRAR OS SEGMENTOS DO DETAILS PARA SELECIONAR + --POR FIM PROGRAMAR AS CHARTS PRA MOSTRAR OS GRAFICOS + for i = 1, #playerCaptures do + local capturePreset = playerCaptures[i] + local thisCaptureTable = chartData[capturePreset.Name] + t.players[capturePreset.name] = playersTable + chartsObject.BuildPlayersTable(playersTable) + end + end + + if (#combatTotalCaptures > 0) then + t.totals = {} + for i = 1, #combatTotalCaptures do + local capturePreset = combatTotalCaptures[i] + t.totals[capturePreset.name] = {} + end + end + + for i = 1, #playerCaptures do + local capturePreset = playerCaptures[i] + if (capturePreset.combatObjectSubTable) then + local subTable = detaisCurrentCombat[capturePreset.combatObjectSubTableName] + local value = subTable[capturePreset.combatObjectSubTableKey] + + end + end + end +end + +--[=[]] + players = { + --damage done by each player + { + name = "Damage of Each Individual Player", + combatObjectContainer = 1, + playerOnly = true, + playerKey = "total", + }, + + --total damage done by the raid group + { + name = "Damage of All Player Combined", + combatObjectSubTableName = "totals", + combatObjectSubTableKey = 1, + }, + }, +--]=] + +function chartsObject.GetConfigToDataCaptureFromDetailsOptions() + local detailsObject = Details + local configTable = detailsObject.data_harvest_for_charsts + chartsObject.SetConfigToCaptureData(configTable) +end + +function chartsObject.StartCombatDataTicker() + detailsInternal.Scheduler.NewTicker(CONST_TICKER_INTERVAL, chartsObject.Ticker, CONST_TICKER_NAME) +end + +function chartsObject.StopCombatDataTicker() + detailsInternal.Scheduler.Cancel(CONST_TICKER_NAME) +end + +--get a segment combat data +function chartsObject.GetSegmentsCombatData(combatIndex) + return chartsObject.SegmentsData[combatIndex] +end + +--get a segment combat data by Details! combatId +function chartsObject.GetSegmentCombatDataByDetailsCombatID(detailsCombatId) + for i = 1, chartsObject.GetNumSegments() do + local thisSegmentCombatData = chartsObject.SegmentsData[i] + if (thisSegmentCombatData.detailsCombatID == detailsCombatId) then + return thisSegmentCombatData + end + end +end + +--select a combat to make the chart frames show +function chartsObject.SelectSegmentDataToShow(segmentId) + segmentId = segmentId or CONST_LATEST_SEGMENT + local numSegments = chartsObject.GetNumSegments() + if (numSegments > 0) then + --pre step before calling the function which will signal the frame to update + chartsObject.ChartFramesShowSegment(CONST_LATEST_SEGMENT) + else + chartsObject.ChartFramesClear() + end +end + +function chartsObject.ChartFramesClear() + --pre step before calling the function which will signal the frame to update + chartsObject.ChartFramesShowSegment(0) +end + +--this function shouldn't be called directly, always call from SelectSegmentDataToShow or ChartFramesClear +function chartsObject.ChartFramesShowSegment(segmentId) + --set the combat data into the charts + chartsObject.SegmentOnVisualization = segmentId + --here go into the frames created and call refresh using the segment data + + local segmentCombatData = chartsObject.GetSegmentsCombatData(segmentId) + if (segmentCombatData) then + --this is the lowest function and will call the frame api to refresh the data + else + chartsObject.SegmentOnVisualization = 0 + --this is the lowest function and will call the frame api to refresh the data + end +end + +--called when Details! reset the data +function chartsObject.ResetSegmentData() + wipe(chartsObject.SegmentsData) + + --stop the ticker + chartsObject.StopCombatDataTicker() + --don't allow anything to be process under the start of a new combat + chartsObject.SetCombatState(false) + --signal the frames to update and shown no data + chartsObject.ChartFramesClear() +end + +--set the combat state +function chartsObject.SetCombatState(state) + chartsObject.InCombat = state +end + +function chartsObject.HasValidAndOpenCombat() + local bCombatState = chartsObject.GetCombatState() + if (bCombatState) then + local detaisCurrentCombat = Details:GetCurrentCombat() + local chartCurrentSegmentData = chartsObject.GetCurrentSegmentData() + if (detaisCurrentCombat:GetCombatId() == chartCurrentSegmentData:GetCombatId()) then + --it's all good + return true + end + end +end + +--return true if in combat +function chartsObject.GetCombatState() + return chartsObject.InCombat +end + +function chartsObject.RemoveSegmentData(segmentId) + tremove(chartsObject.SegmentsData, segmentId) + chartsObject.SelectSegmentDataToShow(CONST_LATEST_SEGMENT) +end + +function chartsObject.GetNumSegments() + return #chartsObject.SegmentsData +end + +function chartsObject.GetCurrentSegmentData() + return chartsObject.segmentData +end + +--add the new combatData into the first index +local segmentDataMixin = { + GetCombatId = function(self) + return self.detailsCombatID + end, +} + +--this is called when the player enter in combat +function chartsObject.CreateNewSegmentData(detailsCombatObject) + chartsObject.segmentData = { + --players Damage for the segment + PlayersDamage = {}, + --players Healing for the segment + PlayersHealing = {}, + --each index is a boss fight + BossTryDamage = 0, + --blood lust timer + BloodLustTimers = {}, + --combatId + detailsCombatID = detailsCombatObject:GetCombatId(), + --charts data captured + ChartData = chartsObject.CreateTableToReceiveChartData(), + } + + detailsFramework:Mixin(chartsObject.segmentData, segmentDataMixin) + tinsert(chartsObject.SegmentsData, 1, chartsObject.segmentData) + + chartsObject.GetConfigToDataCaptureFromDetailsOptions() + chartsObject.SetCombatState(true) + chartsObject.StartCombatDataTicker() + + return chartsObject.segmentData +end + +--when a combat is finished, close and store the current combatData +function chartsObject.CloseSegmentData(bIsInvalid) + --in case a combat_invalid passed by here first + if (not chartsObject.GetCombatState()) then + return + end + + chartsObject.StopCombatDataTicker() + chartsObject.SetCombatState(false) + + local currentCombat = chartsObject.GetSegmentsCombatData(1) + currentCombat.Done = true + + if (bIsInvalid) then + currentCombat.Invalid = true + chartsObject.RemoveSegmentData(1) + else + --check if the window is opened and update the chart current in sight + end +end + +--Details Events: +function chartsObject.OnDetailsEvent(event, ...) + if (event == "COMBAT_PLAYER_ENTER") then --> combat started + local combatObject = select(1, ...) + if (not combatObject and Details) then + combatObject = Details:GetCurrentCombat() + if (not combatObject) then + return + end + end + chartsObject.CreateNewSegmentData(combatObject) + + elseif (event == "COMBAT_PLAYER_LEAVE") then + chartsObject.CloseSegmentData() + + elseif (event == "DETAILS_DATA_RESET") then + chartsObject.ResetSegmentData() + + elseif (event == "COMBAT_INVALID") then + local bIsInvalid = true + chartsObject.CloseSegmentData(bIsInvalid) + + elseif (event == "DETAILS_STARTED") then + --install the new tab on the Player Breakdown + chartsObject.InstallTab() + end +end + + +local eventListener = Details:CreateEventListener() +eventListener:RegisterEvent("COMBAT_PLAYER_ENTER", chartsObject.OnDetailsEvent) +eventListener:RegisterEvent("COMBAT_PLAYER_LEAVE", chartsObject.OnDetailsEvent) +eventListener:RegisterEvent("DETAILS_DATA_RESET", chartsObject.OnDetailsEvent) +eventListener:RegisterEvent("COMBAT_INVALID", chartsObject.OnDetailsEvent) +eventListener:RegisterEvent("DETAILS_STARTED", chartsObject.OnDetailsEvent) + +function chartsObject.InstallTab() + local tabName = "Charts" + local tabNameLoc = "Damage Charts" + + local canShowTab = function(tabOBject, playerObject) + local combatObject = Details:GetCombatFromBreakdownWindow() + if (combatObject) then + local chartsCombatData = chartsObject.GetSegmentCombatDataByDetailsCombatID(combatObject:GetCombatId()) + if (chartsCombatData) then + return true + end + end + return false + end + + local fillTab = function(tab, playerObject, combat) + --update the tab frame with information + + end + + local createdChartsTab = function(tab, frame) + chartsObject.CreateChartFrames(tab, frame) + end + + local iconSettings = { + texture = [[Interface\BUTTONS\UI-GuildButton-OfficerNote-Disabled]], + coords = {0, 1, 0, 1}, + width = 16, + height = 16, + } + + Details:CreatePlayerDetailsTab(tabName, tabNameLoc, canShowTab, fillTab, nil, createdChartsTab, iconSettings) +end + + +function chartsObject.CreateChartFrames(tab, tabFrame) + + --First Option: each player dps chart on each segment, this show the evolution of damage of each player + --Second Option: Total Damage Done by the entire raid comparing with other segments (one line of raid damage per segment) + --Thrid Option: your damage compared with other of the same class (chart damage of each player required) + --Your habilites compared segment by segment (no chart data required) + + --segment scroll in the left + --boss image, boss name, + + --when selecting a boss show the chart for the boss + + local defaultChartSections = { + { + Name = "Raid Damage", + ChartID = 1, + ChartData = "alldamagers-segment", + }, + { + + }, + } + + + local scrollWidth = 200 + local scrollHeight = 500 + local scrollButtonHeight = 20 + local amountScrollLines = floor(scrollHeight / scrollButtonHeight) + local allLinesCreated = {} + local lineSelectedBackdropColor = {.5, .5, .5, .5} + + local onClickLine_SelectChartToView = function(button, mouseButton) + for buttonId, line in ipairs(allLinesCreated) do + line:SetDefaultBackdropColor() + end + end + + local lineMixin = { + SetDefaultBackdropColor = function(line) + line.__background:SetVertexColor(unpack(line.defaultBackgroundColor)) + end, + + SetSelectedBackdropColor = function(line) + line.__background:SetVertexColor(unpack(lineSelectedBackdropColor)) + end, + + OnClickLine = function(line) + --select the chart to view + end, + } + + --function to create a line in the scroll frame + local createScrollLine = function(self, index) + --create a new line + local line = CreateFrame("button", "$parentLine" .. index, self, "BackdropTemplate") + detailsFramework:Mixin(line, lineMixin) + + --set its parameters + line:SetPoint("topleft", self, "topleft", 1, -((index-1) * (scrollButtonHeight+1)) - 1) + line:SetSize(scrollWidth-19, scrollButtonHeight) + line:RegisterForClicks("LeftButtonDown", "RightButtonDown") + + line:SetScript("OnClick", line.OnClickLine) + + detailsFramework:ApplyStandardBackdrop(line) + line.defaultBackgroundColor = {line.__background:GetVertexColor()} + + local icon = line:CreateTexture("$parentSpecIcon", "artwork") + icon:SetSize(scrollButtonHeight, scrollButtonHeight) + icon:SetAlpha(0.71) + + local chartData = defaultChartSections[index] + local chartName = detailsFramework:CreateLabel(line, chartData.Name, 11, "white", "GameFontNormal") + + icon:SetPoint("left", line, "left", 0, 0) + chartName:SetPoint("topleft", icon, "topright", 2, -3) + + line.Icon = icon + line.ChartName = chartName + return line + end + + local refreshScroll = function(self, data, offset, totalLines) + for i = 1, totalLines do + local index = i + offset + local chartData = data[index] + if (chartData) then + local line = self:GetLine(i) + line.ChartID = chartData.ChartID + line.ChartData = chartData.ChartData + line.ChartName.text = chartData.Name + end + end + end + + --Create the scrollbox showing the selection for charts + local chartSelectionScrollBox = detailsFramework:CreateScrollBox( + tabFrame, + "$parentChartSelectionScroll", + refreshScroll, + {}, + scrollWidth, + scrollHeight, + amountScrollLines, + scrollButtonHeight + ) + + detailsFramework:ReskinSlider(chartSelectionScrollBox) + chartSelectionScrollBox.ScrollBar:ClearAllPoints() + chartSelectionScrollBox.ScrollBar:SetPoint("topright", chartSelectionScrollBox, "topright", -2, -17) + chartSelectionScrollBox.ScrollBar:SetPoint("bottomright", chartSelectionScrollBox, "bottomright", -2, 17) + chartSelectionScrollBox:SetPoint("topright", tabFrame, "topleft", -1, 0) + chartSelectionScrollBox:SetPoint("bottomright", tabFrame, "bottomleft", -1, 0) + + detailsFramework:ApplyStandardBackdrop(chartSelectionScrollBox) + + tabFrame.chartSelectionScrollBox = chartSelectionScrollBox + + --create the scrollbox lines + for i = 1, amountScrollLines do + chartSelectionScrollBox:CreateLine(createScrollLine) + end + + +end \ No newline at end of file diff --git a/frames/window_scrolldamage.lua b/frames/window_scrolldamage.lua index 5221e7fa..d1888d3c 100644 --- a/frames/window_scrolldamage.lua +++ b/frames/window_scrolldamage.lua @@ -2,18 +2,24 @@ local Details = _G.Details local DF = _G.DetailsFramework -local _ +local _, Details222 = ... +_ = nil +local _GetSpellInfo = Details.GetSpellInfo function Details:ScrollDamage() if (not DetailsScrollDamage) then DetailsScrollDamage = DetailsFramework:CreateSimplePanel(UIParent) DetailsScrollDamage:SetSize(427 - 40 - 20 - 20, 505 - 150 + 20 + 40) - DetailsScrollDamage:SetTitle("Details! Scroll Damage (/details scroll)") + DetailsScrollDamage:SetTitle("/details scroll") DetailsScrollDamage.Data = {} DetailsScrollDamage:ClearAllPoints() DetailsScrollDamage:SetPoint("left", UIParent, "left", 10, 0) DetailsScrollDamage:Hide() + DetailsScrollDamage.Title:SetPoint("center", DetailsScrollDamage.TitleBar, "center", 108, 0) + + DetailsFramework:ApplyStandardBackdrop(DetailsScrollDamage) + local scroll_width = 395 - 40 - 20 - 20 local scroll_height = 340 local scroll_lines = 16 @@ -24,9 +30,12 @@ function Details:ScrollDamage() local backdrop_color_is_critical = {.4, .4, .2, 0.2} local backdrop_color_is_critical_on_enter = {1, 1, .8, 0.4} + local dropdownTemplate = DetailsFramework:GetTemplate("dropdown", "OPTIONS_DROPDOWNDARK_TEMPLATE") + local y = -15 local headerY = y - 15 local scrollY = headerY - 20 + local fontSize = 10 local LibWindow = _G.LibStub("LibWindow-1.1") DetailsScrollDamage:SetScript("OnMouseDown", nil) @@ -43,12 +52,15 @@ function Details:ScrollDamage() LibWindow.MakeDraggable(DetailsScrollDamage) LibWindow.RestorePosition(DetailsScrollDamage) + local scaleBar = DetailsFramework:CreateScaleBar(DetailsScrollDamage, Details.damage_scroll_position) + DetailsScrollDamage:SetScale(Details.damage_scroll_position.scale) + --header local headerTable = { {text = "", width = 20}, {text = "Spell Name", width = 104}, {text = "Amount", width = 60}, - {text = "Time", width = 60}, + {text = "Time", width = 45}, {text = "Spell ID", width = 80}, } local headerOptions = { @@ -60,7 +72,7 @@ function Details:ScrollDamage() DetailsScrollDamage.searchText = "" DetailsScrollDamage.searchCache = {} - local refreshFunc = function(self, data, offset, totalLines) + local refreshFunc = function(self, data, offset, totalLines) --~refresh local ToK = _detalhes:GetCurrentToKFunction() for i = 1, totalLines do @@ -74,13 +86,14 @@ function Details:ScrollDamage() local spellName, _, spellIcon if (token ~= "SWING_DAMAGE") then - spellName, _, spellIcon = GetSpellInfo(spellID) + spellName, _, spellIcon = _GetSpellInfo(spellID) else - spellName, _, spellIcon = GetSpellInfo(1) + spellName, _, spellIcon = _GetSpellInfo(1) end line.SpellID = spellID line.IsCritical = isCritical + line.IconFrame.SpellID = spellID if (isCritical) then line:SetBackdropColor(unpack(backdrop_color_is_critical)) @@ -91,11 +104,12 @@ function Details:ScrollDamage() if (spellName) then line.Icon:SetTexture(spellIcon) line.Icon:SetTexCoord(.1, .9, .1, .9) - line.DamageText.text = isCritical and "|cFFFFFF00" .. ToK(_, amount) or ToK(_, amount) - line.TimeText.text = format("%.2f", time - DetailsScrollDamage.Data.Started) + line.DamageText.text = isCritical and "|cFFFFFF00 " .. ToK(_, amount) or " " .. ToK(_, amount) + line.TimeText.text = " " .. format("%.2f", time - DetailsScrollDamage.Data.Started) line.SpellIDText.text = spellID + line.SpellIDText:SetCursorPosition(0) line.SpellNameText.text = spellName - DF:TruncateText(line.SpellNameText, 104) + line.SpellNameText:SetCursorPosition(0) else line:Hide() end @@ -103,41 +117,45 @@ function Details:ScrollDamage() end end - local lineOnEnter = function(self) + local lineOnEnter = function(self) --~onenter + --if this does not have IconFrame it means it is the IconFrame itself + if (not self.IconFrame) then + GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") + GameTooltip:SetSpellByID(self.SpellID) + GameTooltip:AddLine(" ") + GameTooltip:Show() + + self = self:GetParent() + end + if (self.IsCritical) then self:SetBackdropColor(unpack(backdrop_color_is_critical_on_enter)) else self:SetBackdropColor(unpack(backdrop_color_on_enter)) end - - if (self.SpellID) then - --spell tooltip removed, it's to much annoying - --GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") - --GameTooltip:SetSpellByID(self.SpellID) - --GameTooltip:AddLine(" ") - --GameTooltip:Show() - end end - local lineOnLeave = function(self) - if (self.IsCritical) then - self:SetBackdropColor(unpack(backdrop_color_is_critical)) - else - self:SetBackdropColor(unpack(backdrop_color)) + local lineOnLeave = function(self) --~onleave + --if this has an icon frame it means its the line itself + if (self.IconFrame) then + if (self.IsCritical) then + self:SetBackdropColor(unpack(backdrop_color_is_critical)) + else + self:SetBackdropColor(unpack(backdrop_color)) + end end - + GameTooltip:Hide() end local createLineFunc = function(self, index) - local line = CreateFrame("button", "$parentLine" .. index, self,"BackdropTemplate") line:SetPoint("topleft", self, "topleft", 1, -((index-1)*(scroll_line_height+1)) - 1) line:SetSize(scroll_width - 2, scroll_line_height) line:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true}) line:SetBackdropColor(unpack(backdrop_color)) - + -- ~createline --~line DF:Mixin(line, DF.HeaderFunctions) line:SetScript("OnEnter", lineOnEnter) @@ -147,17 +165,22 @@ function Details:ScrollDamage() local icon = line:CreateTexture("$parentSpellIcon", "overlay") icon:SetSize(scroll_line_height - 2, scroll_line_height - 2) + local iconFrame = CreateFrame("frame", "$parentIconFrame", line) + iconFrame:SetAllPoints(icon) + iconFrame:SetScript("OnEnter", lineOnEnter) + iconFrame:SetScript("OnLeave", lineOnLeave) + --spellname - local spellNameText = DF:CreateLabel(line) + local spellNameText = DetailsFramework:CreateTextEntry(line, function()end, DetailsScrollDamage.Header:GetColumnWidth(2), scroll_line_height, _, _, _, dropdownTemplate) --damage - local damageText = DF:CreateLabel(line) + local damageText = DF:CreateLabel(line, "", fontSize, "white") --time - local timeText = DF:CreateLabel(line) + local timeText = DF:CreateLabel(line, "", fontSize, "white") --spell ID - local spellIDText = DF:CreateLabel(line) + local spellIDText = DetailsFramework:CreateTextEntry(line, function()end, DetailsScrollDamage.Header:GetColumnWidth(5), scroll_line_height, _, _, _, dropdownTemplate) line:AddFrameToHeaderAlignment(icon) line:AddFrameToHeaderAlignment(spellNameText) @@ -168,6 +191,7 @@ function Details:ScrollDamage() line:AlignWithHeader(DetailsScrollDamage.Header, "left") line.Icon = icon + line.IconFrame = iconFrame line.DamageText = damageText line.TimeText = timeText line.SpellIDText = spellIDText @@ -251,7 +275,7 @@ function Details:ScrollDamage() autoOpenCheckbox:SetAsCheckBox() autoOpenCheckbox:SetPoint("left", statusBar, "left", 5, 0) - local autoOpenText = DetailsFramework:CreateLabel(statusBar, "Auto Open on Training Dummy") + local autoOpenText = DetailsFramework:CreateLabel(statusBar, "Auto Open on Training Dummy", 10) autoOpenText:SetPoint("left", autoOpenCheckbox, "right", 2, 0) --search bar diff --git a/functions/api2.lua b/functions/api2.lua index cf424ad9..d0174682 100644 --- a/functions/api2.lua +++ b/functions/api2.lua @@ -7,6 +7,8 @@ This is a high level API for Details! Damage Meter --]=] +local addonName, Details222 = ... + --local helpers local getCombatObject = function(segmentNumber) local combatObject diff --git a/functions/attributes.lua b/functions/attributes.lua index 335017fd..288203dd 100644 --- a/functions/attributes.lua +++ b/functions/attributes.lua @@ -1,7 +1,8 @@ --[[ Attributes: Damage, Heal, Energy, Miscellaneous ]] -do +do local _detalhes = _G._detalhes + local addonName, Details222 = ... local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) --Globals diff --git a/functions/autorun.lua b/functions/autorun.lua index bd9c5411..ab35cf87 100644 --- a/functions/autorun.lua +++ b/functions/autorun.lua @@ -1,6 +1,7 @@ local Details = _G.Details local DF = _G.DetailsFramework local C_Timer = _G.C_Timer +local addonName, Details222 = ... --auto run scripts Details.AutoRunCode = {} diff --git a/functions/boss.lua b/functions/boss.lua index 026c3731..4b2d6ef8 100644 --- a/functions/boss.lua +++ b/functions/boss.lua @@ -1,7 +1,8 @@ -do +do local _detalhes = _G._detalhes + local addonName, Details222 = ... _detalhes.EncounterInformation = {} local ipairs = ipairs --lua local diff --git a/functions/bossmods.lua b/functions/bossmods.lua index 65cbccb9..8742800f 100644 --- a/functions/bossmods.lua +++ b/functions/bossmods.lua @@ -1,6 +1,6 @@ local Details = _G.Details - +local addonName, Details222 = ... --get the total of damage and healing of a phase of an encounter function Details:OnCombatPhaseChanged() diff --git a/functions/buff.lua b/functions/buff.lua index d0d24ff5..3fe5895d 100644 --- a/functions/buff.lua +++ b/functions/buff.lua @@ -8,6 +8,7 @@ local _detalhes = _G._detalhes local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) local _ + local addonName, Details222 = ... --initialize buffs name container _detalhes.Buffs.BuffsTable = {} -- armazenara o [nome do buff] = { tabela do buff } _detalhes.Buffs.__index = _detalhes.Buffs diff --git a/functions/classes.lua b/functions/classes.lua index 97ebb56f..9286ba57 100644 --- a/functions/classes.lua +++ b/functions/classes.lua @@ -1,7 +1,8 @@ --[[ Declare all Details classes and container indexes ]] -do +do local _detalhes = _G._detalhes + local addonName, Details222 = ... local setmetatable = setmetatable -------- container que armazena o cache de pets _detalhes.container_pets = {} diff --git a/functions/coach.lua b/functions/coach.lua index aa3f80b9..dd9701b5 100644 --- a/functions/coach.lua +++ b/functions/coach.lua @@ -1,5 +1,6 @@ local Details = _G.Details +local addonName, Details222 = ... --stop yellow warning on my editor local IsInRaid = _G.IsInRaid diff --git a/functions/currentdps.lua b/functions/currentdps.lua index 9f2d7fa0..94bdb072 100644 --- a/functions/currentdps.lua +++ b/functions/currentdps.lua @@ -1,6 +1,7 @@ local Details = _G.Details +local addonName, Details222 = ... --namespace Details.CurrentDps = { diff --git a/functions/deathmenu.lua b/functions/deathmenu.lua index 98edb9ce..92d5ed7f 100644 --- a/functions/deathmenu.lua +++ b/functions/deathmenu.lua @@ -1,7 +1,7 @@ local Details = _G.Details - +local addonName, Details222 = ... ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --extra buttons at the death options (release, death recap) diff --git a/functions/deathrecap.lua b/functions/deathrecap.lua index 321d15c0..b10c5ed3 100644 --- a/functions/deathrecap.lua +++ b/functions/deathrecap.lua @@ -4,6 +4,7 @@ local Details = _G.Details local textAlpha = 0.9 local AceLocale = LibStub("AceLocale-3.0") local L = AceLocale:GetLocale ( "Details" ) +local addonName, Details222 = ... local on_deathrecap_line_enter = function(self) if (self.spellid) then diff --git a/functions/dungeon.lua b/functions/dungeon.lua index fb6118ff..46ca4df4 100644 --- a/functions/dungeon.lua +++ b/functions/dungeon.lua @@ -4,6 +4,7 @@ local Details = _G._detalhes local debugmode = false --print debug lines local verbosemode = false --auto open the chart panel local _ +local addonName, Details222 = ... local Loc = _G.LibStub("AceLocale-3.0"):GetLocale( "Details" ) diff --git a/functions/editmode.lua b/functions/editmode.lua index 2aef28a6..5b30a959 100644 --- a/functions/editmode.lua +++ b/functions/editmode.lua @@ -2,6 +2,7 @@ local Details = _G.Details local AceLocale = LibStub("AceLocale-3.0") local L = AceLocale:GetLocale("Details") +local addonName, Details222 = ... function Details.RegisterDragonFlightEditMode() if (EventRegistry and type(EventRegistry) == "table") then diff --git a/functions/events.lua b/functions/events.lua index 99ede30e..28c75738 100644 --- a/functions/events.lua +++ b/functions/events.lua @@ -4,7 +4,8 @@ local _detalhes = _G._detalhes local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) local _ - + local addonName, Details222 = ... + --Event types: _detalhes.RegistredEvents = { --instances diff --git a/functions/hooks.lua b/functions/hooks.lua index be36bceb..b92d83ee 100644 --- a/functions/hooks.lua +++ b/functions/hooks.lua @@ -15,7 +15,8 @@ local _detalhes = _G._detalhes local _ - + local addonName, Details222 = ... + _detalhes.hooks ["HOOK_COOLDOWN"] = {} _detalhes.hooks ["HOOK_DEATH"] = {} _detalhes.hooks ["HOOK_BATTLERESS"] = {} diff --git a/functions/immersion.lua b/functions/immersion.lua index 3c865a26..d3bf0ee0 100644 --- a/functions/immersion.lua +++ b/functions/immersion.lua @@ -6,6 +6,7 @@ local Details = _G.Details local C_Timer = _G.C_Timer local C_Map = _G.C_Map local ceil = math.ceil +local addonName, Details222 = ... -- immersion namespace Details.Immersion = {} diff --git a/functions/loaddata.lua b/functions/loaddata.lua index b8796271..999bf016 100644 --- a/functions/loaddata.lua +++ b/functions/loaddata.lua @@ -4,7 +4,8 @@ local _detalhes = _G._detalhes local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) local _ - + local addonName, Details222 = ... + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --On Details! Load: --load default keys into the main object diff --git a/functions/macros.lua b/functions/macros.lua index 4c187feb..10e66774 100644 --- a/functions/macros.lua +++ b/functions/macros.lua @@ -1,4 +1,5 @@ +local addonName, Details222 = ... -- @windowN: number a a window to open the player details breakdown -- /run Details:OpenPlayerDetails(windowN) diff --git a/functions/mythicdungeon.lua b/functions/mythicdungeon.lua index a99895b9..564bd36c 100644 --- a/functions/mythicdungeon.lua +++ b/functions/mythicdungeon.lua @@ -5,6 +5,7 @@ local unpack = _G.unpack local GetTime = _G.GetTime local tremove = _G.tremove local GetInstanceInfo = _G.GetInstanceInfo +local addonName, Details222 = ... local Loc = _G.LibStub("AceLocale-3.0"):GetLocale("Details") @@ -774,7 +775,7 @@ function DetailsMythicPlusFrame.EventListener.OnDetailsEvent(contextObject, even --nothing elseif (event == "COMBAT_MYTHICDUNGEON_START") then - print("COMBAT_MYTHICDUNGEON_START", ...) + --print("COMBAT_MYTHICDUNGEON_START", ...) local lower_instance = _detalhes:GetLowerInstanceNumber() if (lower_instance) then lower_instance = _detalhes:GetInstance(lower_instance) diff --git a/functions/pack.lua b/functions/pack.lua index 2508e7f5..94a2e745 100644 --- a/functions/pack.lua +++ b/functions/pack.lua @@ -19,6 +19,7 @@ local GetNumGroupMembers = _G.GetNumGroupMembers local GetRaidRosterInfo = _G.GetRaidRosterInfo local unpack = _G.unpack local IsInGroup = _G.IsInGroup +local addonName, Details222 = ... Details.packFunctions = {} diff --git a/functions/plater.lua b/functions/plater.lua index 547d632a..3351a551 100644 --- a/functions/plater.lua +++ b/functions/plater.lua @@ -1,7 +1,7 @@ local Details = _G.Details - +local addonName, Details222 = ... local plater_integration_frame = CreateFrame("frame", "DetailsPlaterFrame", UIParent, "BackdropTemplate") diff --git a/functions/playerclass.lua b/functions/playerclass.lua index 02cf4246..4131a5d3 100644 --- a/functions/playerclass.lua +++ b/functions/playerclass.lua @@ -4,6 +4,7 @@ do local _detalhes = _G._detalhes local _ + local addonName, Details222 = ... local pairs = pairs local ipairs = ipairs local unpack = table.unpack or _G.unpack diff --git a/functions/private.lua b/functions/private.lua new file mode 100644 index 00000000..3c7ad6b5 --- /dev/null +++ b/functions/private.lua @@ -0,0 +1,32 @@ + +local addonName, details222 = ... + +details222.Scheduler = { + Names = {}, + Debug = false, +} + +local printDebug = function(...) + if (details222.Scheduler.Debug) then + print("ISE:", ...) + end +end + +function details222.Scheduler.NewTicker(seconds, callback, name) + local tickerHandler = C_Timer.NewTicker(seconds, callback) + if (name) then + details222.Scheduler.Names[name] = tickerHandler + end + return tickerHandler +end + +function details222.Scheduler.Cancel(name) + local ticker = details222.Scheduler.Names[name] + if (ticker) then + ticker:Cancel() + details222.Scheduler.Names[name] = nil + printDebug("Ticker", name, "Cancelled") + else + printDebug("Ticker", name, " Not Found") + end +end \ No newline at end of file diff --git a/functions/profiles.lua b/functions/profiles.lua index 69fec5d2..227e0440 100644 --- a/functions/profiles.lua +++ b/functions/profiles.lua @@ -4,6 +4,7 @@ local _detalhes = _G._detalhes local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) local _ + local addonName, Details222 = ... ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --Profiles: @@ -849,9 +850,6 @@ local default_profile = { }, ["EVOKER"] = { - --0.31764705882353, -- [1] - --0.24313725490196, -- [2] - --0.91372549019608, -- [3] --0.2000, --0.4980, --0.5764, @@ -1140,11 +1138,11 @@ local default_profile = { line_height = 17, }, - --new window - all_in_one_windows = { - - }, + --new window system + all_in_one_windows = {}, + --auto show overall data in dynamic mode + auto_swap_to_dynamic_overall = false, } _detalhes.default_profile = default_profile @@ -1157,11 +1155,44 @@ local default_player_data = { last_coach_name = false, }, + --this is used by the new data capture for charts + data_harvest_for_charsts = { + players = { + --damage done by each player + { + name = "Damage of Each Individual Player", + combatObjectContainer = 1, + playerOnly = true, + playerKey = "total", + }, + }, + + totals = { + --total damage done by the raid group + { + name = "Damage of All Player Combined", + combatObjectSubTableName = "totals", + combatObjectSubTableKey = 1, + }, + }, + }, + + data_harvested_for_charts = {}, + + --ocd tracker test ocd_tracker = { enabled = false, cooldowns = {}, - pos = {}, + frames = { + ["defensive-raid"] = {}, + ["defensive-target"] = {}, + ["defensive-personal"] = {}, + ["ofensive"] = {}, + ["utility"] = {}, + ["main"] = {}, --any cooldown that does not have a frame is shown on main frame + }, --panels for each cooldown type + show_conditions = { only_in_group = true, only_inside_instance = true, @@ -1175,7 +1206,16 @@ local default_player_data = { ["defensive-personal"] = false, ["ofensive"] = true, ["utility"] = false, + }, --when creating a filter, add it here and also add to 'own_frame' + + own_frame = { + ["defensive-raid"] = false, + ["defensive-target"] = false, + ["defensive-personal"] = false, + ["ofensive"] = false, + ["utility"] = false, }, + width = 120, height = 18, lines_per_column = 12, @@ -1300,7 +1340,9 @@ local default_global_data = { immersion_unit_special_icons = true, --custom icons for specific units immersion_pets_on_solo_play = false, --pets showing when solo play damage_scroll_auto_open = true, - damage_scroll_position = {}, + damage_scroll_position = { + scale = 1, + }, data_wipes_exp = { ["9"] = false, ["10"] = false, @@ -1312,6 +1354,11 @@ local default_global_data = { current_exp_raid_encounters = {}, installed_skins_cache = {}, + combat_id_global = 0, + + slash_me_used = false, + trinket_data = {}, + --spell category feedback spell_category_savedtable = {}, spell_category_latest_query = 0, @@ -1648,7 +1695,6 @@ local exportProfileBlacklist = { active_profile = true, SoloTablesSaved = true, RaidTablesSaved = true, - savedStyles = true, benchmark_db = true, rank_window = true, last_realversion = true, diff --git a/functions/raidinfo.lua b/functions/raidinfo.lua index 4447c5e9..5ed54b38 100644 --- a/functions/raidinfo.lua +++ b/functions/raidinfo.lua @@ -5,6 +5,7 @@ local C_Timer = _G.C_Timer local DetailsFramework = _G.DetailsFramework local tinsert = _G.tinsert +local addonName, Details222 = ... function Details.InstallRaidInfo() diff --git a/functions/rowanimation.lua b/functions/rowanimation.lua index 56a6d08f..43030cfa 100644 --- a/functions/rowanimation.lua +++ b/functions/rowanimation.lua @@ -10,7 +10,8 @@ local _detalhes = _G._detalhes local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) local _ - + local addonName, Details222 = ... + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --basic functions diff --git a/functions/savedata.lua b/functions/savedata.lua index f4f9addb..d0d57b48 100644 --- a/functions/savedata.lua +++ b/functions/savedata.lua @@ -1,6 +1,7 @@ --[[this file save the data when player leave the game]] local _detalhes = _G._detalhes +local addonName, Details222 = ... function _detalhes:WipeConfig() local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) diff --git a/functions/schedules.lua b/functions/schedules.lua index 0f73183f..71fefd8d 100644 --- a/functions/schedules.lua +++ b/functions/schedules.lua @@ -5,6 +5,7 @@ local Details = _G.Details local DF = _G.DetailsFramework local C_Timer = _G.C_Timer local unpack = _G.unpack +local addonName, Details222 = ... --make a namespace for schedules Details.Schedules = {} diff --git a/functions/skins.lua b/functions/skins.lua index bb8a5dfb..7b810630 100644 --- a/functions/skins.lua +++ b/functions/skins.lua @@ -2,6 +2,7 @@ local _detalhes = _G._detalhes local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) local _ +local addonName, Details222 = ... --install skin function: function _detalhes:InstallSkin (skin_name, skin_table) diff --git a/functions/slash.lua b/functions/slash.lua index 2d4c6896..2fb9b1a4 100644 --- a/functions/slash.lua +++ b/functions/slash.lua @@ -3,6 +3,7 @@ local _detalhes = _G._detalhes local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) local _ +local addonName, Details222 = ... local CreateFrame = CreateFrame local pairs = pairs @@ -11,11 +12,16 @@ local UnitGUID = UnitGUID local tonumber= tonumber local LoggingCombat = LoggingCombat +SLASH_PLAYEDCLASS1 = "/playedclass" +function SlashCmdList.PLAYEDCLASS(msg, editbox) + print(Details.GetPlayTimeOnClassString()) +end + SLASH_DUMPTABLE1 = "/dumpt" function SlashCmdList.DUMPTABLE(msg, editbox) local result = "return function() return " .. msg .. " end" local extractValue = loadstring(result) - return Details:Dump(extractValue()()) + return dumpt(extractValue()()) end SLASH_DETAILS1, SLASH_DETAILS2, SLASH_DETAILS3 = "/details", "/dt", "/de" @@ -822,66 +828,57 @@ function SlashCmdList.DETAILS (msg, editbox) elseif (command == "guid") then - - local pass_guid = rest:match("^(%S*)%s*(.-)$") - - if (not _detalhes.id_frame) then - - local backdrop = { - bgFile = "Interface\\ChatFrame\\ChatFrameBackground", - edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", - tile = true, edgeSize = 1, tileSize = 5, - } - - _detalhes.id_frame = CreateFrame("Frame", "DetailsID", UIParent) - _detalhes.id_frame:SetHeight(14) - _detalhes.id_frame:SetWidth(120) - _detalhes.id_frame:SetPoint("center", UIParent, "center") - _detalhes.id_frame:SetBackdrop(backdrop) - - tinsert(UISpecialFrames, "DetailsID") - - _detalhes.id_frame.texto = CreateFrame("editbox", nil, _detalhes.id_frame) - _detalhes.id_frame.texto:SetPoint("topleft", _detalhes.id_frame, "topleft") - _detalhes.id_frame.texto:SetAutoFocus(false) - _detalhes.id_frame.texto:SetFontObject(GameFontHighlightSmall) - _detalhes.id_frame.texto:SetHeight(14) - _detalhes.id_frame.texto:SetWidth(120) - _detalhes.id_frame.texto:SetJustifyH("CENTER") - _detalhes.id_frame.texto:EnableMouse(true) - _detalhes.id_frame.texto:SetBackdrop(ManualBackdrop) - _detalhes.id_frame.texto:SetBackdropColor(0, 0, 0, 0.5) - _detalhes.id_frame.texto:SetBackdropBorderColor(0.3, 0.3, 0.30, 0.80) - _detalhes.id_frame.texto:SetText("") --localize-me - _detalhes.id_frame.texto.perdeu_foco = nil - - _detalhes.id_frame.texto:SetScript("OnEnterPressed", function() - _detalhes.id_frame.texto:ClearFocus() - _detalhes.id_frame:Hide() - end) - - _detalhes.id_frame.texto:SetScript("OnEscapePressed", function() - _detalhes.id_frame.texto:ClearFocus() - _detalhes.id_frame:Hide() - end) - - end - - _detalhes.id_frame:Show() - _detalhes.id_frame.texto:SetFocus() - - if (pass_guid == "-") then - local guid = UnitGUID("target") - if (guid) then - local g = _detalhes:GetNpcIdFromGuid (guid) - _detalhes.id_frame.texto:SetText("" .. g) - _detalhes.id_frame.texto:HighlightText() + if (UnitExists("target")) then + local serial = UnitGUID("target") + if (serial) then + local npcId = serial + if (not Details.id_frame) then + local backdrop = { + bgFile = "Interface\\ChatFrame\\ChatFrameBackground", + edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", + tile = true, edgeSize = 1, tileSize = 5, + } + + Details.id_frame = CreateFrame("Frame", "DetailsID", UIParent, "BackdropTemplate") + Details.id_frame:SetHeight(14) + Details.id_frame:SetWidth(120) + Details.id_frame:SetPoint("center", UIParent, "center") + Details.id_frame:SetBackdrop(backdrop) + + tinsert(UISpecialFrames, "DetailsID") + + Details.id_frame.texto = CreateFrame("editbox", nil, Details.id_frame, "BackdropTemplate") + Details.id_frame.texto:SetPoint("topleft", Details.id_frame, "topleft") + Details.id_frame.texto:SetAutoFocus(false) + Details.id_frame.texto:SetFontObject(GameFontHighlightSmall) + Details.id_frame.texto:SetHeight(14) + Details.id_frame.texto:SetWidth(120) + Details.id_frame.texto:SetJustifyH("CENTER") + Details.id_frame.texto:EnableMouse(true) + Details.id_frame.texto:SetBackdropColor(0, 0, 0, 0.5) + Details.id_frame.texto:SetBackdropBorderColor(0.3, 0.3, 0.30, 0.80) + Details.id_frame.texto:SetText("") + Details.id_frame.texto.perdeu_foco = nil + + Details.id_frame.texto:SetScript("OnEnterPressed", function() + Details.id_frame.texto:ClearFocus() + Details.id_frame:Hide() + end) + + Details.id_frame.texto:SetScript("OnEscapePressed", function() + Details.id_frame.texto:ClearFocus() + Details.id_frame:Hide() + end) + + end + + C_Timer.After(0.1, function() + Details.id_frame:Show() + Details.id_frame.texto:SetFocus() + Details.id_frame.texto:SetText("" .. npcId) + Details.id_frame.texto:HighlightText() + end) end - - else - print(pass_guid.. " -> " .. tonumber(pass_guid:sub(6, 10), 16)) - _detalhes.id_frame.texto:SetText(""..tonumber(pass_guid:sub(6, 10), 16)) - _detalhes.id_frame.texto:HighlightText() end elseif (command == "profile") then @@ -1350,7 +1347,8 @@ function SlashCmdList.DETAILS (msg, editbox) Details:ScrollDamage() elseif (msg == "me" or msg == "ME" or msg == "Me" or msg == "mE") then - local UnitGroupRolesAssigned = DetailsFramework.UnitGroupRolesAssigned + Details.slash_me_used = true + local UnitGroupRolesAssigned = DetailsFramework.UnitGroupRolesAssigned local role = UnitGroupRolesAssigned("player") if (role == "HEALER") then Details:OpenPlayerDetails(2) @@ -1674,6 +1672,9 @@ function SlashCmdList.DETAILS (msg, editbox) elseif (msg == "generatespelllist") then Details.GenerateSpecSpellList() + elseif (msg == "generateracialslist") then + Details.GenerateRacialSpellList() + elseif (msg == "survey") then Details.Survey.OpenSurveyPanel() @@ -1840,22 +1841,24 @@ function Details.RefreshUserList (ignoreIfHidden) Details:UpdateUserPanel (newList) end -function Details:UpdateUserPanel (usersTable) - +function Details:UpdateUserPanel(usersTable) if (not Details.UserPanel) then + local frameWidth, frameHeight = 470, 605 DetailsUserPanel = DetailsFramework:CreateSimplePanel(UIParent) - DetailsUserPanel:SetSize(707, 505) + DetailsUserPanel:SetSize(frameWidth, frameHeight) DetailsUserPanel:SetTitle("Details! Version Check") DetailsUserPanel.Data = {} DetailsUserPanel:ClearAllPoints() - DetailsUserPanel:SetPoint("left", UIParent, "left", 10, 0) + DetailsUserPanel:SetPoint("left", UIParent, "left", 5, 100) DetailsUserPanel:Hide() + DetailsFramework:ApplyStandardBackdrop(DetailsUserPanel) + Details.UserPanel = DetailsUserPanel - - local scroll_width = 675 - local scroll_height = 450 - local scroll_lines = 21 + + local scroll_width = frameWidth - 30 + local scroll_height = 605 - 60 + local scroll_lines = 26 local scroll_line_height = 20 local backdrop_color = {.2, .2, .2, 0.2} @@ -1869,9 +1872,9 @@ function Details:UpdateUserPanel (usersTable) --header local headerTable = { - {text = "User Name", width = 200}, - {text = "Realm", width = 200}, - {text = "Version", width = 200}, + {text = "User Name", width = 160}, + {text = "Realm", width = 130}, + {text = "Version", width = 140}, } local headerOptions = { diff --git a/functions/spellcache.lua b/functions/spellcache.lua index a16f974a..e6b6bf6c 100644 --- a/functions/spellcache.lua +++ b/functions/spellcache.lua @@ -1,12 +1,13 @@ --[[ Spell Cache store all spells shown on frames and make able to change spells name, icons, etc... ]] -do +do -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --On The Fly SpellCache - local _detalhes = _G._detalhes + local Details = _G._detalhes local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) + local addonName, Details222 = ... local _ local rawget = rawget local rawset = rawset @@ -18,9 +19,9 @@ do local is_classic_exp = DetailsFramework.IsClassicWow() --default container - _detalhes.spellcache = {} + Details.spellcache = {} local unknowSpell = {Loc ["STRING_UNKNOWSPELL"], _, "Interface\\Icons\\Ability_Druid_Eclipse"} --localize-me - + local AllSpellNames if (is_classic_exp) then AllSpellNames = {} @@ -51,18 +52,18 @@ do else spellName, _, spellIcon = GetSpellInfo(spell) end - + if (not spellName) then return spell, _, AllSpellNames [spell] or defaultSpellIcon end - + return spellName, _, AllSpellNames [spell] or spellIcon end --reset spell cache - function _detalhes:ClearSpellCache() - _detalhes.spellcache = setmetatable({}, - {__index = function(tabela, valor) + function Details:ClearSpellCache() + Details.spellcache = setmetatable({}, + {__index = function(tabela, valor) local esta_magia = rawget (tabela, valor) if (esta_magia) then return esta_magia @@ -81,26 +82,26 @@ do else return unknowSpell end - + end}) --default overwrites --rawset (_detalhes.spellcache, 1, {Loc ["STRING_MELEE"], 1, "Interface\\AddOns\\Details\\images\\melee.tga"}) --rawset (_detalhes.spellcache, 2, {Loc ["STRING_AUTOSHOT"], 1, "Interface\\AddOns\\Details\\images\\autoshot.tga"}) - + --built-in overwrites - for spellId, spellTable in pairs(_detalhes.SpellOverwrite) do + for spellId, spellTable in pairs(Details.SpellOverwrite) do local name, _, icon = _GetSpellInfo(spellId) - rawset (_detalhes.spellcache, spellId, {spellTable.name or name, 1, spellTable.icon or icon}) + rawset (Details.spellcache, spellId, {spellTable.name or name, 1, spellTable.icon or icon}) end - + --user overwrites -- [1] spellid [2] spellname [3] spellicon - for index, spellTable in ipairs(_detalhes.savedCustomSpells) do - rawset (_detalhes.spellcache, spellTable [1], {spellTable [2], 1, spellTable [3]}) + for index, spellTable in ipairs(Details.savedCustomSpells) do + rawset (Details.spellcache, spellTable [1], {spellTable [2], 1, spellTable [3]}) end end - + local lightOfTheMartyr_Name, _, lightOfTheMartyr_Icon = _GetSpellInfo(196917) lightOfTheMartyr_Name = lightOfTheMartyr_Name or "Deprecated Spell - Light of the Martyr" lightOfTheMartyr_Icon = lightOfTheMartyr_Icon or "" @@ -183,6 +184,22 @@ do else --retail + local iconSize = 14 --icon size + local coords = {0.14, 0.86, 0.14, 0.86} + + local formatTextForItem = function(itemId) + local result = "" + + local itemIcon = C_Item.GetItemIconByID(itemId) + local itemName = C_Item.GetItemNameByID(itemId) + + if (itemIcon and itemName) then + result = " (" .. CreateTextureMarkup(itemIcon, iconSize, iconSize, iconSize, iconSize, unpack(coords)) .. " " .. itemName .. ")" + end + + return result + end + defaultSpellCustomization = { [1] = {name = Loc ["STRING_MELEE"], icon = [[Interface\ICONS\INV_Sword_04]]}, [2] = {name = Loc ["STRING_AUTOSHOT"], icon = [[Interface\ICONS\INV_Weapon_Bow_07]]}, @@ -198,6 +215,38 @@ do [77535] = {name = GetSpellInfo(77535), icon = "Interface\\Addons\\Details\\images\\icon_blood_shield"}, } + + if (GetSpellInfo(394453)) then + local dragonflightTrinkets = { + [394453] = {name = GetSpellInfo(394453) .. formatTextForItem(195480), isPassive = true, itemId = 195480}, --ring: Seal of Diurna's Chosen + + [382135] = {name = GetSpellInfo(382135) .. formatTextForItem(194308)}, --trinket: Manic Grieftorch + [382058] = {name = GetSpellInfo(382056) .. formatTextForItem(194299)}, --trinket: Decoration of Flame (shield) + [382056] = {name = GetSpellInfo(382056) .. formatTextForItem(194299)}, --trinket: Decoration of Flame + [382090] = {name = GetSpellInfo(382090) .. formatTextForItem(194302)}, --trinket: Storm-Eater's Boon + [381967] = {name = GetSpellInfo(381967) .. formatTextForItem(194305)}, --trinket: Controlled Current Technique + [382426] = {name = GetSpellInfo(382426) .. formatTextForItem(194309), isPassive = true, itemId = 194309}, --trinket: Spiteful Storm + [377455] = {name = GetSpellInfo(377455) .. formatTextForItem(194304)}, --trinket: Iceblood Deathsnare + [377451] = {name = GetSpellInfo(377451) .. formatTextForItem(194300)}, --trinket: Conjured Chillglobe + [382097] = {name = GetSpellInfo(382097) .. formatTextForItem(194303)}, --trinket: Rumbling Ruby + + [385903] = {name = GetSpellInfo(385903) .. formatTextForItem(193639), isPassive = true, itemId = 193639}, --trinket: Umbrelskul's Fractured Heart + [381475] = {name = GetSpellInfo(381475) .. formatTextForItem(193769)}, --trinket: Erupting Spear Fragment + [388739] = {name = GetSpellInfo(388739) .. formatTextForItem(193660), isPassive = true, itemId = 193660}, --trinket: Idol of Pure Decay + [388855] = {name = GetSpellInfo(388855) .. formatTextForItem(193678)}, --trinket: Miniature Singing Stone + [388755] = {name = GetSpellInfo(388755) .. formatTextForItem(193677), isPassive = true, itemId = 193677}, --trinket: Furious Ragefeather + [383934] = {name = GetSpellInfo(383934) .. formatTextForItem(193736)}, --trinket: Water's Beating Heart + [214052] = {name = GetSpellInfo(214052) .. formatTextForItem(133641), isPassive = true, itemId = 133641}, --trinket: Eye of Skovald + [214200] = {name = GetSpellInfo(214200) .. formatTextForItem(133646)}, --trinket: Mote of Sanctification + [387036] = {name = GetSpellInfo(387036) .. formatTextForItem(193748)}, --trinket: Kyrakka's Searing Embers (heal) + [397376] = {name = GetSpellInfo(397376) .. formatTextForItem(193748), isPassive = true, itemId = 193748}, --trinket: Kyrakka's Searing Embers (damage) + --[] = {name = GetSpellInfo() .. formatTextForItem(193757), isPassive = true}, --trinket: Ruby Whelp Shell + } + + for spellId, spellCustomization in pairs(dragonflightTrinkets) do + defaultSpellCustomization[spellId] = spellCustomization + end + end end if (LIB_OPEN_RAID_SPELL_CUSTOM_NAMES) then @@ -209,153 +258,156 @@ do end end - function _detalhes:UserCustomSpellUpdate (index, name, icon) - local t = _detalhes.savedCustomSpells[index] + function Details:GetDefaultCustomSpellsList() + return defaultSpellCustomization + end + + function Details:UserCustomSpellUpdate (index, name, icon) + local t = Details.savedCustomSpells[index] if (t) then t [2], t [3] = name or t [2], icon or t [3] - return rawset (_detalhes.spellcache, t [1], {t [2], 1, t [3]}) + return rawset (Details.spellcache, t [1], {t [2], 1, t [3]}) else return false end end - - function _detalhes:UserCustomSpellReset (index) - local t = _detalhes.savedCustomSpells[index] + + function Details:UserCustomSpellReset (index) + local t = Details.savedCustomSpells[index] if (t) then local spellid = t [1] local name, _, icon = _GetSpellInfo(spellid) - + if (defaultSpellCustomization [spellid]) then name = defaultSpellCustomization [spellid].name icon = defaultSpellCustomization [spellid].icon or icon or [[Interface\InventoryItems\WoWUnknownItem01]] end - + if (not name) then name = "Unknown" end if (not icon) then icon = [[Interface\InventoryItems\WoWUnknownItem01]] end - - rawset (_detalhes.spellcache, spellid, {name, 1, icon}) - + + rawset (Details.spellcache, spellid, {name, 1, icon}) + t[2] = name t[3] = icon end end - - function _detalhes:FillUserCustomSpells() - for spellid, t in pairs(defaultSpellCustomization) do - - local already_have - for index, spelltable in ipairs(_detalhes.savedCustomSpells) do - if (spelltable [1] == spellid) then - already_have = spelltable - end - end - - if (not already_have) then - local name, _, icon = GetSpellInfo(spellid) - _detalhes:UserCustomSpellAdd (spellid, t.name or name or "Unknown", t.icon or icon or [[Interface\InventoryItems\WoWUnknownItem01]]) - end - + + function Details:FillUserCustomSpells() + for spellid, spellTable in pairs(defaultSpellCustomization) do + local spellName, _, spellIcon = Details.GetSpellInfo(spellid) + Details:UserCustomSpellAdd(spellid, spellTable.name or spellName or "Unknown", spellTable.icon or spellIcon or [[Interface\InventoryItems\WoWUnknownItem01]]) end - - for i = #_detalhes.savedCustomSpells, 1, -1 do - local spelltable = _detalhes.savedCustomSpells [i] + + for i = #Details.savedCustomSpells, 1, -1 do + local spelltable = Details.savedCustomSpells [i] local spellid = spelltable [1] if (spellid > 10) then local exists = _GetSpellInfo(spellid) if (not exists) then - tremove(_detalhes.savedCustomSpells, i) + tremove(Details.savedCustomSpells, i) end end end end - - function _detalhes:UserCustomSpellAdd (spellid, name, icon) - local is_overwrite = false - for index, t in ipairs(_detalhes.savedCustomSpells) do - if (t [1] == spellid) then - t[2] = name - t[3] = icon - is_overwrite = true + + C_Timer.After(0, function() + Details:FillUserCustomSpells() + end) + + function Details:UserCustomSpellAdd(spellid, name, icon) + local isOverwrite = false + for index, spellTable in ipairs(Details.savedCustomSpells) do + if (spellTable[1] == spellid) then + spellTable[2] = name + spellTable[3] = icon + isOverwrite = true break end end - if (not is_overwrite) then - tinsert(_detalhes.savedCustomSpells, {spellid, name, icon}) + + if (not isOverwrite) then + tinsert(Details.savedCustomSpells, {spellid, name, icon}) end - return rawset (_detalhes.spellcache, spellid, {name, 1, icon}) + + return rawset(Details.spellcache, spellid, {name, 1, icon}) end - - function _detalhes:UserCustomSpellRemove (index) - local t = _detalhes.savedCustomSpells [index] + + function Details:UserCustomSpellRemove (index) + local t = Details.savedCustomSpells [index] if (t) then local spellid = t [1] local name, _, icon = _GetSpellInfo(spellid) if (name) then - rawset (_detalhes.spellcache, spellid, {name, 1, icon}) + rawset (Details.spellcache, spellid, {name, 1, icon}) end - return tremove(_detalhes.savedCustomSpells, index) + return tremove(Details.savedCustomSpells, index) end - + return false end - + --overwrite for API GetSpellInfo function - - _detalhes.getspellinfo = function(spellid) return _unpack(_detalhes.spellcache[spellid]) end - _detalhes.GetSpellInfo = _detalhes.getspellinfo + + Details.getspellinfo = function(spellid) return _unpack(Details.spellcache[spellid]) end + Details.GetSpellInfo = Details.getspellinfo --overwrite SpellInfo if the spell is a DoT, so Details.GetSpellInfo will return the name modified - function _detalhes:SpellIsDot (spellid) + function Details:SpellIsDot(spellid) + --do nothing if this spell already has a customization + if (defaultSpellCustomization[spellid]) then + return + end local spellName, rank, spellIcon = _GetSpellInfo(spellid) - + if (spellName) then - rawset (_detalhes.spellcache, spellid, {spellName .. Loc ["STRING_DOT"], rank, spellIcon}) + rawset (Details.spellcache, spellid, {spellName .. Loc ["STRING_DOT"], rank, spellIcon}) else - rawset (_detalhes.spellcache, spellid, {"Unknown DoT Spell? " .. Loc ["STRING_DOT"], rank, [[Interface\InventoryItems\WoWUnknownItem01]]}) + rawset (Details.spellcache, spellid, {"Unknown DoT Spell? " .. Loc ["STRING_DOT"], rank, [[Interface\InventoryItems\WoWUnknownItem01]]}) end end -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --Cache All Spells - function _detalhes:BuildSpellListSlow() + function Details:BuildSpellListSlow() local load_frame = _G.DetailsLoadSpellCache if (load_frame and (load_frame.completed or load_frame.inprogress)) then return false end - + local step = 1 local max = 160000 - + if (not load_frame) then load_frame = CreateFrame("frame", "DetailsLoadSpellCache", UIParent) load_frame:SetFrameStrata("DIALOG") - + local progress_label = load_frame:CreateFontString("DetailsLoadSpellCacheProgress", "overlay", "GameFontHighlightSmall") progress_label:SetText("Loading Spells: 0%") - function _detalhes:BuildSpellListSlowTick() + function Details:BuildSpellListSlowTick() progress_label:SetText("Loading Spells: " .. load_frame:GetProgress() .. "%") end - load_frame.tick = _detalhes:ScheduleRepeatingTimer ("BuildSpellListSlowTick", 1) - + load_frame.tick = Details:ScheduleRepeatingTimer ("BuildSpellListSlowTick", 1) + function load_frame:GetProgress() return math.floor(step / max * 100) end end - + local SpellCache = {a={}, b={}, c={}, d={}, e={}, f={}, g={}, h={}, i={}, j={}, k={}, l={}, m={}, n={}, o={}, p={}, q={}, r={}, s={}, t={}, u={}, v={}, w={}, x={}, y={}, z={}} local _string_lower = string.lower local _string_sub = string.sub local blizzGetSpellInfo = GetSpellInfo - + load_frame.inprogress = true - - _detalhes.spellcachefull = SpellCache + + Details.spellcachefull = SpellCache load_frame:SetScript("OnUpdate", function() for spellid = step, step+500 do @@ -368,27 +420,27 @@ do end end end - + step = step + 500 - + if (step > max) then step = max _G.DetailsLoadSpellCache.completed = true _G.DetailsLoadSpellCache.inprogress = false - _detalhes:CancelTimer(_G.DetailsLoadSpellCache.tick) + Details:CancelTimer(_G.DetailsLoadSpellCache.tick) DetailsLoadSpellCacheProgress:Hide() load_frame:SetScript("OnUpdate", nil) end - - end) - - + end) + + + return true end - function _detalhes:BuildSpellList() - + function Details:BuildSpellList() + local SpellCache = {a={}, b={}, c={}, d={}, e={}, f={}, g={}, h={}, i={}, j={}, k={}, l={}, m={}, n={}, o={}, p={}, q={}, r={}, s={}, t={}, u={}, v={}, w={}, x={}, y={}, z={}} local _string_lower = string.lower local _string_sub = string.sub @@ -405,15 +457,15 @@ do end end - _detalhes.spellcachefull = SpellCache + Details.spellcachefull = SpellCache return true end - - function _detalhes:ClearSpellList() - _detalhes.spellcachefull = nil + + function Details:ClearSpellList() + Details.spellcachefull = nil collectgarbage() end - - + + end diff --git a/functions/spells.lua b/functions/spells.lua index 9c154b18..cd1a3838 100644 --- a/functions/spells.lua +++ b/functions/spells.lua @@ -1,7 +1,8 @@ do local _detalhes = _G._detalhes - + local addonName, Details222 = ... + --import potion list from the framework _detalhes.PotionList = {} for spellID, _ in pairs(DetailsFramework.PotionIDs) do @@ -164,7 +165,6 @@ do --Feral Druid: [5217] = 103, --Tiger's Fury [285381] = 103, --Primal Wrath - [213764] = 103, --Swipe [106951] = 103, --Berserk [274837] = 103, --Feral Frenzy @@ -183,7 +183,6 @@ do [191034] = 102, --Starfall [78675] = 102, --Solar Beam [202770] = 102, --Fury of Elune - [323764] = 102, --Convoke the Spirits [102560] = 102, --Incarnation: Chosen of Elune [202347] = 102, --Stellar Flare [194223] = 102, --Celestial Alignment @@ -652,7 +651,7 @@ do [53385] = 70, -- Divine Storm -- Discipline Priest: - [63944] = 256, -- Renewed Hope + --[63944] = 256, -- Renewed Hope [10060] = 256, -- Power Infusion [33206] = 256, -- Pain Suppression [47540] = 256, -- Penance (rank 1) diff --git a/functions/testbars.lua b/functions/testbars.lua index 422d0076..8c3b1382 100644 --- a/functions/testbars.lua +++ b/functions/testbars.lua @@ -1,6 +1,6 @@ local Details = _G.Details - +local addonName, Details222 = ... function Details:TestBarsUpdate() local current_combat = Details:GetCombat("current") diff --git a/functions/timedata.lua b/functions/timedata.lua index 7f39f700..1c10629f 100644 --- a/functions/timedata.lua +++ b/functions/timedata.lua @@ -2,7 +2,8 @@ local _ local _detalhes = _G._detalhes local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) - + local addonName, Details222 = ... + --mantain the enabled time captures _detalhes.timeContainer = {} _detalhes.timeContainer.Exec = {} diff --git a/plugins/Details_DataStorage/Details_DataStorage.toc b/plugins/Details_DataStorage/Details_DataStorage.toc index 70ab25bc..2c96ccc3 100644 --- a/plugins/Details_DataStorage/Details_DataStorage.toc +++ b/plugins/Details_DataStorage/Details_DataStorage.toc @@ -1,4 +1,4 @@ -## Interface: 100000 +## Interface: 100002 ## Title: Details!: Storage ## Notes: Stores information for Details! Damage Meter ## DefaultState: Enabled diff --git a/plugins/Details_EncounterDetails/Details_EncounterDetails.toc b/plugins/Details_EncounterDetails/Details_EncounterDetails.toc index 2b849173..5afa5607 100644 --- a/plugins/Details_EncounterDetails/Details_EncounterDetails.toc +++ b/plugins/Details_EncounterDetails/Details_EncounterDetails.toc @@ -1,4 +1,4 @@ -## Interface: 100000 +## Interface: 100002 ## Title: Details!: Encounter Breakdown (plugin) ## Notes: Show detailed information about a boss encounter. Also provide damage per phase, graphic charts, easy weakauras creation. ## RequiredDeps: Details diff --git a/plugins/Details_RaidCheck/Details_RaidCheck.toc b/plugins/Details_RaidCheck/Details_RaidCheck.toc index 97721a03..9cad0f58 100644 --- a/plugins/Details_RaidCheck/Details_RaidCheck.toc +++ b/plugins/Details_RaidCheck/Details_RaidCheck.toc @@ -1,4 +1,4 @@ -## Interface: 100000 +## Interface: 100002 ## Title: Details!: Raid Check (plugin) ## Notes: Show talents and item level for all members in your group, also shows food and flask state. ## RequiredDeps: Details diff --git a/plugins/Details_Streamer/Details_Streamer.lua b/plugins/Details_Streamer/Details_Streamer.lua index 408c031d..512913b1 100644 --- a/plugins/Details_Streamer/Details_Streamer.lua +++ b/plugins/Details_Streamer/Details_Streamer.lua @@ -1,26 +1,26 @@ local SharedMedia = LibStub:GetLibrary ("LibSharedMedia-3.0") -local LDB = LibStub("LibDataBroker-1.1", true) -local LDBIcon = LDB and LibStub("LibDBIcon-1.0", true) -local LibWindow = LibStub("LibWindow-1.1") +local LDB = LibStub ("LibDataBroker-1.1", true) +local LDBIcon = LDB and LibStub ("LibDBIcon-1.0", true) +local LibWindow = LibStub ("LibWindow-1.1") local _ ---need cleanup Loc ["STRING_MEMORY_ALERT_BUTTON"], ---create the plugin object +--> create the plugin object -- "Details_StreamOverlay" is the old name local StreamOverlay = _detalhes:NewPluginObject("Details_Streamer", DETAILSPLUGIN_ALWAYSENABLED) ---tinsert(UISpecialFrames, "Details_StreamOverlays") ---main frame (shortcut) +--tinsert (UISpecialFrames, "Details_StreamOverlays") +--> main frame (shortcut) local SOF = StreamOverlay.Frame ---shortcut for details framework +--> shortcut for details framework local playerName StreamOverlay.CurrentVersion = "v1.2" ---mantaing the tables for casts, has hash indexes of numbers pointing to tables, tables inside store data of the UNIT_CAST events ---also mantain information about the cast, if is done, interrupted, channeled, instant. +--> mantaing the tables for casts, has hash indexes of numbers pointing to tables, tables inside store data of the UNIT_CAST events +--> also mantain information about the cast, if is done, interrupted, channeled, instant. --Target = the target of the spell casted or the spellname if is a death table --Id = the CastId from UNIT_CAST events. --CastStart = GetTime from the cast start. @@ -31,9 +31,9 @@ StreamOverlay.CurrentVersion = "v1.2" --Death = this is a event from death tables. local CastsTable = {} ---store bars references +--> store bars references StreamOverlay.battle_lines = {} ---store the information to be shown on bars, like text, icon, colors +--> store the information to be shown on bars, like text, icon, colors StreamOverlay.battle_content = {} StreamOverlay.squares = {} @@ -66,10 +66,10 @@ local function CreatePluginFrames() local fader = Details.FadeHandler.Fader function StreamOverlay:OnDetailsEvent(event, ...) - if (event == "HIDE") then --plugin hidded, disabled + if (event == "HIDE") then --> plugin hidded, disabled self.open = false - elseif (event == "SHOW") then --plugin hidded, disabled + elseif (event == "SHOW") then --> plugin hidded, disabled self.open = true elseif (event == "PLUGIN_DISABLED") then @@ -88,84 +88,84 @@ local function CreatePluginFrames() --show the frame and restore position SOF:Show() - --restore size and location + --> restore size and location StreamOverlay:RestoreWindowSizeAndLocation() - --refresh the frame + --> refresh the frame StreamOverlay:Refresh() StreamOverlay:SetBackgroundColor() StreamOverlay:CreateMinimapIcon() - --enable the minimap icon + --> enable the minimap icon LDBIcon:Refresh("DetailsStreamer", StreamOverlay.db.minimap) StreamOverlay:SetLocked() - --install the death hook + --> install the death hook Details:InstallHook(DETAILS_HOOK_DEATH, StreamOverlay.OnDeath) - --enable event listener + --> enable event listener eventFrame:RegisterMyEvents() - --enable the tick update - eventFrame:SetScript("OnUpdate", eventFrame.track_spell_cast) + --> enable the tick update + eventFrame:SetScript ("OnUpdate", eventFrame.track_spell_cast) - --refresh dps frame + --> refresh dps frame StreamOverlay:UpdateDpsHpsFrameConfig() end function StreamOverlay:OnDisablePlugin() - --shutdown the tick update - eventFrame:SetScript("OnUpdate", nil) + --> shutdown the tick update + eventFrame:SetScript ("OnUpdate", nil) - --disable the event listener + --> disable the event listener eventFrame:UnregisterMyEvents() - --unistall the death hook + --> unistall the death hook Details:UnInstallHook (DETAILS_HOOK_DEATH, StreamOverlay.OnDeath) - --shutdown minimap icon + --> shutdown minimap icon StreamOverlay:CreateMinimapIcon() local realstate = StreamOverlay.db.minimap.hide StreamOverlay.db.minimap.hide = true LDBIcon:Refresh ("DetailsStreamer", StreamOverlay.db.minimap) StreamOverlay.db.minimap.hide = realstate - --save position, size and hide the frame + --> save position, size and hide the frame StreamOverlay:SaveWindowSizeAnLocation() SOF:Hide() - --refresh dps frame + --> refresh dps frame StreamOverlay:UpdateDpsHpsFrameConfig (true) end - --title bar, only shown when the frame isn't locked - local titlebar = CreateFrame("frame", "DetailsStreamerTitlebar", SOF, "BackdropTemplate") - titlebar:SetHeight(20) - titlebar:SetPoint("bottomleft", SOF, "topleft") - titlebar:SetPoint("bottomright", SOF, "topright") - titlebar:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) - titlebar:SetBackdropColor(.1, .1, .1, .9) - titlebar.text = titlebar:CreateFontString(nil, "overlay", "GameFontNormal") - titlebar.text:SetPoint("center", titlebar, "center") - titlebar.text:SetText("Details! Streamer: Action Tracker") - titlebar:SetScript("OnEnter", function(self) - GameTooltip:SetOwner(self) - GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") - GameTooltip:AddLine("|cFFFF7700Left Click|r: Open Options\n|cFFFF7700Right Click|r: Lock the Frame\n|cFFFF7700Slash Command|r: /streamer") + --> title bar, only shown when the frame isn't locked + local titlebar = CreateFrame ("frame", "DetailsStreamerTitlebar", SOF, "BackdropTemplate") + titlebar:SetHeight (20) + titlebar:SetPoint ("bottomleft", SOF, "topleft") + titlebar:SetPoint ("bottomright", SOF, "topright") + titlebar:SetBackdrop ({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) + titlebar:SetBackdropColor (.1, .1, .1, .9) + titlebar.text = titlebar:CreateFontString (nil, "overlay", "GameFontNormal") + titlebar.text:SetPoint ("center", titlebar, "center") + titlebar.text:SetText ("Details! Streamer: Action Tracker") + titlebar:SetScript ("OnEnter", function (self) + GameTooltip:SetOwner (self) + GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT") + GameTooltip:AddLine ("|cFFFF7700Left Click|r: Open Options\n|cFFFF7700Right Click|r: Lock the Frame\n|cFFFF7700Slash Command|r: /streamer") GameTooltip:Show() end) - titlebar:SetScript("OnLeave", function() + titlebar:SetScript ("OnLeave", function() GameTooltip:Hide() end) - SOF:SetScript("OnMouseDown", function(self) + SOF:SetScript ("OnMouseDown", function (self) end) - SOF:SetScript("OnMouseUp", function(self) + SOF:SetScript ("OnMouseUp", function (self) end) - titlebar:SetScript("OnMouseDown", function(self, button) + titlebar:SetScript ("OnMouseDown", function (self, button) if (not SOF.moving and not StreamOverlay.db.main_frame_locked) then SOF:StartMoving() SOF.moving = true @@ -173,7 +173,7 @@ local function CreatePluginFrames() end end) - titlebar:SetScript("OnMouseUp", function(self, button) + titlebar:SetScript ("OnMouseUp", function (self, button) if (SOF.movingAt) then if (SOF.moving) then @@ -200,14 +200,14 @@ local function CreatePluginFrames() end end) - --main frame parameters - SOF:SetPoint("center", UIParent, "center") - SOF:SetSize(300, 500) - SOF:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) - SOF:EnableMouse(true) - SOF:SetMovable(true) - SOF:SetResizable(true) - SOF:SetClampedToScreen(true) + --> main frame parameters + SOF:SetPoint ("center", UIParent, "center") + SOF:SetSize (300, 500) + SOF:SetBackdrop ({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) + SOF:EnableMouse (true) + SOF:SetMovable (true) + SOF:SetResizable (true) + SOF:SetClampedToScreen (true) pcall(function() if (DetailsFramework.IsDragonflight()) then @@ -219,56 +219,56 @@ local function CreatePluginFrames() end) function StreamOverlay:SaveWindowSizeAnLocation() - --save size first + --> save size first StreamOverlay.db.main_frame_size [1] = SOF:GetWidth() StreamOverlay.db.main_frame_size [2] = SOF:GetHeight() - --save main frame position - LibWindow.RegisterConfig(SOF, StreamOverlay.db) - LibWindow.SavePosition(SOF) - --save the dps frame position - LibWindow.RegisterConfig(StreamerOverlayDpsHpsFrame, StreamOverlay.db.per_second) - LibWindow.SavePosition(StreamerOverlayDpsHpsFrame) + --> save main frame position + LibWindow.RegisterConfig (SOF, StreamOverlay.db) + LibWindow.SavePosition (SOF) + --> save the dps frame position + LibWindow.RegisterConfig (StreamerOverlayDpsHpsFrame, StreamOverlay.db.per_second) + LibWindow.SavePosition (StreamerOverlayDpsHpsFrame) end function StreamOverlay:RestoreWindowSizeAndLocation() - --restore the size first - SOF:SetSize(unpack(StreamOverlay.db.main_frame_size)) - --set the main window location - LibWindow.RegisterConfig(SOF, StreamOverlay.db) - LibWindow.RestorePosition(SOF) - LibWindow.SavePosition(SOF) - --set the dps frame location - LibWindow.RegisterConfig(StreamerOverlayDpsHpsFrame, StreamOverlay.db.per_second) - LibWindow.RestorePosition(StreamerOverlayDpsHpsFrame) - LibWindow.SavePosition(StreamerOverlayDpsHpsFrame) - --set the frame strata - SOF:SetFrameStrata(StreamOverlay.db.main_frame_strata) - StreamerOverlayDpsHpsFrame:SetFrameStrata(StreamOverlay.db.main_frame_strata) + --> restore the size first + SOF:SetSize (unpack (StreamOverlay.db.main_frame_size)) + --> set the main window location + LibWindow.RegisterConfig (SOF, StreamOverlay.db) + LibWindow.RestorePosition (SOF) + LibWindow.SavePosition (SOF) + --> set the dps frame location + LibWindow.RegisterConfig (StreamerOverlayDpsHpsFrame, StreamOverlay.db.per_second) + LibWindow.RestorePosition (StreamerOverlayDpsHpsFrame) + LibWindow.SavePosition (StreamerOverlayDpsHpsFrame) + --> set the frame strata + SOF:SetFrameStrata (StreamOverlay.db.main_frame_strata) + StreamerOverlayDpsHpsFrame:SetFrameStrata (StreamOverlay.db.main_frame_strata) end - --two resizers - local left_resize = CreateFrame("button", "DetailsStreamerLeftResizer", SOF, "BackdropTemplate") - local right_resize = CreateFrame("button", "DetailsStreamerRightResizer", SOF, "BackdropTemplate") - left_resize:SetPoint("bottomleft", SOF, "bottomleft") - right_resize:SetPoint("bottomright", SOF, "bottomright") - left_resize:SetSize(16, 16) - right_resize:SetSize(16, 16) - right_resize:SetNormalTexture([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Up]]) - right_resize:SetHighlightTexture([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Highlight]]) - right_resize:SetPushedTexture([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Down]]) - left_resize:SetNormalTexture([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Up]]) - left_resize:SetHighlightTexture([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Highlight]]) - left_resize:SetPushedTexture([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Down]]) - left_resize:GetNormalTexture():SetTexCoord(1, 0, 0, 1) - left_resize:GetHighlightTexture():SetTexCoord(1, 0, 0, 1) - left_resize:GetPushedTexture():SetTexCoord(1, 0, 0, 1) + --> two resizers + local left_resize = CreateFrame ("button", "DetailsStreamerLeftResizer", SOF, "BackdropTemplate") + local right_resize = CreateFrame ("button", "DetailsStreamerRightResizer", SOF, "BackdropTemplate") + left_resize:SetPoint ("bottomleft", SOF, "bottomleft") + right_resize:SetPoint ("bottomright", SOF, "bottomright") + left_resize:SetSize (16, 16) + right_resize:SetSize (16, 16) + right_resize:SetNormalTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Up]]) + right_resize:SetHighlightTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Highlight]]) + right_resize:SetPushedTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Down]]) + left_resize:SetNormalTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Up]]) + left_resize:SetHighlightTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Highlight]]) + left_resize:SetPushedTexture ([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Down]]) + left_resize:GetNormalTexture():SetTexCoord (1, 0, 0, 1) + left_resize:GetHighlightTexture():SetTexCoord (1, 0, 0, 1) + left_resize:GetPushedTexture():SetTexCoord (1, 0, 0, 1) - left_resize:SetScript("OnMouseDown", function(self) + left_resize:SetScript ("OnMouseDown", function (self) if (not SOF.resizing and not StreamOverlay.db.main_frame_locked) then SOF.resizing = true - SOF:StartSizing("bottomleft") + SOF:StartSizing ("bottomleft") end end) - left_resize:SetScript("OnMouseUp", function(self) + left_resize:SetScript ("OnMouseUp", function (self) if (SOF.resizing) then SOF.resizing = false SOF:StopMovingOrSizing() @@ -277,13 +277,13 @@ local function CreatePluginFrames() StreamOverlay:SaveWindowSizeAnLocation() end end) - right_resize:SetScript("OnMouseDown", function(self) + right_resize:SetScript ("OnMouseDown", function (self) if (not SOF.resizing and not StreamOverlay.db.main_frame_locked) then SOF.resizing = true - SOF:StartSizing("bottomright") + SOF:StartSizing ("bottomright") end end) - right_resize:SetScript("OnMouseUp", function(self) + right_resize:SetScript ("OnMouseUp", function (self) if (SOF.resizing) then SOF.resizing = false SOF:StopMovingOrSizing() @@ -293,17 +293,17 @@ local function CreatePluginFrames() end end) - SOF:SetScript("OnSizeChanged", function(self) + SOF:SetScript ("OnSizeChanged", function (self) StreamOverlay:Refresh() end) - SOF:SetScript("OnMouseDown", function(self) + SOF:SetScript ("OnMouseDown", function (self) if (not SOF.moving and not StreamOverlay.db.main_frame_locked) then SOF:StartMoving() SOF.moving = true end end) - SOF:SetScript("OnMouseUp", function(self) + SOF:SetScript ("OnMouseUp", function (self) if (SOF.moving) then SOF.moving = false SOF:StopMovingOrSizing() @@ -313,11 +313,11 @@ local function CreatePluginFrames() end) - --scroll frame - local autoscroll = CreateFrame("scrollframe", "Details_StreamOverlayScrollFrame", SOF, "FauxScrollFrameTemplate, BackdropTemplate") - autoscroll:SetScript("OnVerticalScroll", function(self, offset) FauxScrollFrame_OnVerticalScroll (self, offset, 20, StreamOverlay.UpdateLines) end) + --> scroll frame + local autoscroll = CreateFrame ("scrollframe", "Details_StreamOverlayScrollFrame", SOF, "FauxScrollFrameTemplate, BackdropTemplate") + autoscroll:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (self, offset, 20, StreamOverlay.UpdateLines) end) - --looks like this isn't working + --> looks like this isn't working function StreamOverlay:ClearAll() if (StreamOverlay.db.use_square_mode) then for index = 1, #StreamOverlay.squares do @@ -454,7 +454,7 @@ local function CreatePluginFrames() end end - --iterate each bar and update its text, icons and statusbar + --> iterate each bar and update its text, icons and statusbar function StreamOverlay:UpdateLines() if (StreamOverlay.db.use_square_mode) then return @@ -463,31 +463,31 @@ local function CreatePluginFrames() FauxScrollFrame_Update(autoscroll, StreamOverlay.total_lines, StreamOverlay.total_lines, 20) for index = 1, StreamOverlay.total_lines do - --here gets the bar and the table with the information to shown on the bar + --> here gets the bar and the table with the information to shown on the bar local data = StreamOverlay.battle_content [index] local line = StreamOverlay.battle_lines [index] if (data) then - --left - line.icon1:SetTexture(data [1]) - line.icon1:SetTexCoord(5/64, 59/64, 5/64, 59/64) + --> left + line.icon1:SetTexture (data [1]) + line.icon1:SetTexCoord (5/64, 59/64, 5/64, 59/64) local text = data [2] - line.text1:SetText(text) + line.text1:SetText (text) local loops = 20 while (line.text1:GetStringWidth() > text1Size and loops > 0) do text = strsub (text, 1, #text-1) - line.text1:SetText(text) + line.text1:SetText (text) loops = loops - 1 --just to be safe end - --right + --> right local text = data [6] - line.text2:SetText(text) + line.text2:SetText (text) local loops = 20 while (line.text2:GetStringWidth() > text2Size and loops > 0) do text = strsub (text, 1, #text-1) - line.text2:SetText(text) + line.text2:SetText (text) loops = loops - 1 --just to be safe end @@ -500,40 +500,40 @@ local function CreatePluginFrames() end if (data[7]) then - line.text2:SetTextColor(data[7].r, data[7].g, data[7].b) + line.text2:SetTextColor (data[7].r, data[7].g, data[7].b) else - line.text2:SetTextColor(1, 1, 1) + line.text2:SetTextColor (1, 1, 1) end - line.icon2:SetTexture(data [4]) - line.icon2:SetTexCoord(unpack(data [5])) + line.icon2:SetTexture (data [4]) + line.icon2:SetTexCoord (unpack (data [5])) if (data [4] == defaultAttackIcon) then - line.icon2:SetSize(iconSize*0.8, iconSize*0.8) - line.icon2:SetPoint("left", line, "center", 8, 0) - line.text2:SetPoint("left", line.icon2, "right", 5, 0) + line.icon2:SetSize (iconSize*0.8, iconSize*0.8) + line.icon2:SetPoint ("left", line, "center", 8, 0) + line.text2:SetPoint ("left", line.icon2, "right", 5, 0) else - line.icon2:SetSize(iconSize, iconSize) - line.icon2:SetPoint("left", line, "center", 8, 0) - line.text2:SetPoint("left", line.icon2, "right", 5, 0) + line.icon2:SetSize (iconSize, iconSize) + line.icon2:SetPoint ("left", line, "center", 8, 0) + line.text2:SetPoint ("left", line.icon2, "right", 5, 0) end - --background - line:SetBackdropColor(unpack(data [8])) + --> background + line:SetBackdropColor (unpack (data [8])) if (data [9]) then - line:SetBackdropBorderColor(unpack(data [9])) + line:SetBackdropBorderColor (unpack (data [9])) else - line:SetBackdropBorderColor(0, 0, 0, 0) + line:SetBackdropBorderColor (0, 0, 0, 0) end - --percentage + --> percentage local castinfo = CastsTable [data.CastID] local percent = castinfo and castinfo.Percent or 0 if (percent > 100) then percent = 100 end - line.statusbar:SetValue(percent) + line.statusbar:SetValue (percent) if (StreamOverlay.db.use_spark) then line.spark:Show() @@ -566,7 +566,7 @@ local function CreatePluginFrames() end --CastStart from the cast_send - table.insert(StreamOverlay.battle_content, 1, {icon1, text1, color1, icon2, icon2coords, text2, color2, backgroundcolor, bordercolor, CastID = ID, CastStart = CastStart, startTime = startTime, endTime = endTime}) + table.insert (StreamOverlay.battle_content, 1, {icon1, text1, color1, icon2, icon2coords, text2, color2, backgroundcolor, bordercolor, CastID = ID, CastStart = CastStart, startTime = startTime, endTime = endTime}) table.remove (StreamOverlay.battle_content, StreamOverlay.total_lines+1) if (StreamOverlay.db.use_square_mode) then @@ -580,48 +580,48 @@ local function CreatePluginFrames() local index = #StreamOverlay.battle_lines+1 - local f = CreateFrame("frame", "StreamOverlayBar" .. index, SOF, "BackdropTemplate") - local statusbar = CreateFrame("StatusBar", "StreamOverlayBar" .. index .. "StatusBar", f, "BackdropTemplate") - local statusbar_texture = statusbar:CreateTexture(nil, "border") - statusbar_texture:SetTexture(1, 1, 1, 0.15) - statusbar:SetStatusBarColor(0, 0, 0, 0) - statusbar:SetStatusBarTexture(statusbar_texture) - statusbar:SetMinMaxValues(0, 100) - statusbar:SetValue(0) - local statusbar_spark = statusbar:CreateTexture(nil, "artwork") - statusbar_spark:SetTexture([[Interface\CastingBar\UI-CastingBar-Spark]]) - statusbar_spark:SetSize(16, 50) - statusbar_spark:SetBlendMode("ADD") + local f = CreateFrame ("frame", "StreamOverlayBar" .. index, SOF, "BackdropTemplate") + local statusbar = CreateFrame ("StatusBar", "StreamOverlayBar" .. index .. "StatusBar", f, "BackdropTemplate") + local statusbar_texture = statusbar:CreateTexture (nil, "border") + statusbar_texture:SetTexture (1, 1, 1, 0.15) + statusbar:SetStatusBarColor (0, 0, 0, 0) + statusbar:SetStatusBarTexture (statusbar_texture) + statusbar:SetMinMaxValues (0, 100) + statusbar:SetValue (0) + local statusbar_spark = statusbar:CreateTexture (nil, "artwork") + statusbar_spark:SetTexture ([[Interface\CastingBar\UI-CastingBar-Spark]]) + statusbar_spark:SetSize (16, 50) + statusbar_spark:SetBlendMode ("ADD") statusbar_spark:Hide() local h = (index-1) * StreamOverlay.db.row_spacement * -1 - f:SetPoint("topleft", SOF, "topleft", 0, h) - f:SetPoint("topright", SOF, "topright", 0, h) + f:SetPoint ("topleft", SOF, "topleft", 0, h) + f:SetPoint ("topright", SOF, "topright", 0, h) --backdrop color not editable - f:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) - f:SetBackdropBorderColor(0, 0, 0, 0) - --f:SetBackdropColor(0, 0, 0, 0) + f:SetBackdrop ({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) + f:SetBackdropBorderColor (0, 0, 0, 0) + --f:SetBackdropColor (0, 0, 0, 0) - local icon1 = statusbar:CreateTexture(nil, "overlay") - local icon2 = statusbar:CreateTexture(nil, "overlay") + local icon1 = statusbar:CreateTexture (nil, "overlay") + local icon2 = statusbar:CreateTexture (nil, "overlay") - local arrow = statusbar:CreateTexture(nil, "overlay") + local arrow = statusbar:CreateTexture (nil, "overlay") - local text1 = statusbar:CreateFontString(nil, "overlay", "GameFontNormal") - local text2 = statusbar:CreateFontString(nil, "overlay", "GameFontNormal") + local text1 = statusbar:CreateFontString (nil, "overlay", "GameFontNormal") + local text2 = statusbar:CreateFontString (nil, "overlay", "GameFontNormal") - icon1:SetPoint("left", f, "left", 2, 0) --player spell icon - text1:SetPoint("left", icon1, "right", 2, 0) --player spell name + icon1:SetPoint ("left", f, "left", 2, 0) --> player spell icon + text1:SetPoint ("left", icon1, "right", 2, 0) --> player spell name - arrow:SetPoint("center", f, "center") --separate player spell and targets + arrow:SetPoint ("center", f, "center") --> separate player spell and targets - icon2:SetPoint("left", f, "center", 10, 0) - text2:SetPoint("left", icon2, "right", 3, 0) + icon2:SetPoint ("left", f, "center", 10, 0) + text2:SetPoint ("left", icon2, "right", 3, 0) - statusbar:SetPoint("topleft", f, "topleft", 0, 0) - statusbar:SetPoint("bottomright", f, "bottomright", 0, 0) + statusbar:SetPoint ("topleft", f, "topleft", 0, 0) + statusbar:SetPoint ("bottomright", f, "bottomright", 0, 0) f.icon1 = icon1 f.icon2 = icon2 @@ -646,13 +646,13 @@ local function CreatePluginFrames() return end - for i, row in ipairs(StreamOverlay.battle_lines) do + for i, row in ipairs (StreamOverlay.battle_lines) do StreamOverlay:SetBattleLineStyle (row, i) end - --update the dps hps frame text + --> update the dps hps frame text StreamOverlay:SetFontFace (StreamerOverlayDpsHpsFrameText, SharedMedia:Fetch ("font", StreamOverlay.db.font_face)) - StreamOverlay:SetFontColor(StreamerOverlayDpsHpsFrameText, StreamOverlay.db.font_color) + StreamOverlay:SetFontColor (StreamerOverlayDpsHpsFrameText, StreamOverlay.db.font_color) end function StreamOverlay:RefreshAllBoxesStyle() @@ -660,7 +660,7 @@ local function CreatePluginFrames() return end - for i, square in ipairs(StreamOverlay.squares) do + for i, square in ipairs (StreamOverlay.squares) do StreamOverlay:SetSquareStyle(square, i) end end @@ -673,36 +673,36 @@ local function CreatePluginFrames() function StreamOverlay:SetBattleLineStyle (row, index) local options = StreamOverlay.db - row:SetHeight(StreamOverlay.db.row_height) + row:SetHeight (StreamOverlay.db.row_height) if (index) then local h = (index-1) * StreamOverlay.db.row_spacement * -1 - row:SetPoint("topleft", SOF, "topleft", 0, h) - row:SetPoint("topright", SOF, "topright", 0, h) + row:SetPoint ("topleft", SOF, "topleft", 0, h) + row:SetPoint ("topright", SOF, "topright", 0, h) end - StreamOverlay:SetFontSize(row.text1, StreamOverlay.db.font_size) - StreamOverlay:SetFontSize(row.text2, StreamOverlay.db.font_size) + StreamOverlay:SetFontSize (row.text1, StreamOverlay.db.font_size) + StreamOverlay:SetFontSize (row.text2, StreamOverlay.db.font_size) local font = SharedMedia:Fetch ("font", StreamOverlay.db.font_face) StreamOverlay:SetFontFace (row.text1, font) StreamOverlay:SetFontFace (row.text2, font) - StreamOverlay:SetFontColor(row.text1, StreamOverlay.db.font_color) - StreamOverlay:SetFontColor(row.text2, StreamOverlay.db.font_color) + StreamOverlay:SetFontColor (row.text1, StreamOverlay.db.font_color) + StreamOverlay:SetFontColor (row.text2, StreamOverlay.db.font_color) iconSize = StreamOverlay.db.row_height-4 - row.icon1:SetSize(iconSize, iconSize) - row.icon2:SetSize(iconSize, iconSize) + row.icon1:SetSize (iconSize, iconSize) + row.icon2:SetSize (iconSize, iconSize) local current_texture = row.icon2:GetTexture() if (current_texture == defaultAttackIcon) then - row.icon2:SetSize(iconSize*0.8, iconSize*0.8) - row.icon2:SetPoint("left", row, "center", 8, 0) - row.text2:SetPoint("left", row.icon2, "right", 5, 0) + row.icon2:SetSize (iconSize*0.8, iconSize*0.8) + row.icon2:SetPoint ("left", row, "center", 8, 0) + row.text2:SetPoint ("left", row.icon2, "right", 5, 0) else - row.icon2:SetPoint("left", row, "center", 8, 0) - row.text2:SetPoint("left", row.icon2, "right", 5, 0) + row.icon2:SetPoint ("left", row, "center", 8, 0) + row.text2:SetPoint ("left", row.icon2, "right", 5, 0) end if (row.text2:GetText() == "") then @@ -730,7 +730,7 @@ local function CreatePluginFrames() local line_in_use = line.in_use or 1 local content_in_use = StreamOverlay.battle_content [i] and StreamOverlay.battle_content [i].CastStart or 1 - if (max(line_in_use, content_in_use) + 60 < now) then + if (max (line_in_use, content_in_use) + 60 < now) then fader (nil, line, "in") else fader (nil, line, "out") @@ -743,7 +743,7 @@ local function CreatePluginFrames() local line_in_use = line.in_use or 1 local content_in_use = StreamOverlay.battle_content [i] and StreamOverlay.battle_content [i].CastStart or 1 - if (max(line_in_use, content_in_use) + 60 < now) then + if (max (line_in_use, content_in_use) + 60 < now) then fader (nil, StreamOverlay.battle_lines [i], "in") else fader (nil, StreamOverlay.battle_lines [i], "out") @@ -757,7 +757,7 @@ local function CreatePluginFrames() local line_in_use = line.in_use or 1 local content_in_use = StreamOverlay.battle_content[i] and StreamOverlay.battle_content[i].CastStart or 1 - if (max(line_in_use, content_in_use) + 60 < now) then + if (max (line_in_use, content_in_use) + 60 < now) then fader (nil, StreamOverlay.squares[i], "in") else fader (nil, StreamOverlay.squares[i], "out") @@ -960,11 +960,11 @@ local DefaultCoords = {0, 1, 0, 1} local DefaultColor = {r=1, g=1, b=1} local PetCoords = {0.25, 0.49609375, 0.75, 1} -local parse_target_name = function(target) - return StreamOverlay:GetOnlyName(target) +local parse_target_name = function (target) + return StreamOverlay:GetOnlyName (target) end -local parse_target_icon = function(targetObject, target) +local parse_target_icon = function (targetObject, target) local icon2, icon2coords, pclass if (targetObject) then local role = targetObject.role @@ -992,7 +992,7 @@ local parse_target_icon = function(targetObject, target) end end else - local _, class = UnitClass(targetObject.nome) + local _, class = UnitClass (targetObject.nome) if (class) then icon2 = [[Interface\AddOns\Details\images\classes_small_alpha]] icon2coords = Details.class_coords [class] @@ -1003,7 +1003,7 @@ local parse_target_icon = function(targetObject, target) end end else - local _, class = UnitClass(target) + local _, class = UnitClass (target) if (class) then icon2 = [[Interface\AddOns\Details\images\classes_small_alpha]] icon2coords = Details.class_coords [class] @@ -1022,7 +1022,7 @@ local parse_target_icon = function(targetObject, target) return icon2, icon2coords, pclass end -local parse_target_color = function(class) +local parse_target_color = function (class) local color2 = RAID_CLASS_COLORS [class] return color2 end @@ -1040,9 +1040,9 @@ function StreamOverlay:CastStart (castGUID) end local icon, backgroundcolor, bordercolor = StreamOverlay:GetSpellInformation (spellid) - local spellname, _, spellicon = GetSpellInfo(spellid) + local spellname, _, spellicon = GetSpellInfo (spellid) - local targetObject = Details:GetActor("current", 1, target) or Details:GetActor("current", 2, target) + local targetObject = Details:GetActor ("current", 1, target) or Details:GetActor ("current", 2, target) local icon2, icon2coords, class = parse_target_icon (targetObject, target) local color2 @@ -1078,9 +1078,9 @@ function StreamOverlay:CastFinished (castid) --just casted a instant spell local icon, backgroundcolor, bordercolor = StreamOverlay:GetSpellInformation (spellid) - local spellname, _, spellicon = GetSpellInfo(spellid) + local spellname, _, spellicon = GetSpellInfo (spellid) - local targetObject = Details:GetActor("current", 1, target) or Details:GetActor("current", 2, target) + local targetObject = Details:GetActor ("current", 1, target) or Details:GetActor ("current", 2, target) local icon2, icon2coords, class = parse_target_icon (targetObject, target) @@ -1110,23 +1110,23 @@ eventFrame.track_spell_cast = function() if (not castinfo.Done) then - --is being casted? + --> is being casted? if (castinfo.HasCastTime) then if (castinfo.Success) then - --okey it's done + --> okey it's done castinfo.Done = true castinfo.Percent = 100 - line.statusbar:SetValue(100) - line.spark:SetPoint("left", line.statusbar, "left", (line.statusbar:GetWidth() / 100 * 100) - 8, 0) + line.statusbar:SetValue (100) + line.spark:SetPoint ("left", line.statusbar, "left", (line.statusbar:GetWidth() / 100 * 100) - 8, 0) --line.spark:Hide() elseif (castinfo.Interrupted) then - --has been interrupted + --> has been interrupted castinfo.Done = true - line.spark:SetVertexColor(1, 0.7, 0) + line.spark:SetVertexColor (1, 0.7, 0) elseif (castinfo.IsChanneled) then - --casting a channeled spell + --> casting a channeled spell local name, text, texture, startTime, endTime, isTradeSkill, notInterruptible = UnitChannelInfo ("player") if (name) then @@ -1136,9 +1136,9 @@ eventFrame.track_spell_cast = function() local diff = endTime - startTime local current = GetTime() - startTime local percent = current / diff * 100 - percent = math.abs(percent - 100) + percent = math.abs (percent - 100) castinfo.Percent = percent - line.statusbar:SetValue(percent) + line.statusbar:SetValue (percent) if (StreamOverlay.db.use_spark) then line.spark:Show() else @@ -1150,7 +1150,7 @@ eventFrame.track_spell_cast = function() end else - --still casting + --> still casting local spell, displayName, icon, startTime, endTime, isTradeSkill, castID, interrupt = UnitCastingInfo("player") if (spell) then startTime = startTime / 1000 @@ -1161,7 +1161,7 @@ eventFrame.track_spell_cast = function() local percent = current / diff * 100 castinfo.Percent = percent - line.statusbar:SetValue(percent) + line.statusbar:SetValue (percent) if (StreamOverlay.db.use_spark) then line.spark:Show() else @@ -1173,12 +1173,12 @@ eventFrame.track_spell_cast = function() end else - --it's instant cast + --> it's instant cast if (castinfo.CastStart+1.2 < GetTime()) then castinfo.Done = true castinfo.Percent = 100 - line.statusbar:SetValue(100) - line.spark:SetPoint("left", line.statusbar, "left", (line.statusbar:GetWidth() / 100 * 100) - 8, 0) + line.statusbar:SetValue (100) + line.spark:SetPoint ("left", line.statusbar, "left", (line.statusbar:GetWidth() / 100 * 100) - 8, 0) --line.spark:Hide() else local startTime = castinfo.CastStart @@ -1189,7 +1189,7 @@ eventFrame.track_spell_cast = function() local percent = current / diff * 100 castinfo.Percent = percent - line.statusbar:SetValue(percent) + line.statusbar:SetValue (percent) if (StreamOverlay.db.use_spark) then line.spark:Show() @@ -1197,8 +1197,8 @@ eventFrame.track_spell_cast = function() line.spark:Hide() end - line.spark:SetVertexColor(1, 1, 1, 1) - line.spark:SetPoint("left", line.statusbar, "left", (line.statusbar:GetWidth() / 100 * percent) - 6, 0) + line.spark:SetVertexColor (1, 1, 1, 1) + line.spark:SetPoint ("left", line.statusbar, "left", (line.statusbar:GetWidth() / 100 * percent) - 6, 0) end end @@ -1215,23 +1215,23 @@ eventFrame.track_spell_cast = function() if (not castinfo.Done and line) then - --is being casted? + --> is being casted? if (castinfo.HasCastTime) then if (castinfo.Success) then - --okey it's done + --> okey it's done castinfo.Done = true castinfo.Percent = 100 StreamOverlay:UpdateCooldownFrame(line, false) elseif (castinfo.Interrupted) then - --has been interrupted + --> has been interrupted castinfo.Done = true local totalTime = castinfo.CastTimeEnd - castinfo.CastTimeStart local pct = castinfo.CastTimeEnd - GetTime() castinfo.InterruptedPct = pct / totalTime elseif (castinfo.IsChanneled) then - --casting a channeled spell + --> casting a channeled spell local name, text, texture, startTime, endTime, isTradeSkill, notInterruptible = UnitChannelInfo ("player") if (name) then @@ -1241,13 +1241,13 @@ eventFrame.track_spell_cast = function() local diff = endTime - startTime local current = GetTime() - startTime local percent = current / diff * 100 - percent = math.abs(percent - 100) + percent = math.abs (percent - 100) castinfo.Percent = percent StreamOverlay:UpdateCooldownFrame(line, true, startTime, endTime, castinfo) end else - --still casting + --> still casting local spell, displayName, icon, startTime, endTime, isTradeSkill, castID, interrupt = UnitCastingInfo ("player") if (spell) then startTime = startTime / 1000 @@ -1261,7 +1261,7 @@ eventFrame.track_spell_cast = function() end else - --it's instant cast + --> it's instant cast if (castinfo.CastStart+1.2 < GetTime()) then castinfo.Done = true castinfo.Percent = 100 @@ -1291,21 +1291,21 @@ eventFrame.track_spell_cast = function() end function eventFrame:RegisterMyEvents() - eventFrame:RegisterEvent("UNIT_SPELLCAST_START") - eventFrame:RegisterEvent("UNIT_SPELLCAST_SENT") - eventFrame:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED") - eventFrame:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED") - eventFrame:RegisterEvent("UNIT_SPELLCAST_FAILED_QUIET") - eventFrame:RegisterEvent("UNIT_SPELLCAST_FAILED") - eventFrame:RegisterEvent("UNIT_SPELLCAST_DELAYED") - eventFrame:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START") - eventFrame:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP") - eventFrame:RegisterEvent("UNIT_SPELLCAST_CHANNEL_UPDATE") - eventFrame:RegisterEvent("UNIT_SPELLCAST_STOP") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_START") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_SENT") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_SUCCEEDED") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_INTERRUPTED") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_FAILED_QUIET") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_FAILED") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_DELAYED") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_CHANNEL_START") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_CHANNEL_STOP") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_CHANNEL_UPDATE") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_STOP") if (not DetailsFramework.IsTBCWow() and not DetailsFramework.IsWotLKWow()) then - eventFrame:RegisterEvent("UNIT_SPELLCAST_INTERRUPTIBLE") - eventFrame:RegisterEvent("UNIT_SPELLCAST_NOT_INTERRUPTIBLE") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_INTERRUPTIBLE") + eventFrame:RegisterEvent ("UNIT_SPELLCAST_NOT_INTERRUPTIBLE") end end @@ -1335,18 +1335,18 @@ local lastChannelSpell = "" local APM = 0 local ACTIONS = 0 local ACTIONS_EVENT_TIME = {} -local AMP_Tick = C_Timer.NewTicker(1, function() +local AMP_Tick = C_Timer.NewTicker (1, function() APM = ACTIONS * 60 ACTIONS = 0 end) -local APM_FRAME = CreateFrame("frame", "DetailsAPMFrame", UIParent, "BackdropTemplate") -APM_FRAME:RegisterEvent("PLAYER_STARTED_MOVING") -APM_FRAME:RegisterEvent("PLAYER_STOPPED_MOVING") -APM_FRAME:SetScript("OnEvent", function() +local APM_FRAME = CreateFrame ("frame", "DetailsAPMFrame", UIParent, "BackdropTemplate") +APM_FRAME:RegisterEvent ("PLAYER_STARTED_MOVING") +APM_FRAME:RegisterEvent ("PLAYER_STOPPED_MOVING") +APM_FRAME:SetScript ("OnEvent", function() ACTIONS = ACTIONS + 1 end) -eventFrame:SetScript("OnEvent", function(self, event, ...) +eventFrame:SetScript ("OnEvent", function (self, event, ...) if (event ~= "UNIT_SPELLCAST_SENT" and event ~= "UNIT_SPELLCAST_SUCCEEDED" and ACTIONS_EVENT_TIME [event] ~= GetTime()) then ACTIONS = ACTIONS + 1 ACTIONS_EVENT_TIME [event] = GetTime() @@ -1355,7 +1355,7 @@ eventFrame:SetScript("OnEvent", function(self, event, ...) if (event == "UNIT_SPELLCAST_SENT") then local unitID, target, castGUID, spellID = ... --local unitID, spell, rank, target, id = ... - local spell = GetSpellInfo(spellID) + local spell = GetSpellInfo (spellID) if (unitID == "player") then CastsTable [castGUID] = {Target = target or "", Id = castGUID, CastStart = GetTime()} @@ -1389,7 +1389,7 @@ eventFrame:SetScript("OnEvent", function(self, event, ...) CastsTable [castGUID].InterruptedTime = GetTime() end - --channels isn't passing the CastID / cast id for channels is always Zero. + --> channels isn't passing the CastID / cast id for channels is always Zero. elseif (event == "UNIT_SPELLCAST_CHANNEL_STOP") then --local unitID, spell, rank, id, spellID = ... local unitID, castGUID, spellID = ... @@ -1419,7 +1419,7 @@ eventFrame:SetScript("OnEvent", function(self, event, ...) end if (ischanneling) then - --channel updated + --> channel updated CastsTable [lastchannelid].Interrupted = true CastsTable [lastchannelid].InterruptedTime = GetTime() end @@ -1447,16 +1447,16 @@ eventFrame:SetScript("OnEvent", function(self, event, ...) elseif (event == "UNIT_SPELLCAST_SUCCEEDED") then --local unitID, spell, rank, id, spellID = ... local unitID, castGUID, spellID = ... - local spell = GetSpellInfo(spellID) + local spell = GetSpellInfo (spellID) if (unitID == "player" and CastsTable[castGUID] and not channelspells [spell]) then if (CastsTable[castGUID].HasCastTime and not CastsTable[castGUID].IsChanneled) then - --a cast (non channeled) just successful finished + --> a cast (non channeled) just successful finished CastsTable [castGUID].Success = true StreamOverlay:CastFinished (castGUID) elseif (not CastsTable[castGUID].HasCastTime) then - --instant cast finished + --> instant cast finished CastsTable [castGUID].SpellId = spellID CastsTable [castGUID].Success = true StreamOverlay:CastFinished (castGUID) @@ -1466,12 +1466,12 @@ eventFrame:SetScript("OnEvent", function(self, event, ...) end) -local format_time = function(v) return "-" .. format("%.2f", v) end +local format_time = function (v) return "-" .. format ("%.2f", v) end --when the player die, show the events before the death function StreamOverlay.OnDeath (_, token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, death_table, last_cooldown, death_at_combattime, max_health) - if (alvo_serial ~= UnitGUID("player")) then + if (alvo_serial ~= UnitGUID ("player")) then return end @@ -1479,8 +1479,8 @@ function StreamOverlay.OnDeath (_, token, time, who_serial, who_name, who_flags, for i = 1, #death_table do local ev = death_table [i] - if (ev and type(ev) == "table" and ev[1] and type(ev[1]) == "boolean") then - --it's a damage + if (ev and type (ev) == "table" and ev[1] and type (ev[1]) == "boolean") then + --> it's a damage local spellid = ev[2] local amount = ev[3] local attime = ev[4] @@ -1489,17 +1489,17 @@ function StreamOverlay.OnDeath (_, token, time, who_serial, who_name, who_flags, local absorbed = ev[7] --get the actor from details - local sourceObject = Details:GetActor("current", 1, source) + local sourceObject = Details:GetActor ("current", 1, source) local classIcon, l, r, t, b if (sourceObject) then - classIcon, l, r, t, b = StreamOverlay:GetClassIcon(sourceObject.classe) + classIcon, l, r, t, b = StreamOverlay:GetClassIcon (sourceObject.classe) else classIcon, l, r, t, b = defaultAttackIcon, 0, 1, 0, 1 end --spellname local spellname, _, spellicon = StreamOverlay.getspellinfo (spellid) - source = StreamOverlay:GetOnlyName(source) + source = StreamOverlay:GetOnlyName (source) local CastInfoIndex = i * -1 @@ -1539,7 +1539,7 @@ function StreamOverlay.OnDeath (_, token, time, who_serial, who_name, who_flags, end ---passes the new lock state +--> passes the new lock state --the window is click throught when locked function StreamOverlay:SetLocked (state) @@ -1548,19 +1548,19 @@ function StreamOverlay:SetLocked (state) end if (state) then - --is locked + --> is locked StreamOverlay.db.main_frame_locked = true DetailsStreamerTitlebar:Hide() DetailsStreamerLeftResizer:Hide() DetailsStreamerRightResizer:Hide() - SOF:EnableMouse(false) + SOF:EnableMouse (false) else - --not locked + --> not locked StreamOverlay.db.main_frame_locked = false DetailsStreamerTitlebar:Show() DetailsStreamerLeftResizer:Show() DetailsStreamerRightResizer:Show() - SOF:EnableMouse(true) + SOF:EnableMouse (true) end StreamOverlay:UpdateDpsHpsFrameConfig() @@ -1569,21 +1569,21 @@ end ---------------------------------------------------------------------------------------------------------------------------------------------------------------- --on screen hps dps -local screen_frame = CreateFrame("frame", "StreamerOverlayDpsHpsFrame", UIParent, "BackdropTemplate") -screen_frame:SetSize(70, 20) -screen_frame:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) -screen_frame:SetBackdropColor(.1, .1, .1, .9) -screen_frame:SetMovable(true) +local screen_frame = CreateFrame ("frame", "StreamerOverlayDpsHpsFrame", UIParent, "BackdropTemplate") +screen_frame:SetSize (70, 20) +screen_frame:SetBackdrop ({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) +screen_frame:SetBackdropColor (.1, .1, .1, .9) +screen_frame:SetMovable (true) screen_frame:Hide() -screen_frame:SetPoint("center", UIParent, "center") -screen_frame:SetScript("OnMouseDown", function(self) +screen_frame:SetPoint ("center", UIParent, "center") +screen_frame:SetScript ("OnMouseDown", function (self) if (not screen_frame.moving and not StreamOverlay.db.main_frame_locked) then screen_frame:StartMoving() screen_frame.moving = true screen_frame.movingAt = GetTime() end end) -screen_frame:SetScript("OnMouseUp", function(self) +screen_frame:SetScript ("OnMouseUp", function (self) if (screen_frame.movingAt) then if (screen_frame.moving) then screen_frame.moving = false @@ -1599,19 +1599,19 @@ screen_frame:SetScript("OnMouseUp", function(self) StreamOverlay.OpenOptionsPanel() end end) -screen_frame:SetScript("OnEnter", function(self) - GameTooltip:SetOwner(self) - GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") - GameTooltip:AddLine("|cFFFF7700Left Click|r: Open Options\n|cFFFF7700Slash Command|r: /streamer") +screen_frame:SetScript ("OnEnter", function (self) + GameTooltip:SetOwner (self) + GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT") + GameTooltip:AddLine ("|cFFFF7700Left Click|r: Open Options\n|cFFFF7700Slash Command|r: /streamer") GameTooltip:Show() end) -screen_frame:SetScript("OnLeave", function() +screen_frame:SetScript ("OnLeave", function() GameTooltip:Hide() end) -local screen_frame_text = screen_frame:CreateFontString("StreamerOverlayDpsHpsFrameText", "overlay", "GameFontNormal") -screen_frame_text:SetPoint("center", screen_frame, "center") +local screen_frame_text = screen_frame:CreateFontString ("StreamerOverlayDpsHpsFrameText", "overlay", "GameFontNormal") +screen_frame_text:SetPoint ("center", screen_frame, "center") screen_frame.text = screen_frame_text local screen_frame_attribute = 1 @@ -1630,20 +1630,20 @@ function StreamOverlay:UpdateDpsHpsFrameConfig (PluginDisabled) local db = StreamOverlay.db.per_second - StreamOverlay:SetFontSize(screen_frame.text, db.size) + StreamOverlay:SetFontSize (screen_frame.text, db.size) StreamOverlay:SetFontOutline (screen_frame.text, db.font_shadow) - screen_frame:SetScale(db.scale) + screen_frame:SetScale (db.scale) screen_frame_attribute = db.attribute_type format_function = Details:GetCurrentToKFunction() if (StreamOverlay.db.main_frame_locked) then - screen_frame:SetBackdrop(nil) - screen_frame:EnableMouse(false) + screen_frame:SetBackdrop (nil) + screen_frame:EnableMouse (false) else - screen_frame:SetBackdrop({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) - screen_frame:SetBackdropColor(.1, .1, .1, .9) - screen_frame:EnableMouse(true) + screen_frame:SetBackdrop ({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) + screen_frame:SetBackdropColor (.1, .1, .1, .9) + screen_frame:EnableMouse (true) end if (db.enabled) then @@ -1652,7 +1652,7 @@ function StreamOverlay:UpdateDpsHpsFrameConfig (PluginDisabled) StreamOverlay.DpsHpsTick:Cancel() StreamOverlay.DpsHpsTick = nil end - StreamOverlay.DpsHpsTick = C_Timer.NewTicker(db.update_speed, StreamOverlay.UpdateDpsHpsFrame) + StreamOverlay.DpsHpsTick = C_Timer.NewTicker (db.update_speed, StreamOverlay.UpdateDpsHpsFrame) else screen_frame:Hide() if (StreamOverlay.DpsHpsTick) then @@ -1661,24 +1661,24 @@ function StreamOverlay:UpdateDpsHpsFrameConfig (PluginDisabled) end end - --update the dps hps frame text + --> update the dps hps frame text StreamOverlay:SetFontFace (StreamerOverlayDpsHpsFrameText, SharedMedia:Fetch ("font", StreamOverlay.db.font_face)) - StreamOverlay:SetFontColor(StreamerOverlayDpsHpsFrameText, StreamOverlay.db.font_color) + StreamOverlay:SetFontColor (StreamerOverlayDpsHpsFrameText, StreamOverlay.db.font_color) end function StreamOverlay:UpdateDpsHpsFrame() - --low level actor parsing - we can just use Details:GetActor(), but is faster without having to call functions + --> low level actor parsing - we can just use Details:GetActor(), but is faster without having to call functions local container = _detalhes.tabela_vigente [screen_frame_attribute] local actor = container._ActorTable [container._NameIndexTable [playerName]] if (actor) then - screen_frame_text:SetText(format_function (_, actor.total / _detalhes.tabela_vigente:GetCombatTime())) + screen_frame_text:SetText (format_function (_, actor.total / _detalhes.tabela_vigente:GetCombatTime())) else if (StreamOverlay.db.per_second.attribute_type == 1) then - screen_frame_text:SetText("DPS") + screen_frame_text:SetText ("DPS") else - screen_frame_text:SetText("HPS") + screen_frame_text:SetText ("HPS") end end end @@ -1690,11 +1690,11 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) if (not StreamOverlayOptionsPanel) then local detailsFramework = Details:GetFramework() - local options_text_template = detailsFramework:GetTemplate("font", "OPTIONS_FONT_TEMPLATE") - local options_dropdown_template = detailsFramework:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE") - local options_switch_template = detailsFramework:GetTemplate("switch", "OPTIONS_CHECKBOX_TEMPLATE") - local options_slider_template = detailsFramework:GetTemplate("slider", "OPTIONS_SLIDER_TEMPLATE") - local options_button_template = detailsFramework:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE") + local options_text_template = detailsFramework:GetTemplate ("font", "OPTIONS_FONT_TEMPLATE") + local options_dropdown_template = detailsFramework:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE") + local options_switch_template = detailsFramework:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE") + local options_slider_template = detailsFramework:GetTemplate ("slider", "OPTIONS_SLIDER_TEMPLATE") + local options_button_template = detailsFramework:GetTemplate ("button", "OPTIONS_BUTTON_TEMPLATE") local optionsFrame = StreamOverlay:CreatePluginOptionsFrame("StreamOverlayOptionsPanel", "Details! Streamer: Action Tracker", 1) optionsFrame:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true}) @@ -1790,7 +1790,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) for name, fontPath in pairs(fontObjects) do fontTable[#fontTable+1] = {value = name, label = name, onclick = setFontFace, font = fontPath, descfont = name} end - table.sort(fontTable, function(t1, t2) return t1.label < t2.label end) + table.sort(fontTable, function (t1, t2) return t1.label < t2.label end) -- select arrow local arrows = { @@ -1825,13 +1825,13 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) end local arrowIconTable = {} - for _, arrow in ipairs(arrows) do - arrowIconTable[#arrowIconTable+1] = {value = arrow, label = arrow:gsub("Interface(.*)\\", ""), onclick = setArrowTextureCallback, icon = arrow} + for _, arrow in ipairs (arrows) do + arrowIconTable[#arrowIconTable+1] = {value = arrow, label = arrow:gsub ("Interface(.*)\\", ""), onclick = setArrowTextureCallback, icon = arrow} end -- - local setWindowStrataCallback = function(_, _, strata) + local setWindowStrataCallback = function (_, _, strata) StreamOverlay.db.main_frame_strata = strata SOF:SetFrameStrata(strata) StreamerOverlayDpsHpsFrame:SetFrameStrata(strata) @@ -1868,7 +1868,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) desc = "Can't move or interact within the frame when it's locked.", order = 1, get = function() return StreamOverlay.db.main_frame_locked end, - set = function(self, fixedParam, val) + set = function (self, fixedParam, val) StreamOverlay:SetLocked (not StreamOverlay.db.main_frame_locked) end, }, @@ -1879,7 +1879,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) desc = "Show/Hide minimap icon.", order = 1, get = function() return not StreamOverlay.db.minimap.hide end, - set = function(self, fixedParam, val) + set = function (self, fixedParam, val) StreamOverlay.db.minimap.hide = not StreamOverlay.db.minimap.hide if (LDBIcon) then LDBIcon:Refresh ("DetailsStreamer", StreamOverlay.db.minimap) @@ -1890,7 +1890,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "color", get = function() return StreamOverlay.db.main_frame_color end, - set = function(self, r, g, b, a) + set = function (self, r, g, b, a) StreamOverlay:SetBackgroundColor (r, g, b, a) end, desc = "Color used on the background.", @@ -1900,7 +1900,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.scale or 1 end, - set = function(self, fixedparam, value) StreamOverlay.db.scale = value; StreamOverlay.Frame:SetScale(value) end, + set = function (self, fixedparam, value) StreamOverlay.db.scale = value; StreamOverlay.Frame:SetScale(value) end, min = 0.6, max = 2, step = 0.1, @@ -1914,7 +1914,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.row_height end, - set = function(self, fixedparam, value) StreamOverlay.db.row_height = value; StreamOverlay:RefreshAllBattleLineStyle() end, + set = function (self, fixedparam, value) StreamOverlay.db.row_height = value; StreamOverlay:RefreshAllBattleLineStyle() end, min = 10, max = 30, step = 1, @@ -1925,7 +1925,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.row_spacement end, - set = function(self, fixedparam, value) StreamOverlay.db.row_spacement = value; StreamOverlay:RefreshAllBattleLineStyle() end, + set = function (self, fixedparam, value) StreamOverlay.db.row_spacement = value; StreamOverlay:RefreshAllBattleLineStyle() end, min = 8, max = 31, step = 1, @@ -1944,7 +1944,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "color", get = function() return StreamOverlay.db.row_color end, - set = function(self, r, g, b, a) + set = function (self, r, g, b, a) local c = StreamOverlay.db.row_color c[1], c[2], c[3], c[4] = r, g, b, a StreamOverlay:RefreshAllBattleLineStyle() @@ -1958,7 +1958,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.font_size end, - set = function(self, fixedparam, value) StreamOverlay.db.font_size = value; StreamOverlay:RefreshAllBattleLineStyle() end, + set = function (self, fixedparam, value) StreamOverlay.db.font_size = value; StreamOverlay:RefreshAllBattleLineStyle() end, min = 8, max = 32, step = 1, @@ -1977,7 +1977,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "color", get = function() return StreamOverlay.db.font_color end, - set = function(self, r, g, b, a) + set = function (self, r, g, b, a) local c = StreamOverlay.db.font_color c[1], c[2], c[3], c[4] = r, g, b, a StreamOverlay:RefreshAllBattleLineStyle() @@ -1994,7 +1994,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) desc = "Show in the screen your current Dps or Hps.", order = 1, get = function() return StreamOverlay.db.per_second.enabled end, - set = function(self, fixedParam, val) + set = function (self, fixedParam, val) StreamOverlay.db.per_second.enabled = not StreamOverlay.db.per_second.enabled -- update hps dps frame StreamOverlay:UpdateDpsHpsFrameConfig() @@ -2012,7 +2012,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.per_second.size end, - set = function(self, fixedparam, value) StreamOverlay.db.per_second.size = value; + set = function (self, fixedparam, value) StreamOverlay.db.per_second.size = value; -- update hps dps frame StreamOverlay:UpdateDpsHpsFrameConfig() end, @@ -2026,7 +2026,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.per_second.scale end, - set = function(self, fixedparam, value) StreamOverlay.db.per_second.scale = value; + set = function (self, fixedparam, value) StreamOverlay.db.per_second.scale = value; -- update hps dps frame StreamOverlay:UpdateDpsHpsFrameConfig() end, @@ -2041,7 +2041,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.per_second.update_speed end, - set = function(self, fixedparam, value) StreamOverlay.db.per_second.update_speed = value; + set = function (self, fixedparam, value) StreamOverlay.db.per_second.update_speed = value; -- update hps dps frame StreamOverlay:UpdateDpsHpsFrameConfig() end, @@ -2059,7 +2059,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) desc = "Enable text shadow.", order = 1, get = function() return StreamOverlay.db.per_second.font_shadow end, - set = function(self, fixedParam, val) + set = function (self, fixedParam, val) StreamOverlay.db.per_second.font_shadow = not StreamOverlay.db.per_second.font_shadow -- update hps dps frame StreamOverlay:UpdateDpsHpsFrameConfig() @@ -2071,7 +2071,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.square_amount end, - set = function(self, fixedparam, value) + set = function (self, fixedparam, value) StreamOverlay.db.square_amount = value StreamOverlay:Refresh() end, @@ -2084,7 +2084,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.square_size end, - set = function(self, fixedparam, value) + set = function (self, fixedparam, value) StreamOverlay.db.square_size = value StreamOverlay:RefreshAllBoxesStyle() end, @@ -2115,7 +2115,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.arrow_size end, - set = function(self, fixedparam, value) StreamOverlay.db.arrow_size = value; StreamOverlay:RefreshAllBattleLineStyle() end, + set = function (self, fixedparam, value) StreamOverlay.db.arrow_size = value; StreamOverlay:RefreshAllBattleLineStyle() end, min = 6, max = 32, step = 1, @@ -2126,7 +2126,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "color", get = function() return StreamOverlay.db.arrow_color end, - set = function(self, r, g, b, a) + set = function (self, r, g, b, a) local c = StreamOverlay.db.arrow_color c[1], c[2], c[3], c[4] = r, g, b, a StreamOverlay:RefreshAllBattleLineStyle() @@ -2138,7 +2138,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.arrow_anchor_x end, - set = function(self, fixedparam, value) StreamOverlay.db.arrow_anchor_x = value; StreamOverlay:RefreshAllBattleLineStyle() end, + set = function (self, fixedparam, value) StreamOverlay.db.arrow_anchor_x = value; StreamOverlay:RefreshAllBattleLineStyle() end, min = -16, max = 16, step = 1, @@ -2149,7 +2149,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.arrow_anchor_y end, - set = function(self, fixedparam, value) StreamOverlay.db.arrow_anchor_y = value; StreamOverlay:RefreshAllBattleLineStyle() end, + set = function (self, fixedparam, value) StreamOverlay.db.arrow_anchor_y = value; StreamOverlay:RefreshAllBattleLineStyle() end, min = -16, max = 16, step = 1, @@ -2162,7 +2162,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.main_frame_size[1] end, - set = function(self, fixedparam, value) StreamOverlay.db.main_frame_size[1] = value; StreamOverlay:RestoreWindowSizeAndLocation() end, + set = function (self, fixedparam, value) StreamOverlay.db.main_frame_size[1] = value; StreamOverlay:RestoreWindowSizeAndLocation() end, min = 150, max = 800, step = 1, @@ -2173,7 +2173,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) { type = "range", get = function() return StreamOverlay.db.main_frame_size[2] end, - set = function(self, fixedparam, value) StreamOverlay.db.main_frame_size[2] = value; StreamOverlay:RestoreWindowSizeAndLocation() end, + set = function (self, fixedparam, value) StreamOverlay.db.main_frame_size[2] = value; StreamOverlay:RestoreWindowSizeAndLocation() end, min = 40, max = 1024, step = 1, @@ -2196,7 +2196,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) desc = "Show or hide the spark at bars", order = 1, get = function() return StreamOverlay.db.use_spark end, - set = function(self, fixedParam, val) + set = function (self, fixedParam, val) StreamOverlay.db.use_spark = not StreamOverlay.db.use_spark @@ -2211,55 +2211,55 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) local selectProfile = function(_, _, profileName) local pname = UnitName("player") .. " - " .. GetRealmName() - --save the current config on the profile + --> save the current config on the profile local current_profile = Details_StreamerDB.characters [pname] local current_ptable = Details_StreamerDB.profiles [current_profile] _detalhes.table.overwrite (current_ptable, StreamOverlay.db) --overwrite the profile with the local settings - --get the selected profile and overwrite the settings + --> get the selected profile and overwrite the settings local ptable = Details_StreamerDB.profiles [profileName] - _detalhes.table.deploy(ptable, StreamOverlay.DefaultConfigTable) --update with any new config from the default table + _detalhes.table.deploy (ptable, StreamOverlay.DefaultConfigTable) --update with any new config from the default table _detalhes.table.overwrite (StreamOverlay.db, ptable) --overwrite the local settings with the profile settings Details_StreamerDB.characters [pname] = profileName - --restore size and location + --> restore size and location StreamOverlay:RestoreWindowSizeAndLocation() - --set locked and the backdrop color + --> set locked and the backdrop color StreamOverlay:SetLocked (StreamOverlay.db.main_frame_locked) - StreamOverlay:SetBackgroundColor (unpack(StreamOverlay.db.main_frame_color)) + StreamOverlay:SetBackgroundColor (unpack (StreamOverlay.db.main_frame_color)) - --update the minimap icon + --> update the minimap icon if (LDBIcon) then LDBIcon:Refresh ("DetailsStreamer", StreamOverlay.db.minimap) end - --update all settings + --> update all settings StreamOverlay:RefreshAllBattleLineStyle() - --update the options panel + --> update the options panel optionsFrame:RefreshOptions() end local select_profile_fill = function() local t = {} - for profileName, _ in pairs(Details_StreamerDB.profiles) do + for profileName, _ in pairs (Details_StreamerDB.profiles) do t [#t+1] = {value = profileName, label = profileName, onclick = selectProfile} end return t end - local label_profile = Details.gump:CreateLabel(optionsFrame, "Profile" .. ": ", Details.gump:GetTemplate("font", "OPTIONS_FONT_TEMPLATE")) - local dropdown_profile = Details.gump:CreateDropDown (optionsFrame, select_profile_fill, nil, 160, 20, "dropdown_profile", nil, Details.gump:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")) - dropdown_profile:SetPoint("left", label_profile, "right", 2, 0) - label_profile:SetPoint("topleft", optionsFrame, "topleft", 15, -65) + local label_profile = Details.gump:CreateLabel (optionsFrame, "Profile" .. ": ", Details.gump:GetTemplate ("font", "OPTIONS_FONT_TEMPLATE")) + local dropdown_profile = Details.gump:CreateDropDown (optionsFrame, select_profile_fill, nil, 160, 20, "dropdown_profile", nil, Details.gump:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")) + dropdown_profile:SetPoint ("left", label_profile, "right", 2, 0) + label_profile:SetPoint ("topleft", optionsFrame, "topleft", 15, -65) local pname = UnitName ("player") .. " - " .. GetRealmName() - dropdown_profile:Select(Details_StreamerDB.characters [pname]) + dropdown_profile:Select (Details_StreamerDB.characters [pname]) - --new profile button + --> new profile button if (not Details_StreamerDB.profiles [pname]) then local add_profile = function() --profile name @@ -2269,21 +2269,21 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) --load dbtable Details_StreamerDB.profiles [pname] = {} _detalhes.table.overwrite (Details_StreamerDB.profiles [pname], StreamOverlay.db) - _detalhes.table.deploy(Details_StreamerDB.profiles [pname], StreamOverlay.DefaultConfigTable) --update with any new config from the default table + _detalhes.table.deploy (Details_StreamerDB.profiles [pname], StreamOverlay.DefaultConfigTable) --update with any new config from the default table --StreamOverlay.db = Details_StreamerDB.profiles [pname] --no can't change the local database table optionsFrame.NewProfileButton:Hide() - --update all settings + --> update all settings StreamOverlay:RefreshAllBattleLineStyle() - --update the options panel + --> update the options panel optionsFrame:RefreshOptions() - dropdown_profile:Select(Details_StreamerDB.characters [pname]) + dropdown_profile:Select (Details_StreamerDB.characters [pname]) end - optionsFrame.NewProfileButton = Details.gump:CreateButton(optionsFrame, add_profile, 60, 18, "New Profiile", _, _, _, _, _, _, Details.gump:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"), Details.gump:GetTemplate("font", "OPTIONS_FONT_TEMPLATE")) - optionsFrame.NewProfileButton:SetPoint("left", dropdown_profile, "right", 4, 0) + optionsFrame.NewProfileButton = Details.gump:CreateButton (optionsFrame, add_profile, 60, 18, "New Profiile", _, _, _, _, _, _, Details.gump:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"), Details.gump:GetTemplate ("font", "OPTIONS_FONT_TEMPLATE")) + optionsFrame.NewProfileButton:SetPoint ("left", dropdown_profile, "right", 4, 0) end --enable / disable plugin button @@ -2309,15 +2309,15 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) local pluginStable = Details:GetPluginSavedTable("DETAILS_PLUGIN_STREAM_OVERLAY") local toggleButton = DetailsFramework:CreateButton(optionsFrame, toggle_OnOff, 120, 20, pluginStable.enabled and "Disable Plugin" or "Start Plugin") - toggleButton:SetPoint("topleft", optionsFrame, "topleft", 15, -35) + toggleButton:SetPoint ("topleft", optionsFrame, "topleft", 15, -35) toggleButton:SetTemplate(DetailsFramework:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE")) optionsFrame.toggleButton = toggleButton - optionsFrame:SetScript("OnHide", function() + optionsFrame:SetScript ("OnHide", function() if (StreamOverlay.FromOptionsPanel) then - --reopen the options panel - C_Timer.After(0.2, function() + --> reopen the options panel + C_Timer.After (0.2, function() Details:OpenOptionsWindow(Details:GetInstance(1)) end) end @@ -2344,7 +2344,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) StreamOverlay.FromOptionsPanel = fromOptionsPanel if (fromOptionsPanel) then if (DetailsOptionsWindow) then - C_Timer.After(0.2, function() + C_Timer.After (0.2, function() DetailsOptionsWindow:Hide() end) end @@ -2356,7 +2356,7 @@ end function StreamOverlay:OnEvent (_, event, ...) if (event == "ADDON_LOADED") then - local AddonName = select(1, ...) + local AddonName = select (1, ...) if (AddonName == "Details_Streamer") then playerName = UnitName ("player") @@ -2367,10 +2367,10 @@ function StreamOverlay:OnEvent (_, event, ...) return end - --create widgets + --> create widgets CreatePluginFrames() - --core version required + --> core version required local MINIMAL_DETAILS_VERSION_REQUIRED = 80 local default_options_table = { @@ -2416,10 +2416,10 @@ function StreamOverlay:OnEvent (_, event, ...) StreamOverlay.DefaultConfigTable = default_options_table - --Install + --> Install local install, saveddata = _G._detalhes:InstallPlugin ("TOOLBAR", "Action Tracker", [[Interface\MINIMAP\MOVIERECORDINGICON]], StreamOverlay, "DETAILS_PLUGIN_STREAM_OVERLAY", MINIMAL_DETAILS_VERSION_REQUIRED, "Terciob", StreamOverlay.CurrentVersion, default_options_table) - if (type(install) == "table" and install.error) then - print(install.error) + if (type (install) == "table" and install.error) then + print (install.error) end Details_StreamerDB = Details_StreamerDB or {characters = {}, profiles = {}} @@ -2429,7 +2429,7 @@ function StreamOverlay:OnEvent (_, event, ...) StreamOverlay:SetPluginDescription ("Show in real time the spells you are casting.\n\nThe viewer can now follow what you are doing, what spells you are casting, learn your rotation.\n\nAlso tells who is the target and its class/spec on raiding or role if you are in arena.\n\nWhen you die, the panel is filled with your death log.") if (StreamOverlay.db.is_first_run) then --problem with setting the plugin as disabled - if (Details:GetTutorialCVar("STREAMER_PLUGIN_FIRSTRUN")) then + if (Details:GetTutorialCVar ("STREAMER_PLUGIN_FIRSTRUN")) then Details:DisablePlugin ("DETAILS_PLUGIN_STREAM_OVERLAY") StreamOverlay.db.is_first_run = false else @@ -2437,7 +2437,7 @@ function StreamOverlay:OnEvent (_, event, ...) end end - if (StreamOverlay.db.is_first_run and not Details:GetTutorialCVar("STREAMER_PLUGIN_FIRSTRUN")) then + if (StreamOverlay.db.is_first_run and not Details:GetTutorialCVar ("STREAMER_PLUGIN_FIRSTRUN")) then local show_frame = function() if ((DetailsWelcomeWindow and DetailsWelcomeWindow:IsShown()) or not StreamOverlay.db.is_first_run) then @@ -2446,19 +2446,19 @@ function StreamOverlay:OnEvent (_, event, ...) StreamOverlay.ShowWelcomeFrame:Cancel() - local welcomeWindow = CreateFrame("frame", "StreamOverlayWelcomeWindow", UIParent, "BackdropTemplate") - welcomeWindow:SetPoint("center", UIParent, "center") - welcomeWindow:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true}) - welcomeWindow:SetBackdropColor(0, 0, 0, 0.5) - welcomeWindow:SetBackdropBorderColor(0, 0, 0, 1) - welcomeWindow:SetSize(740, 270) + local welcomeWindow = CreateFrame ("frame", "StreamOverlayWelcomeWindow", UIParent, "BackdropTemplate") + welcomeWindow:SetPoint ("center", UIParent, "center") + welcomeWindow:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true}) + welcomeWindow:SetBackdropColor (0, 0, 0, 0.5) + welcomeWindow:SetBackdropBorderColor (0, 0, 0, 1) + welcomeWindow:SetSize (740, 270) DetailsFramework:ApplyStandardBackdrop(welcomeWindow) - local icon = welcomeWindow:CreateTexture(nil, "overlay") - icon:SetTexture([[Interface\MINIMAP\MOVIERECORDINGICON]]) - local title = welcomeWindow:CreateFontString(nil, "overlay", "GameFontNormal") - title:SetText("Details!: Action Tracker (plugin)") - StreamOverlay:SetFontSize(title, 20) + local icon = welcomeWindow:CreateTexture (nil, "overlay") + icon:SetTexture ([[Interface\MINIMAP\MOVIERECORDINGICON]]) + local title = welcomeWindow:CreateFontString (nil, "overlay", "GameFontNormal") + title:SetText ("Details!: Action Tracker (plugin)") + StreamOverlay:SetFontSize (title, 20) local youtubeTwitchIcons = welcomeWindow:CreateTexture(nil, "overlay") youtubeTwitchIcons:SetTexture([[Interface\AddOns\Details\images\icons2]]) @@ -2466,20 +2466,20 @@ function StreamOverlay:OnEvent (_, event, ...) youtubeTwitchIcons:SetSize(109, 413 - 370) youtubeTwitchIcons:SetPoint("topleft", welcomeWindow, "topleft", 123, -61) - local text1 = welcomeWindow:CreateFontString(nil, "overlay", "GameFontNormal") - text1:SetText("SHOW TO YOUR VIEWERS YOUR ROTATION\nThis way they can learn while watching your content") - local text2 = welcomeWindow:CreateFontString(nil, "overlay", "GameFontNormal") - text2:SetText("Use the command:") - local text3 = welcomeWindow:CreateFontString(nil, "overlay", "GameFontNormal") - text3:SetText("/streamer") + local text1 = welcomeWindow:CreateFontString (nil, "overlay", "GameFontNormal") + text1:SetText ("SHOW TO YOUR VIEWERS YOUR ROTATION\nThis way they can learn while watching your content") + local text2 = welcomeWindow:CreateFontString (nil, "overlay", "GameFontNormal") + text2:SetText ("Use the command:") + local text3 = welcomeWindow:CreateFontString (nil, "overlay", "GameFontNormal") + text3:SetText ("/streamer") DetailsFramework:SetFontSize(text3, 16) - icon:SetPoint("topleft", welcomeWindow, "topleft", 10, -20) - title:SetPoint("left", icon, "right", 10, 0) + icon:SetPoint ("topleft", welcomeWindow, "topleft", 10, -20) + title:SetPoint ("left", icon, "right", 10, 0) - text1:SetPoint("topleft", welcomeWindow, "topleft", 10, -120) - text2:SetPoint("center", text1, "center", 0, -40) - text3:SetPoint("center", text2, "center", 0, -16) + text1:SetPoint ("topleft", welcomeWindow, "topleft", 10, -120) + text2:SetPoint ("center", text1, "center", 0, -40) + text3:SetPoint ("center", text2, "center", 0, -16) local image1 = welcomeWindow:CreateTexture(nil, "overlay") image1:SetTexture([[Interface\AddOns\Details_Streamer\streamer_plugin_lines]]) @@ -2492,15 +2492,15 @@ function StreamOverlay:OnEvent (_, event, ...) welcomeWindow:Hide() end - local close = Details.gump:CreateButton(welcomeWindow, close_func, 120, 20, "Okay", nil, nil, nil, nil, nil, nil, Details.gump:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE")) - close:SetPoint("center", text3, "center", 0, -50) + local close = Details.gump:CreateButton (welcomeWindow, close_func, 120, 20, "Okay", nil, nil, nil, nil, nil, nil, Details.gump:GetTemplate ("button", "OPTIONS_BUTTON_TEMPLATE")) + close:SetPoint ("center", text3, "center", 0, -50) end - StreamOverlay.ShowWelcomeFrame = C_Timer.NewTicker(5, show_frame) + --StreamOverlay.ShowWelcomeFrame = C_Timer.NewTicker (5, show_frame) end --wipe (StreamOverlay.db) - SOF:RegisterEvent("PLAYER_LOGOUT") + SOF:RegisterEvent ("PLAYER_LOGOUT") --profile name SOF.PlayerNameProfile = UnitName("player") .. " - " .. GetRealmName() @@ -2513,7 +2513,7 @@ function StreamOverlay:OnEvent (_, event, ...) --load dbtable local ptable = Details_StreamerDB.profiles [ Details_StreamerDB.characters [pname] ] or {} --already existen config set or empty table _detalhes.table.overwrite (StreamOverlay.db, ptable) --profile overwrite the local settings - _detalhes.table.deploy(ptable, StreamOverlay.db) --local settings deploy stuff which non exist on profile + _detalhes.table.deploy (ptable, StreamOverlay.db) --local settings deploy stuff which non exist on profile Details_StreamerDB.profiles [ Details_StreamerDB.characters [pname] ] = ptable end @@ -2526,7 +2526,7 @@ function StreamOverlay:OnEvent (_, event, ...) end end ---create minimap icon +--> create minimap icon function StreamOverlay:CreateMinimapIcon() if (StreamOverlay.minimap_icon_created) then @@ -2535,15 +2535,15 @@ function StreamOverlay:CreateMinimapIcon() StreamOverlay.minimap_icon_created = true - local LDB = LibStub("LibDataBroker-1.1", true) - local LDBIcon = LDB and LibStub("LibDBIcon-1.0", true) + local LDB = LibStub ("LibDataBroker-1.1", true) + local LDBIcon = LDB and LibStub ("LibDBIcon-1.0", true) if LDB then local minimapIcon = LDB:NewDataObject ("DetailsStreamer", { type = "data source", icon = [[Interface\MINIMAP\MOVIERECORDINGICON]], - OnClick = function(self, button) + OnClick = function (self, button) if (button == "LeftButton") then StreamOverlay.OpenOptionsPanel() elseif (button == "RightButton") then @@ -2554,10 +2554,10 @@ function StreamOverlay:CreateMinimapIcon() end end, - OnTooltipShow = function(tooltip) - tooltip:AddLine("Details!: Action Tracker", 1, 1, 1) - tooltip:AddLine("|cFFFF7700Left Click|r: open options.") - tooltip:AddLine("|cFFFF7700Right Click|r: hide this icon.") + OnTooltipShow = function (tooltip) + tooltip:AddLine ("Details!: Action Tracker", 1, 1, 1) + tooltip:AddLine ("|cFFFF7700Left Click|r: open options.") + tooltip:AddLine ("|cFFFF7700Right Click|r: hide this icon.") end, }) @@ -2571,25 +2571,25 @@ SLASH_STREAMER1, SLASH_STREAMER2 = "/streamer", "/detailsstreamer" function SlashCmdList.STREAMER (msg, editbox) local command, rest = msg:match ("^(%S*)%s*(.-)$") - --open options panel + --> open options panel StreamOverlay.OpenOptionsPanel() end --[[ extrair lista das magias -local editbox = CreateFrame("editbox", nil, UIParent) -editbox:SetSize(300, 700) -editbox:SetPoint("topleft", UIParent, "topleft") -editbox:SetBackdrop({bgFile = "Interface\\AddOns\\Details\\images\\background", tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) -editbox:SetBackdropColor(0, 0, 0, .2) -editbox:SetAutoFocus(false) +local editbox = CreateFrame ("editbox", nil, UIParent) +editbox:SetSize (300, 700) +editbox:SetPoint ("topleft", UIParent, "topleft") +editbox:SetBackdrop ({bgFile = "Interface\\AddOns\\Details\\images\\background", tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) +editbox:SetBackdropColor (0, 0, 0, .2) +editbox:SetAutoFocus (false) editbox:ClearFocus() editbox:SetMultiLine (true) -editbox:SetFontObject(GameFontHighlightSmall) +editbox:SetFontObject (GameFontHighlightSmall) editbox:SetJustifyH("CENTER") editbox:EnableMouse(true) -editbox:SetText("") -editbox:SetScript("OnEscapePressed", function() editbox:ClearFocus() end) -editbox:SetScript("OnEditFocusGained", function() editbox:HighlightText() end) +editbox:SetText ("") +editbox:SetScript ("OnEscapePressed", function() editbox:ClearFocus() end) +editbox:SetScript ("OnEditFocusGained", function() editbox:HighlightText() end) local list = "" @@ -2597,15 +2597,15 @@ local harmful_spells = StreamOverlay.HarmfulSpells local helpful_spells = StreamOverlay.HelpfulSpells if (not harmful_spells [spellid] and not helpful_spells [spellid]) then - if (bit.band(who_flags, 0x00000400) ~= 0 and who_name) then + if (bit.band (who_flags, 0x00000400) ~= 0 and who_name) then local text = editbox:GetText() - if (not list:find(spellid) and not text:find(spellid)) then + if (not list:find (spellid) and not text:find (spellid)) then - local class = _detalhes:GetClass(who_name) or "unknow" + local class = _detalhes:GetClass (who_name) or "unknow" if (class ~= "unknow") then text = text .. "\n"..spellid .. " " .. spellname .. " " .. class - editbox:SetText(text) + editbox:SetText (text) end end end diff --git a/plugins/Details_Streamer/Details_Streamer.toc b/plugins/Details_Streamer/Details_Streamer.toc index 3461dc81..06f7ebd9 100644 --- a/plugins/Details_Streamer/Details_Streamer.toc +++ b/plugins/Details_Streamer/Details_Streamer.toc @@ -1,4 +1,4 @@ -## Interface: 100000 +## Interface: 100002 ## Title: Details!: Streamer (plugin) ## Notes: Show which spells you are casting, viewers can see what are you doing and follow your steps. ## RequiredDeps: Details diff --git a/plugins/Details_TinyThreat/Details_TinyThreat.lua b/plugins/Details_TinyThreat/Details_TinyThreat.lua index 348f1e1a..b4d0dda1 100644 --- a/plugins/Details_TinyThreat/Details_TinyThreat.lua +++ b/plugins/Details_TinyThreat/Details_TinyThreat.lua @@ -1,29 +1,29 @@ -local AceLocale = LibStub("AceLocale-3.0") +local AceLocale = LibStub ("AceLocale-3.0") local Loc = AceLocale:GetLocale ("Details_Threat") -local _GetNumSubgroupMembers = GetNumSubgroupMembers --wow api -local GetNumGroupMembers = GetNumGroupMembers --wow api -local _UnitIsFriend = UnitIsFriend --wow api -local _UnitName = UnitName --wow api -local IsInRaid = IsInRaid --wow api -local IsInGroup = IsInGroup --wow api -local _UnitGroupRolesAssigned = DetailsFramework.UnitGroupRolesAssigned --wow api +local _GetNumSubgroupMembers = GetNumSubgroupMembers --> wow api +local _GetNumGroupMembers = GetNumGroupMembers --> wow api +local _UnitIsFriend = UnitIsFriend --> wow api +local _UnitName = UnitName --> wow api +local _IsInRaid = IsInRaid --> wow api +local _IsInGroup = IsInGroup --> wow api +local _UnitGroupRolesAssigned = DetailsFramework.UnitGroupRolesAssigned --> wow api local GetUnitName = GetUnitName -local ipairs = ipairs --lua api -local _table_sort = table.sort --lua api -local _cstr = string.format --lua api +local _ipairs = ipairs --> lua api +local _table_sort = table.sort --> lua api +local _cstr = string.format --> lua api local _unpack = unpack local _math_floor = math.floor -local abs = math.abs +local _math_abs = math.abs local RAID_CLASS_COLORS = RAID_CLASS_COLORS ---Create the plugin Object +--> Create the plugin Object local ThreatMeter = _detalhes:NewPluginObject ("Details_TinyThreat") ---Main Frame +--> Main Frame local ThreatMeterFrame = ThreatMeter.Frame ThreatMeter:SetPluginDescription ("Small tool for track the threat you and other raid members have in your current target.") @@ -49,47 +49,47 @@ end local function CreatePluginFrames (data) - --catch Details! main object + --> catch Details! main object local _detalhes = _G._detalhes local DetailsFrameWork = _detalhes.gump - --data + --> data ThreatMeter.data = data or {} - --defaults + --> defaults ThreatMeter.RowWidth = 294 ThreatMeter.RowHeight = 14 - --amount of row wich can be displayed + --> amount of row wich can be displayed ThreatMeter.CanShow = 0 - --all rows already created + --> all rows already created ThreatMeter.Rows = {} - --current shown rows + --> current shown rows ThreatMeter.ShownRows = {} --> ThreatMeter.Actived = false - --localize functions + --> localize functions ThreatMeter.percent_color = ThreatMeter.percent_color ThreatMeter.GetOnlyName = ThreatMeter.GetOnlyName - --window reference + --> window reference local instance local player - --OnEvent Table + --> OnEvent Table function ThreatMeter:OnDetailsEvent (event, ...) if (event == "DETAILS_STARTED") then ThreatMeter:RefreshRows() - elseif (event == "HIDE") then --plugin hidded, disabled + elseif (event == "HIDE") then --> plugin hidded, disabled ThreatMeter.Actived = false ThreatMeter:Cancel() elseif (event == "SHOW") then - instance = ThreatMeter:GetInstance(ThreatMeter.instance_id) + instance = ThreatMeter:GetInstance (ThreatMeter.instance_id) ThreatMeter.RowWidth = instance.baseframe:GetWidth()-6 @@ -98,11 +98,11 @@ local function CreatePluginFrames (data) ThreatMeter:SizeChanged() - player = GetUnitName("player", true) + player = GetUnitName ("player", true) ThreatMeter.Actived = false - if (ThreatMeter:IsInCombat() or UnitAffectingCombat("player")) then + if (ThreatMeter:IsInCombat() or UnitAffectingCombat ("player")) then if (not ThreatMeter.initialized) then return end @@ -118,24 +118,24 @@ local function CreatePluginFrames (data) elseif (event == "DETAILS_INSTANCE_ENDRESIZE" or event == "DETAILS_INSTANCE_SIZECHANGED") then - local what_window = select(1, ...) + local what_window = select (1, ...) if (what_window == instance) then ThreatMeter:SizeChanged() ThreatMeter:RefreshRows() end elseif (event == "DETAILS_OPTIONS_MODIFIED") then - local what_window = select(1, ...) + local what_window = select (1, ...) if (what_window == instance) then ThreatMeter:RefreshRows() end elseif (event == "DETAILS_INSTANCE_STARTSTRETCH") then - ThreatMeterFrame:SetFrameStrata("TOOLTIP") - ThreatMeterFrame:SetFrameLevel(instance.baseframe:GetFrameLevel()+1) + ThreatMeterFrame:SetFrameStrata ("TOOLTIP") + ThreatMeterFrame:SetFrameLevel (instance.baseframe:GetFrameLevel()+1) elseif (event == "DETAILS_INSTANCE_ENDSTRETCH") then - ThreatMeterFrame:SetFrameStrata("MEDIUM") + ThreatMeterFrame:SetFrameStrata ("MEDIUM") elseif (event == "PLUGIN_DISABLED") then ThreatMeterFrame:UnregisterEvent ("PLAYER_TARGET_CHANGED") @@ -143,29 +143,29 @@ local function CreatePluginFrames (data) ThreatMeterFrame:UnregisterEvent ("PLAYER_REGEN_ENABLED") elseif (event == "PLUGIN_ENABLED") then - ThreatMeterFrame:RegisterEvent("PLAYER_TARGET_CHANGED") - ThreatMeterFrame:RegisterEvent("PLAYER_REGEN_DISABLED") - ThreatMeterFrame:RegisterEvent("PLAYER_REGEN_ENABLED") + ThreatMeterFrame:RegisterEvent ("PLAYER_TARGET_CHANGED") + ThreatMeterFrame:RegisterEvent ("PLAYER_REGEN_DISABLED") + ThreatMeterFrame:RegisterEvent ("PLAYER_REGEN_ENABLED") end end - ThreatMeterFrame:SetWidth(300) - ThreatMeterFrame:SetHeight(100) + ThreatMeterFrame:SetWidth (300) + ThreatMeterFrame:SetHeight (100) function ThreatMeter:UpdateContainers() - for _, row in ipairs(ThreatMeter.Rows) do + for _, row in _ipairs (ThreatMeter.Rows) do row:SetContainer (instance.baseframe) end end function ThreatMeter:UpdateRows() - for _, row in ipairs(ThreatMeter.Rows) do + for _, row in _ipairs (ThreatMeter.Rows) do row.width = ThreatMeter.RowWidth end end function ThreatMeter:HideBars() - for _, row in ipairs(ThreatMeter.Rows) do + for _, row in _ipairs (ThreatMeter.Rows) do row:Hide() end end @@ -186,10 +186,10 @@ local function CreatePluginFrames (data) local instance = ThreatMeter:GetPluginInstance() local w, h = instance:GetSize() - ThreatMeterFrame:SetWidth(w) - ThreatMeterFrame:SetHeight(h) + ThreatMeterFrame:SetWidth (w) + ThreatMeterFrame:SetHeight (h) ThreatMeter.RowHeight = instance.row_info.height - ThreatMeter.CanShow = math.floor( h / (instance.row_info.height+1)) + ThreatMeter.CanShow = math.floor ( h / (instance.row_info.height+1)) for i = #ThreatMeter.Rows+1, ThreatMeter.CanShow do ThreatMeter:NewRow (i) @@ -229,8 +229,8 @@ local function CreatePluginFrames (data) row.height = instance.row_info.height local rowHeight = - ( (row.rowId -1) * (instance.row_info.height + 1) ) row:ClearAllPoints() - row:SetPoint("topleft", ThreatMeterFrame, "topleft", 1, rowHeight) - row:SetPoint("topright", ThreatMeterFrame, "topright", -1, rowHeight) + row:SetPoint ("topleft", ThreatMeterFrame, "topleft", 1, rowHeight) + row:SetPoint ("topright", ThreatMeterFrame, "topright", -1, rowHeight) end end @@ -243,7 +243,7 @@ local function CreatePluginFrames (data) function ThreatMeter:NewRow (i) local newrow = DetailsFrameWork:NewBar (ThreatMeterFrame, nil, "DetailsThreatRow"..i, nil, 300, ThreatMeter.RowHeight) - newrow:SetPoint(3, -((i-1)*(ThreatMeter.RowHeight+1))) + newrow:SetPoint (3, -((i-1)*(ThreatMeter.RowHeight+1))) newrow.lefttext = "bar " .. i newrow.color = "skyblue" newrow.fontsize = 9.9 @@ -259,7 +259,7 @@ local function CreatePluginFrames (data) return newrow end - local absoluteSort = function(table1, table2) + local absoluteSort = function (table1, table2) if (table1[6] > table2[6]) then return true else @@ -267,7 +267,7 @@ local function CreatePluginFrames (data) end end - local relativeSort = function(table1, table2) + local relativeSort = function (table1, table2) if (table1[2] > table2[2]) then return true else @@ -322,16 +322,16 @@ local function CreatePluginFrames (data) if (ThreatMeter.Actived and UnitExists(unitId) and not _UnitIsFriend("player", unitId)) then - --get the threat of all players - if (IsInRaid()) then - for i = 1, GetNumGroupMembers(), 1 do + --> get the threat of all players + if (_IsInRaid()) then + for i = 1, _GetNumGroupMembers(), 1 do - local thisplayer_name = GetUnitName("raid"..i, true) + local thisplayer_name = GetUnitName ("raid"..i, true) local threat_table_index = ThreatMeter.player_list_hash [thisplayer_name] local threat_table = ThreatMeter.player_list_indexes [threat_table_index] if (not threat_table) then - --some one joined the group while the player are in combat + --> some one joined the group while the player are in combat ThreatMeter:Start() return end @@ -340,14 +340,14 @@ local function CreatePluginFrames (data) end - elseif (IsInGroup()) then - for i = 1, GetNumGroupMembers()-1, 1 do - local thisplayer_name = GetUnitName("party"..i, true) + elseif (_IsInGroup()) then + for i = 1, _GetNumGroupMembers()-1, 1 do + local thisplayer_name = GetUnitName ("party"..i, true) local threat_table_index = ThreatMeter.player_list_hash [thisplayer_name] local threat_table = ThreatMeter.player_list_indexes [threat_table_index] if (not threat_table) then - --some one joined the group while the player are in combat + --> some one joined the group while the player are in combat ThreatMeter:Start() return end @@ -356,7 +356,7 @@ local function CreatePluginFrames (data) end - local thisplayer_name = GetUnitName("player", true) + local thisplayer_name = GetUnitName ("player", true) local threat_table_index = ThreatMeter.player_list_hash [thisplayer_name] local threat_table = ThreatMeter.player_list_indexes [threat_table_index] @@ -364,16 +364,16 @@ local function CreatePluginFrames (data) else - --player - local thisplayer_name = GetUnitName("player", true) + --> player + local thisplayer_name = GetUnitName ("player", true) local threat_table_index = ThreatMeter.player_list_hash [thisplayer_name] local threat_table = ThreatMeter.player_list_indexes [threat_table_index] UpdateTableFromThreatSituation(threat_table, "player", unitId) - --pet - if (UnitExists("pet")) then - local thisplayer_name = GetUnitName("pet", true) .. " *PET*" + --> pet + if (UnitExists ("pet")) then + local thisplayer_name = GetUnitName ("pet", true) .. " *PET*" local threat_table_index = ThreatMeter.player_list_hash [thisplayer_name] local threat_table = ThreatMeter.player_list_indexes [threat_table_index] @@ -387,23 +387,23 @@ local function CreatePluginFrames (data) local gougeSpellId = (not disableGougeMode) and FindGougeSpellForUnit(unitId) local useAbsoluteMode = gougeSpellId or ThreatMeter.saveddata.absolute_mode - --sort + --> sort _table_sort (ThreatMeter.player_list_indexes, useAbsoluteMode and absoluteSort or relativeSort) local needMainTankDummyBar = true - for index, t in ipairs(ThreatMeter.player_list_indexes) do + for index, t in _ipairs (ThreatMeter.player_list_indexes) do ThreatMeter.player_list_hash [t[1]] = index if t[3] then needMainTankDummyBar = false end end - --no threat on this enemy + --> no threat on this enemy if (ThreatMeter.player_list_indexes [1][7] < 1) then ThreatMeter:HideBars() return end - --find main tank threat, even if they are not in group + --> find main tank threat, even if they are not in group local mainTankAbsoluteThreat = ThreatMeter.player_list_indexes[1][6]/(ThreatMeter.player_list_indexes[1][7]/100) local lastIndex = 0 @@ -415,7 +415,7 @@ local function CreatePluginFrames (data) local needMeleePullBar = (not hidePullBar) and useAbsoluteMode local needRelativePullBar = (not hidePullBar) and (not useAbsoluteMode) and me and (me[2] > 0) and (not me[3]) - --find out scaling factor for bars + --> find out scaling factor for bars local barValueUnit if useAbsoluteMode then barValueUnit = max(ThreatMeter.player_list_indexes[1][7]/100, needRangedPullBar and 1.3 or needMeleePullBar and 1.1 or 1.0) @@ -423,10 +423,10 @@ local function CreatePluginFrames (data) barValueUnit = 1.0 end - --find out gouge threshold (highest offtank threat, divided by 110%; this prevents the offtank from taking the boss back) + --> find out gouge threshold (highest offtank threat, divided by 110%; this prevents the offtank from taking the boss back) local gougeThreshold = nil if gougeSpellId then - for _, t in ipairs(ThreatMeter.player_list_indexes) do + for _, t in _ipairs (ThreatMeter.player_list_indexes) do if not t[3] then gougeThreshold = t[6] / 1.1 break @@ -442,8 +442,8 @@ local function CreatePluginFrames (data) local threatActor = ThreatMeter.player_list_indexes[index-dummyBarCount] if needRelativePullBar then - thisRow._icon:SetTexture([[Interface\PVPFrame\Icon-Combat]]) - thisRow._icon:SetTexCoord(0, 1, 0, 1) + thisRow._icon:SetTexture ([[Interface\PVPFrame\Icon-Combat]]) + thisRow._icon:SetTexCoord (0, 1, 0, 1) local myPullThreat = me[6]*(100/me[2]) local r,g = ThreatMeter:percent_color(me[2], true) @@ -464,8 +464,8 @@ local function CreatePluginFrames (data) if needRangedPullBar and ((not threatActor) or (threatActor[7] < 130)) then - thisRow._icon:SetTexture([[Interface\PaperDoll\UI-PaperDoll-Slot-Ranged]]) - thisRow._icon:SetTexCoord(0, 1, 0, 1) + thisRow._icon:SetTexture ([[Interface\PaperDoll\UI-PaperDoll-Slot-Ranged]]) + thisRow._icon:SetTexCoord (0, 1, 0, 1) thisRow:SetLeftText ("Ranged pull at") thisRow:SetRightText(ThreatMeter:ToK2 (mainTankAbsoluteThreat*1.3) .. " (130.0%)") @@ -482,8 +482,8 @@ local function CreatePluginFrames (data) end if needMeleePullBar and ((not threatActor) or (threatActor[7] < 110)) then - thisRow._icon:SetTexture([[Interface\PaperDoll\UI-PaperDoll-Slot-MainHand]]) - thisRow._icon:SetTexCoord(0, 1, 0, 1) + thisRow._icon:SetTexture ([[Interface\PaperDoll\UI-PaperDoll-Slot-MainHand]]) + thisRow._icon:SetTexCoord (0, 1, 0, 1) thisRow:SetLeftText ("Melee pull at") thisRow:SetRightText(ThreatMeter:ToK2 (mainTankAbsoluteThreat*1.1) .. " (110.0%)") @@ -500,8 +500,8 @@ local function CreatePluginFrames (data) end if needMainTankDummyBar and ((not threatActor) or (not useAbsoluteMode) or (threatActor[6] < mainTankAbsoluteThreat)) then - thisRow._icon:SetTexture([[Interface\LFGFrame\UI-LFG-Icon-PortraitRoles]]) - thisRow._icon:SetTexCoord(_unpack(RoleIconCoord ["TANK"])) + thisRow._icon:SetTexture ([[Interface\LFGFrame\UI-LFG-Icon-PortraitRoles]]) + thisRow._icon:SetTexCoord (_unpack (RoleIconCoord ["TANK"])) thisRow:SetLeftText ("Current Tank") thisRow:SetRightText(ThreatMeter:ToK2 (mainTankAbsoluteThreat) .. " (100.0%)") @@ -509,10 +509,10 @@ local function CreatePluginFrames (data) -- color main tank based on highest non-tank threat local r,g = 0,1 - for _, t in ipairs(ThreatMeter.player_list_indexes) do + for _, t in _ipairs (ThreatMeter.player_list_indexes) do if not t[3] then local otherPct = t[useAbsoluteMode and 7 or 2] - r,g = (otherPct*0.01), (abs(otherPct-100)*0.01) + r,g = (otherPct*0.01), (_math_abs(otherPct-100)*0.01) break end end @@ -528,9 +528,9 @@ local function CreatePluginFrames (data) end if gougeThreshold and ((not threatActor) or (threatActor[6] < gougeThreshold)) then - local spellName, _, spellTexture = GetSpellInfo(gougeSpellId) - thisRow._icon:SetTexture(spellTexture) - thisRow._icon:SetTexCoord(0, 1, 0, 1) + local spellName, _, spellTexture = GetSpellInfo (gougeSpellId) + thisRow._icon:SetTexture (spellTexture) + thisRow._icon:SetTexCoord (0, 1, 0, 1) local pct = gougeThreshold * 100 / mainTankAbsoluteThreat @@ -550,18 +550,18 @@ local function CreatePluginFrames (data) if (threatActor) then local role = threatActor[4] - thisRow._icon:SetTexture([[Interface\LFGFrame\UI-LFG-Icon-PortraitRoles]]) - thisRow._icon:SetTexCoord(_unpack(RoleIconCoord [role])) + thisRow._icon:SetTexture ([[Interface\LFGFrame\UI-LFG-Icon-PortraitRoles]]) + thisRow._icon:SetTexCoord (_unpack (RoleIconCoord [role])) - thisRow:SetLeftText (ThreatMeter:GetOnlyName(threatActor [1])) + thisRow:SetLeftText (ThreatMeter:GetOnlyName (threatActor [1])) local pct = threatActor [useAbsoluteMode and 7 or 2] thisRow:SetRightText (ThreatMeter:ToK2 (threatActor [6]) .. " (" .. _cstr ("%.1f", pct) .. "%)") - thisRow:SetValue(pct/barValueUnit) + thisRow:SetValue (pct/barValueUnit) if (options.useplayercolor and threatActor [1] == player) then - thisRow:SetColor (_unpack(options.playercolor)) + thisRow:SetColor (_unpack (options.playercolor)) elseif (options.useclasscolors) then local color = RAID_CLASS_COLORS [threatActor [5]] @@ -574,10 +574,10 @@ local function CreatePluginFrames (data) if threatActor[3] then -- color main tank based on highest non-tank threat local r,g = 0,1 - for _, t in ipairs(ThreatMeter.player_list_indexes) do + for _, t in _ipairs (ThreatMeter.player_list_indexes) do if not t[3] then local otherPct = t[useAbsoluteMode and 7 or 2] - r,g = (otherPct*0.01), (abs(otherPct-100)*0.01) + r,g = (otherPct*0.01), (_math_abs(otherPct-100)*0.01) break end end @@ -602,21 +602,21 @@ local function CreatePluginFrames (data) end if (not shownMe) then - --show my self into last bar + --> show my self into last bar local threat_actor = ThreatMeter.player_list_indexes [ ThreatMeter.player_list_hash [player] ] if (threat_actor) then if (threat_actor [2] and threat_actor [2] > 0.1) then local thisRow = ThreatMeter.ShownRows [#ThreatMeter.ShownRows] thisRow:SetLeftText (player) - --thisRow.textleft:SetTextColor(unpack(RAID_CLASS_COLORS [threat_actor [5]])) + --thisRow.textleft:SetTextColor (unpack (RAID_CLASS_COLORS [threat_actor [5]])) local role = threat_actor [4] - thisRow._icon:SetTexture([[Interface\LFGFrame\UI-LFG-Icon-PortraitRoles]]) - thisRow._icon:SetTexCoord(_unpack(RoleIconCoord [role])) + thisRow._icon:SetTexture ([[Interface\LFGFrame\UI-LFG-Icon-PortraitRoles]]) + thisRow._icon:SetTexCoord (_unpack (RoleIconCoord [role])) thisRow:SetRightText (ThreatMeter:ToK2 (threat_actor [6]) .. " (" .. _cstr ("%.1f", threat_actor [2]) .. "%)") - thisRow:SetValue(threat_actor [2]) + thisRow:SetValue (threat_actor [2]) if (options.useplayercolor) then - thisRow:SetColor (_unpack(options.playercolor)) + thisRow:SetColor (_unpack (options.playercolor)) else local r, g = ThreatMeter:percent_color (threat_actor [2], true) thisRow:SetColor (r, g, 0, .3) @@ -625,7 +625,7 @@ local function CreatePluginFrames (data) end end else - --print("nao tem target") + --print ("nao tem target") end end @@ -653,50 +653,50 @@ local function CreatePluginFrames (data) ThreatMeter:HideBars() if (ThreatMeter.Actived) then if (ThreatMeter.job_thread) then - ThreatMeter:CancelTimer(ThreatMeter.job_thread) + ThreatMeter:CancelTimer (ThreatMeter.job_thread) ThreatMeter.job_thread = nil end ThreatMeter.player_list_indexes = {} ThreatMeter.player_list_hash = {} - --pre build player list - if (IsInRaid()) then - for i = 1, GetNumGroupMembers(), 1 do - local thisplayer_name = GetUnitName("raid"..i, true) - local role = _UnitGroupRolesAssigned(thisplayer_name) - local _, class = UnitClass(thisplayer_name) + --> pre build player list + if (_IsInRaid()) then + for i = 1, _GetNumGroupMembers(), 1 do + local thisplayer_name = GetUnitName ("raid"..i, true) + local role = _UnitGroupRolesAssigned (thisplayer_name) + local _, class = UnitClass (thisplayer_name) local t = {thisplayer_name, 0, false, role, class, 0, 0} ThreatMeter.player_list_indexes [#ThreatMeter.player_list_indexes+1] = t ThreatMeter.player_list_hash [thisplayer_name] = #ThreatMeter.player_list_indexes end - elseif (IsInGroup()) then - for i = 1, GetNumGroupMembers()-1, 1 do - local thisplayer_name = GetUnitName("party"..i, true) - local role = _UnitGroupRolesAssigned(thisplayer_name) - local _, class = UnitClass(thisplayer_name) + elseif (_IsInGroup()) then + for i = 1, _GetNumGroupMembers()-1, 1 do + local thisplayer_name = GetUnitName ("party"..i, true) + local role = _UnitGroupRolesAssigned (thisplayer_name) + local _, class = UnitClass (thisplayer_name) local t = {thisplayer_name, 0, false, role, class, 0, 0} ThreatMeter.player_list_indexes [#ThreatMeter.player_list_indexes+1] = t ThreatMeter.player_list_hash [thisplayer_name] = #ThreatMeter.player_list_indexes end - local thisplayer_name = GetUnitName("player", true) - local role = _UnitGroupRolesAssigned(thisplayer_name) - local _, class = UnitClass(thisplayer_name) + local thisplayer_name = GetUnitName ("player", true) + local role = _UnitGroupRolesAssigned (thisplayer_name) + local _, class = UnitClass (thisplayer_name) local t = {thisplayer_name, 0, false, role, class, 0, 0} ThreatMeter.player_list_indexes [#ThreatMeter.player_list_indexes+1] = t ThreatMeter.player_list_hash [thisplayer_name] = #ThreatMeter.player_list_indexes else - local thisplayer_name = GetUnitName("player", true) - local role = _UnitGroupRolesAssigned(thisplayer_name) - local _, class = UnitClass(thisplayer_name) + local thisplayer_name = GetUnitName ("player", true) + local role = _UnitGroupRolesAssigned (thisplayer_name) + local _, class = UnitClass (thisplayer_name) local t = {thisplayer_name, 0, false, role, class, 0, 0} ThreatMeter.player_list_indexes [#ThreatMeter.player_list_indexes+1] = t ThreatMeter.player_list_hash [thisplayer_name] = #ThreatMeter.player_list_indexes - if (UnitExists("pet")) then - local thispet_name = GetUnitName("pet", true) .. " *PET*" + if (UnitExists ("pet")) then + local thispet_name = GetUnitName ("pet", true) .. " *PET*" local role = "DAMAGER" local t = {thispet_name, 0, false, role, class, 0, 0} ThreatMeter.player_list_indexes [#ThreatMeter.player_list_indexes+1] = t @@ -712,7 +712,7 @@ local function CreatePluginFrames (data) function ThreatMeter:End() ThreatMeter:HideBars() if (ThreatMeter.job_thread) then - ThreatMeter:CancelTimer(ThreatMeter.job_thread) + ThreatMeter:CancelTimer (ThreatMeter.job_thread) ThreatMeter.job_thread = nil end end @@ -720,7 +720,7 @@ local function CreatePluginFrames (data) function ThreatMeter:Cancel() ThreatMeter:HideBars() if (ThreatMeter.job_thread) then - ThreatMeter:CancelTimer(ThreatMeter.job_thread) + ThreatMeter:CancelTimer (ThreatMeter.job_thread) ThreatMeter.job_thread = nil end ThreatMeter.Actived = false @@ -736,7 +736,7 @@ local build_options_panel = function() { type = "range", get = function() return ThreatMeter.saveddata.updatespeed end, - set = function(self, fixedparam, value) ThreatMeter.saveddata.updatespeed = value end, + set = function (self, fixedparam, value) ThreatMeter.saveddata.updatespeed = value end, min = 0.2, max = 3, step = 0.2, @@ -747,14 +747,14 @@ local build_options_panel = function() { type = "toggle", get = function() return ThreatMeter.saveddata.useplayercolor end, - set = function(self, fixedparam, value) ThreatMeter.saveddata.useplayercolor = value end, + set = function (self, fixedparam, value) ThreatMeter.saveddata.useplayercolor = value end, desc = "When enabled, your bar get the following color.", name = "Player Color Enabled" }, { type = "color", get = function() return ThreatMeter.saveddata.playercolor end, - set = function(self, r, g, b, a) + set = function (self, r, g, b, a) local current = ThreatMeter.saveddata.playercolor current[1], current[2], current[3], current[4] = r, g, b, a end, @@ -764,7 +764,7 @@ local build_options_panel = function() { type = "toggle", get = function() return ThreatMeter.saveddata.useclasscolors end, - set = function(self, fixedparam, value) ThreatMeter.saveddata.useclasscolors = value end, + set = function (self, fixedparam, value) ThreatMeter.saveddata.useclasscolors = value end, desc = "When enabled, threat bars uses the class color of the character.", name = "Use Class Colors" }, @@ -774,14 +774,14 @@ local build_options_panel = function() { type = "toggle", get = function() return ThreatMeter.saveddata.usefocus end, - set = function(self, fixedparam, value) ThreatMeter.saveddata.usefocus = value end, + set = function (self, fixedparam, value) ThreatMeter.saveddata.usefocus = value end, desc = "Show threat for the focus target if there's one.", name = "Track Focus Target (if any)" }, { type = "toggle", get = function() return not ThreatMeter.saveddata.hide_pull_bar end, - set = function(self, fixedparam, value) ThreatMeter.saveddata.hide_pull_bar = not value end, + set = function (self, fixedparam, value) ThreatMeter.saveddata.hide_pull_bar = not value end, desc = "Show Pull Aggro Bar", name = "Show Pull Aggro Bar" }, @@ -805,7 +805,7 @@ local build_options_panel = function() { type = "toggle", get = function() return ThreatMeter.saveddata.playSound end, - set = function(self, fixedparam, value) ThreatMeter.saveddata.playSound = value end, + set = function (self, fixedparam, value) ThreatMeter.saveddata.playSound = value end, desc = "Except for tanks", name = "Play Audio On High Threat" }, @@ -834,15 +834,15 @@ function ThreatMeter:OnEvent (_, event, ...) elseif (event == "PLAYER_REGEN_DISABLED") then ThreatMeter.Actived = true ThreatMeter:Start() - --print("tiny theat: regen disabled") + --print ("tiny theat: regen disabled") elseif (event == "PLAYER_REGEN_ENABLED") then ThreatMeter:End() ThreatMeter.Actived = false - --print("tiny theat: regen enabled") + --print ("tiny theat: regen enabled") elseif (event == "ADDON_LOADED") then - local AddonName = select(1, ...) + local AddonName = select (1, ...) if (AddonName == "Details_TinyThreat") then if (_G._detalhes) then @@ -851,31 +851,31 @@ function ThreatMeter:OnEvent (_, event, ...) --return end - --create widgets + --> create widgets CreatePluginFrames (data) local MINIMAL_DETAILS_VERSION_REQUIRED = 1 - --Install - local install, saveddata = _G._detalhes:InstallPlugin ("RAID", Loc ["STRING_PLUGIN_NAME"], "Interface\\Icons\\Ability_Druid_Cower", ThreatMeter, "DETAILS_PLUGIN_TINY_THREAT", MINIMAL_DETAILS_VERSION_REQUIRED, "Terciob", "v2.01") - if (type(install) == "table" and install.error) then - print(install.error) + --> Install + local install, saveddata = _G._detalhes:InstallPlugin ("RAID", Loc ["STRING_PLUGIN_NAME"], "Interface\\Icons\\Ability_Druid_Cower", ThreatMeter, "DETAILS_PLUGIN_TINY_THREAT", MINIMAL_DETAILS_VERSION_REQUIRED, "Terciob", "v2.20") + if (type (install) == "table" and install.error) then + print (install.error) end - --Register needed events - _G._detalhes:RegisterEvent(ThreatMeter, "COMBAT_PLAYER_ENTER") - _G._detalhes:RegisterEvent(ThreatMeter, "COMBAT_PLAYER_LEAVE") - _G._detalhes:RegisterEvent(ThreatMeter, "DETAILS_INSTANCE_ENDRESIZE") - _G._detalhes:RegisterEvent(ThreatMeter, "DETAILS_INSTANCE_SIZECHANGED") - _G._detalhes:RegisterEvent(ThreatMeter, "DETAILS_INSTANCE_STARTSTRETCH") - _G._detalhes:RegisterEvent(ThreatMeter, "DETAILS_INSTANCE_ENDSTRETCH") - _G._detalhes:RegisterEvent(ThreatMeter, "DETAILS_OPTIONS_MODIFIED") + --> Register needed events + _G._detalhes:RegisterEvent (ThreatMeter, "COMBAT_PLAYER_ENTER") + _G._detalhes:RegisterEvent (ThreatMeter, "COMBAT_PLAYER_LEAVE") + _G._detalhes:RegisterEvent (ThreatMeter, "DETAILS_INSTANCE_ENDRESIZE") + _G._detalhes:RegisterEvent (ThreatMeter, "DETAILS_INSTANCE_SIZECHANGED") + _G._detalhes:RegisterEvent (ThreatMeter, "DETAILS_INSTANCE_STARTSTRETCH") + _G._detalhes:RegisterEvent (ThreatMeter, "DETAILS_INSTANCE_ENDSTRETCH") + _G._detalhes:RegisterEvent (ThreatMeter, "DETAILS_OPTIONS_MODIFIED") - ThreatMeterFrame:RegisterEvent("PLAYER_TARGET_CHANGED") - ThreatMeterFrame:RegisterEvent("PLAYER_REGEN_DISABLED") - ThreatMeterFrame:RegisterEvent("PLAYER_REGEN_ENABLED") + ThreatMeterFrame:RegisterEvent ("PLAYER_TARGET_CHANGED") + ThreatMeterFrame:RegisterEvent ("PLAYER_REGEN_DISABLED") + ThreatMeterFrame:RegisterEvent ("PLAYER_REGEN_ENABLED") - --Saved data + --> Saved data ThreatMeter.saveddata = saveddata or {} ThreatMeter.saveddata.updatespeed = ThreatMeter.saveddata.updatespeed or 1 @@ -894,8 +894,8 @@ function ThreatMeter:OnEvent (_, event, ...) ThreatMeter.options = ThreatMeter.saveddata - --Register slash commands - SLASH_DETAILS_TINYTHREAT1, SLASH_DETAILS_TINYTHREAT2 = "/tinythreat", "/tt" + --> Register slash commands + SLASH_DETAILS_TINYTHREAT1 = "/tinythreat" function SlashCmdList.DETAILS_TINYTHREAT (msg, editbox) @@ -906,7 +906,7 @@ function ThreatMeter:OnEvent (_, event, ...) elseif (command == Loc ["STRING_SLASH_SPEED"]) then if (rest) then - local speed = tonumber(rest) + local speed = tonumber (rest) if (speed) then if (speed > 3) then speed = 3 @@ -915,17 +915,17 @@ function ThreatMeter:OnEvent (_, event, ...) end ThreatMeter.saveddata.updatespeed = speed - ThreatMeter:Msg(Loc ["STRING_SLASH_SPEED_CHANGED"] .. speed) + ThreatMeter:Msg (Loc ["STRING_SLASH_SPEED_CHANGED"] .. speed) else - ThreatMeter:Msg(Loc ["STRING_SLASH_SPEED_CURRENT"] .. ThreatMeter.saveddata.updatespeed) + ThreatMeter:Msg (Loc ["STRING_SLASH_SPEED_CURRENT"] .. ThreatMeter.saveddata.updatespeed) end end elseif (command == Loc ["STRING_SLASH_AMOUNT"]) then else - ThreatMeter:Msg(Loc ["STRING_COMMAND_LIST"]) - print("|cffffaeae/tinythreat " .. Loc ["STRING_SLASH_SPEED"] .. "|r: " .. Loc ["STRING_SLASH_SPEED_DESC"]) + ThreatMeter:Msg (Loc ["STRING_COMMAND_LIST"]) + print ("|cffffaeae/tinythreat " .. Loc ["STRING_SLASH_SPEED"] .. "|r: " .. Loc ["STRING_SLASH_SPEED_DESC"]) end end diff --git a/plugins/Details_TinyThreat/Details_TinyThreat.toc b/plugins/Details_TinyThreat/Details_TinyThreat.toc index 9d8882b7..eb1dcf70 100644 --- a/plugins/Details_TinyThreat/Details_TinyThreat.toc +++ b/plugins/Details_TinyThreat/Details_TinyThreat.toc @@ -1,4 +1,4 @@ -## Interface: 100000 +## Interface: 100002 ## Title: Details!: Tiny Threat (plugin) ## Notes: Threat meter plugin, show threat for group members in the window. Select it from the Plugin menu in the Orange Cogwheel. ## RequiredDeps: Details diff --git a/plugins/Details_Vanguard/Details_Vanguard.toc b/plugins/Details_Vanguard/Details_Vanguard.toc index 84266660..fc305e6e 100644 --- a/plugins/Details_Vanguard/Details_Vanguard.toc +++ b/plugins/Details_Vanguard/Details_Vanguard.toc @@ -1,4 +1,4 @@ -## Interface: 100000 +## Interface: 100002 ## Title: Details!: Vanguard (plugin) ## Notes: Show the health and debuffs for tanks in your group. ## SavedVariablesPerCharacter: _detalhes_databaseVanguard diff --git a/sounds/Details Horn.ogg b/sounds/Details Horn.ogg new file mode 100644 index 0000000000000000000000000000000000000000..264934139304bd2d622555c17d2f8ff7bff4037c GIT binary patch literal 60976 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 xn4i3@UEPXXZFGlJy>)`QUin{T|iNK=+aRX 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

KqvfBgrIlds6N7u+ccVMo)p%0B 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 literal 0 HcmV?d00001 diff --git a/sounds/Details Warning 25.ogg b/sounds/Details Warning 25.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2b33aab24f67c6f3185fb2bbd1f95faff7b0d339 GIT binary patch literal 68499 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 V000004h{|u4h{|u4h{|u4i3c31dRXy literal 0 HcmV?d00001 diff --git a/sounds/threat_warning_1.ogg b/sounds/threat_warning_1.ogg deleted file mode 100644 index 6a7d6cd4c0e8c26968acb8f8fa1efeddf8978c66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94180 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 !JQ`G2hE+#(yOutG=r!glUbkts$l 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 diff --git a/sounds/threat_warning_4.ogg b/sounds/threat_warning_4.ogg deleted file mode 100644 index 317908347c51e645ee73df1c42e090502be12053..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94182 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%0A0Q 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

&8MbjwZ&J2>~+Z{H8(d=86vFwu&*+=ZjVy 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 V4r%u3=bp1qf7|>1HYiq20RSxHKB@o! diff --git a/startup.lua b/startup.lua index 75cafd31..e14452e4 100644 --- a/startup.lua +++ b/startup.lua @@ -1,10 +1,11 @@ - local UnitGroupRolesAssigned = _G.DetailsFramework.UnitGroupRolesAssigned local wipe = _G.wipe local C_Timer = _G.C_Timer local CreateFrame = _G.CreateFrame local Loc = _G.LibStub("AceLocale-3.0"):GetLocale("Details") +local _ +local tocName, Details222 = ... --start funtion function Details:StartMeUp() --I'll never stop! @@ -341,12 +342,10 @@ function Details:StartMeUp() --I'll never stop! local lowerInstanceId = Details:GetLowerInstanceNumber() if (lowerInstanceId) then lowerInstanceId = Details:GetInstance(lowerInstanceId) - if (lowerInstanceId) then --check if there's changes in the size of the news string - if (Details.last_changelog_size < #Loc["STRING_VERSION_LOG"]) then + if (Details.last_changelog_size ~= #Loc["STRING_VERSION_LOG"]) then Details.last_changelog_size = #Loc["STRING_VERSION_LOG"] - if (Details.auto_open_news_window) then C_Timer.After(5, function() Details.OpenNewsWindow() @@ -441,6 +440,33 @@ function Details:StartMeUp() --I'll never stop! Details:LoadFramesForBroadcastTools() Details:BrokerTick() + --build trinket data + function Details:GetTrinketData() + return Details.trinket_data + end + + local customSpellList = Details:GetDefaultCustomSpellsList() + local trinketData = Details:GetTrinketData() + for spellId, trinketTable in pairs(customSpellList) do + if (trinketTable.isPassive) then + if (not trinketData[spellId]) then + local thisTrinketData = { + itemName = C_Item.GetItemNameByID(trinketTable.itemId), + spellName = GetSpellInfo(spellId) or "spell not found", + lastActivation = 0, + lastPlayerName = "", + totalCooldownTime = 0, + activations = 0, + lastCombatId = 0, + minTime = 9999999, + maxTime = 0, + averageTime = 0, + } + trinketData[spellId] = thisTrinketData + end + end + end + --register boss mobs callbacks (DBM and BigWigs) -> functions/bossmods.lua Details.Schedules.NewTimer(5, Details.BossModsLink, Details) @@ -507,11 +533,10 @@ function Details:StartMeUp() --I'll never stop! Details:InstallHook("HOOK_DEATH", Details.Coach.Client.SendMyDeath) - local sentMessageOnStartup = false - - if (math.random(20) == 1) then - Details:Msg("use '/details me' macro to open the player breakdown for you!") - sentMessageOnStartup = true + if (not Details.slash_me_used) then + if (math.random(25) == 1) then + Details:Msg("use '/details me' macro to open the player breakdown for you!") + end end if (not DetailsFramework.IsTimewalkWoW()) then @@ -557,21 +582,6 @@ function Details:StartMeUp() --I'll never stop! end end) - --[=[ --survey for cooldown types are done - if (DetailsFramework.IsDragonflight()) then - DetailsFramework.Schedules.NewTimer(5, Details.RegisterDragonFlightEditMode) - --run only on beta, remove on 10.0 launch - if (Details.Survey.GetTargetCharacterForRealm()) then - Details.Survey.InitializeSpellCategoryFeedback() - if (not sentMessageOnStartup) then - if (math.random(5) == 1) then - Details:Msg("use '/details survey' to help on identifying cooldown spells (Dragonflight Beta).") - end - end - end - end - --]=] - function Details:InstallOkey() return true end @@ -583,13 +593,6 @@ function Details:StartMeUp() --I'll never stop! --shutdown the old OnDeathMenu --cleanup: this line can be removed after the first month of dragonflight Details.on_death_menu = false - - --reset to default the evoker color - local defaultEvokerColor = _detalhes.default_profile.class_colors.EVOKER - local currentEvokerColorTable = _detalhes.class_colors.EVOKER - currentEvokerColorTable[1] = defaultEvokerColor[1] - currentEvokerColorTable[2] = defaultEvokerColor[2] - currentEvokerColorTable[3] = defaultEvokerColor[3] end Details.AddOnLoadFilesTime = _G.GetTime()