From b588d5e30cec44d78125022adcfdf76c760f825b Mon Sep 17 00:00:00 2001 From: Tercio Jose Date: Sun, 9 Oct 2022 20:48:47 -0300 Subject: [PATCH] Fixed an error while trying to move the window by clicking and holding on a window line --- API UI.txt | 14 +- API.txt | 6 +- Libs/DF/auras.lua | 42 +- Libs/DF/colors.lua | 2 +- Libs/DF/fw.lua | 84 +-- Libs/DF/help.lua | 2 +- Libs/DF/mixins.lua | 2 +- Libs/DF/normal_bar.lua | 14 +- Libs/DF/panel.lua | 260 ++++----- Libs/DF/pictureedit.lua | 6 +- Libs/DF/slider.lua | 32 +- Libs/DF/spells.lua | 12 +- Libs/DF/split_bar.lua | 12 +- Libs/DF/textentry.lua | 8 +- Libs/LibOpenRaid/LibOpenRaid.lua | 2 +- Libs/NickTag-1.0/NickTag-1.0.lua | 10 +- boot.lua | 10 +- classes/class_combat.lua | 6 +- classes/class_custom.lua | 52 +- classes/class_damage.lua | 76 +-- classes/class_heal.lua | 42 +- classes/class_instance.lua | 86 +-- classes/class_resources.lua | 30 +- classes/class_utility.lua | 238 ++++----- classes/container_actors.lua | 2 +- classes/container_segments.lua | 4 +- classes/container_spells.lua | 2 +- classes/include_instance.lua | 8 +- core/control.lua | 30 +- core/gears.lua | 118 ++-- core/meta.lua | 10 +- core/parser.lua | 34 +- core/plugins.lua | 18 +- core/plugins_raid.lua | 4 +- core/plugins_solo.lua | 8 +- core/plugins_statusbar.lua | 40 +- core/plugins_toolbar.lua | 14 +- core/util.lua | 42 +- core/windows.lua | 28 +- frames/fw_mods.lua | 14 +- frames/window_api.lua | 12 +- frames/window_benchmark.lua | 2 +- frames/window_bookmark.lua | 4 +- frames/window_brokertexteditor.lua | 8 +- frames/window_classcolor.lua | 8 +- frames/window_copy.lua | 4 +- frames/window_currentdps.lua | 8 +- frames/window_custom.lua | 106 ++-- frames/window_dump.lua | 2 +- frames/window_eventtracker.lua | 16 +- frames/window_forge.lua | 36 +- frames/window_main.lua | 502 ++++++++---------- frames/window_news.lua | 2 +- frames/window_options2_sections.lua | 124 ++--- frames/window_plater.lua | 2 +- frames/window_playerbreakdown.lua | 72 +-- frames/window_profiler.lua | 4 +- frames/window_report.lua | 4 +- frames/window_rowtexteditor.lua | 18 +- frames/window_runcode.lua | 6 +- frames/window_scrolldamage.lua | 2 +- frames/window_statistics.lua | 106 ++-- frames/window_switch.lua | 14 +- frames/window_wa.lua | 50 +- frames/window_welcome.lua | 108 ++-- functions/api2.lua | 86 +-- functions/boss.lua | 6 +- functions/bossmods.lua | 6 +- functions/deathmenu.lua | 2 +- functions/deathrecap.lua | 18 +- functions/dungeon.lua | 30 +- functions/events.lua | 12 +- functions/loaddata.lua | 14 +- functions/macros.lua | 2 +- functions/mythicdungeon.lua | 8 +- functions/pack.lua | 24 +- functions/plater.lua | 8 +- functions/playerclass.lua | 4 +- functions/profiles.lua | 48 +- functions/raidinfo.lua | 4 +- functions/rowanimation.lua | 4 +- functions/savedata.lua | 6 +- functions/skins.lua | 6 +- functions/slash.lua | 58 +- functions/spellcache.lua | 8 +- functions/spells.lua | 10 +- functions/timedata.lua | 8 +- images/spec_icons_highlight.tga | Bin 1048620 -> 0 bytes images/spec_icons_normal.tga | Bin 1048620 -> 1048620 bytes .../Details_EncounterDetails.lua | 50 +- plugins/Details_EncounterDetails/frames.lua | 170 +++--- .../Details_RaidCheck/Details_RaidCheck.lua | 2 +- plugins/Details_Streamer/Details_Streamer.lua | 28 +- .../Details_TinyThreat/Details_TinyThreat.lua | 6 +- plugins/Details_Vanguard/Details_Vanguard.lua | 20 +- 95 files changed, 1630 insertions(+), 1662 deletions(-) delete mode 100644 images/spec_icons_highlight.tga diff --git a/API UI.txt b/API UI.txt index d0c103d95..658f38263 100644 --- a/API UI.txt +++ b/API UI.txt @@ -1,5 +1,5 @@ -local instance = Details:GetInstance (number) +local instance = Details:GetInstance(number) returns the window object. ============================================================= @@ -32,7 +32,7 @@ side = number, 1 = top side of the window, 2 = bottom. instance:MicroDisplaysLock (is_locked) is_locked = boolean, true is the micro displays are locked and cannot interact with the mouse. -instance:SetAutoHideMenu (enabled) +instance:SetAutoHideMenu(enabled) enabled = boolean, if true, the buttons on window's title bar auto hide when the player isn't interacting with the window. instance:SetBackdropTexture (texturename) @@ -51,7 +51,7 @@ shadow = boolean, draw the outline shadow to the text. instance:LeftMenuAnchorSide (side) side = number, 1 = left, 2 = right, set the anchor point for buttons on window's title bar. -instance:SetFrameStrata (strata) +instance:SetFrameStrata(strata) strata = string, "BACKGROUND", "LOW", "MEDIUM", "HIGH" or "DIALOG". instance:ChangeSkin (skin_name) @@ -146,7 +146,7 @@ direction = 1 top to bottom / 2 bottom to top instance:HideStatusBar() // instance:ShowStatusBar() Show or hide the statusbar for the window. -instance:StatusBarColor (r, g, b, a, no_save) +instance:StatusBarColor(r, g, b, a, no_save) r, g, b, a = number, color to set, no_save = boolean, if true, the values isn't set on the instance config table. @@ -180,7 +180,7 @@ clickfunc = table {function, param1, param2, "left" or "right" button} -------------------- -Details:SetTooltipBackdrop (border_texture, border_size, border_color) +Details:SetTooltipBackdrop(border_texture, border_size, border_color) border_texture = string, border name for SharedMedia. border_size = number, border size. border_color = table {r, g, b, a} @@ -204,7 +204,7 @@ returns a table with instances objects of all instances inside the group. -------------------- -Details:SetWindowUpdateSpeed (interval, nosave) +Details:SetWindowUpdateSpeed(interval, nosave) set the update speed of all windows, if nosave is true, it won't save this change (apply only). Details:SetUseAnimations (enabled, nosave) @@ -231,7 +231,7 @@ Open Forge Window. Details:OpenRaidHistoryWindow() Open Raid History Window. -Details.switch:ShowMe (instance object) +Details.switch:ShowMe(instance object) Open the bookmark panel on the top of the desired window. Details.switch:CloseMe() diff --git a/API.txt b/API.txt index de95609dc..e005a9666 100644 --- a/API.txt +++ b/API.txt @@ -658,7 +658,7 @@ there is two ways for do this: for i, actor in damageContainer:ListActors() do local amount = actor.targets [targetName] if (amount and amount >= 1) then - tinsert (actorsAmount, {name = actor:name(), total = amount}) + tinsert(actorsAmount, {name = actor:name(), total = amount}) end end @@ -705,7 +705,7 @@ end local source = damageContainer:GetActor (sourceNpc) local felfireVolleySpell = source:GetSpell (targetSpell) if (felfireVolleySpell) then - for playerName, amount in pairs (felfireVolleySpell.targets) do + for playerName, amount in pairs(felfireVolleySpell.targets) do --players who took damage from this ability --now this result may be placed on a external table or .custom may also be used local targetActor = damageContainer:GetActor (playerName) @@ -755,7 +755,7 @@ Details.cache_npc_ids [90409] = npcName --for details! for i, actor in damageContainer:ListActors() do actor.custom = 0 end - for playerName, _ in pairs (actor.damage_from) do + for playerName, _ in pairs(actor.damage_from) do local player = damageContainer:GetActor (playerName) if (player:IsPlayer()) then --we only want players. pets always has their damage merged on its owner damage. player.custom = actor.targets [npcName] diff --git a/Libs/DF/auras.lua b/Libs/DF/auras.lua index 8caeb6727..86a1aa862 100644 --- a/Libs/DF/auras.lua +++ b/Libs/DF/auras.lua @@ -53,7 +53,7 @@ function DF:LoadAllSpells (hashMap, indexTable, allSpellsSameName) DF.LoadingAuraAlertFrame = CreateFrame("frame", "DetailsFrameworkLoadingAurasAlert", UIParent, "BackdropTemplate") DF.LoadingAuraAlertFrame:SetSize(340, 75) DF.LoadingAuraAlertFrame:SetPoint("center") - DF.LoadingAuraAlertFrame:SetFrameStrata ("TOOLTIP") + DF.LoadingAuraAlertFrame:SetFrameStrata("TOOLTIP") DF:ApplyStandardBackdrop (DF.LoadingAuraAlertFrame) DF.LoadingAuraAlertFrame:SetBackdropBorderColor(1, 0.8, 0.1) @@ -698,7 +698,7 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t if not flag then GameCooltip2:Preset (2) - GameCooltip2:SetOwner (self, "left", "right", 2, 0) + GameCooltip2:SetOwner(self, "left", "right", 2, 0) GameCooltip2:SetOption("TextSize", 10) local spellName, _, spellIcon = GetSpellInfo(value) @@ -720,7 +720,7 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t if (spellsWithSameName) then GameCooltip2:Preset (2) - GameCooltip2:SetOwner (self, "left", "right", 2, 0) + GameCooltip2:SetOwner(self, "left", "right", 2, 0) GameCooltip2:SetOption("TextSize", 10) for i, spellID in ipairs(spellsWithSameName) do @@ -779,7 +779,7 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t local lineOnEnter = function(self) self:SetBackdropColor(unpack (backdropColor_OnEnter)) - --GameTooltip:SetOwner (self, "ANCHOR_CURSOR") + --GameTooltip:SetOwner(self, "ANCHOR_CURSOR") --GameTooltip:SetSpellByID(self.SpellID) --GameTooltip:AddLine (" ") --GameTooltip:Show() @@ -842,11 +842,11 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t function scroll:DoRefresh() local t = {} local added = {} - for spellID, flag in pairs (scroll.OriginalData) do + for spellID, flag in pairs(scroll.OriginalData) do local spellName, _, spellIcon = GetSpellInfo(spellID) if (spellName and not added[tonumber(spellID) or 0]) then local lowerSpellName = spellName:lower() - tinsert (t, {spellID, spellName, spellIcon, lowerSpellName, flag}) + tinsert(t, {spellID, spellName, spellIcon, lowerSpellName, flag}) added[tonumber(spellID) or 0] = true end end @@ -956,7 +956,7 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t self:SetBackdropColor(unpack (backdrop_color_on_enter)) local spellid = select (7, GetSpellInfo(self.value)) if (spellid) then - GameTooltip:SetOwner (self, "ANCHOR_CURSOR") + GameTooltip:SetOwner(self, "ANCHOR_CURSOR") GameTooltip:SetSpellByID(spellid) GameTooltip:AddLine (" ") GameTooltip:Show() @@ -1090,12 +1090,12 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t local spellID = get_spellID_from_string (spellName) if (spellID) then - tinsert (f.db.aura_tracker.buff, spellID) + tinsert(f.db.aura_tracker.buff, spellID) --[[ if not tonumber(spellName) then - tinsert (f.db.aura_tracker.buff, spellName) + tinsert(f.db.aura_tracker.buff, spellName) else - tinsert (f.db.aura_tracker.buff, spellID) + tinsert(f.db.aura_tracker.buff, spellID) end ]]-- else @@ -1110,12 +1110,12 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t return end - tinsert (f.db.aura_tracker.buff, spellID) + tinsert(f.db.aura_tracker.buff, spellID) --[[ if not tonumber(text) then - tinsert (f.db.aura_tracker.buff, text) + tinsert(f.db.aura_tracker.buff, text) else - tinsert (f.db.aura_tracker.buff, spellID) + tinsert(f.db.aura_tracker.buff, spellID) end ]]-- end @@ -1137,12 +1137,12 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t local spellID = get_spellID_from_string (spellName) if (spellID) then - tinsert (f.db.aura_tracker.debuff, spellID) + tinsert(f.db.aura_tracker.debuff, spellID) --[[ if not tonumber(spellName) then - tinsert (f.db.aura_tracker.debuff, spellName) + tinsert(f.db.aura_tracker.debuff, spellName) else - tinsert (f.db.aura_tracker.debuff, spellID) + tinsert(f.db.aura_tracker.debuff, spellID) end ]]-- else @@ -1157,14 +1157,14 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t return end - tinsert (f.db.aura_tracker.debuff, spellID) + tinsert(f.db.aura_tracker.debuff, spellID) --[[ if not tonumber(text) then print(text) - tinsert (f.db.aura_tracker.debuff, text) + tinsert(f.db.aura_tracker.debuff, text) else print(spellID) - tinsert (f.db.aura_tracker.debuff, spellID) + tinsert(f.db.aura_tracker.debuff, spellID) end ]]-- end @@ -1247,9 +1247,9 @@ function DF:GetAllPlayerSpells (include_lower_case) local spellType, spellId = GetSpellBookItemInfo (index, "player") if (spellType == "SPELL") then local spellName = GetSpellInfo(spellId) - tinsert (playerSpells, spellName) + tinsert(playerSpells, spellName) if (include_lower_case) then - tinsert (playerSpells, lower (spellName)) + tinsert(playerSpells, lower (spellName)) end end end diff --git a/Libs/DF/colors.lua b/Libs/DF/colors.lua index c434481bb..453c51013 100644 --- a/Libs/DF/colors.lua +++ b/Libs/DF/colors.lua @@ -172,7 +172,7 @@ do return defaultColors end - for colorName, colorTable in pairs (defaultColors) do + for colorName, colorTable in pairs(defaultColors) do DF.alias_text_colors [colorName] = colorTable end diff --git a/Libs/DF/fw.lua b/Libs/DF/fw.lua index a16324e0a..bba23d5b2 100644 --- a/Libs/DF/fw.lua +++ b/Libs/DF/fw.lua @@ -530,7 +530,7 @@ end --copy values that does exist on table2 but not on table1 function DF.table.deploy(t1, t2) - for key, value in pairs (t2) do + for key, value in pairs(t2) do if (type(value) == "table") then t1 [key] = t1 [key] or {} DF.table.deploy(t1 [key], t2 [key]) @@ -2435,7 +2435,7 @@ end TutorialAlertFrame = CreateFrame("frame", "DetailsFrameworkAlertFrame", UIParent, "MicroButtonAlertTemplate") TutorialAlertFrame.isFirst = true TutorialAlertFrame:SetPoint("left", UIParent, "left", -20, 100) - TutorialAlertFrame:SetFrameStrata ("TOOLTIP") + TutorialAlertFrame:SetFrameStrata("TOOLTIP") TutorialAlertFrame:Hide() TutorialAlertFrame:SetScript("OnMouseUp", function(self) @@ -2464,7 +2464,7 @@ end widget:SetText(widget._get()) end elseif (widget.widget_type == "select") then - widget:Select (widget._get()) + widget:Select(widget._get()) elseif (widget.widget_type == "toggle" or widget.widget_type == "range") then widget:SetValue(widget._get()) elseif (widget.widget_type == "textentry") then @@ -2518,7 +2518,7 @@ end if (template == 2) then local options_frame = CreateFrame("frame", name, UIParent, "ButtonFrameTemplate") - tinsert (UISpecialFrames, name) + tinsert(UISpecialFrames, name) options_frame:SetSize(500, 200) options_frame.RefreshOptions = refresh_options options_frame.widget_list = {} @@ -2544,7 +2544,7 @@ end options_frame:SetMovable (true) options_frame:EnableMouse (true) - options_frame:SetFrameStrata ("DIALOG") + options_frame:SetFrameStrata("DIALOG") options_frame:SetToplevel (true) options_frame:Hide() @@ -2558,7 +2558,7 @@ end elseif (template == 1) then local options_frame = CreateFrame("frame", name, UIParent) - tinsert (UISpecialFrames, name) + tinsert(UISpecialFrames, name) options_frame:SetSize(500, 200) options_frame.RefreshOptions = refresh_options options_frame.widget_list = {} @@ -2584,7 +2584,7 @@ end options_frame:SetMovable (true) options_frame:EnableMouse (true) - options_frame:SetFrameStrata ("DIALOG") + options_frame:SetFrameStrata("DIALOG") options_frame:SetToplevel (true) options_frame:Hide() @@ -2859,7 +2859,7 @@ function DF:SetHook(hookType, func) end end if (not isRemoval) then - tinsert (self.HookList [hookType], func) + tinsert(self.HookList [hookType], func) end else if (DF.debug) then @@ -3275,7 +3275,7 @@ local frameshake_play = function(parent, shakeObject, scaleDirection, scaleAmpli --update the amount of shake running on this frame parent.__frameshakes.enabled = parent.__frameshakes.enabled + 1 - if (not parent:GetScript ("OnUpdate")) then + if (not parent:GetScript("OnUpdate")) then parent:SetScript("OnUpdate", function()end) end end @@ -3353,7 +3353,7 @@ function DF:CreateFrameShake (parent, duration, amplitude, frequency, absoluteSi FrameshakeUpdateFrame.RegisterFrame (parent) end - tinsert (parent.__frameshakes, frameShake) + tinsert(parent.__frameshakes, frameShake) return frameShake end @@ -3575,9 +3575,9 @@ function DF:CreateBorder (parent, alpha1, alpha2, alpha3) PixelUtil.SetPoint (border3, "bottomleft", parent, "bottomleft", -3, -3) border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3) - tinsert (parent.Borders.Layer1, border1) - tinsert (parent.Borders.Layer2, border2) - tinsert (parent.Borders.Layer3, border3) + tinsert(parent.Borders.Layer1, border1) + tinsert(parent.Borders.Layer2, border2) + tinsert(parent.Borders.Layer3, border3) local border1 = parent:CreateTexture(nil, "background") PixelUtil.SetPoint (border1, "topleft", parent, "topleft", 0, 1) @@ -3592,9 +3592,9 @@ function DF:CreateBorder (parent, alpha1, alpha2, alpha3) PixelUtil.SetPoint (border3, "topright", parent, "topright", 3, 3) border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3) - tinsert (parent.Borders.Layer1, border1) - tinsert (parent.Borders.Layer2, border2) - tinsert (parent.Borders.Layer3, border3) + tinsert(parent.Borders.Layer1, border1) + tinsert(parent.Borders.Layer2, border2) + tinsert(parent.Borders.Layer3, border3) local border1 = parent:CreateTexture(nil, "background") PixelUtil.SetPoint (border1, "topright", parent, "topright", 1, 0) @@ -3609,9 +3609,9 @@ function DF:CreateBorder (parent, alpha1, alpha2, alpha3) PixelUtil.SetPoint (border3, "bottomright", parent, "bottomright", 3, -3) border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3) - tinsert (parent.Borders.Layer1, border1) - tinsert (parent.Borders.Layer2, border2) - tinsert (parent.Borders.Layer3, border3) + tinsert(parent.Borders.Layer1, border1) + tinsert(parent.Borders.Layer2, border2) + tinsert(parent.Borders.Layer3, border3) local border1 = parent:CreateTexture(nil, "background") PixelUtil.SetPoint (border1, "bottomleft", parent, "bottomleft", 0, -1) @@ -3626,9 +3626,9 @@ function DF:CreateBorder (parent, alpha1, alpha2, alpha3) PixelUtil.SetPoint (border3, "bottomright", parent, "bottomright", 2, -3) border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3) - tinsert (parent.Borders.Layer1, border1) - tinsert (parent.Borders.Layer2, border2) - tinsert (parent.Borders.Layer3, border3) + tinsert(parent.Borders.Layer1, border1) + tinsert(parent.Borders.Layer2, border2) + tinsert(parent.Borders.Layer3, border3) end @@ -3769,9 +3769,9 @@ function DF:CreateBorderWithSpread (parent, alpha1, alpha2, alpha3, size, spread border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3) PixelUtil.SetWidth (border3, size, minPixels) - tinsert (parent.Borders.Layer1, border1) - tinsert (parent.Borders.Layer2, border2) - tinsert (parent.Borders.Layer3, border3) + tinsert(parent.Borders.Layer1, border1) + tinsert(parent.Borders.Layer2, border2) + tinsert(parent.Borders.Layer3, border3) --top local border1 = parent:CreateTexture(nil, "background") @@ -3792,9 +3792,9 @@ function DF:CreateBorderWithSpread (parent, alpha1, alpha2, alpha3, size, spread border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3) PixelUtil.SetHeight (border3, size, minPixels) - tinsert (parent.Borders.Layer1, border1) - tinsert (parent.Borders.Layer2, border2) - tinsert (parent.Borders.Layer3, border3) + tinsert(parent.Borders.Layer1, border1) + tinsert(parent.Borders.Layer2, border2) + tinsert(parent.Borders.Layer3, border3) --right local border1 = parent:CreateTexture(nil, "background") @@ -3815,9 +3815,9 @@ function DF:CreateBorderWithSpread (parent, alpha1, alpha2, alpha3, size, spread border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3) PixelUtil.SetWidth (border3, size, minPixels) - tinsert (parent.Borders.Layer1, border1) - tinsert (parent.Borders.Layer2, border2) - tinsert (parent.Borders.Layer3, border3) + tinsert(parent.Borders.Layer1, border1) + tinsert(parent.Borders.Layer2, border2) + tinsert(parent.Borders.Layer3, border3) local border1 = parent:CreateTexture(nil, "background") PixelUtil.SetPoint (border1, "bottomleft", parent, "bottomleft", 0 + spread, -1 + spread) @@ -3837,9 +3837,9 @@ function DF:CreateBorderWithSpread (parent, alpha1, alpha2, alpha3, size, spread border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3) PixelUtil.SetHeight (border3, size, minPixels) - tinsert (parent.Borders.Layer1, border1) - tinsert (parent.Borders.Layer2, border2) - tinsert (parent.Borders.Layer3, border3) + tinsert(parent.Borders.Layer1, border1) + tinsert(parent.Borders.Layer2, border2) + tinsert(parent.Borders.Layer3, border3) end @@ -4100,7 +4100,7 @@ function DF:GetClassList() return DF.ClassCache end - for className, classIndex in pairs (DF.ClassFileNameToIndex) do + for className, classIndex in pairs(DF.ClassFileNameToIndex) do local classTable = C_CreatureInfo.GetClassInfo (classIndex) if classTable then local t = { @@ -4110,7 +4110,7 @@ function DF:GetClassList() TexCoord = CLASS_ICON_TCOORDS [className], FileString = className, } - tinsert (DF.ClassCache, t) + tinsert(DF.ClassCache, t) end end @@ -4181,13 +4181,13 @@ function DF:GetCharacterRaceList() for i = 1, 100 do local raceInfo = C_CreatureInfo.GetRaceInfo (i) if (raceInfo and DF.RaceList [raceInfo.raceID]) then - tinsert (DF.RaceCache, {Name = raceInfo.raceName, FileString = raceInfo.clientFileString, ID = raceInfo.raceID}) + tinsert(DF.RaceCache, {Name = raceInfo.raceName, FileString = raceInfo.clientFileString, ID = raceInfo.raceID}) end if IS_WOW_PROJECT_MAINLINE then local alliedRaceInfo = C_AlliedRaces.GetRaceInfoByID (i) if (alliedRaceInfo and DF.AlliedRaceList [alliedRaceInfo.raceID]) then - tinsert (DF.RaceCache, {Name = alliedRaceInfo.maleName, FileString = alliedRaceInfo.raceFileString, ID = alliedRaceInfo.raceID}) + tinsert(DF.RaceCache, {Name = alliedRaceInfo.maleName, FileString = alliedRaceInfo.raceFileString, ID = alliedRaceInfo.raceID}) end end end @@ -4211,11 +4211,11 @@ function DF:GetCharacterTalents (onlySelected, onlySelectedHash) end elseif (onlySelected) then if (selected) then - tinsert (talentList, {Name = name, ID = talentID, Texture = texture, IsSelected = selected}) + tinsert(talentList, {Name = name, ID = talentID, Texture = texture, IsSelected = selected}) break end else - tinsert (talentList, {Name = name, ID = talentID, Texture = texture, IsSelected = selected}) + tinsert(talentList, {Name = name, ID = talentID, Texture = texture, IsSelected = selected}) end end end @@ -4232,7 +4232,7 @@ function DF:GetCharacterPvPTalents (onlySelected, onlySelectedHash) if (onlySelectedHash) then talentList [talentID] = true else - tinsert (talentList, {Name = talentName, ID = talentID, Texture = texture, IsSelected = true}) + tinsert(talentList, {Name = talentName, ID = talentID, Texture = texture, IsSelected = true}) end end return talentList @@ -4246,7 +4246,7 @@ function DF:GetCharacterPvPTalents (onlySelected, onlySelectedHash) for _, talentID in ipairs(slotInfo.availableTalentIDs) do if (not alreadyAdded [talentID]) then local _, talentName, texture, selected = GetPvpTalentInfoByID (talentID) - tinsert (talentList, {Name = talentName, ID = talentID, Texture = texture, IsSelected = selected}) + tinsert(talentList, {Name = talentName, ID = talentID, Texture = texture, IsSelected = selected}) alreadyAdded [talentID] = true end end diff --git a/Libs/DF/help.lua b/Libs/DF/help.lua index a1ab154e6..6b95c7977 100644 --- a/Libs/DF/help.lua +++ b/Libs/DF/help.lua @@ -81,7 +81,7 @@ function DF:NewHelp (parent, width, height, x, y, buttonWidth, buttonHeight, nam if (not APIHelpFunctions) then APIHelpFunctions = true local idx = getmetatable (helpButton).__index - for funcName, funcAddress in pairs (idx) do + for funcName, funcAddress in pairs(idx) do if (not HelpMetaFunctions [funcName]) then HelpMetaFunctions [funcName] = function(object, ...) local x = loadstring ( "return _G."..object.button:GetName()..":"..funcName.."(...)") diff --git a/Libs/DF/mixins.lua b/Libs/DF/mixins.lua index f51ae0670..5355fa51e 100644 --- a/Libs/DF/mixins.lua +++ b/Libs/DF/mixins.lua @@ -242,7 +242,7 @@ detailsFramework.OptionsFunctions = { GetAllOptions = function(self) if (self.options) then local optionsTable = {} - for key, _ in pairs (self.options) do + for key, _ in pairs(self.options) do optionsTable [#optionsTable + 1] = key end return optionsTable diff --git a/Libs/DF/normal_bar.lua b/Libs/DF/normal_bar.lua index 4ad7fdba4..9822a24db 100644 --- a/Libs/DF/normal_bar.lua +++ b/Libs/DF/normal_bar.lua @@ -472,11 +472,11 @@ local BarMetaFunctions = _G[DF.GlobalWidgetControlNames ["normal_bar"]] function BarMetaFunctions:SetFrameStrata() return self.statusbar:GetFrameStrata() end - function BarMetaFunctions:SetFrameStrata (strata) + function BarMetaFunctions:SetFrameStrata(strata) if (_type(strata) == "table") then - self.statusbar:SetFrameStrata (strata:GetFrameStrata()) + self.statusbar:SetFrameStrata(strata:GetFrameStrata()) else - self.statusbar:SetFrameStrata (strata) + self.statusbar:SetFrameStrata(strata) end end @@ -500,7 +500,7 @@ local BarMetaFunctions = _G[DF.GlobalWidgetControlNames ["normal_bar"]] if (frame.MyObject.have_tooltip) then GameCooltip2:Reset() GameCooltip2:AddLine (frame.MyObject.have_tooltip) - GameCooltip2:ShowCooltip (frame, "tooltip") + GameCooltip2:ShowCooltip(frame, "tooltip") end end @@ -515,7 +515,7 @@ local BarMetaFunctions = _G[DF.GlobalWidgetControlNames ["normal_bar"]] frame.MyObject.background:Hide() if (frame.MyObject.have_tooltip) then - GameCooltip2:ShowMe (false) + GameCooltip2:ShowMe(false) end end @@ -588,7 +588,7 @@ local BarMetaFunctions = _G[DF.GlobalWidgetControlNames ["normal_bar"]] DF:CancelTimer (self.TimerScheduled) self.TimerScheduled = nil else - if (self.statusbar:GetScript ("OnUpdate")) then + if (self.statusbar:GetScript("OnUpdate")) then self.statusbar:SetScript("OnUpdate", nil) end end @@ -806,7 +806,7 @@ function DF:NewBar (parent, container, name, member, w, h, value, texture_name) if (not APIBarFunctions) then APIBarFunctions = true local idx = getmetatable (BarObject.statusbar).__index - for funcName, funcAddress in pairs (idx) do + for funcName, funcAddress in pairs(idx) do if (not BarMetaFunctions [funcName]) then BarMetaFunctions [funcName] = function(object, ...) local x = loadstring ( "return _G['"..object.statusbar:GetName().."']:"..funcName.."(...)") diff --git a/Libs/DF/panel.lua b/Libs/DF/panel.lua index d96708b3f..0970bccb6 100644 --- a/Libs/DF/panel.lua +++ b/Libs/DF/panel.lua @@ -405,7 +405,7 @@ DF.LayoutFrame = { -- clear function PanelMetaFunctions:HideWidgets() - for widgetName, widgetSelf in pairs (self) do + for widgetName, widgetSelf in pairs(self) do if (type(widgetSelf) == "table" and widgetSelf.dframework) then widgetSelf:Hide() end @@ -484,11 +484,11 @@ DF.LayoutFrame = { function PanelMetaFunctions:SetFrameStrata() return self.widget:GetFrameStrata() end - function PanelMetaFunctions:SetFrameStrata (strata) + function PanelMetaFunctions:SetFrameStrata(strata) if (_type(strata) == "table") then - self.widget:SetFrameStrata (strata:GetFrameStrata()) + self.widget:SetFrameStrata(strata:GetFrameStrata()) else - self.widget:SetFrameStrata (strata) + self.widget:SetFrameStrata(strata) end end @@ -507,7 +507,7 @@ DF.LayoutFrame = { GameCooltip2:SetType ("tooltip") GameCooltip2:SetColor ("main", "transparent") GameCooltip2:AddLine (frame.MyObject.have_tooltip) - GameCooltip2:SetOwner (frame) + GameCooltip2:SetOwner(frame) GameCooltip2:ShowCooltip() end end @@ -520,7 +520,7 @@ DF.LayoutFrame = { end if (frame.MyObject.have_tooltip) then - GameCooltip2:ShowMe (false) + GameCooltip2:ShowMe(false) end end @@ -643,7 +643,7 @@ function DF:NewPanel (parent, container, name, member, w, h, backdrop, backdropc if (not APIFrameFunctions) then APIFrameFunctions = {} local idx = getmetatable (PanelObject.frame).__index - for funcName, funcAddress in pairs (idx) do + for funcName, funcAddress in pairs(idx) do if (not PanelMetaFunctions [funcName]) then PanelMetaFunctions [funcName] = function(object, ...) local x = loadstring ( "return _G['"..object.frame:GetName().."']:"..funcName.."(...)") @@ -731,8 +731,8 @@ local add_row = function(self, t, need_update) text:SetPoint("left", thisrow, "left", 2, 0) text:SetText(t.name) - tinsert (self._raw_rows, t) - tinsert (self.rows, thisrow) + tinsert(self._raw_rows, t) + tinsert(self.rows, thisrow) if (need_update) then self:AlignRows() @@ -765,12 +765,12 @@ local align_rows = function(self) row.width = row_width end row:SetPoint("topleft", self, "topleft", cur_width, -1) - tinsert (self._anchors, cur_width) + tinsert(self._anchors, cur_width) cur_width = cur_width + row_width + 1 else row:SetPoint("topleft", self, "topleft", cur_width, -1) row.width = self._raw_rows [index].width - tinsert (self._anchors, cur_width) + tinsert(self._anchors, cur_width) cur_width = cur_width + self._raw_rows [index].width + 1 end @@ -786,7 +786,7 @@ local align_rows = function(self) self:CreateRowText (line) text = tremove (line.text_available) end - tinsert (line.text_inuse, text) + tinsert(line.text_inuse, text) text:SetPoint("left", line, "left", self._anchors [#self._anchors], 0) text:SetWidth(row.width) @@ -801,7 +801,7 @@ local align_rows = function(self) self:CreateRowEntry (line) entry = tremove (line.entry_available) end - tinsert (line.entry_inuse, entry) + tinsert(line.entry_inuse, entry) entry:SetPoint("left", line, "left", self._anchors [#self._anchors], 0) if (sindex == rows_shown) then entry:SetWidth(row.width - 25) @@ -830,7 +830,7 @@ local align_rows = function(self) checkbox = tremove (line.checkbox_available) end - tinsert (line.checkbox_inuse, checkbox) + tinsert(line.checkbox_inuse, checkbox) checkbox:SetPoint("left", line, "left", self._anchors [#self._anchors] + ((row.width - 20) / 2), 0) if (sindex == rows_shown) then @@ -852,7 +852,7 @@ local align_rows = function(self) self:CreateRowButton (line) button = tremove (line.button_available) end - tinsert (line.button_inuse, button) + tinsert(line.button_inuse, button) button:SetPoint("left", line, "left", self._anchors [#self._anchors], 0) if (sindex == rows_shown) then button:SetWidth(row.width - 25) @@ -898,7 +898,7 @@ local align_rows = function(self) self:CreateRowIcon (line) icon = tremove (line.icon_available) end - tinsert (line.icon_inuse, icon) + tinsert(line.icon_inuse, icon) icon:SetPoint("left", line, "left", self._anchors [#self._anchors] + ( ((row.width or 22) - 22) / 2), 0) icon.func = row.func end @@ -911,7 +911,7 @@ local align_rows = function(self) self:CreateRowTexture (line) texture = tremove (line.texture_available) end - tinsert (line.texture_inuse, texture) + tinsert(line.texture_inuse, texture) texture:SetPoint("left", line, "left", self._anchors [#self._anchors] + ( ((row.width or 22) - 22) / 2), 0) end @@ -974,42 +974,42 @@ local update_rows = function(self, updated_rows) for index, row in ipairs(self.scrollframe.lines) do for i = #row.text_inuse, 1, -1 do - tinsert (row.text_available, tremove (row.text_inuse, i)) + tinsert(row.text_available, tremove (row.text_inuse, i)) end for i = 1, #row.text_available do row.text_available[i]:Hide() end for i = #row.entry_inuse, 1, -1 do - tinsert (row.entry_available, tremove (row.entry_inuse, i)) + tinsert(row.entry_available, tremove (row.entry_inuse, i)) end for i = 1, #row.entry_available do row.entry_available[i]:Hide() end for i = #row.button_inuse, 1, -1 do - tinsert (row.button_available, tremove (row.button_inuse, i)) + tinsert(row.button_available, tremove (row.button_inuse, i)) end for i = 1, #row.button_available do row.button_available[i]:Hide() end for i = #row.checkbox_inuse, 1, -1 do - tinsert (row.checkbox_available, tremove (row.checkbox_inuse, i)) + tinsert(row.checkbox_available, tremove (row.checkbox_inuse, i)) end for i = 1, #row.checkbox_available do row.checkbox_available[i]:Hide() end for i = #row.icon_inuse, 1, -1 do - tinsert (row.icon_available, tremove (row.icon_inuse, i)) + tinsert(row.icon_available, tremove (row.icon_inuse, i)) end for i = 1, #row.icon_available do row.icon_available[i]:Hide() end for i = #row.texture_inuse, 1, -1 do - tinsert (row.texture_available, tremove (row.texture_inuse, i)) + tinsert(row.texture_available, tremove (row.texture_inuse, i)) end for i = 1, #row.texture_available do row.texture_available[i]:Hide() @@ -1025,7 +1025,7 @@ end local create_panel_text = function(self, row) row.text_total = row.text_total + 1 local text = DF:NewLabel(row, nil, self._name .. "$parentLabel" .. row.text_total, "text" .. row.text_total) - tinsert (row.text_available, text) + tinsert(row.text_available, text) end local create_panel_entry = function(self, row) @@ -1056,7 +1056,7 @@ local create_panel_entry = function(self, row) editbox:SetTemplate (DF:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")) editbox:SetBackdropColor(.2, .2, .2, 0.7) - tinsert (row.entry_available, editbox) + tinsert(row.entry_available, editbox) end local create_panel_checkbox = function(self, row) @@ -1067,12 +1067,12 @@ local create_panel_checkbox = function(self, row) switch:SetAsCheckBox() switch:SetTemplate(DF:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) - tinsert (row.checkbox_available, switch) + tinsert(row.checkbox_available, switch) end local create_panel_button = function(self, row) row.button_total = row.button_total + 1 - local button = DF:NewButton (row, nil, "$parentButton" .. row.button_total, "button" .. row.button_total, 120, 20) + local button = DF:NewButton(row, nil, "$parentButton" .. row.button_total, "button" .. row.button_total, 120, 20) --create icon and the text local icon = DF:NewImage (button, nil, 20, 20) @@ -1084,7 +1084,7 @@ local create_panel_button = function(self, row) button:SetHook("OnEnter", button_on_enter) button:SetHook("OnLeave", button_on_leave) - tinsert (row.button_available, button) + tinsert(row.button_available, button) end local icon_onclick = function(texture, iconbutton) @@ -1094,7 +1094,7 @@ end local create_panel_icon = function(self, row) row.icon_total = row.icon_total + 1 - local iconbutton = DF:NewButton (row, nil, "$parentIconButton" .. row.icon_total, "iconbutton", 22, 20) + local iconbutton = DF:NewButton(row, nil, "$parentIconButton" .. row.icon_total, "iconbutton", 22, 20) iconbutton:SetHook("OnEnter", button_on_enter) iconbutton:SetHook("OnLeave", button_on_leave) @@ -1109,13 +1109,13 @@ local create_panel_icon = function(self, row) icon:SetPoint("center", iconbutton, "center", 0, 0) - tinsert (row.icon_available, iconbutton) + tinsert(row.icon_available, iconbutton) end local create_panel_texture = function(self, row) row.texture_total = row.texture_total + 1 local texture = DF:NewImage (row, nil, 20, 20, "artwork", nil, "_icon" .. row.texture_total, "$parentIcon" .. row.texture_total) - tinsert (row.texture_available, texture) + tinsert(row.texture_available, texture) end local set_fill_function = function(self, func) @@ -1260,13 +1260,13 @@ function DF:NewFillPanel(parent, rows, name, member, w, h, total_lines, fill_row t.func (real_index, results [index].value) panel:Refresh() end - buttonwidget:SetClickFunction (func) + buttonwidget:SetClickFunction(func) else local func = function() t.func (real_index, index) panel:Refresh() end - buttonwidget:SetClickFunction (func) + buttonwidget:SetClickFunction(func) end buttonwidget.id = results [index].id @@ -1278,7 +1278,7 @@ function DF:NewFillPanel(parent, rows, name, member, w, h, total_lines, fill_row t.func (real_index, index) panel:Refresh() end - buttonwidget:SetClickFunction (func) + buttonwidget:SetClickFunction(func) buttonwidget:SetText(results [index]) end @@ -1412,7 +1412,7 @@ function DF:NewFillPanel(parent, rows, name, member, w, h, total_lines, fill_row row:SetPoint("topleft", scrollframe, "topleft", 0, (i-1) * size * -1) row:SetPoint("topright", scrollframe, "topright", 0, (i-1) * size * -1) - tinsert (scrollframe.lines, row) + tinsert(scrollframe.lines, row) row.text_available = {} row.text_inuse = {} @@ -1477,7 +1477,7 @@ function DF:ColorPick (frame, r, g, b, alpha, callback) ColorPickerFrame.previousValues = {r, g, b} ColorPickerFrame:SetParent(UIParent) - ColorPickerFrame:SetFrameStrata ("tooltip") + ColorPickerFrame:SetFrameStrata("tooltip") ColorPickerFrame:SetColorRGB (r, g, b) ColorPickerFrame:Show() @@ -1491,8 +1491,8 @@ function DF:IconPick (callback, close_when_select, param1, param2) local string_lower = string.lower DF.IconPickFrame = CreateFrame("frame", "DetailsFrameworkIconPickFrame", UIParent, "BackdropTemplate") - tinsert (UISpecialFrames, "DetailsFrameworkIconPickFrame") - DF.IconPickFrame:SetFrameStrata ("FULLSCREEN") + tinsert(UISpecialFrames, "DetailsFrameworkIconPickFrame") + DF.IconPickFrame:SetFrameStrata("FULLSCREEN") DF.IconPickFrame:SetPoint("center", UIParent, "center") DF.IconPickFrame:SetWidth(416) @@ -1525,7 +1525,7 @@ function DF:IconPick (callback, close_when_select, param1, param2) DF.IconPickFrame.callback = DF.IconPickFrame.emptyFunction DF.IconPickFrame.preview = CreateFrame("frame", nil, UIParent, "BackdropTemplate") - DF.IconPickFrame.preview:SetFrameStrata ("tooltip") + DF.IconPickFrame.preview:SetFrameStrata("tooltip") DF.IconPickFrame.preview:SetFrameLevel (6001) DF.IconPickFrame.preview:SetSize(76, 76) @@ -1997,7 +1997,7 @@ function DF:CreateSimplePanel (parent, w, h, title, name, panel_options, db) 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:SetFrameStrata("FULLSCREEN") f:EnableMouse() f:SetMovable (true) f:SetBackdrop(SimplePanel_frame_backdrop) @@ -2007,7 +2007,7 @@ function DF:CreateSimplePanel (parent, w, h, title, name, panel_options, db) f.DontRightClickClose = panel_options.DontRightClickClose if (not panel_options.NoTUISpecialFrame) then - tinsert (UISpecialFrames, name) + tinsert(UISpecialFrames, name) end local title_bar = CreateFrame("frame", name .. "TitleBar", f,"BackdropTemplate") @@ -2174,13 +2174,13 @@ local Panel1PxHasPosition = function(self) end end -function DF:Create1PxPanel (parent, w, h, title, name, config, title_anchor, no_special_frame) +function DF:Create1PxPanel(parent, w, h, title, name, config, title_anchor, no_special_frame) local f = CreateFrame("frame", name, parent or UIParent, "BackdropTemplate") f:SetSize(w or 100, h or 75) f:SetPoint("center", UIParent, "center") if (name and not no_special_frame) then - tinsert (UISpecialFrames, name) + tinsert(UISpecialFrames, name) end f:SetScript("OnMouseDown", simple_panel_mouse_down) @@ -2265,12 +2265,12 @@ function DF:ShowPromptPanel (message, func_true, func_false, no_repeated, width) if (not DetailsFrameworkPromptSimple) then local f = CreateFrame("frame", "DetailsFrameworkPromptSimple", UIParent, "BackdropTemplate") f:SetSize(400, 80) - f:SetFrameStrata ("DIALOG") + f:SetFrameStrata("DIALOG") f:SetPoint("center", UIParent, "center", 0, 300) f:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true}) f:SetBackdropColor(0, 0, 0, 0.8) f:SetBackdropBorderColor(0, 0, 0, 1) - tinsert (UISpecialFrames, "DetailsFrameworkPromptSimple") + tinsert(UISpecialFrames, "DetailsFrameworkPromptSimple") DF:CreateTitleBar (f, "Prompt!") DF:ApplyStandardBackdrop (f) @@ -2291,7 +2291,7 @@ function DF:ShowPromptPanel (message, func_true, func_false, no_repeated, width) button_false:SetPoint("bottomleft", f, "bottomleft", 5, 5) f.button_false = button_false - button_true:SetClickFunction (function() + button_true:SetClickFunction(function() local my_func = button_true.true_function if (my_func) then local okey, errormessage = pcall (my_func, true) @@ -2302,7 +2302,7 @@ function DF:ShowPromptPanel (message, func_true, func_false, no_repeated, width) end end) - button_false:SetClickFunction (function() + button_false:SetClickFunction(function() local my_func = button_false.false_function if (my_func) then local okey, errormessage = pcall (my_func, true) @@ -2366,7 +2366,7 @@ function DF:ShowTextPromptPanel (message, callback) local f = CreateFrame("frame", "DetailsFrameworkPrompt", UIParent, "BackdropTemplate") f:SetSize(400, 120) - f:SetFrameStrata ("FULLSCREEN") + f:SetFrameStrata("FULLSCREEN") f:SetPoint("center", UIParent, "center", 0, 100) f:EnableMouse (true) f:SetMovable (true) @@ -2374,7 +2374,7 @@ function DF:ShowTextPromptPanel (message, callback) f:SetScript("OnDragStart", function() f:StartMoving() end) f:SetScript("OnDragStop", function() f:StopMovingOrSizing() end) f:SetScript("OnMouseDown", function(self, button) if (button == "RightButton") then f.EntryBox:ClearFocus() f:Hide() end end) - tinsert (UISpecialFrames, "DetailsFrameworkPrompt") + tinsert(UISpecialFrames, "DetailsFrameworkPrompt") DF:CreateTitleBar (f, "Prompt!") DF:ApplyStandardBackdrop (f) @@ -2412,7 +2412,7 @@ function DF:ShowTextPromptPanel (message, callback) end end - button_true:SetClickFunction (function() + button_true:SetClickFunction(function() executeCallback() end) @@ -2451,7 +2451,7 @@ function DF:CreateOptionsButton (parent, callback, name) b:SetScript("OnEnter", function(self) GameCooltip2:Reset() GameCooltip2:AddLine ("Options") - GameCooltip2:ShowCooltip (self, "tooltip") + GameCooltip2:ShowCooltip(self, "tooltip") end) b:SetScript("OnLeave", function(self) GameCooltip2:Hide() @@ -2471,7 +2471,7 @@ function DF:CreateFeedbackButton (parent, callback, name) b:SetScript("OnEnter", function(self) GameCooltip2:Reset() GameCooltip2:AddLine ("Send Feedback") - GameCooltip2:ShowCooltip (self, "tooltip") + GameCooltip2:ShowCooltip(self, "tooltip") end) b:SetScript("OnLeave", function(self) GameCooltip2:Hide() @@ -2604,7 +2604,7 @@ local on_enter_addon = function(self) GameCooltip2:AddLine ("|cFFFFFF00" .. self.name .. "|r") GameCooltip2:AddLine ("") GameCooltip2:AddLine (self.tooltip) - GameCooltip2:ShowCooltip (self, "tooltip") + GameCooltip2:ShowCooltip(self, "tooltip") end self.icon:SetBlendMode("ADD") end @@ -2722,8 +2722,8 @@ function DF:ShowFeedbackPanel (addon_name, version, feedback_methods, more_addon local f = _G.AddonFeedbackPanel if (not f) then - f = DF:Create1PxPanel (UIParent, 400, 100, addon_name .. " Feedback", "AddonFeedbackPanel", nil) - f:SetFrameStrata ("FULLSCREEN") + f = DF:Create1PxPanel(UIParent, 400, 100, addon_name .. " Feedback", "AddonFeedbackPanel", nil) + f:SetFrameStrata("FULLSCREEN") f:SetPoint("center", UIParent, "center") f:SetBackdropColor(0, 0, 0, 0.8) f.feedback_lines = {} @@ -3085,7 +3085,7 @@ local draw_overlay = function(self, this_overlay, overlayData, color) local this_block = this_overlay [index] if (not this_block) then this_block = self.Graphic:CreateTexture(nil, "border") - tinsert (this_overlay, this_block) + tinsert(this_overlay, this_block) end this_block:SetHeight(self.Graphic:GetHeight()) @@ -3118,12 +3118,12 @@ local chart_panel_add_overlay = function(self, overlayData, color, name, icon) local this_overlay = self.Overlays [self.OverlaysAmount] if (not this_overlay) then this_overlay = {} - tinsert (self.Overlays, this_overlay) + tinsert(self.Overlays, this_overlay) end draw_overlay (self, this_overlay, overlayData, color) - tinsert (self.OData, {overlayData, color or line_default_color}) + tinsert(self.OData, {overlayData, color or line_default_color}) if (name and self.HeaderShowOverlays) then self:AddLabel (color or line_default_color, name, "overlay", #self.OData) end @@ -3274,10 +3274,10 @@ local chart_panel_add_data = function(self, graphicData, color, name, elapsed_ti local scaleW = 1/self:GetWidth() local content = graphicData - tinsert (content, 1, 0) - tinsert (content, 1, 0) - tinsert (content, #content+1, 0) - tinsert (content, #content+1, 0) + tinsert(content, 1, 0) + tinsert(content, 1, 0) + tinsert(content, #content+1, 0) + tinsert(content, #content+1, 0) local _i = 3 @@ -3363,7 +3363,7 @@ local chart_panel_add_data = function(self, graphicData, color, name, elapsed_ti end - tinsert (f.GData, {_data, color or line_default_color, lineTexture, max_value, elapsed_time}) + tinsert(f.GData, {_data, color or line_default_color, lineTexture, max_value, elapsed_time}) if (name) then f:AddLabel (color or line_default_color, name, "graphic", #f.GData) end @@ -3684,7 +3684,7 @@ local gframe_reset = function(self) if (self.GraphLib_Lines_Used) then for i = #self.GraphLib_Lines_Used, 1, -1 do local line = tremove (self.GraphLib_Lines_Used) - tinsert (self.GraphLib_Lines, line) + tinsert(self.GraphLib_Lines, line) line:Hide() end end @@ -3981,8 +3981,8 @@ function DF:CreateTabContainer (parent, title, frame_name, frameList, options_ta f:SetScript("OnMouseDown", DF.TabContainerFunctions.OnMouseDown) f:SetScript("OnMouseUp", DF.TabContainerFunctions.OnMouseUp) - tinsert (mainFrame.AllFrames, f) - tinsert (mainFrame.AllButtons, tabButton) + tinsert(mainFrame.AllFrames, f) + tinsert(mainFrame.AllButtons, tabButton) end --order buttons @@ -4071,7 +4071,7 @@ local simple_list_box_GetOrCreateWidget = function(self) widget.XButton:Hide() end - tinsert (self.widgets, widget) + tinsert(self.widgets, widget) end self.nextWidget = self.nextWidget + 1 return widget @@ -4080,15 +4080,15 @@ end local simple_list_box_RefreshWidgets = function(self) self:ResetWidgets() local amt = 0 - for value, _ in pairs (self.list_table) do + for value, _ in pairs(self.list_table) do local widget = self:GetOrCreateWidget() widget:SetPoint("topleft", self, "topleft", 1, -self.options.row_height * (self.nextWidget-2) - 4) widget:SetPoint("topright", self, "topright", -1, -self.options.row_height * (self.nextWidget-2) - 4) - widget:SetClickFunction (self.func, value) + widget:SetClickFunction(self.func, value) if (self.options.show_x_button) then - widget.XButton:SetClickFunction (self.options.x_button_func, value) + widget.XButton:SetClickFunction(self.options.x_button_func, value) widget.XButton.value = value widget.XButton:Show() else @@ -4426,7 +4426,7 @@ function DF:CreateKeybindBox (parent, name, data, callback, width, height, line_ local button = new_keybind_frame ["SpecButton" .. index] local spec_id, spec_name, spec_description, spec_icon, spec_background, spec_role, spec_class = DetailsFramework.GetSpecializationInfoByID (specId) button.text = spec_name - button:SetClickFunction (switch_spec, specId) + button:SetClickFunction(switch_spec, specId) button:SetIcon (spec_icon) button.specID = specId @@ -4438,7 +4438,7 @@ function DF:CreateKeybindBox (parent, name, data, callback, width, height, line_ end button.selectedTexture = selectedTexture - tinsert (allSpecButtons, button) + tinsert(allSpecButtons, button) i = i + 1 end @@ -4455,7 +4455,7 @@ function DF:CreateKeybindBox (parent, name, data, callback, width, height, line_ end local enter_the_key = CreateFrame("frame", nil, new_keybind_frame, "BackdropTemplate") - enter_the_key:SetFrameStrata ("tooltip") + enter_the_key:SetFrameStrata("tooltip") enter_the_key:SetSize(200, 60) enter_the_key:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16, edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1}) enter_the_key:SetBackdropColor(0, 0, 0, 1) @@ -4505,7 +4505,7 @@ function DF:CreateKeybindBox (parent, name, data, callback, width, height, line_ end local new_key_bind = function(self, button, specID) - tinsert (new_keybind_frame.CurrentKeybindEditingSet, {key = "-none-", action = "_target", actiontext = ""}) + tinsert(new_keybind_frame.CurrentKeybindEditingSet, {key = "-none-", action = "_target", actiontext = ""}) FauxScrollFrame_SetOffset (new_keybind_frame.keybindScroll, max (#new_keybind_frame.CurrentKeybindEditingSet-SCROLL_ROLL_AMOUNT, 0)) new_keybind_frame.keybindScroll:UpdateScroll() end @@ -4548,7 +4548,7 @@ function DF:CreateKeybindBox (parent, name, data, callback, width, height, line_ if (type(dispel) == "table") then local dispelString = "\n" - for specID, spellid in pairs (dispel) do + for specID, spellid in pairs(dispel) do local specid, specName = DetailsFramework.GetSpecializationInfoByID (specID) local spellName = GetSpellInfo(spellid) dispelString = dispelString .. "|cFFE5E5E5" .. (specName or "") .. "|r: |cFFFFFFFF" .. spellName .. "\n" @@ -4570,11 +4570,11 @@ function DF:CreateKeybindBox (parent, name, data, callback, width, height, line_ local copy_keybind = function(self, button, keybindIndex) local keybind = new_keybind_frame.CurrentKeybindEditingSet [keybindIndex] - for specID, t in pairs (new_keybind_frame.Data) do + for specID, t in pairs(new_keybind_frame.Data) do if (specID ~= new_keybind_frame.EditingSpec) then local key = CopyTable (keybind) local specid, specName = DetailsFramework.GetSpecializationInfoByID (specID) - tinsert (new_keybind_frame.Data [specID], key) + tinsert(new_keybind_frame.Data [specID], key) DF:Msg ("Keybind copied to " .. (specName or "")) end end @@ -4615,11 +4615,11 @@ function DF:CreateKeybindBox (parent, name, data, callback, width, height, line_ keyBindText = keyBindText:gsub ("type3", "MiddleButton") f.KeyBind.text = keyBindText - f.KeyBind:SetClickFunction (set_keybind_key, index, nil, "left") - f.KeyBind:SetClickFunction (set_keybind_key, index, nil, "right") + f.KeyBind:SetClickFunction(set_keybind_key, index, nil, "left") + f.KeyBind:SetClickFunction(set_keybind_key, index, nil, "right") --action - f.ActionDrop:SetFixedParameter (index) - f.ActionDrop:Select (data.action) + f.ActionDrop:SetFixedParameter(index) + f.ActionDrop:Select(data.action) --action text f.ActionText.text = data.actiontext f.ActionText:SetEnterFunction (set_action_text, index) @@ -4632,9 +4632,9 @@ function DF:CreateKeybindBox (parent, name, data, callback, width, height, line_ end --copy - f.Copy:SetClickFunction (copy_keybind, index) + f.Copy:SetClickFunction(copy_keybind, index) --delete - f.Delete:SetClickFunction (delete_keybind, index) + f.Delete:SetClickFunction(delete_keybind, index) f:Show() else @@ -4671,7 +4671,7 @@ function DF:CreateKeybindBox (parent, name, data, callback, width, height, line_ f:SetBackdropColor(unpack (backdropColor)) f:SetScript("OnEnter", on_enter) f:SetScript("OnLeave", on_leave) - tinsert (keybindScroll.Frames, f) + tinsert(keybindScroll.Frames, f) f.Index = DF:CreateLabel(f, "1") f.KeyBind = DF:CreateButton (f, set_key_bind, 100, 20, "", _, _, _, "SetNewKeybindButton", _, 0, options_button_template, options_text_template) @@ -4704,7 +4704,7 @@ function DF:CreateKeybindBox (parent, name, data, callback, width, height, line_ local spellType, spellId = GetSpellBookItemInfo (index, "player") if (spellType == "SPELL") then local spellName = GetSpellInfo(spellId) - tinsert (playerSpells, spellName) + tinsert(playerSpells, spellName) end end f.ActionText.WordList = playerSpells @@ -6173,7 +6173,7 @@ function DF:PassLoadFilters (loadTable, encounterID) if (IS_WOW_PROJECT_MAINLINE and loadTable.talent.Enabled) then local talentsInUse = DF:GetCharacterTalents (false, true) local hasTalent - for talentID, _ in pairs (talentsInUse) do + for talentID, _ in pairs(talentsInUse) do if talentID and (loadTable.talent [talentID] or loadTable.talent [talentID .. ""]) then hasTalent = true break @@ -6188,7 +6188,7 @@ function DF:PassLoadFilters (loadTable, encounterID) if (IS_WOW_PROJECT_MAINLINE and loadTable.pvptalent.Enabled) then local talentsInUse = DF:GetCharacterPvPTalents (false, true) local hasTalent - for talentID, _ in pairs (talentsInUse) do + for talentID, _ in pairs(talentsInUse) do if talentID and (loadTable.pvptalent [talentID] or loadTable.pvptalent [talentID .. ""]) then hasTalent = true break @@ -6248,7 +6248,7 @@ function DF:PassLoadFilters (loadTable, encounterID) return end local hasEncounter - for _, ID in pairs (loadTable.encounter_ids) do + for _, ID in pairs(loadTable.encounter_ids) do if (ID == encounterID) then hasEncounter = true break @@ -6265,7 +6265,7 @@ function DF:PassLoadFilters (loadTable, encounterID) local uiMapID = C_Map.GetBestMapForUnit ("player") local hasMapID - for _, ID in pairs (loadTable.map_ids) do + for _, ID in pairs(loadTable.map_ids) do if (ID == zoneMapID or ID == uiMapID) then hasMapID = true break @@ -6355,8 +6355,8 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) --create the radio group for classes local classes = {} - for _, classTable in pairs (DF:GetClassList()) do - tinsert (classes, { + for _, classTable in pairs(DF:GetClassList()) do + tinsert(classes, { name = classTable.Name, set = f.OnRadioCheckboxClick, param = classTable.FileString, @@ -6369,14 +6369,14 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local classGroup = DF:CreateCheckboxGroup (f, classes, name, {width = 200, height = 200, title = "Character Class"}, {offset_x = 130, amount_per_line = 3}) classGroup:SetPoint("topleft", f, "topleft", anchorPositions.class [1], anchorPositions.class [2]) classGroup.DBKey = "class" - tinsert (f.AllRadioGroups, classGroup) + tinsert(f.AllRadioGroups, classGroup) --create the radio group for character spec if IS_WOW_PROJECT_MAINLINE then local specs = {} for _, specID in ipairs(DF:GetClassSpecIDs (select (2, UnitClass ("player")))) do local specID, specName, specDescription, specIcon, specBackground, specRole, specClass = DetailsFramework.GetSpecializationInfoByID (specID) - tinsert (specs, { + tinsert(specs, { name = specName, set = f.OnRadioCheckboxClick, param = specID, @@ -6387,13 +6387,13 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local specGroup = DF:CreateCheckboxGroup (f, specs, name, {width = 200, height = 200, title = "Character Spec"}, {offset_x = 130, amount_per_line = 4}) specGroup:SetPoint("topleft", f, "topleft", anchorPositions.spec [1], anchorPositions.spec [2]) specGroup.DBKey = "spec" - tinsert (f.AllRadioGroups, specGroup) + tinsert(f.AllRadioGroups, specGroup) end --create radio group for character races local raceList = {} for _, raceTable in ipairs(DF:GetCharacterRaceList()) do - tinsert (raceList, { + tinsert(raceList, { name = raceTable.Name, set = f.OnRadioCheckboxClick, param = raceTable.FileString, @@ -6403,13 +6403,13 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local raceGroup = DF:CreateCheckboxGroup (f, raceList, name, {width = 200, height = 200, title = "Character Race"}) raceGroup:SetPoint("topleft", f, "topleft", anchorPositions.race [1], anchorPositions.race [2]) raceGroup.DBKey = "race" - tinsert (f.AllRadioGroups, raceGroup) + tinsert(f.AllRadioGroups, raceGroup) --create radio group for talents if IS_WOW_PROJECT_MAINLINE then local talentList = {} for _, talentTable in ipairs(DF:GetCharacterTalents()) do - tinsert (talentList, { + tinsert(talentList, { name = talentTable.Name, set = f.OnRadioCheckboxClick, param = talentTable.ID, @@ -6420,7 +6420,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local talentGroup = DF:CreateCheckboxGroup (f, talentList, name, {width = 200, height = 200, title = "Characer Talents"}, {offset_x = 150, amount_per_line = 3}) talentGroup:SetPoint("topleft", f, "topleft", anchorPositions.talent [1], anchorPositions.talent [2]) talentGroup.DBKey = "talent" - tinsert (f.AllRadioGroups, talentGroup) + tinsert(f.AllRadioGroups, talentGroup) f.TalentGroup = talentGroup do @@ -6442,14 +6442,14 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local playerTalents = DF:GetCharacterTalents() local indexedTalents = {} for _, talentTable in ipairs(playerTalents) do - tinsert (indexedTalents, talentTable.ID) + tinsert(indexedTalents, talentTable.ID) end --talents selected to load GameCooltip2:AddLine ("select a talent to remove it (added from a different spec or character)", "", 1, "orange", "orange", 9) GameCooltip2:AddLine ("$div", nil, nil, -1, -1) - for talentID, _ in pairs (f.OptionsTable.talent) do + for talentID, _ in pairs(f.OptionsTable.talent) do if (type(talentID) == "number" and not DF.table.find (indexedTalents, talentID)) then local talentID, name, texture, selected, available = GetTalentInfoByID (talentID) if (name) then @@ -6492,9 +6492,9 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local playerTalents = DF:GetCharacterTalents() local indexedTalents = {} for _, talentTable in ipairs(playerTalents) do - tinsert (indexedTalents, talentTable.ID) + tinsert(indexedTalents, talentTable.ID) end - for talentID, _ in pairs (f.OptionsTable.talent) do + for talentID, _ in pairs(f.OptionsTable.talent) do if (type(talentID) == "number" and not DF.table.find (indexedTalents, talentID)) then otherTalents:Show() return @@ -6509,7 +6509,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) if IS_WOW_PROJECT_MAINLINE then local pvpTalentList = {} for _, talentTable in ipairs(DF:GetCharacterPvPTalents()) do - tinsert (pvpTalentList, { + tinsert(pvpTalentList, { name = talentTable.Name, set = f.OnRadioCheckboxClick, param = talentTable.ID, @@ -6520,7 +6520,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local pvpTalentGroup = DF:CreateCheckboxGroup (f, pvpTalentList, name, {width = 200, height = 200, title = "Characer PvP Talents"}, {offset_x = 150, amount_per_line = 3}) pvpTalentGroup:SetPoint("topleft", f, "topleft", anchorPositions.pvptalent [1], anchorPositions.pvptalent [2]) pvpTalentGroup.DBKey = "pvptalent" - tinsert (f.AllRadioGroups, pvpTalentGroup) + tinsert(f.AllRadioGroups, pvpTalentGroup) f.PvPTalentGroup = pvpTalentGroup do @@ -6542,14 +6542,14 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local playerTalents = DF:GetCharacterPvPTalents() local indexedTalents = {} for _, talentTable in ipairs(playerTalents) do - tinsert (indexedTalents, talentTable.ID) + tinsert(indexedTalents, talentTable.ID) end --talents selected to load GameCooltip2:AddLine ("select a talent to remove it (added from a different spec or character)", "", 1, "orange", "orange", 9) GameCooltip2:AddLine ("$div", nil, nil, -1, -1) - for talentID, _ in pairs (f.OptionsTable.pvptalent) do + for talentID, _ in pairs(f.OptionsTable.pvptalent) do if (type(talentID) == "number" and not DF.table.find (indexedTalents, talentID)) then local _, name, texture = GetPvpTalentInfoByID (talentID) if (name) then @@ -6592,9 +6592,9 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local playerTalents = DF:GetCharacterPvPTalents() local indexedTalents = {} for _, talentTable in ipairs(playerTalents) do - tinsert (indexedTalents, talentTable.ID) + tinsert(indexedTalents, talentTable.ID) end - for talentID, _ in pairs (f.OptionsTable.pvptalent) do + for talentID, _ in pairs(f.OptionsTable.pvptalent) do if (type(talentID) == "number" and not DF.table.find (indexedTalents, talentID)) then otherTalents:Show() return @@ -6608,7 +6608,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) --create radio for group types local groupTypes = {} for _, groupTable in ipairs(DF:GetGroupTypes()) do - tinsert (groupTypes, { + tinsert(groupTypes, { name = groupTable.Name, set = f.OnRadioCheckboxClick, param = groupTable.ID, @@ -6618,12 +6618,12 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local groupTypesGroup = DF:CreateCheckboxGroup (f, groupTypes, name, {width = 200, height = 200, title = "Group Types"}) groupTypesGroup:SetPoint("topleft", f, "topleft", anchorPositions.group [1], anchorPositions.group [2]) groupTypesGroup.DBKey = "group" - tinsert (f.AllRadioGroups, groupTypesGroup) + tinsert(f.AllRadioGroups, groupTypesGroup) --create radio for character roles local roleTypes = {} for _, roleTable in ipairs(DF:GetRoleTypes()) do - tinsert (roleTypes, { + tinsert(roleTypes, { name = roleTable.Texture .. " " .. roleTable.Name, set = f.OnRadioCheckboxClick, param = roleTable.ID, @@ -6633,7 +6633,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local roleTypesGroup = DF:CreateCheckboxGroup (f, roleTypes, name, {width = 200, height = 200, title = "Role Types"}) roleTypesGroup:SetPoint("topleft", f, "topleft", anchorPositions.role [1], anchorPositions.role [2]) roleTypesGroup.DBKey = "role" - tinsert (f.AllRadioGroups, roleTypesGroup) + tinsert(f.AllRadioGroups, roleTypesGroup) --create radio group for mythic+ affixes if IS_WOW_PROJECT_MAINLINE then @@ -6641,7 +6641,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) for i = 2, 1000 do local affixName, desc, texture = C_ChallengeMode.GetAffixInfo (i) if (affixName) then - tinsert (affixes, { + tinsert(affixes, { name = affixName, set = f.OnRadioCheckboxClick, param = i, @@ -6653,7 +6653,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) local affixTypesGroup = DF:CreateCheckboxGroup (f, affixes, name, {width = 200, height = 200, title = "M+ Affixes"}) affixTypesGroup:SetPoint("topleft", f, "topleft", anchorPositions.affix [1], anchorPositions.affix [2]) affixTypesGroup.DBKey = "affix" - tinsert (f.AllRadioGroups, affixTypesGroup) + tinsert(f.AllRadioGroups, affixTypesGroup) end --text entries functions @@ -6676,7 +6676,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) ID = DF:trim (ID) ID = tonumber (ID) if (ID) then - tinsert (f.OptionsTable [self.DBKey], ID) + tinsert(f.OptionsTable [self.DBKey], ID) f.OptionsTable [self.DBKey].Enabled = true end end @@ -6694,7 +6694,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) encounterIDEditbox.tooltip = encounterIDEditbox.tooltip .. encounterTable.ID .. " - " .. encounterTable.Name .. "\n" end encounterIDEditbox:SetHook("OnEnterPressed", textEntryOnEnterPressed) - tinsert (f.AllTextEntries, encounterIDEditbox) + tinsert(f.AllTextEntries, encounterIDEditbox) --create the text entry for map ID local mapIDLabel = DF:CreateLabel(f, "Map ID", DF:GetTemplate ("font", "ORANGE_FONT_TEMPLATE")) @@ -6705,14 +6705,14 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) mapIDEditbox.Refresh = textEntryRefresh mapIDEditbox.tooltip = "Enter multiple IDs separating with a whitespace\nExample: 35 45 95" mapIDEditbox:SetHook("OnEnterPressed", textEntryOnEnterPressed) - tinsert (f.AllTextEntries, mapIDEditbox) + tinsert(f.AllTextEntries, mapIDEditbox) function f.Refresh (self) if IS_WOW_PROJECT_MAINLINE then --update the talents (might have changed if the player changed its specialization) local talentList = {} for _, talentTable in ipairs(DF:GetCharacterTalents()) do - tinsert (talentList, { + tinsert(talentList, { name = talentTable.Name, set = DetailsFrameworkLoadConditionsPanel.OnRadioCheckboxClick, param = talentTable.ID, @@ -6726,7 +6726,7 @@ function DF:OpenLoadConditionsPanel (optionsTable, callback, frameOptions) if IS_WOW_PROJECT_MAINLINE then local pvpTalentList = {} for _, talentTable in ipairs(DF:GetCharacterPvPTalents()) do - tinsert (pvpTalentList, { + tinsert(pvpTalentList, { name = talentTable.Name, set = DetailsFrameworkLoadConditionsPanel.OnRadioCheckboxClick, param = talentTable.ID, @@ -6785,7 +6785,7 @@ DF.DataScrollFunctions = { for i = 1, #data do for o = 1, #data[i] do if (data[i][o]:find (filter)) then - tinsert (currentData, data[i]) + tinsert(currentData, data[i]) break end end @@ -6993,7 +6993,7 @@ end function DF:CreateNewsFrame (parent, name, options, newsTable, db) local f = DF:CreateSimplePanel (parent, 400, 700, options and options.title or default_newsframe_options.title, name, {UseScaleBar = db and true}, db) - f:SetFrameStrata ("MEDIUM") + f:SetFrameStrata("MEDIUM") DF:ApplyStandardBackdrop (f) DF:Mixin (f, DF.OptionsFunctions) @@ -7350,11 +7350,11 @@ DF.StatusBarFunctions = { end function UnitFrameStats() - for functionName, functionTable in pairs (debugPerformance.CPUUsageByFunction) do + for functionName, functionTable in pairs(debugPerformance.CPUUsageByFunction) do debugPerformance.CPUUsageByFunction [functionName] = floor (functionTable.usage) end - for functionName, functionTable in pairs (debugPerformance.CPUUsageByFunction) do + for functionName, functionTable in pairs(debugPerformance.CPUUsageByFunction) do debugPerformance.CPUUsageByFunction [functionName] = {usage = 0, last = 0, active = false} end end @@ -9055,7 +9055,7 @@ function DF:CreateBorderFrame (parent, name) local leftBorder = f:CreateTexture(nil, "overlay") leftBorder:SetDrawLayer ("overlay", 7) leftBorder:SetColorTexture (1, 1, 1, 1) - tinsert (f.allTextures, leftBorder) + tinsert(f.allTextures, leftBorder) f.leftBorder = leftBorder PixelUtil.SetPoint (leftBorder, "topright", f, "topleft", 0, 1, 0, 1) PixelUtil.SetPoint (leftBorder, "bottomright", f, "bottomleft", 0, -1, 0, -1) @@ -9065,7 +9065,7 @@ function DF:CreateBorderFrame (parent, name) local rightBorder = f:CreateTexture(nil, "overlay") rightBorder:SetDrawLayer ("overlay", 7) rightBorder:SetColorTexture (1, 1, 1, 1) - tinsert (f.allTextures, rightBorder) + tinsert(f.allTextures, rightBorder) f.rightBorder = rightBorder PixelUtil.SetPoint (rightBorder, "topleft", f, "topright", 0, 1, 0, 1) PixelUtil.SetPoint (rightBorder, "bottomleft", f, "bottomright", 0, -1, 0, -1) @@ -9075,7 +9075,7 @@ function DF:CreateBorderFrame (parent, name) local topBorder = f:CreateTexture(nil, "overlay") topBorder:SetDrawLayer ("overlay", 7) topBorder:SetColorTexture (1, 1, 1, 1) - tinsert (f.allTextures, topBorder) + tinsert(f.allTextures, topBorder) f.topBorder = topBorder PixelUtil.SetPoint (topBorder, "bottomleft", f, "topleft", 0, 0, 0, 0) PixelUtil.SetPoint (topBorder, "bottomright", f, "topright", 0, 0, 0, 0) @@ -9085,7 +9085,7 @@ function DF:CreateBorderFrame (parent, name) local bottomBorder = f:CreateTexture(nil, "overlay") bottomBorder:SetDrawLayer ("overlay", 7) bottomBorder:SetColorTexture (1, 1, 1, 1) - tinsert (f.allTextures, bottomBorder) + tinsert(f.allTextures, bottomBorder) f.bottomBorder = bottomBorder PixelUtil.SetPoint (bottomBorder, "topleft", f, "bottomleft", 0, 0, 0, 0) PixelUtil.SetPoint (bottomBorder, "topright", f, "bottomright", 0, 0, 0, 0) @@ -10289,7 +10289,7 @@ function DF:ShowErrorMessage (errorMessage, titleText) if (not DF.ErrorMessagePanel) then local f = CreateFrame("frame", "DetailsFrameworkErrorMessagePanel", UIParent, "BackdropTemplate") f:SetSize(400, 120) - f:SetFrameStrata ("FULLSCREEN") + f:SetFrameStrata("FULLSCREEN") f:SetPoint("center", UIParent, "center", 0, 100) f:EnableMouse (true) f:SetMovable (true) @@ -10297,7 +10297,7 @@ function DF:ShowErrorMessage (errorMessage, titleText) f:SetScript("OnDragStart", function() f:StartMoving() end) f:SetScript("OnDragStop", function() f:StopMovingOrSizing() end) f:SetScript("OnMouseDown", function(self, button) if (button == "RightButton") then f:Hide() end end) - tinsert (UISpecialFrames, "DetailsFrameworkErrorMessagePanel") + tinsert(UISpecialFrames, "DetailsFrameworkErrorMessagePanel") DF.ErrorMessagePanel = f DF:CreateTitleBar (f, "Details! Framework Error!") @@ -10316,7 +10316,7 @@ function DF:ShowErrorMessage (errorMessage, titleText) closeButton:SetPoint("bottom", f, "bottom", 0, 5) f.closeButton = closeButton - closeButton:SetClickFunction (function() + closeButton:SetClickFunction(function() f:Hide() end) diff --git a/Libs/DF/pictureedit.lua b/Libs/DF/pictureedit.lua index 3c0ce753a..474e50393 100644 --- a/Libs/DF/pictureedit.lua +++ b/Libs/DF/pictureedit.lua @@ -13,7 +13,7 @@ local CreateImageEditorFrame = function() editorWindow:SetResizable(true) editorWindow:SetMovable (true) editorWindow:SetClampedToScreen (true) - tinsert (UISpecialFrames, "DetailsFrameworkImageEdit") + tinsert(UISpecialFrames, "DetailsFrameworkImageEdit") editorWindow:SetFrameStrata("TOOLTIP") if (not DetailsFramework.IsDragonflight()) then @@ -196,7 +196,7 @@ local CreateImageEditorFrame = function() buttonsBackground:SetPoint("topright", background_frame, "topright", -8, -10) buttonsBackground:Hide() --buttonsBackground:SetMovable (true) - tinsert (UISpecialFrames, "DetailsFrameworkImageEditButtonsBg") + tinsert(UISpecialFrames, "DetailsFrameworkImageEditButtonsBg") buttonsBackground:SetFrameStrata("TOOLTIP") local alphaFrameShown = false @@ -367,7 +367,7 @@ local CreateImageEditorFrame = function() resizer:SetFrameLevel (editorWindow.widget:GetFrameLevel() + 2) resizer:SetScript("OnMouseDown", function(self, button) - editorWindow.widget:StartSizing ("BOTTOMRIGHT") + editorWindow.widget:StartSizing("BOTTOMRIGHT") end) resizer:SetScript("OnMouseUp", function(self, button) diff --git a/Libs/DF/slider.lua b/Libs/DF/slider.lua index f600eae65..160931446 100644 --- a/Libs/DF/slider.lua +++ b/Libs/DF/slider.lua @@ -318,7 +318,7 @@ DF:Mixin(DFSliderMetaFunctions, DF.FrameMixin) return end - DetailsFrameworkSliderButtons1:ShowMe (slider) + DetailsFrameworkSliderButtons1:ShowMe(slider) local capsule = slider.MyObject local kill = capsule:RunHooksForWidget ("OnEnter", slider, capsule) @@ -335,12 +335,12 @@ DF:Mixin(DFSliderMetaFunctions, DF.FrameMixin) if (slider.MyObject.have_tooltip and slider.MyObject.have_tooltip ~= "Right Click to Type the Value") then GameCooltip2:Preset (2) GameCooltip2:AddLine (slider.MyObject.have_tooltip) - GameCooltip2:ShowCooltip (slider, "tooltip") + GameCooltip2:ShowCooltip(slider, "tooltip") else GameCooltip2:Preset (2) GameCooltip2:AddLine ("Right Click to Type the Value", "", 1, "", "", 10) GameCooltip2:AddIcon ([[Interface\TUTORIALFRAME\UI-TUTORIAL-FRAME]], 1, 1, 16, 16, 0.015625, 0.15671875, 0.640625, 0.798828125) - GameCooltip2:ShowCooltip (slider, "tooltip") + GameCooltip2:ShowCooltip(slider, "tooltip") end end @@ -364,7 +364,7 @@ DF:Mixin(DFSliderMetaFunctions, DF.FrameMixin) slider:SetBackdropBorderColor(unpack (slider.MyObject.onleave_backdrop_border_color)) end - GameCooltip2:ShowMe (false) + GameCooltip2:ShowMe(false) end @@ -390,7 +390,7 @@ DF:Mixin(DFSliderMetaFunctions, DF.FrameMixin) f:SetPoint("bottomleft", host, "topleft", -5, -5) f:SetPoint("bottomright", host, "topright", 5, -5) - f:SetFrameStrata ("FULLSCREEN") + f:SetFrameStrata("FULLSCREEN") f:SetFrameLevel (host:GetFrameLevel() + 1000) f:Show() if (f.isGoingToHide) then @@ -409,8 +409,8 @@ DF:Mixin(DFSliderMetaFunctions, DF.FrameMixin) local buttonPlus = CreateFrame("button", "DetailsFrameworkSliderButtonsPlusButton", f, "BackdropTemplate") local buttonMinor = CreateFrame("button", "DetailsFrameworkSliderButtonsMinorButton", f, "BackdropTemplate") - buttonPlus:SetFrameStrata (f:GetFrameStrata()) - buttonMinor:SetFrameStrata (f:GetFrameStrata()) + buttonPlus:SetFrameStrata(f:GetFrameStrata()) + buttonMinor:SetFrameStrata(f:GetFrameStrata()) buttonPlus:SetScript("OnEnter", function(self) if (f.isGoingToHide) then @@ -470,13 +470,13 @@ DF:Mixin(DFSliderMetaFunctions, DF.FrameMixin) if (f.host.fine_tuning) then f.host:SetValue(current + f.host.fine_tuning) if (editbox and DFSliderMetaFunctions.editbox_typevalue:IsShown()) then - DFSliderMetaFunctions.editbox_typevalue:SetText(tostring (string.format ("%.2f", current + f.host.fine_tuning))) + DFSliderMetaFunctions.editbox_typevalue:SetText(tostring (string.format("%.2f", current + f.host.fine_tuning))) end else if (f.host.useDecimals) then f.host:SetValue(current + 0.1) if (editbox and DFSliderMetaFunctions.editbox_typevalue:IsShown()) then - DFSliderMetaFunctions.editbox_typevalue:SetText(string.format ("%.2f", current + 0.1)) + DFSliderMetaFunctions.editbox_typevalue:SetText(string.format("%.2f", current + 0.1)) end else f.host:SetValue(current + 1) @@ -522,13 +522,13 @@ DF:Mixin(DFSliderMetaFunctions, DF.FrameMixin) if (f.host.fine_tuning) then f.host:SetValue(current - f.host.fine_tuning) if (editbox and DFSliderMetaFunctions.editbox_typevalue:IsShown()) then - DFSliderMetaFunctions.editbox_typevalue:SetText(tostring (string.format ("%.2f", current - f.host.fine_tuning))) + DFSliderMetaFunctions.editbox_typevalue:SetText(tostring (string.format("%.2f", current - f.host.fine_tuning))) end else if (f.host.useDecimals) then f.host:SetValue(current - 0.1) if (editbox and DFSliderMetaFunctions.editbox_typevalue:IsShown()) then - DFSliderMetaFunctions.editbox_typevalue:SetText(string.format ("%.2f", current - 0.1)) + DFSliderMetaFunctions.editbox_typevalue:SetText(string.format("%.2f", current - 0.1)) end else f.host:SetValue(current - 1) @@ -634,7 +634,7 @@ DF:Mixin(DFSliderMetaFunctions, DF.FrameMixin) DFSliderMetaFunctions.editbox_typevalue:SetFrameLevel (self.widget:GetFrameLevel()+1) if (self.useDecimals) then - DFSliderMetaFunctions.editbox_typevalue:SetText(tostring (string.format ("%.1f", self.value))) + DFSliderMetaFunctions.editbox_typevalue:SetText(tostring (string.format("%.1f", self.value))) else DFSliderMetaFunctions.editbox_typevalue:SetText(tostring (math.floor (self.value))) end @@ -732,7 +732,7 @@ DF:Mixin(DFSliderMetaFunctions, DF.FrameMixin) end if (slider.MyObject.useDecimals) then - slider.amt:SetText(string.format ("%.2f", amt)) + slider.amt:SetText(string.format("%.2f", amt)) else slider.amt:SetText(math.floor (amt)) end @@ -931,7 +931,7 @@ function DF:NewSwitch (parent, container, name, member, w, h, ltext, rtext, defa w = w or 60 h = h or 20 - local slider = DF:NewButton (parent, container, name, member, w, h) + local slider = DF:NewButton(parent, container, name, member, w, h) slider.HookList.OnSwitch = {} slider.switch_func = switch_func @@ -1124,7 +1124,7 @@ function DF:NewSlider (parent, container, name, member, w, h, min, max, step, de if (not APISliderFunctions) then APISliderFunctions = true local idx = getmetatable (SliderObject.slider).__index - for funcName, funcAddress in pairs (idx) do + for funcName, funcAddress in pairs(idx) do if (not DFSliderMetaFunctions [funcName]) then DFSliderMetaFunctions [funcName] = function(object, ...) local x = loadstring ( "return _G['"..object.slider:GetName().."']:"..funcName.."(...)") @@ -1166,7 +1166,7 @@ function DF:NewSlider (parent, container, name, member, w, h, min, max, step, de end if (SliderObject.useDecimals) then - SliderObject.amt:SetText(string.format ("%.2f", amt)) + SliderObject.amt:SetText(string.format("%.2f", amt)) else SliderObject.amt:SetText(math.floor (amt)) end diff --git a/Libs/DF/spells.lua b/Libs/DF/spells.lua index b1f07a6f1..2167a89c5 100644 --- a/Libs/DF/spells.lua +++ b/Libs/DF/spells.lua @@ -1231,9 +1231,9 @@ DF.CooldownsRaid = {} DF.CooldownsAllDeffensive = {} -for specId, cooldownTable in pairs (DF.CooldownsBySpec) do +for specId, cooldownTable in pairs(DF.CooldownsBySpec) do - for spellId, cooldownType in pairs (cooldownTable) do + for spellId, cooldownType in pairs(cooldownTable) do if (cooldownType == 1) then DF.CooldownsAttack [spellId] = true @@ -1260,7 +1260,7 @@ for specId, cooldownTable in pairs (DF.CooldownsBySpec) do end function DF:FindClassForCooldown (spellId) - for specId, cooldownTable in pairs (DF.CooldownsBySpec) do + for specId, cooldownTable in pairs(DF.CooldownsBySpec) do local hasCooldown = cooldownTable [spellId] if (hasCooldown) then return DF.SpecIds [specId] @@ -1441,15 +1441,15 @@ function DF:GetSpellsForEncounterFromJournal (instanceEJID, encounterEJID) if (sectionInfo) then if (sectionInfo.spellID and type (sectionInfo.spellID) == "number" and sectionInfo.spellID ~= 0) then - tinsert (spellIDs, sectionInfo.spellID) + tinsert(spellIDs, sectionInfo.spellID) end local nextChild, nextSibling = sectionInfo.firstChildSectionID, sectionInfo.siblingSectionID if (nextSibling) then - tinsert (nextID, nextSibling) + tinsert(nextID, nextSibling) end if (nextChild) then - tinsert (nextID, nextChild) + tinsert(nextID, nextChild) end else break diff --git a/Libs/DF/split_bar.lua b/Libs/DF/split_bar.lua index 8df1b4d87..f0773977d 100644 --- a/Libs/DF/split_bar.lua +++ b/Libs/DF/split_bar.lua @@ -458,11 +458,11 @@ local SplitBarMetaFunctions = _G[DF.GlobalWidgetControlNames ["split_bar"]] end -- frame stratas - function SplitBarMetaFunctions:SetFrameStrata (strata) + function SplitBarMetaFunctions:SetFrameStrata(strata) if (_type(strata) == "table") then - self.statusbar:SetFrameStrata (strata:GetFrameStrata()) + self.statusbar:SetFrameStrata(strata:GetFrameStrata()) else - self.statusbar:SetFrameStrata (strata) + self.statusbar:SetFrameStrata(strata) end end @@ -572,7 +572,7 @@ local SplitBarMetaFunctions = _G[DF.GlobalWidgetControlNames ["split_bar"]] if (frame.MyObject.have_tooltip) then GameCooltip2:Reset() GameCooltip2:AddLine (frame.MyObject.have_tooltip) - GameCooltip2:ShowCooltip (frame, "tooltip") + GameCooltip2:ShowCooltip(frame, "tooltip") end end @@ -584,7 +584,7 @@ local SplitBarMetaFunctions = _G[DF.GlobalWidgetControlNames ["split_bar"]] end if (frame.MyObject.have_tooltip) then - DF.popup:ShowMe (false) + DF.popup:ShowMe(false) end end @@ -755,7 +755,7 @@ function DF:NewSplitBar (parent, container, name, member, w, h) if (not APISplitBarFunctions) then APISplitBarFunctions = true local idx = getmetatable (SplitBarObject.statusbar).__index - for funcName, funcAddress in pairs (idx) do + for funcName, funcAddress in pairs(idx) do if (not SplitBarMetaFunctions [funcName]) then SplitBarMetaFunctions [funcName] = function(object, ...) local x = loadstring ( "return _G['"..object.statusbar:GetName().."']:"..funcName.."(...)") diff --git a/Libs/DF/textentry.lua b/Libs/DF/textentry.lua index 8fe520164..77b9f0d47 100644 --- a/Libs/DF/textentry.lua +++ b/Libs/DF/textentry.lua @@ -296,7 +296,7 @@ DF.TextEntryCounter = DF.TextEntryCounter or 1 if (capsule.have_tooltip) then GameCooltip2:Preset (2) GameCooltip2:AddLine (capsule.have_tooltip) - GameCooltip2:ShowCooltip (textentry, "tooltip") + GameCooltip2:ShowCooltip(textentry, "tooltip") end textentry.mouse_over = true @@ -316,7 +316,7 @@ DF.TextEntryCounter = DF.TextEntryCounter or 1 end if (textentry.MyObject.have_tooltip) then - GameCooltip2:ShowMe (false) + GameCooltip2:ShowMe(false) end textentry.mouse_over = false @@ -580,7 +580,7 @@ function DF:NewTextEntry (parent, container, name, member, w, h, func, param1, p if (not APITextEntryFunctions) then APITextEntryFunctions = true local idx = getmetatable (TextEntryObject.editbox).__index - for funcName, funcAddress in pairs (idx) do + for funcName, funcAddress in pairs(idx) do if (not TextEntryMetaFunctions [funcName]) then TextEntryMetaFunctions [funcName] = function(object, ...) local x = loadstring ( "return _G['"..object.editbox:GetName().."']:"..funcName.."(...)") @@ -1099,7 +1099,7 @@ function DF:NewSpecialLuaEditorEntry (parent, w, h, member, name, nointent, show scrollframeNumberLines.editbox:SetPoint("bottomright", borderframe, "bottomright", -30, 10) scrollframeNumberLines:SetScrollChild (scrollframeNumberLines.editbox) - scrollframeNumberLines:EnableMouseWheel (false) + scrollframeNumberLines:EnableMouseWheel(false) for i = 1, 1000 do scrollframeNumberLines.editbox:Insert (i .. "\n") diff --git a/Libs/LibOpenRaid/LibOpenRaid.lua b/Libs/LibOpenRaid/LibOpenRaid.lua index f5466a0b5..49ec45964 100644 --- a/Libs/LibOpenRaid/LibOpenRaid.lua +++ b/Libs/LibOpenRaid/LibOpenRaid.lua @@ -385,7 +385,7 @@ LIB_OPEN_RAID_CAN_LOAD = false function openRaidLib.Schedules.CancelAllUniqueTimers() local registeredUniqueTimers = openRaidLib.Schedules.registeredUniqueTimers for namespace, schedulesTable in pairs(registeredUniqueTimers) do - for scheduleName, timerObject in pairs (schedulesTable) do + for scheduleName, timerObject in pairs(schedulesTable) do if (timerObject and not timerObject:IsCancelled()) then timerObject:Cancel() end diff --git a/Libs/NickTag-1.0/NickTag-1.0.lua b/Libs/NickTag-1.0/NickTag-1.0.lua index e14d4c3b9..618ee94b4 100644 --- a/Libs/NickTag-1.0/NickTag-1.0.lua +++ b/Libs/NickTag-1.0/NickTag-1.0.lua @@ -69,7 +69,7 @@ end "ResetPlayerPersona" } function NickTag:Embed (target) - for k, v in pairs (embed_functions) do + for k, v in pairs(embed_functions) do target[v] = self[v] end self.embeds [target] = true @@ -391,7 +391,7 @@ end if (playerName) then local player = NickTag:GetNicknameTable (playerName) if (player and pool.last_version == minor) then - for thisPlayerName, _ in pairs (pool) do + for thisPlayerName, _ in pairs(pool) do if (thisPlayerName ~= playerName) then pool [thisPlayerName] = nil end @@ -418,7 +418,7 @@ end siblingsPools [#siblingsPools + 1] = _table --copy all players into the sibling table - for key, value in pairs (pool) do + for key, value in pairs(pool) do _table [key] = value end @@ -445,7 +445,7 @@ end function NickTag:SyncSiblings() --copy all data into siblings table for _, syblingTable in ipairs(siblingsPools) do - for key, value in pairs (pool) do + for key, value in pairs(pool) do syblingTable [key] = value end end @@ -829,7 +829,7 @@ end --choose avatar window do local avatar_pick_frame = CreateFrame("frame", "AvatarPickFrame", UIParent,"BackdropTemplate") - avatar_pick_frame:SetFrameStrata ("DIALOG") + avatar_pick_frame:SetFrameStrata("DIALOG") avatar_pick_frame:SetBackdrop({bgFile = [[Interface\FrameGeneral\UI-Background-Marble]], edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]], tile = true, tileSize = 256, edgeSize = 32, insets = {left = 11, right = 12, top = 12, bottom = 11}}) avatar_pick_frame:SetBackdropColor(.3, .3, .3, .9) avatar_pick_frame:SetWidth(460) diff --git a/boot.lua b/boot.lua index db5eb2095..ac012815a 100644 --- a/boot.lua +++ b/boot.lua @@ -6,8 +6,8 @@ local version, build, date, tocversion = GetBuildInfo() - _detalhes.build_counter = 10135 - _detalhes.alpha_build_counter = 10135 --if this is higher than the regular counter, use it instead + _detalhes.build_counter = 10136 + _detalhes.alpha_build_counter = 10136 --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 @@ -868,12 +868,12 @@ do --Event Frame _detalhes.listener = _CreateFrame ("Frame", nil, _UIParent) _detalhes.listener:RegisterEvent ("ADDON_LOADED") - _detalhes.listener:SetFrameStrata ("LOW") + _detalhes.listener:SetFrameStrata("LOW") _detalhes.listener:SetFrameLevel (9) _detalhes.listener.FrameTime = 0 _detalhes.overlay_frame = _CreateFrame ("Frame", nil, _UIParent) - _detalhes.overlay_frame:SetFrameStrata ("TOOLTIP") + _detalhes.overlay_frame:SetFrameStrata("TOOLTIP") --Pet Owner Finder _CreateFrame ("GameTooltip", "DetailsPetOwnerFinder", nil, "GameTooltipTemplate") @@ -989,7 +989,7 @@ do if (type(t) ~= "table") then return end - for a,b in pairs (t) do + for a,b in pairs(t) do print (a,b) end end diff --git a/classes/class_combat.lua b/classes/class_combat.lua index 85fc4b3fe..d9da206bb 100644 --- a/classes/class_combat.lua +++ b/classes/class_combat.lua @@ -714,7 +714,7 @@ end --frags - for fragName, fragAmount in pairs (combate2.frags) do + for fragName, fragAmount in pairs(combate2.frags) do if (fragAmount) then if (combate1.frags [fragName]) then combate1.frags [fragName] = combate1.frags [fragName] - fragAmount @@ -727,7 +727,7 @@ --alternate power local overallPowerTable = combate1.alternate_power - for actorName, powerTable in pairs (combate2.alternate_power) do + for actorName, powerTable in pairs(combate2.alternate_power) do local power = overallPowerTable [actorName] if (power) then power.total = power.total - powerTable.total @@ -769,7 +769,7 @@ --alternate power local overallPowerTable = combate1.alternate_power - for actorName, powerTable in pairs (combate2.alternate_power) do + for actorName, powerTable in pairs(combate2.alternate_power) do local power = overallPowerTable [actorName] if (not power) then power = combate1:CreateAlternatePowerTable (actorName) diff --git a/classes/class_custom.lua b/classes/class_custom.lua index 4e6fa2dbf..bd04a44ac 100644 --- a/classes/class_custom.lua +++ b/classes/class_custom.lua @@ -1234,7 +1234,7 @@ --get the spell buff uptime container local buff_uptime_container = player.buff_uptime and player.buff_uptime_spells and player.buff_uptime_spells._ActorTable if (buff_uptime_container) then - for spellId, _ in pairs (DetailsFramework.PotionIDs) do + for spellId, _ in pairs(DetailsFramework.PotionIDs) do local potionUsed = buff_uptime_container [spellId] if (potionUsed) then @@ -1282,7 +1282,7 @@ --get the misc actor container local buff_uptime_container = player.buff_uptime and player.buff_uptime_spells and player.buff_uptime_spells._ActorTable if (buff_uptime_container) then - for spellId, _ in pairs (DetailsFramework.PotionIDs) do + for spellId, _ in pairs(DetailsFramework.PotionIDs) do local potionUsed = buff_uptime_container [spellId] if (potionUsed) then @@ -1337,7 +1337,7 @@ for index, character in ipairs(AllHealCharacters) do local AllSpells = character:GetSpellList() local found = false - for spellid, spell in pairs (AllSpells) do + for spellid, spell in pairs(AllSpells) do if (DETAILS_HEALTH_POTION_LIST [spellid]) then instance_container:AddValue (character, spell.total) total = total + spell.total @@ -1436,7 +1436,7 @@ ]], percent_script = [[ local value, top, total, combat, instance = ... - return string.format ("%.1f", value/top*100) + return string.format("%.1f", value/top*100) ]], script = [[ --init: @@ -1500,7 +1500,7 @@ ]], percent_script = [[ local value, top, total, combat, instance = ... - return string.format ("%.1f", value/top*100) + return string.format("%.1f", value/top*100) ]], script = [[ --init: @@ -1584,8 +1584,8 @@ tooltip = [[ local actor, combat, instance = ... local spells = {} - for spellid, spell in pairs (actor.cc_done_spells._ActorTable) do - tinsert (spells, {spellid, spell.counter}) + for spellid, spell in pairs(actor.cc_done_spells._ActorTable) do + tinsert(spells, {spellid, spell.counter}) end table.sort (spells, _detalhes.Sort2) @@ -1598,8 +1598,8 @@ end local targets = {} - for playername, amount in pairs (actor.cc_done_targets) do - tinsert (targets, {playername, amount}) + for playername, amount in pairs(actor.cc_done_targets) do + tinsert(targets, {playername, amount}) end table.sort (targets, _detalhes.Sort2) @@ -1644,7 +1644,7 @@ for i, custom in ipairs(self.custom) do if (custom.name == Loc ["STRING_CUSTOM_CC_DONE"]) then table.remove (self.custom, i) - tinsert (self.custom, i, CC_Done) + tinsert(self.custom, i, CC_Done) have = true end end @@ -1676,7 +1676,7 @@ for index, character in ipairs(misc_actors) do if (character.cc_done and character:IsPlayer()) then - for player_name, amount in pairs (character.cc_done_targets) do + for player_name, amount in pairs(character.cc_done_targets) do local target = combat (1, player_name) or combat (2, player_name) if (target and target:IsPlayer()) then instance_container:AddValue (target, amount) @@ -1706,9 +1706,9 @@ if (character.cc_done and character:IsPlayer()) then local on_actor = character.cc_done_targets [name] if (on_actor) then - tinsert (from, {character:name(), on_actor}) + tinsert(from, {character:name(), on_actor}) - for spellid, spell in pairs (character.cc_done_spells._ActorTable) do + for spellid, spell in pairs(character.cc_done_spells._ActorTable) do local spell_on_actor = spell.targets [name] if (spell_on_actor) then @@ -1720,7 +1720,7 @@ end end if (not has_spell) then - tinsert (spells, {spellid, spell_on_actor}) + tinsert(spells, {spellid, spell_on_actor}) end end @@ -1778,7 +1778,7 @@ for i, custom in ipairs(self.custom) do if (custom.name == Loc ["STRING_CUSTOM_CC_RECEIVED"]) then table.remove (self.custom, i) - tinsert (self.custom, i, CC_Received) + tinsert(self.custom, i, CC_Received) have = true end end @@ -1827,7 +1827,7 @@ if (player) then local spells = player:GetSpellList() - for spellid, spell in pairs (spells) do + for spellid, spell in pairs(spells) do instance_container:AddValue (spell, spell.total) total = total + spell.total if (top < spell.total) then @@ -1839,7 +1839,7 @@ for _, PetName in ipairs(player.pets) do local pet = combat (pet_attribute, PetName) if (pet) then - for spellid, spell in pairs (pet:GetSpellList()) do + for spellid, spell in pairs(pet:GetSpellList()) do instance_container:AddValue (spell, spell.total, nil, " (" .. PetName:gsub ((" <.*"), "") .. ")") total = total + spell.total if (top < spell.total) then @@ -1895,7 +1895,7 @@ if (not spell_cast and misc_actor.spell_cast) then local spellname = GetSpellInfo(spell.id) - for casted_spellid, amount in pairs (misc_actor.spell_cast) do + for casted_spellid, amount in pairs(misc_actor.spell_cast) do local casted_spellname = GetSpellInfo(casted_spellid) if (casted_spellname == spellname) then spell_cast = amount .. " (|cFFFFFF00?|r)" @@ -2027,7 +2027,7 @@ percent_script = [[ local value, top, total, combat, instance = ... local dps = _detalhes:ToK (floor (value) / combat:GetCombatTime()) - local percent = string.format ("%.1f", value/total*100) + local percent = string.format("%.1f", value/total*100) return dps .. ", " .. percent ]], } @@ -2046,7 +2046,7 @@ for i, custom in ipairs(self.custom) do if (custom.name == Loc ["STRING_CUSTOM_MYSPELLS"]) then table.remove (self.custom, i) - tinsert (self.custom, i, MySpells) + tinsert(self.custom, i, MySpells) have = true end end @@ -2138,7 +2138,7 @@ for i, custom in ipairs(self.custom) do if (custom.name == Loc ["STRING_CUSTOM_DAMAGEONSKULL"]) then table.remove (self.custom, i) - tinsert (self.custom, i, DamageOnSkullTarget) + tinsert(self.custom, i, DamageOnSkullTarget) have = true end end @@ -2268,7 +2268,7 @@ for i, custom in ipairs(self.custom) do if (custom.name == Loc ["STRING_CUSTOM_DAMAGEONANYMARKEDTARGET"]) then table.remove (self.custom, i) - tinsert (self.custom, i, DamageOnAnyTarget) + tinsert(self.custom, i, DamageOnAnyTarget) have = true end end @@ -2357,7 +2357,7 @@ if (player) then playerTotal = playerTotal + player.total local playerSpells = player:GetSpellList() - for spellID, spellTable in pairs (playerSpells) do + for spellID, spellTable in pairs(playerSpells) do AllSpells [spellID] = spellTable.total end end @@ -2367,15 +2367,15 @@ if (player) then playerTotal = playerTotal + player.total local playerSpells = player:GetSpellList() - for spellID, spellTable in pairs (playerSpells) do + for spellID, spellTable in pairs(playerSpells) do AllSpells [spellID] = (AllSpells [spellID] or 0) + (spellTable.total or 0) end end end local sortedList = {} - for spellID, total in pairs (AllSpells) do - tinsert (sortedList, {spellID, total}) + for spellID, total in pairs(AllSpells) do + tinsert(sortedList, {spellID, total}) end table.sort (sortedList, Details.Sort2) diff --git a/classes/class_damage.lua b/classes/class_damage.lua index fbd3f9878..1fb5f3332 100644 --- a/classes/class_damage.lua +++ b/classes/class_damage.lua @@ -685,7 +685,7 @@ end Details:AddTooltipReportLineText() GameCooltip:SetOption("YSpacingMod", 0) - GameCooltip:SetOwner (thisLine) + GameCooltip:SetOwner(thisLine) GameCooltip:Show() end @@ -695,7 +695,7 @@ end end local on_switch_DTBS_show = function(instance) - instance:TrocaTabela (instance, true, 1, 8) + instance:TrocaTabela(instance, true, 1, 8) return true end @@ -882,7 +882,7 @@ end if (not CustomObject.OnSwitchShow) then CustomObject.OnSwitchShow = on_switch_DTBS_show end - return instance:TrocaTabela (instance.segmento, 5, index) + return instance:TrocaTabela(instance.segmento, 5, index) end end @@ -906,11 +906,11 @@ end new_code = new_code:gsub ("@SPELLID@", spell [1]) new_custom_object.script = new_code - tinsert (Details.custom, new_custom_object) + tinsert(Details.custom, new_custom_object) setmetatable (new_custom_object, Details.atributo_custom) new_custom_object.__index = Details.atributo_custom - return instance:TrocaTabela (instance.segmento, 5, #Details.custom) + return instance:TrocaTabela(instance.segmento, 5, #Details.custom) end local DTBS_format_name = function(player_name) return Details:GetOnlyName (player_name) end @@ -1210,7 +1210,7 @@ end ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --void zones local on_switch_AVZ_show = function(instance) - instance:TrocaTabela (instance, true, 1, 7) + instance:TrocaTabela(instance, true, 1, 7) return true end @@ -1260,7 +1260,7 @@ end local t = tooltip_void_zone_temp [i] if (not t) then t = {} - tinsert (tooltip_void_zone_temp, t) + tinsert(tooltip_void_zone_temp, t) end local target_actor = combat (1, target_name) or combat (2, target_name) or combat (4, target_name) @@ -1319,7 +1319,7 @@ end if (not CustomObject.OnSwitchShow) then CustomObject.OnSwitchShow = on_switch_AVZ_show end - return instance:TrocaTabela (instance.segmento, 5, index) + return instance:TrocaTabela(instance.segmento, 5, index) end end @@ -1348,11 +1348,11 @@ end new_total_code = new_total_code:gsub ("@SPELLID@", spellid) new_custom_object.total_script = new_total_code - tinsert (Details.custom, new_custom_object) + tinsert(Details.custom, new_custom_object) setmetatable (new_custom_object, Details.atributo_custom) new_custom_object.__index = Details.atributo_custom - return instance:TrocaTabela (instance.segmento, 5, #Details.custom) + return instance:TrocaTabela(instance.segmento, 5, #Details.custom) end function atributo_damage:ReportSingleVoidZoneLine (actor, instance, ShiftKeyDown, ControlKeyDown) @@ -1448,7 +1448,7 @@ end local t = tooltip_void_zone_temp [i] if (not t) then t = {} - tinsert (tooltip_void_zone_temp, t) + tinsert(tooltip_void_zone_temp, t) end t[1] = target_name @@ -2279,16 +2279,16 @@ function atributo_damage:RefreshWindow (instancia, combatObject, forcar, exporta if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then for i = instancia.barraS[1], iterLast-1, 1 do if (actorTableContent[i]) then - actorTableContent[i]:RefreshLine (instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[i]:RefreshLine(instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 end end - actorTableContent[myPos]:RefreshLine (instancia, lineContainer, whichRowLine, myPos, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[myPos]:RefreshLine(instancia, lineContainer, whichRowLine, myPos, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 else for i = instancia.barraS[1], iterLast, 1 do if (actorTableContent[i]) then - actorTableContent[i]:RefreshLine (instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[i]:RefreshLine(instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 end end @@ -2298,18 +2298,18 @@ function atributo_damage:RefreshWindow (instancia, combatObject, forcar, exporta if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then for i = instancia.barraS[1], instancia.barraS[2]-1, 1 do if (actorTableContent[i]) then - actorTableContent[i]:RefreshLine (instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[i]:RefreshLine(instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 end end - actorTableContent[myPos]:RefreshLine (instancia, lineContainer, whichRowLine, myPos, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[myPos]:RefreshLine(instancia, lineContainer, whichRowLine, myPos, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 else for i = instancia.barraS[1], instancia.barraS[2], 1 do if (actorTableContent[i]) then - actorTableContent[i]:RefreshLine (instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[i]:RefreshLine(instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 end end @@ -2349,29 +2349,29 @@ function atributo_damage:RefreshWindow (instancia, combatObject, forcar, exporta totalBarIsShown = true if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then - actorTableContent[myPos]:RefreshLine (instancia, lineContainer, whichRowLine, myPos, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[myPos]:RefreshLine(instancia, lineContainer, whichRowLine, myPos, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 for i = iter_last-1, instancia.barraS[1], -1 do if (actorTableContent[i]) then - actorTableContent[i]:RefreshLine (instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[i]:RefreshLine(instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 end end else for i = iter_last, instancia.barraS[1], -1 do if (actorTableContent[i]) then - actorTableContent[i]:RefreshLine (instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[i]:RefreshLine(instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 end end end else if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then - actorTableContent[myPos]:RefreshLine (instancia, lineContainer, whichRowLine, myPos, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[myPos]:RefreshLine(instancia, lineContainer, whichRowLine, myPos, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 for i = instancia.barraS[2]-1, instancia.barraS[1], -1 do if (actorTableContent[i]) then - actorTableContent[i]:RefreshLine (instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[i]:RefreshLine(instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 end end @@ -2379,7 +2379,7 @@ function atributo_damage:RefreshWindow (instancia, combatObject, forcar, exporta -- /run print (Details:GetInstance(1).barraS[2]) -- vai do 5 ao 1 -- qual barra come�a no 1 -- i = 5 at� 1 -- player 5 atualiza na barra 1 / player 1 atualiza na barra 5 for i = instancia.barraS[2], instancia.barraS[1], -1 do if (actorTableContent[i]) then - actorTableContent[i]:RefreshLine (instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) + actorTableContent[i]:RefreshLine(instancia, lineContainer, whichRowLine, i, total, subAttribute, forcar, keyName, combatTime, percentageType, useAnimations, barsShowData, barsBrackets, barsSeparator) whichRowLine = whichRowLine+1 end end @@ -2578,7 +2578,7 @@ local actor_class_color_r, actor_class_color_g, actor_class_color_b end -- ~atualizar ~barra ~update -function atributo_damage:RefreshLine (instance, lineContainer, whichRowLine, rank, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) +function atributo_damage:RefreshLine(instance, lineContainer, whichRowLine, rank, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) local thisLine = lineContainer[whichRowLine] if (not thisLine) then @@ -3454,7 +3454,7 @@ function atributo_damage:ToolTip_DamageDone (instancia, numero, barra, keydown) local allPlayers = {} --all players for this phase for playerName, amount in pairs(playersTable) do - tinsert (allPlayers, {playerName, amount}) + tinsert(allPlayers, {playerName, amount}) totalDamage = totalDamage + amount end table.sort (allPlayers, function(a, b) return a[2] > b[2] end) @@ -3467,7 +3467,7 @@ function atributo_damage:ToolTip_DamageDone (instancia, numero, barra, keydown) end end - tinsert (playerPhases, {phase, playersTable [self.nome] or 0, myRank, (playersTable [self.nome] or 0) / totalDamage * 100}) + tinsert(playerPhases, {phase, playersTable [self.nome] or 0, myRank, (playersTable [self.nome] or 0) / totalDamage * 100}) end table.sort (playerPhases, function(a, b) return a[1] < b[1] end) @@ -3486,12 +3486,12 @@ function atributo_damage:ToolTip_DamageDone (instancia, numero, barra, keydown) end local on_switch_show_enemies = function(instance) - instance:TrocaTabela (instance, true, 1, 6) + instance:TrocaTabela(instance, true, 1, 6) return true end local on_switch_show_frags = function(instance) - instance:TrocaTabela (instance, true, 1, 5) + instance:TrocaTabela(instance, true, 1, 5) return true end @@ -3510,7 +3510,7 @@ function atributo_damage:ReportEnemyDamageTaken (actor, instance, ShiftKeyDown, if (not CustomObject.OnSwitchShow) then CustomObject.OnSwitchShow = fromFrags and on_switch_show_frags or on_switch_show_enemies end - return instance:TrocaTabela (instance.segmento, 5, index) + return instance:TrocaTabela(instance.segmento, 5, index) end end @@ -3529,11 +3529,11 @@ function atributo_damage:ReportEnemyDamageTaken (actor, instance, ShiftKeyDown, OnSwitchShow = fromFrags and on_switch_show_frags or on_switch_show_enemies, } - tinsert (Details.custom, new_custom_object) + tinsert(Details.custom, new_custom_object) setmetatable (new_custom_object, Details.atributo_custom) new_custom_object.__index = Details.atributo_custom - return instance:TrocaTabela (instance.segmento, 5, #Details.custom) + return instance:TrocaTabela(instance.segmento, 5, #Details.custom) end local report_table = {"Details!: " .. actor.nome .. " - " .. Loc ["STRING_ATTRIBUTE_DAMAGE_TAKEN"]} @@ -3778,7 +3778,7 @@ function atributo_damage:ToolTip_DamageTaken (instancia, numero, barra, keydown) for spellid, spell in _pairs(aggressor.spells._ActorTable) do local on_target = spell.targets [self.nome] if (on_target) then - tinsert (all_spells, {spellid, on_target, aggressor.nome}) + tinsert(all_spells, {spellid, on_target, aggressor.nome}) end end @@ -3786,7 +3786,7 @@ function atributo_damage:ToolTip_DamageTaken (instancia, numero, barra, keydown) local friendlyFire = aggressor.friendlyfire [self.nome] if (friendlyFire) then for spellid, amount in _pairs(friendlyFire.spells) do - tinsert (all_spells, {spellid, amount, aggressor.nome}) + tinsert(all_spells, {spellid, amount, aggressor.nome}) end end @@ -4472,7 +4472,7 @@ function atributo_damage:MontaInfoDamageDone() if (barra.mouse_over) then --atualizar o tooltip if (barra.isAlvo) then GameTooltip:Hide() - GameTooltip:SetOwner (barra, "ANCHOR_TOPRIGHT") + GameTooltip:SetOwner(barra, "ANCHOR_TOPRIGHT") if (not barra.minha_tabela:MontaTooltipDamageTaken (barra, index)) then return end @@ -4548,7 +4548,7 @@ function atributo_damage:MontaInfoDamageDone() if (barra.mouse_over) then --atualizar o tooltip if (barra.isAlvo) then --GameTooltip:Hide() - --GameTooltip:SetOwner (barra, "ANCHOR_TOPRIGHT") + --GameTooltip:SetOwner(barra, "ANCHOR_TOPRIGHT") if (not barra.minha_tabela:MontaTooltipAlvos (barra, index, instancia)) then return end @@ -4646,10 +4646,10 @@ function atributo_damage:MontaDetalhesEnemy (spellid, barra) end if (barra.lineText1:IsTruncated()) then - Details:CooltipPreset (2) + Details:CooltipPreset(2) GameCooltip:SetOption("FixedWidth", nil) GameCooltip:AddLine (barra.lineText1.text) - GameCooltip:SetOwner (barra, "bottomleft", "topleft", 5, -10) + GameCooltip:SetOwner(barra, "bottomleft", "topleft", 5, -10) GameCooltip:ShowCooltip() end @@ -5066,7 +5066,7 @@ function Details:BuildPlayerDetailsSpellChart() for i = 1, 200 do local texture = playerDetailSmallChart:CreateTexture(nil, "artwork") texture:SetColorTexture (1, 1, 1, 1) - tinsert (playerDetailSmallChart.Lines, texture) + tinsert(playerDetailSmallChart.Lines, texture) end --Details.playerDetailWindow.grupos_detalhes [index] diff --git a/classes/class_heal.lua b/classes/class_heal.lua index 0da96eb51..63f681f20 100644 --- a/classes/class_heal.lua +++ b/classes/class_heal.lua @@ -455,18 +455,18 @@ function atributo_heal:RefreshWindow (instancia, tabela_do_combate, forcar, expo if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then for i = instancia.barraS[1], iter_last-1, 1 do --vai atualizar s� o range que esta sendo mostrado if (conteudo[i]) then - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 end end - conteudo[myPos]:RefreshLine (instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[myPos]:RefreshLine(instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 else for i = instancia.barraS[1], iter_last, 1 do --vai atualizar s� o range que esta sendo mostrado if (conteudo[i]) then - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 end end @@ -476,17 +476,17 @@ function atributo_heal:RefreshWindow (instancia, tabela_do_combate, forcar, expo if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then for i = instancia.barraS[1], instancia.barraS[2]-1, 1 do --vai atualizar s� o range que esta sendo mostrado if (conteudo[i]) then - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 end end - conteudo[myPos]:RefreshLine (instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[myPos]:RefreshLine(instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 else for i = instancia.barraS[1], instancia.barraS[2], 1 do --vai atualizar s� o range que esta sendo mostrado if (conteudo[i]) then - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 end end @@ -523,36 +523,36 @@ function atributo_heal:RefreshWindow (instancia, tabela_do_combate, forcar, expo Details.FadeHandler.Fader(row1, "out") if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then - conteudo[myPos]:RefreshLine (instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[myPos]:RefreshLine(instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 for i = iter_last-1, instancia.barraS[1], -1 do --vai atualizar s� o range que esta sendo mostrado if (conteudo[i]) then - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 end end else for i = iter_last, instancia.barraS[1], -1 do --vai atualizar s� o range que esta sendo mostrado if (conteudo[i]) then - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 end end end else if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then - conteudo[myPos]:RefreshLine (instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[myPos]:RefreshLine(instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 for i = instancia.barraS[2]-1, instancia.barraS[1], -1 do --vai atualizar s� o range que esta sendo mostrado if (conteudo[i]) then - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 end end else for i = instancia.barraS[2], instancia.barraS[1], -1 do --vai atualizar s� o range que esta sendo mostrado if (conteudo[i]) then - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 end end @@ -594,7 +594,7 @@ end local actor_class_color_r, actor_class_color_g, actor_class_color_b ---function atributo_heal:RefreshLine (instancia, whichRowLine, lugar, total, sub_atributo, forcar) +--function atributo_heal:RefreshLine(instancia, whichRowLine, lugar, total, sub_atributo, forcar) function atributo_heal:RefreshLine(instancia, barras_container, whichRowLine, lugar, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) local thisLine = instancia.barras[whichRowLine] --pega a refer�ncia da barra na janela @@ -1049,7 +1049,7 @@ function atributo_heal:ToolTip_HealingDenied (instancia, numero, barra, keydown) for spellID, spell in _pairs (self.spells._ActorTable) do if (spell.totaldenied > 0 and spell.heal_denied) then --my spells which denied heal - tinsert (spellList, {spell, spell.totaldenied}) + tinsert(spellList, {spell, spell.totaldenied}) --players affected for playerName, amount in _pairs (spell.targets) do @@ -1108,7 +1108,7 @@ function atributo_heal:ToolTip_HealingDenied (instancia, numero, barra, keydown) --Target Players local playerSorted = {} for playerName, amount in _pairs (targetList) do - tinsert (playerSorted, {playerName, amount}) + tinsert(playerSorted, {playerName, amount}) end table.sort (playerSorted, _detalhes.Sort2) _detalhes:AddTooltipSpellHeaderText ("Targets", headerColor, #playerSorted, [[Interface\TUTORIALFRAME\UI-TutorialFrame-LevelUp]], 0.10546875, 0.89453125, 0.05859375, 0.6796875) @@ -1154,7 +1154,7 @@ function atributo_heal:ToolTip_HealingDenied (instancia, numero, barra, keydown) -- Spells Affected local spellsSorted = {} for spellID, amount in _pairs (spellsDenied) do - tinsert (spellsSorted, {spellID, amount}) + tinsert(spellsSorted, {spellID, amount}) end table.sort (spellsSorted, _detalhes.Sort2) _detalhes:AddTooltipSpellHeaderText ("Spells Affected", headerColor, #spellsSorted, [[Interface\TUTORIALFRAME\UI-TutorialFrame-LevelUp]], 0.10546875, 0.89453125, 0.05859375, 0.6796875) @@ -1191,7 +1191,7 @@ function atributo_heal:ToolTip_HealingDenied (instancia, numero, barra, keydown) local healersSorted = {} for healerName, amount in _pairs (healersDenied) do - tinsert (healersSorted, {healerName, amount}) + tinsert(healersSorted, {healerName, amount}) end table.sort (healersSorted, _detalhes.Sort2) @@ -1624,11 +1624,11 @@ function atributo_heal:ToolTip_HealingDone (instancia, numero, barra, keydown) local playerPhases = {} local totalDamage = 0 - for phase, playersTable in pairs (phasesInfo.heal) do --each phase + for phase, playersTable in pairs(phasesInfo.heal) do --each phase local allPlayers = {} --all players for this phase - for playerName, amount in pairs (playersTable) do - tinsert (allPlayers, {playerName, amount}) + for playerName, amount in pairs(playersTable) do + tinsert(allPlayers, {playerName, amount}) totalDamage = totalDamage + amount end table.sort (allPlayers, function(a, b) return a[2] > b[2] end) @@ -1641,7 +1641,7 @@ function atributo_heal:ToolTip_HealingDone (instancia, numero, barra, keydown) end end - tinsert (playerPhases, {phase, playersTable [self.nome] or 0, myRank, (playersTable [self.nome] or 0) / totalDamage * 100}) + tinsert(playerPhases, {phase, playersTable [self.nome] or 0, myRank, (playersTable [self.nome] or 0) / totalDamage * 100}) end table.sort (playerPhases, function(a, b) return a[1] < b[1] end) diff --git a/classes/class_instance.lua b/classes/class_instance.lua index 42859b058..77d8609a8 100644 --- a/classes/class_instance.lua +++ b/classes/class_instance.lua @@ -174,7 +174,7 @@ function _detalhes:GetMode() return self.modo end -function _detalhes:GetInstance (id) +function _detalhes:GetInstance(id) return _detalhes.tabela_instancias [id] end --user friendly alias @@ -249,7 +249,7 @@ end function _detalhes:ResetAttribute() if (self.iniciada) then - self:TrocaTabela (nil, 1, 1, true) + self:TrocaTabela(nil, 1, 1, true) else self.atributo = 1 self.sub_atributo = 1 @@ -501,7 +501,7 @@ end end function _detalhes:ToggleWindow (index) - local window = _detalhes:GetInstance (index) + local window = _detalhes:GetInstance(index) if (window and _getmetatable (window)) then if (window:IsEnabled()) then @@ -526,8 +526,8 @@ end end function _detalhes:CheckCoupleWindows (instance1, instance2) - instance1 = instance1 or _detalhes:GetInstance (1) - instance2 = instance2 or _detalhes:GetInstance (2) + instance1 = instance1 or _detalhes:GetInstance(1) + instance2 = instance2 or _detalhes:GetInstance(2) if (instance1 and instance2 and not instance1.ignore_mass_showhide and not instance1.ignore_mass_showhide) then @@ -560,7 +560,7 @@ end local instance for i = 1, #_detalhes.tabela_instancias do - local this_instance = _detalhes:GetInstance (i) + local this_instance = _detalhes:GetInstance(i) if (this_instance and not this_instance.ignore_mass_showhide) then instance = this_instance break @@ -590,7 +590,7 @@ end -- reabre todas as instancias function _detalhes:ReabrirTodasInstancias (temp) for index = math.min (#_detalhes.tabela_instancias, _detalhes.instances_amount), 1, -1 do - local instancia = _detalhes:GetInstance (index) + local instancia = _detalhes:GetInstance(index) if (instancia and not instancia.ignore_mass_showhide) then instancia:AtivarInstancia (temp, true) end @@ -670,7 +670,7 @@ end end self:ChangeSkin() --carrega a skin aqui que era antes feito dentro do restaura janela - _detalhes:TrocaTabela (self, nil, nil, nil, true) + _detalhes:TrocaTabela(self, nil, nil, nil, true) if (self.hide_icon) then Details.FadeHandler.Fader(self.baseframe.cabecalho.atributo_icon, 1) @@ -743,14 +743,14 @@ end function _detalhes:DeleteInstance (id) - local instance = _detalhes:GetInstance (id) + local instance = _detalhes:GetInstance(id) if (not instance) then return false end --break snaps of previous and next window - local left_instance = _detalhes:GetInstance (id-1) + local left_instance = _detalhes:GetInstance(id-1) if (left_instance) then for snap_side, instance_id in _pairs (left_instance.snap) do if (instance_id == id) then --snap na proxima instancia @@ -758,7 +758,7 @@ end end end end - local right_instance = _detalhes:GetInstance (id+1) + local right_instance = _detalhes:GetInstance(id+1) if (right_instance) then for snap_side, instance_id in _pairs (right_instance.snap) do if (instance_id == id) then --snap na proxima instancia @@ -769,7 +769,7 @@ end --re align snaps for higher instances for i = id+1, #_detalhes.tabela_instancias do - local this_instance = _detalhes:GetInstance (i) + local this_instance = _detalhes:GetInstance(i) --fix the snaps for snap_side, instance_id in _pairs (this_instance.snap) do if (instance_id == i+1) then --snap na proxima instancia @@ -815,7 +815,7 @@ end local new_instance = _detalhes:NovaInstancia (next_id) if (_detalhes.standard_skin) then - for key, value in pairs (_detalhes.standard_skin) do + for key, value in pairs(_detalhes.standard_skin) do if (type(value) == "table") then new_instance [key] = Details.CopyTable (value) else @@ -828,7 +828,7 @@ end --se n�o tiver um padr�o, criar de outra inst�ncia j� aberta. local copy_from for i = 1, next_id-1 do - local opened_instance = _detalhes:GetInstance (i) + local opened_instance = _detalhes:GetInstance(i) if (opened_instance and opened_instance:IsEnabled() and opened_instance.baseframe) then copy_from = opened_instance break @@ -836,7 +836,7 @@ end end if (copy_from) then - for key, value in pairs (copy_from) do + for key, value in pairs(copy_from) do if (_detalhes.instance_defaults [key] ~= nil) then if (type(value) == "table") then new_instance [key] = Details.CopyTable (value) @@ -900,7 +900,7 @@ end ------------------------------------------------------------------------------------------------------------------------ --self � a inst�ncia que esta sendo movida.. instancia � a que esta parada -function _detalhes:EstaAgrupada (esta_instancia, lado) --lado //// 1 = encostou na esquerda // 2 = escostou emaixo // 3 = encostou na direita // 4 = encostou em cima +function _detalhes:EstaAgrupada(esta_instancia, lado) --lado //// 1 = encostou na esquerda // 2 = escostou emaixo // 3 = encostou na direita // 4 = encostou em cima --local meu_snap = self.snap --pegou a tabela com {side, side, side, side} if (esta_instancia.snap [lado]) then @@ -1069,7 +1069,7 @@ function _detalhes:BaseFrameSnap() end end -function _detalhes:agrupar_janelas (lados) +function _detalhes:agrupar_janelas(lados) local instancia = self @@ -1162,7 +1162,7 @@ function _detalhes:agrupar_janelas (lados) _detalhes.temp_table1.IconSize = 32 _detalhes.temp_table1.TextHeightMod = -6 - _detalhes.popup:ShowMe (instancia.break_snap_button, "tooltip", "Interface\\Buttons\\LockButton-Unlocked-Up", Loc ["STRING_UNLOCK"], 150, _detalhes.temp_table1) + _detalhes.popup:ShowMe(instancia.break_snap_button, "tooltip", "Interface\\Buttons\\LockButton-Unlocked-Up", Loc ["STRING_UNLOCK"], 150, _detalhes.temp_table1) --UIFrameFlash (instancia.break_snap_button, .5, .5, 5, false, 0, 0) _detalhes.tutorial.unlock_button = _detalhes.tutorial.unlock_button + 1 @@ -1448,7 +1448,7 @@ end new_instance.LastModo = modo_grupo --change the attribute - _detalhes:TrocaTabela (new_instance, 0, 1, 1) + _detalhes:TrocaTabela(new_instance, 0, 1, 1) --internal stuff new_instance.row_height = new_instance.row_info.height + new_instance.row_info.space.between @@ -1480,7 +1480,7 @@ end instance:ChangeSkin (skin) --overwrite all instance parameters with saved ones - for key, value in pairs (style) do + for key, value in pairs(style) do if (key ~= "skin") then if (type(value) == "table") then instance [key] = Details.CopyTable (value) @@ -1546,13 +1546,13 @@ function _detalhes:RestauraJanela(index, temp, load_only) self.bgframe = _bgframe self.bgdisplay = _bgframe_display self.scroll = _scrollframe - _baseframe:EnableMouseWheel (false) + _baseframe:EnableMouseWheel(false) self.alturaAntiga = _baseframe:GetHeight() --self.isLocked = isLocked --window isn't locked when just created it --change the attribute - _detalhes:TrocaTabela (self, self.segmento, self.atributo, self.sub_atributo, true) --passando true no 5� valor para a fun��o ignorar a checagem de valores iguais + _detalhes:TrocaTabela(self, self.segmento, self.atributo, self.sub_atributo, true) --passando true no 5� valor para a fun��o ignorar a checagem de valores iguais --set wallpaper if (self.wallpaper.enabled) then @@ -1656,7 +1656,7 @@ function _detalhes:SwitchBack() _detalhes.SoloTables:switch (nil, prev_switch [6]) else - _detalhes:TrocaTabela (self, prev_switch [4], prev_switch [2], prev_switch [3]) + _detalhes:TrocaTabela(self, prev_switch [4], prev_switch [2], prev_switch [3]) end self.auto_switch_to_old = nil @@ -1692,7 +1692,7 @@ function _detalhes:SwitchTo (switch_table, nosave) if (self.modo ~= _detalhes._detalhes_props["MODO_GROUP"]) then _detalhes:AlteraModo (self, _detalhes._detalhes_props["MODO_GROUP"]) end - _detalhes:TrocaTabela (self, nil, switch_table [1], switch_table [2]) + _detalhes:TrocaTabela(self, nil, switch_table [1], switch_table [2]) end end @@ -1729,7 +1729,7 @@ function _detalhes:CheckSwitchOnCombatEnd (nowipe, warning) local current_attribute, current_sub_atribute = self:GetDisplay() if (current_attribute ~= old_attribute or current_sub_atribute ~= old_sub_atribute) then local attribute_name = self:GetInstanceAttributeText() - self:InstanceAlert (string.format (Loc ["STRING_SWITCH_WARNING"], attribute_name), {[[Interface\CHARACTERFRAME\UI-StateIcon]], 18, 18, false, 0.5, 1, 0, 0.5}, 4) + self:InstanceAlert (string.format(Loc ["STRING_SWITCH_WARNING"], attribute_name), {[[Interface\CHARACTERFRAME\UI-StateIcon]], 18, 18, false, 0.5, 1, 0, 0.5}, 4) end end @@ -1783,7 +1783,7 @@ function _detalhes:CheckSwitchOnCombatStart (check_segment) if (check_segment and got_switch) then if (self:GetSegment() ~= 0) then - self:TrocaTabela (0) + self:TrocaTabela(0) end end @@ -1813,7 +1813,7 @@ function _detalhes:ExportSkin() } --export the keys - for key, value in pairs (self) do + for key, value in pairs(self) do if (_detalhes.instance_defaults [key] ~= nil) then if (type(value) == "table") then exported [key] = Details.CopyTable (value) @@ -1880,7 +1880,7 @@ function _detalhes:ApplySavedSkin (style) self:ChangeSkin (skin) --overwrite all instance parameters with saved ones - for key, value in pairs (style) do + for key, value in pairs(style) do if (key ~= "skin") then if (type(value) == "table") then self [key] = Details.CopyTable (value) @@ -1891,9 +1891,9 @@ function _detalhes:ApplySavedSkin (style) end --check for new keys inside tables - for key, value in pairs (_detalhes.instance_defaults) do + for key, value in pairs(_detalhes.instance_defaults) do if (type(value) == "table") then - for key2, value2 in pairs (value) do + for key2, value2 in pairs(value) do if (self [key] [key2] == nil) then if (type(value2) == "table") then self [key] [key2] = Details.CopyTable (_detalhes.instance_defaults [key] [key2]) @@ -2198,7 +2198,7 @@ function _detalhes:SetDisplay(segment, attribute, subAttribute, isInstanceStarup return self:TrocaTabela(self, segment, attribute, subAttribute, isInstanceStarup, instanceMode) end -function _detalhes:TrocaTabela (instancia, segmento, atributo, sub_atributo, iniciando_instancia, InstanceMode) +function _detalhes:TrocaTabela(instancia, segmento, atributo, sub_atributo, iniciando_instancia, InstanceMode) if (self and self.meu_id and not instancia) then --self � uma inst�ncia InstanceMode = iniciando_instancia @@ -2324,7 +2324,7 @@ function _detalhes:TrocaTabela (instancia, segmento, atributo, sub_atributo, ini end if (update_coolTip) then - _detalhes.popup:Select (1, segmento+2) + _detalhes.popup:Select(1, segmento+2) end if (instancia.showing and instancia.showing.contra) then @@ -2393,10 +2393,10 @@ function _detalhes:TrocaTabela (instancia, segmento, atributo, sub_atributo, ini if (instancia.modo == modo_alone and not (_detalhes.initializing or iniciando_instancia)) then if (_detalhes.SoloTables.Mode == #_detalhes.SoloTables.Plugins) then - _detalhes.popup:Select (1, 1) + _detalhes.popup:Select(1, 1) else if (_detalhes.PluginCount.SOLO > 0) then - _detalhes.popup:Select (1, _detalhes.SoloTables.Mode+1) + _detalhes.popup:Select(1, _detalhes.SoloTables.Mode+1) end end return _detalhes.SoloTables.switch (nil, nil, -1) @@ -2413,8 +2413,8 @@ function _detalhes:TrocaTabela (instancia, segmento, atributo, sub_atributo, ini instancia:ChangeIcon() if (update_coolTip) then - _detalhes.popup:Select (1, atributo) - _detalhes.popup:Select (2, instancia.sub_atributo, atributo) + _detalhes.popup:Select(1, atributo) + _detalhes.popup:Select(2, instancia.sub_atributo, atributo) end if (_detalhes.cloud_process) then @@ -2948,10 +2948,10 @@ function _detalhes:AlteraModo (instancia, qual, from_mode_menu) checked = 3 end - _detalhes.popup:Select (1, checked) + _detalhes.popup:Select(1, checked) if (from_mode_menu) then - instancia.baseframe.cabecalho.modo_selecao:GetScript ("OnEnter")(instancia.baseframe.cabecalho.modo_selecao, _, true) + instancia.baseframe.cabecalho.modo_selecao:GetScript("OnEnter")(instancia.baseframe.cabecalho.modo_selecao, _, true) --running OnEnter does also trigger an instance enter event, so we need to manually leave the instance: _detalhes.OnLeaveMainWindow(instancia, instancia.baseframe.cabecalho.modo_selecao) @@ -3140,13 +3140,13 @@ function _detalhes:monta_relatorio (este_relatorio, custom) --push it to front local t = tremove (_detalhes.latest_report_table, already_exists) t [4] = amt - tinsert (_detalhes.latest_report_table, 1, t) + tinsert(_detalhes.latest_report_table, 1, t) else if (self.atributo == 5) then local custom_name = self:GetCustomObject():GetName() - tinsert (_detalhes.latest_report_table, 1, {self.meu_id, self.atributo, self.sub_atributo, amt, _detalhes.report_where, custom_name}) + tinsert(_detalhes.latest_report_table, 1, {self.meu_id, self.atributo, self.sub_atributo, amt, _detalhes.report_where, custom_name}) else - tinsert (_detalhes.latest_report_table, 1, {self.meu_id, self.atributo, self.sub_atributo, amt, _detalhes.report_where}) + tinsert(_detalhes.latest_report_table, 1, {self.meu_id, self.atributo, self.sub_atributo, amt, _detalhes.report_where}) end end @@ -3170,7 +3170,7 @@ function _detalhes:monta_relatorio (este_relatorio, custom) if (self.sub_atributo == 5) then --frags local frags = self.showing.frags local reportarFrags = {} - for name, amount in pairs (frags) do + for name, amount in pairs(frags) do --string para imprimir direto sem calculos reportarFrags [#reportarFrags+1] = {frag = tostring (amount), nome = name} end @@ -3284,7 +3284,7 @@ function _detalhes:monta_relatorio (este_relatorio, custom) if (is_reverse) then local t = {} for i = #raw_data_to_report, 1, -1 do - tinsert (t, raw_data_to_report [i]) + tinsert(t, raw_data_to_report [i]) if (#t >= amt) then break end diff --git a/classes/class_resources.lua b/classes/class_resources.lua index d52b1627e..6b4cb4f7f 100644 --- a/classes/class_resources.lua +++ b/classes/class_resources.lua @@ -542,15 +542,15 @@ function atributo_energy:RefreshWindow (instancia, tabela_do_combate, forcar, ex if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then for i = instancia.barraS[1], iter_last-1, 1 do --vai atualizar s� o range que esta sendo mostrado - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 end - conteudo[myPos]:RefreshLine (instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[myPos]:RefreshLine(instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 else for i = instancia.barraS[1], iter_last, 1 do --vai atualizar s� o range que esta sendo mostrado - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 end end @@ -558,15 +558,15 @@ function atributo_energy:RefreshWindow (instancia, tabela_do_combate, forcar, ex else if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then for i = instancia.barraS[1], instancia.barraS[2]-1, 1 do --vai atualizar s� o range que esta sendo mostrado - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 end - conteudo[myPos]:RefreshLine (instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[myPos]:RefreshLine(instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 else for i = instancia.barraS[1], instancia.barraS[2], 1 do --vai atualizar s� o range que esta sendo mostrado - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 end end @@ -602,29 +602,29 @@ function atributo_energy:RefreshWindow (instancia, tabela_do_combate, forcar, ex Details.FadeHandler.Fader(row1, "out") if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then - conteudo[myPos]:RefreshLine (instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[myPos]:RefreshLine(instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 for i = iter_last-1, instancia.barraS[1], -1 do --vai atualizar s� o range que esta sendo mostrado - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 end else for i = iter_last, instancia.barraS[1], -1 do --vai atualizar s� o range que esta sendo mostrado - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 end end else if (following and myPos and myPos > instancia.rows_fit_in_window and instancia.barraS[2] < myPos) then - conteudo[myPos]:RefreshLine (instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[myPos]:RefreshLine(instancia, barras_container, whichRowLine, myPos, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 for i = instancia.barraS[2]-1, instancia.barraS[1], -1 do --vai atualizar s� o range que esta sendo mostrado - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 end else for i = instancia.barraS[2], instancia.barraS[1], -1 do --vai atualizar s� o range que esta sendo mostrado - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) --inst�ncia, index, total, valor da 1� barra whichRowLine = whichRowLine+1 end end @@ -648,7 +648,7 @@ function atributo_energy:RefreshWindow (instancia, tabela_do_combate, forcar, ex end -function atributo_energy:RefreshLine (instancia, barras_container, whichRowLine, lugar, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) +function atributo_energy:RefreshLine(instancia, barras_container, whichRowLine, lugar, total, sub_atributo, forcar, keyName, combat_time, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) local esta_barra = instancia.barras[whichRowLine] --pega a refer�ncia da barra na janela @@ -1002,7 +1002,7 @@ function atributo_energy:ToolTipRegenRecebido (instancia, numero, barra, keydown local allGeneratorSpells = {} local allGenerated = 0 for spellid, spellObject in _pairs (self.spells._ActorTable) do - tinsert (allGeneratorSpells, {spellObject, spellObject.total, spellObject.totalover}) + tinsert(allGeneratorSpells, {spellObject, spellObject.total, spellObject.totalover}) allGenerated = allGenerated + spellObject.total end @@ -1193,7 +1193,7 @@ function atributo_energy:MontaInfoRegenRecebido() if (barra.mouse_over) then --atualizar o tooltip if (barra.isAlvo) then GameTooltip:Hide() - GameTooltip:SetOwner (barra, "ANCHOR_TOPRIGHT") + GameTooltip:SetOwner(barra, "ANCHOR_TOPRIGHT") if (not barra.minha_tabela:MontaTooltipAlvos (barra, index)) then return end diff --git a/classes/class_utility.lua b/classes/class_utility.lua index ea121a170..bcc70fe53 100644 --- a/classes/class_utility.lua +++ b/classes/class_utility.lua @@ -160,7 +160,7 @@ end --try to find a spell with the same name and get the amount of casts of that spell object if (not spell_cast and misc_actor.spell_cast) then local spellname = GetSpellInfo(spellId) - for casted_spellid, amount in pairs (misc_actor.spell_cast) do + for casted_spellid, amount in pairs(misc_actor.spell_cast) do local casted_spellname = GetSpellInfo(casted_spellid) if (casted_spellname == spellname) then return amount, true @@ -391,7 +391,7 @@ local ReportSingleDeathFunc = function(IsCurrent, IsReverse, AmtLines) local title = tremove (t, 1) t = _detalhes.table.reverse (t) - tinsert (t, 1, title) + tinsert(t, 1, title) _detalhes:SendReportLines (t) @@ -444,7 +444,7 @@ function atributo_misc:ReportSingleDeadLine (morte, instancia) hp = 100 end - tinsert (report_array, {elapsed .. " ", spelllink, " (" .. source .. ")", "-" .. _detalhes:ToK (amount) .. " (" .. hp .. "%) "}) + tinsert(report_array, {elapsed .. " ", spelllink, " (" .. source .. ")", "-" .. _detalhes:ToK (amount) .. " (" .. hp .. "%) "}) end elseif (not evento [1] and type (evento [1]) == "boolean") then --heal @@ -463,9 +463,9 @@ function atributo_misc:ReportSingleDeadLine (morte, instancia) end if (_detalhes.report_heal_links) then - tinsert (report_array, {elapsed .. " ", spelllink, " (" .. source .. ")", "+" .. _detalhes:ToK (amount) .. " (" .. hp .. "%) "}) + tinsert(report_array, {elapsed .. " ", spelllink, " (" .. source .. ")", "+" .. _detalhes:ToK (amount) .. " (" .. hp .. "%) "}) else - tinsert (report_array, {elapsed .. " ", spellname, " (" .. source .. ")", "+" .. _detalhes:ToK (amount) .. " (" .. hp .. "%) "}) + tinsert(report_array, {elapsed .. " ", spellname, " (" .. source .. ")", "+" .. _detalhes:ToK (amount) .. " (" .. hp .. "%) "}) end end @@ -481,7 +481,7 @@ function atributo_misc:ReportSingleDeadLine (morte, instancia) hp = 100 end - tinsert (report_array, {elapsed .. " ", "x" .. stacks .. "" .. spelllink, " (" .. source .. ")", "(" .. hp .. "%) "}) + tinsert(report_array, {elapsed .. " ", "x" .. stacks .. "" .. spelllink, " (" .. source .. ")", "(" .. hp .. "%) "}) end end @@ -502,7 +502,7 @@ function atributo_misc:ReportSingleCooldownLine (misc_actor, instancia) local cooldowns = misc_actor.cooldowns_defensive_spells._ActorTable local cooldowns_used = {} - for spellid, spell in pairs (cooldowns) do + for spellid, spell in pairs(cooldowns) do cooldowns_used [#cooldowns_used+1] = {spellid, spell.counter, spell} end table.sort (cooldowns_used, _detalhes.Sort2) @@ -512,7 +512,7 @@ function atributo_misc:ReportSingleCooldownLine (misc_actor, instancia) local spelllink = GetSpellLink(spell [1]) reportar [#reportar+1] = spelllink .. ": " .. spell [2] - for target_name, amount in pairs (spell[3].targets) do + for target_name, amount in pairs(spell[3].targets) do if (target_name ~= misc_actor.nome and target_name ~= Loc ["STRING_RAID_WIDE"] and amount > 0) then reportar [#reportar+1] = " -" .. target_name .. ": " .. amount end @@ -544,7 +544,7 @@ function atributo_misc:ReportSingleBuffUptimeLine (misc_actor, instance) local buffs = {} local combat_time = instance.showing:GetCombatTime() - for spellid, spell in pairs (misc_actor.buff_uptime_spells._ActorTable) do + for spellid, spell in pairs(misc_actor.buff_uptime_spells._ActorTable) do local percent = spell.uptime / combat_time * 100 if (percent < 99.5) then buffs [#buffs+1] = {spellid, {spell.uptime, percent}} @@ -562,7 +562,7 @@ function atributo_misc:ReportSingleDebuffUptimeLine (misc_actor, instance) local debuffs = {} local combat_time = instance.showing:GetCombatTime() - for spellid, spell in pairs (misc_actor.debuff_uptime_spells._ActorTable) do + for spellid, spell in pairs(misc_actor.debuff_uptime_spells._ActorTable) do local percent = spell.uptime / combat_time * 100 debuffs [#debuffs+1] = {spellid, {spell.uptime, percent}} end @@ -842,14 +842,14 @@ function atributo_misc:RefreshWindow (instancia, tabela_do_combate, forcar, expo if (instancia.bars_sort_direction == 1) then --top to bottom for i = instancia.barraS[1], instancia.barraS[2], 1 do --vai atualizar s� o range que esta sendo mostrado - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, nil, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, nil, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 end elseif (instancia.bars_sort_direction == 2) then --bottom to top for i = instancia.barraS[2], instancia.barraS[1], -1 do --vai atualizar s� o range que esta sendo mostrado if (conteudo[i]) then - conteudo[i]:RefreshLine (instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, nil, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) + conteudo[i]:RefreshLine(instancia, barras_container, whichRowLine, i, total, sub_atributo, forcar, keyName, nil, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) whichRowLine = whichRowLine+1 end end @@ -886,7 +886,7 @@ end local actor_class_color_r, actor_class_color_g, actor_class_color_b -function atributo_misc:RefreshLine (instancia, barras_container, whichRowLine, lugar, total, sub_atributo, forcar, keyName, is_dead, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) +function atributo_misc:RefreshLine(instancia, barras_container, whichRowLine, lugar, total, sub_atributo, forcar, keyName, is_dead, percentage_type, use_animations, bars_show_data, bars_brackets, bars_separator) local esta_barra = instancia.barras[whichRowLine] --pega a refer�ncia da barra na janela @@ -1093,7 +1093,7 @@ function atributo_misc:ToolTipCC (instancia, numero, barra) local lineHeight = _detalhes.tooltip.line_height local icon_border = _detalhes.tooltip.icon_border_texcoord - for _spellid, _tabela in pairs (habilidades) do + for _spellid, _tabela in pairs(habilidades) do --quantidade local nome_magia, _, icone_magia = _GetSpellInfo(_spellid) @@ -1103,7 +1103,7 @@ function atributo_misc:ToolTipCC (instancia, numero, barra) --o que quebrou local quebrou_oque = _tabela.cc_break_oque - for spellid_quebrada, amt_quebrada in pairs (_tabela.cc_break_oque) do + for spellid_quebrada, amt_quebrada in pairs(_tabela.cc_break_oque) do local nome_magia, _, icone_magia = _GetSpellInfo(spellid_quebrada) GameCooltip:AddLine (nome_magia, amt_quebrada .. " ") GameCooltip:AddIcon ([[Interface\Buttons\UI-GroupLoot-Pass-Down]], nil, 1, 14, 14) @@ -1112,7 +1112,7 @@ function atributo_misc:ToolTipCC (instancia, numero, barra) end --em quem quebrou - for target_name, amount in pairs (_tabela.targets) do + for target_name, amount in pairs(_tabela.targets) do GameCooltip:AddLine (target_name .. ": ", amount .. " ") local classe = _detalhes:GetClass (target_name) @@ -1145,7 +1145,7 @@ function atributo_misc:ToolTipDispell (instancia, numero, barra) --habilidade usada para dispelar local meus_dispells = {} - for _spellid, _tabela in pairs (habilidades) do + for _spellid, _tabela in pairs(habilidades) do if (_tabela.dispell) then meus_dispells [#meus_dispells+1] = {_spellid, _math_floor(_tabela.dispell)} --_math_floor valor é nil, uma magia na tabela de dispel, sem dispel? else @@ -1174,7 +1174,7 @@ function atributo_misc:ToolTipDispell (instancia, numero, barra) --quais habilidades foram dispaladas local buffs_dispelados = {} - for _spellid, amt in pairs (self.dispell_oque) do + for _spellid, amt in pairs(self.dispell_oque) do buffs_dispelados [#buffs_dispelados+1] = {_spellid, amt} end table.sort (buffs_dispelados, _detalhes.Sort2) @@ -1195,7 +1195,7 @@ function atributo_misc:ToolTipDispell (instancia, numero, barra) --alvos dispelados local alvos_dispelados = {} - for target_name, amount in pairs (self.dispell_targets) do + for target_name, amount in pairs(self.dispell_targets) do alvos_dispelados [#alvos_dispelados + 1] = {target_name, _math_floor(amount), amount / meu_total * 100} end table.sort (alvos_dispelados, _detalhes.Sort2) @@ -1312,7 +1312,7 @@ function _detalhes:CatchRaidDebuffUptime (in_or_out) -- "DEBUFF_UPTIME_IN" for _, actor in ipairs(misc_container) do if (actor.debuff_uptime) then - for spellid, spell in pairs (actor.debuff_uptime_spells._ActorTable) do + for spellid, spell in pairs(actor.debuff_uptime_spells._ActorTable) do if (spell.actived and spell.actived_at) then spell.uptime = spell.uptime + _detalhes._tempo - spell.actived_at actor.debuff_uptime = actor.debuff_uptime + _detalhes._tempo - spell.actived_at @@ -1481,7 +1481,7 @@ function _detalhes:CatchRaidBuffUptime (in_or_out) if (in_or_out == "BUFF_UPTIME_IN") then local string_output = "pre-potion: " --localize-me - for playername, potspellid in pairs (pot_usage) do + for playername, potspellid in pairs(pot_usage) do local name, _, icon = _GetSpellInfo(potspellid) local _, class = UnitClass (playername) local class_color = "" @@ -1553,7 +1553,7 @@ function _detalhes:CatchRaidBuffUptime (in_or_out) if (in_or_out == "BUFF_UPTIME_IN") then local string_output = "pre-potion: " - for playername, potspellid in pairs (pot_usage) do + for playername, potspellid in pairs(pot_usage) do local name, _, icon = _GetSpellInfo(potspellid) local _, class = UnitClass (playername) local class_color = "" @@ -1594,7 +1594,7 @@ function _detalhes:CatchRaidBuffUptime (in_or_out) --[ if (in_or_out == "BUFF_UPTIME_IN") then local string_output = "pre-potion: " - for playername, potspellid in pairs (pot_usage) do + for playername, potspellid in pairs(pot_usage) do local name, _, icon = _GetSpellInfo(potspellid) local _, class = UnitClass (playername) local class_color = "" @@ -1635,7 +1635,7 @@ function atributo_misc:ToolTipDebuffUptime (instancia, numero, barra) local _combat_time = instancia.showing:GetCombatTime() - for _spellid, _tabela in pairs (minha_tabela) do + for _spellid, _tabela in pairs(minha_tabela) do debuffs_usados [#debuffs_usados+1] = {_spellid, _tabela.uptime} end table.sort (debuffs_usados, _detalhes.Sort2) @@ -1747,7 +1747,7 @@ function atributo_misc:ToolTipDefensiveCooldowns (instancia, numero, barra) --spells local cooldowns_usados = {} - for _spellid, _tabela in pairs (minha_tabela) do + for _spellid, _tabela in pairs(minha_tabela) do cooldowns_usados [#cooldowns_usados+1] = {_spellid, _tabela.counter} end table.sort (cooldowns_usados, _detalhes.Sort2) @@ -1775,7 +1775,7 @@ function atributo_misc:ToolTipDefensiveCooldowns (instancia, numero, barra) local meus_alvos = self.cooldowns_defensive_targets local alvos = {} - for target_name, amount in pairs (meus_alvos) do + for target_name, amount in pairs(meus_alvos) do alvos [#alvos+1] = {target_name, amount} end table.sort (alvos, _detalhes.Sort2) @@ -1833,7 +1833,7 @@ function atributo_misc:ToolTipRess (instancia, numero, barra) --habilidade usada para interromper local meus_ress = {} - for _spellid, _tabela in pairs (minha_tabela) do + for _spellid, _tabela in pairs(minha_tabela) do meus_ress [#meus_ress+1] = {_spellid, _tabela.ress} end table.sort (meus_ress, _detalhes.Sort2) @@ -1857,7 +1857,7 @@ function atributo_misc:ToolTipRess (instancia, numero, barra) local meus_alvos = self.ress_targets local alvos = {} - for target_name, amount in pairs (meus_alvos) do + for target_name, amount in pairs(meus_alvos) do alvos [#alvos+1] = {target_name, amount} end table.sort (alvos, _detalhes.Sort2) @@ -1915,7 +1915,7 @@ function atributo_misc:ToolTipInterrupt (instancia, numero, barra) --habilidade usada para interromper local meus_interrupts = {} - for _spellid, _tabela in pairs (minha_tabela) do + for _spellid, _tabela in pairs(minha_tabela) do meus_interrupts [#meus_interrupts+1] = {_spellid, _tabela.counter} end table.sort (meus_interrupts, _detalhes.Sort2) @@ -1938,7 +1938,7 @@ function atributo_misc:ToolTipInterrupt (instancia, numero, barra) --quais habilidades foram interrompidas local habilidades_interrompidas = {} - for _spellid, amt in pairs (self.interrompeu_oque) do + for _spellid, amt in pairs(self.interrompeu_oque) do habilidades_interrompidas [#habilidades_interrompidas+1] = {_spellid, amt} end table.sort (habilidades_interrompidas, _detalhes.Sort2) @@ -2046,7 +2046,7 @@ function atributo_misc:MontaInfoInterrupt() local meus_interrupts = {} --player - for _spellid, _tabela in pairs (minha_tabela) do --da foreach em cada spellid do container + for _spellid, _tabela in pairs(minha_tabela) do --da foreach em cada spellid do container local nome, _, icone = _GetSpellInfo(_spellid) _table_insert (meus_interrupts, {_spellid, _tabela.counter, _tabela.counter/meu_total*100, nome, icone}) end @@ -2057,7 +2057,7 @@ function atributo_misc:MontaInfoInterrupt() local PetActor = instancia.showing (class_type, PetName) if (PetActor and PetActor.interrupt and PetActor.interrupt > 0) then local PetSkillsContainer = PetActor.interrupt_spells._ActorTable - for _spellid, _skill in pairs (PetSkillsContainer) do --da foreach em cada spellid do container + for _spellid, _skill in pairs(PetSkillsContainer) do --da foreach em cada spellid do container local nome, _, icone = _GetSpellInfo(_spellid) _table_insert (meus_interrupts, {_spellid, _skill.counter, _skill.counter/meu_total*100, nome .. " (|c" .. class_color .. PetName:gsub ((" <.*"), "") .. "|r)", icone, PetActor}) end @@ -2125,7 +2125,7 @@ function atributo_misc:MontaInfoInterrupt() --Alvos do interrupt local meus_alvos = {} - for target_name, amount in pairs (self.interrupt_targets) do + for target_name, amount in pairs(self.interrupt_targets) do meus_alvos [#meus_alvos+1] = {target_name, amount} end table.sort (meus_alvos, _detalhes.Sort2) @@ -2160,7 +2160,7 @@ function atributo_misc:MontaInfoInterrupt() if (barra.mouse_over) then --atualizar o tooltip if (barra.isAlvo) then GameTooltip:Hide() - GameTooltip:SetOwner (barra, "ANCHOR_TOPRIGHT") + GameTooltip:SetOwner(barra, "ANCHOR_TOPRIGHT") if (not barra.minha_tabela:MontaTooltipAlvos (barra, index)) then return end @@ -2206,7 +2206,7 @@ function atributo_misc:MontaDetalhesInterrupt (spellid, barra) local instancia = info.instancia local habilidades_alvos = {} - for spellid, amt in pairs (esta_magia.interrompeu_oque) do + for spellid, amt in pairs(esta_magia.interrompeu_oque) do habilidades_alvos [#habilidades_alvos+1] = {spellid, amt} end table.sort (habilidades_alvos, _detalhes.Sort2) @@ -2256,7 +2256,7 @@ function atributo_misc:MontaTooltipAlvos (esta_barra, index) local habilidades = {} local total = self.interrupt - for spellid, tabela in pairs (container) do + for spellid, tabela in pairs(container) do --tabela = classe_damage_habilidade local alvos = tabela.targets for target_name, amount in ipairs(alvos) do @@ -2328,12 +2328,12 @@ end end local refresh_alvos = function(container1, container2) - for target_name, amount in pairs (container2) do + for target_name, amount in pairs(container2) do container1 [target_name] = container1 [target_name] or 0 end end local refresh_habilidades = function(container1, container2) - for spellid, habilidade in pairs (container2._ActorTable) do + for spellid, habilidade in pairs(container2._ActorTable) do local habilidade_shadow = container1:PegaHabilidade (spellid, true, nil, true) refresh_alvos (habilidade_shadow.targets , habilidade.targets) end @@ -2369,7 +2369,7 @@ function atributo_misc:r_onlyrefresh_shadow (actor) if (not shadow.spell_cast) then shadow.spell_cast = {} end - for spellid, _ in pairs (actor.spell_cast) do + for spellid, _ in pairs(actor.spell_cast) do shadow.spell_cast [spellid] = shadow.spell_cast [spellid] or 0 end end @@ -2407,7 +2407,7 @@ function atributo_misc:r_onlyrefresh_shadow (actor) if (actor.interrupt) then refresh_alvos (shadow.interrupt_targets, actor.interrupt_targets) refresh_habilidades (shadow.interrupt_spells, actor.interrupt_spells) - for spellid, habilidade in pairs (actor.interrupt_spells._ActorTable) do + for spellid, habilidade in pairs(actor.interrupt_spells._ActorTable) do local habilidade_shadow = shadow.interrupt_spells:PegaHabilidade (spellid, true, nil, true) habilidade_shadow.interrompeu_oque = habilidade_shadow.interrompeu_oque or {} end @@ -2423,7 +2423,7 @@ function atributo_misc:r_onlyrefresh_shadow (actor) if (actor.dispell) then refresh_alvos (shadow.dispell_targets, actor.dispell_targets) refresh_habilidades (shadow.dispell_spells, actor.dispell_spells) - for spellid, habilidade in pairs (actor.dispell_spells._ActorTable) do + for spellid, habilidade in pairs(actor.dispell_spells._ActorTable) do local habilidade_shadow = shadow.dispell_spells:PegaHabilidade (spellid, true, nil, true) habilidade_shadow.dispell_oque = habilidade_shadow.dispell_oque or {} end @@ -2433,7 +2433,7 @@ function atributo_misc:r_onlyrefresh_shadow (actor) if (actor.cc_break) then refresh_alvos (shadow.cc_break_targets, actor.cc_break_targets) refresh_habilidades (shadow.cc_break_spells, actor.cc_break_spells) - for spellid, habilidade in pairs (actor.cc_break_spells._ActorTable) do + for spellid, habilidade in pairs(actor.cc_break_spells._ActorTable) do local habilidade_shadow = shadow.cc_break_spells:PegaHabilidade (spellid, true, nil, true) habilidade_shadow.cc_break_oque = habilidade_shadow.cc_break_oque or {} end @@ -2444,7 +2444,7 @@ function atributo_misc:r_onlyrefresh_shadow (actor) end local somar_keys = function(habilidade, habilidade_tabela1) - for key, value in pairs (habilidade) do + for key, value in pairs(habilidade) do if (_type(value) == "number") then if (key ~= "id" and key ~= "spellschool") then habilidade_tabela1 [key] = (habilidade_tabela1 [key] or 0) + value @@ -2453,12 +2453,12 @@ local somar_keys = function(habilidade, habilidade_tabela1) end end local somar_alvos = function(container1, container2) - for target_name, amount in pairs (container2) do + for target_name, amount in pairs(container2) do container1 [target_name] = (container1 [target_name] or 0) + amount end end local somar_habilidades = function(container1, container2) - for spellid, habilidade in pairs (container2._ActorTable) do + for spellid, habilidade in pairs(container2._ActorTable) do local habilidade_tabela1 = container1:PegaHabilidade (spellid, true, nil, false) somar_alvos (habilidade_tabela1.targets, habilidade.targets) somar_keys (habilidade, habilidade_tabela1) @@ -2506,7 +2506,7 @@ function atributo_misc:r_connect_shadow (actor, no_refresh, combat_object) shadow.spell_cast = {} end - for spellid, amount in pairs (actor.spell_cast) do + for spellid, amount in pairs(actor.spell_cast) do shadow.spell_cast [spellid] = (shadow.spell_cast [spellid] or 0) + amount end end @@ -2572,7 +2572,7 @@ function atributo_misc:r_connect_shadow (actor, no_refresh, combat_object) shadow.debuff_uptime = shadow.debuff_uptime + actor.debuff_uptime - for target_name, amount in pairs (actor.debuff_uptime_targets) do + for target_name, amount in pairs(actor.debuff_uptime_targets) do if (_type(amount) == "table") then --boss debuff local t = shadow.debuff_uptime_targets [target_name] if (not t) then @@ -2609,16 +2609,16 @@ function atributo_misc:r_connect_shadow (actor, no_refresh, combat_object) somar_alvos (shadow.interrupt_targets, actor.interrupt_targets) somar_habilidades (shadow.interrupt_spells, actor.interrupt_spells) - for spellid, habilidade in pairs (actor.interrupt_spells._ActorTable) do + for spellid, habilidade in pairs(actor.interrupt_spells._ActorTable) do local habilidade_shadow = shadow.interrupt_spells:PegaHabilidade (spellid, true, nil, true) habilidade_shadow.interrompeu_oque = habilidade_shadow.interrompeu_oque or {} - for _spellid, amount in pairs (habilidade.interrompeu_oque) do + for _spellid, amount in pairs(habilidade.interrompeu_oque) do habilidade_shadow.interrompeu_oque [_spellid] = (habilidade_shadow.interrompeu_oque [_spellid] or 0) + amount end end - for spellid, amount in pairs (actor.interrompeu_oque) do + for spellid, amount in pairs(actor.interrompeu_oque) do shadow.interrompeu_oque [spellid] = (shadow.interrompeu_oque [spellid] or 0) + amount end end @@ -2659,15 +2659,15 @@ function atributo_misc:r_connect_shadow (actor, no_refresh, combat_object) somar_alvos (shadow.dispell_targets, actor.dispell_targets) somar_habilidades (shadow.dispell_spells, actor.dispell_spells) - for spellid, habilidade in pairs (actor.dispell_spells._ActorTable) do + for spellid, habilidade in pairs(actor.dispell_spells._ActorTable) do local habilidade_shadow = shadow.dispell_spells:PegaHabilidade (spellid, true, nil, true) habilidade_shadow.dispell_oque = habilidade_shadow.dispell_oque or {} - for _spellid, amount in pairs (habilidade.dispell_oque) do + for _spellid, amount in pairs(habilidade.dispell_oque) do habilidade_shadow.dispell_oque [_spellid] = (habilidade_shadow.dispell_oque [_spellid] or 0) + amount end end - for spellid, amount in pairs (actor.dispell_oque) do + for spellid, amount in pairs(actor.dispell_oque) do shadow.dispell_oque [spellid] = (shadow.dispell_oque [spellid] or 0) + amount end end @@ -2689,14 +2689,14 @@ function atributo_misc:r_connect_shadow (actor, no_refresh, combat_object) somar_alvos (shadow.cc_break_targets, actor.cc_break_targets) somar_habilidades (shadow.cc_break_spells, actor.cc_break_spells) - for spellid, habilidade in pairs (actor.cc_break_spells._ActorTable) do + for spellid, habilidade in pairs(actor.cc_break_spells._ActorTable) do local habilidade_shadow = shadow.cc_break_spells:PegaHabilidade (spellid, true, nil, true) habilidade_shadow.cc_break_oque = habilidade_shadow.cc_break_oque or {} - for _spellid, amount in pairs (habilidade.cc_break_oque) do + for _spellid, amount in pairs(habilidade.cc_break_oque) do habilidade_shadow.cc_break_oque [_spellid] = (habilidade_shadow.cc_break_oque [_spellid] or 0) + amount end end - for spellid, amount in pairs (actor.cc_break_oque) do + for spellid, amount in pairs(actor.cc_break_oque) do shadow.cc_break_oque [spellid] = (shadow.cc_break_oque [spellid] or 0) + amount end end @@ -2857,7 +2857,7 @@ end atributo_misc.__add = function(tabela1, tabela2) if (tabela2.spell_cast) then - for spellid, amount in pairs (tabela2.spell_cast) do + for spellid, amount in pairs(tabela2.spell_cast) do tabela1.spell_cast [spellid] = (tabela1.spell_cast [spellid] or 0) + amount end end @@ -2865,14 +2865,14 @@ atributo_misc.__add = function(tabela1, tabela2) if (tabela2.cc_done) then tabela1.cc_done = tabela1.cc_done + tabela2.cc_done - for target_name, amount in pairs (tabela2.cc_done_targets) do + for target_name, amount in pairs(tabela2.cc_done_targets) do tabela1.cc_done_targets [target_name] = (tabela1.cc_done_targets [target_name] or 0) + amount end - for spellid, habilidade in pairs (tabela2.cc_done_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.cc_done_spells._ActorTable) do local habilidade_tabela1 = tabela1.cc_done_spells:PegaHabilidade (spellid, true, nil, false) - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) + amount end @@ -2892,24 +2892,24 @@ atributo_misc.__add = function(tabela1, tabela2) --total de interrupts tabela1.interrupt = tabela1.interrupt + tabela2.interrupt --soma o interrompeu o que - for spellid, amount in pairs (tabela2.interrompeu_oque) do + for spellid, amount in pairs(tabela2.interrompeu_oque) do tabela1.interrompeu_oque [spellid] = (tabela1.interrompeu_oque [spellid] or 0) + amount end --soma os containers de alvos - for target_name, amount in pairs (tabela2.interrupt_targets) do + for target_name, amount in pairs(tabela2.interrupt_targets) do tabela1.interrupt_targets [target_name] = (tabela1.interrupt_targets [target_name] or 0) + amount end --soma o container de habilidades - for spellid, habilidade in pairs (tabela2.interrupt_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.interrupt_spells._ActorTable) do local habilidade_tabela1 = tabela1.interrupt_spells:PegaHabilidade (spellid, true, nil, false) habilidade_tabela1.interrompeu_oque = habilidade_tabela1.interrompeu_oque or {} - for _spellid, amount in pairs (habilidade.interrompeu_oque) do + for _spellid, amount in pairs(habilidade.interrompeu_oque) do habilidade_tabela1.interrompeu_oque [_spellid] = (habilidade_tabela1.interrompeu_oque [_spellid] or 0) + amount end - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) + amount end @@ -2927,14 +2927,14 @@ atributo_misc.__add = function(tabela1, tabela2) tabela1.buff_uptime = tabela1.buff_uptime + tabela2.buff_uptime - for target_name, amount in pairs (tabela2.buff_uptime_targets) do + for target_name, amount in pairs(tabela2.buff_uptime_targets) do tabela1.buff_uptime_targets [target_name] = (tabela1.buff_uptime_targets [target_name] or 0) + amount end - for spellid, habilidade in pairs (tabela2.buff_uptime_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.buff_uptime_spells._ActorTable) do local habilidade_tabela1 = tabela1.buff_uptime_spells:PegaHabilidade (spellid, true, nil, false) - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) + amount end @@ -2960,7 +2960,7 @@ atributo_misc.__add = function(tabela1, tabela2) tabela1.debuff_uptime = tabela1.debuff_uptime + tabela2.debuff_uptime - for target_name, amount in pairs (tabela2.debuff_uptime_targets) do + for target_name, amount in pairs(tabela2.debuff_uptime_targets) do if (_type(amount) == "table") then --boss debuff local t = tabela1.debuff_uptime_targets [target_name] if (not t) then @@ -2976,10 +2976,10 @@ atributo_misc.__add = function(tabela1, tabela2) end end - for spellid, habilidade in pairs (tabela2.debuff_uptime_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.debuff_uptime_spells._ActorTable) do local habilidade_tabela1 = tabela1.debuff_uptime_spells:PegaHabilidade (spellid, true, nil, false) - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) + amount end @@ -2996,14 +2996,14 @@ atributo_misc.__add = function(tabela1, tabela2) tabela1.cooldowns_defensive = tabela1.cooldowns_defensive + tabela2.cooldowns_defensive - for target_name, amount in pairs (tabela2.cooldowns_defensive_targets) do + for target_name, amount in pairs(tabela2.cooldowns_defensive_targets) do tabela1.cooldowns_defensive_targets [target_name] = (tabela1.cooldowns_defensive_targets [target_name] or 0) + amount end - for spellid, habilidade in pairs (tabela2.cooldowns_defensive_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.cooldowns_defensive_spells._ActorTable) do local habilidade_tabela1 = tabela1.cooldowns_defensive_spells:PegaHabilidade (spellid, true, nil, false) - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) + amount end @@ -3020,14 +3020,14 @@ atributo_misc.__add = function(tabela1, tabela2) tabela1.ress = tabela1.ress + tabela2.ress - for target_name, amount in pairs (tabela2.ress_targets) do + for target_name, amount in pairs(tabela2.ress_targets) do tabela1.ress_targets [target_name] = (tabela1.ress_targets [target_name] or 0) + amount end - for spellid, habilidade in pairs (tabela2.ress_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.ress_spells._ActorTable) do local habilidade_tabela1 = tabela1.ress_spells:PegaHabilidade (spellid, true, nil, false) - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) + amount end @@ -3046,27 +3046,27 @@ atributo_misc.__add = function(tabela1, tabela2) tabela1.dispell = tabela1.dispell + tabela2.dispell - for target_name, amount in pairs (tabela2.dispell_targets) do + for target_name, amount in pairs(tabela2.dispell_targets) do tabela1.dispell_targets [target_name] = (tabela1.dispell_targets [target_name] or 0) + amount end - for spellid, habilidade in pairs (tabela2.dispell_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.dispell_spells._ActorTable) do local habilidade_tabela1 = tabela1.dispell_spells:PegaHabilidade (spellid, true, nil, false) habilidade_tabela1.dispell_oque = habilidade_tabela1.dispell_oque or {} - for _spellid, amount in pairs (habilidade.dispell_oque) do + for _spellid, amount in pairs(habilidade.dispell_oque) do habilidade_tabela1.dispell_oque [_spellid] = (habilidade_tabela1.dispell_oque [_spellid] or 0) + amount end - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) + amount end somar_keys (habilidade, habilidade_tabela1) end - for spellid, amount in pairs (tabela2.dispell_oque) do + for spellid, amount in pairs(tabela2.dispell_oque) do tabela1.dispell_oque [spellid] = (tabela1.dispell_oque [spellid] or 0) + amount end @@ -3083,26 +3083,26 @@ atributo_misc.__add = function(tabela1, tabela2) tabela1.cc_break = tabela1.cc_break + tabela2.cc_break - for target_name, amount in pairs (tabela2.cc_break_targets) do + for target_name, amount in pairs(tabela2.cc_break_targets) do tabela1.cc_break_targets [target_name] = (tabela1.cc_break_targets [target_name] or 0) + amount end - for spellid, habilidade in pairs (tabela2.cc_break_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.cc_break_spells._ActorTable) do local habilidade_tabela1 = tabela1.cc_break_spells:PegaHabilidade (spellid, true, nil, false) habilidade_tabela1.cc_break_oque = habilidade_tabela1.cc_break_oque or {} - for _spellid, amount in pairs (habilidade.cc_break_oque) do + for _spellid, amount in pairs(habilidade.cc_break_oque) do habilidade_tabela1.cc_break_oque [_spellid] = (habilidade_tabela1.cc_break_oque [_spellid] or 0) + amount end - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) + amount end somar_keys (habilidade, habilidade_tabela1) end - for spellid, amount in pairs (tabela2.cc_break_oque) do + for spellid, amount in pairs(tabela2.cc_break_oque) do tabela1.cc_break_oque [spellid] = (tabela1.cc_break_oque [spellid] or 0) + amount end end @@ -3111,7 +3111,7 @@ atributo_misc.__add = function(tabela1, tabela2) end local subtrair_keys = function(habilidade, habilidade_tabela1) - for key, value in pairs (habilidade) do + for key, value in pairs(habilidade) do if (_type(value) == "number") then if (key ~= "id" and key ~= "spellschool") then habilidade_tabela1 [key] = (habilidade_tabela1 [key] or 0) - value @@ -3123,7 +3123,7 @@ end atributo_misc.__sub = function(tabela1, tabela2) if (tabela2.spell_cast) then - for spellid, amount in pairs (tabela2.spell_cast) do + for spellid, amount in pairs(tabela2.spell_cast) do tabela1.spell_cast [spellid] = (tabela1.spell_cast [spellid] or 0) - amount end end @@ -3131,14 +3131,14 @@ atributo_misc.__sub = function(tabela1, tabela2) if (tabela2.cc_done) then tabela1.cc_done = tabela1.cc_done - tabela2.cc_done - for target_name, amount in pairs (tabela2.cc_done_targets) do + for target_name, amount in pairs(tabela2.cc_done_targets) do tabela1.cc_done_targets [target_name] = (tabela1.cc_done_targets [target_name] or 0) - amount end - for spellid, habilidade in pairs (tabela2.cc_done_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.cc_done_spells._ActorTable) do local habilidade_tabela1 = tabela1.cc_done_spells:PegaHabilidade (spellid, true, nil, false) - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) - amount end @@ -3150,24 +3150,24 @@ atributo_misc.__sub = function(tabela1, tabela2) --total de interrupts tabela1.interrupt = tabela1.interrupt - tabela2.interrupt --soma o interrompeu o que - for spellid, amount in pairs (tabela2.interrompeu_oque) do + for spellid, amount in pairs(tabela2.interrompeu_oque) do tabela1.interrompeu_oque [spellid] = (tabela1.interrompeu_oque [spellid] or 0) - amount end --soma os containers de alvos - for target_name, amount in pairs (tabela2.interrupt_targets) do + for target_name, amount in pairs(tabela2.interrupt_targets) do tabela1.interrupt_targets [target_name] = (tabela1.interrupt_targets [target_name] or 0) - amount end --soma o container de habilidades - for spellid, habilidade in pairs (tabela2.interrupt_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.interrupt_spells._ActorTable) do local habilidade_tabela1 = tabela1.interrupt_spells:PegaHabilidade (spellid, true, nil, false) habilidade_tabela1.interrompeu_oque = habilidade_tabela1.interrompeu_oque or {} - for _spellid, amount in pairs (habilidade.interrompeu_oque) do + for _spellid, amount in pairs(habilidade.interrompeu_oque) do habilidade_tabela1.interrompeu_oque [_spellid] = (habilidade_tabela1.interrompeu_oque [_spellid] or 0) - amount end - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) - amount end @@ -3178,14 +3178,14 @@ atributo_misc.__sub = function(tabela1, tabela2) if (tabela2.buff_uptime) then tabela1.buff_uptime = tabela1.buff_uptime - tabela2.buff_uptime - for target_name, amount in pairs (tabela2.buff_uptime_targets) do + for target_name, amount in pairs(tabela2.buff_uptime_targets) do tabela1.buff_uptime_targets [target_name] = (tabela1.buff_uptime_targets [target_name] or 0) - amount end - for spellid, habilidade in pairs (tabela2.buff_uptime_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.buff_uptime_spells._ActorTable) do local habilidade_tabela1 = tabela1.buff_uptime_spells:PegaHabilidade (spellid, true, nil, false) - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) - amount end @@ -3196,7 +3196,7 @@ atributo_misc.__sub = function(tabela1, tabela2) if (tabela2.debuff_uptime) then tabela1.debuff_uptime = tabela1.debuff_uptime - tabela2.debuff_uptime - for target_name, amount in pairs (tabela2.debuff_uptime_targets) do + for target_name, amount in pairs(tabela2.debuff_uptime_targets) do if (_type(amount) == "table") then --boss debuff local t = tabela1.debuff_uptime_targets [target_name] if (not t) then @@ -3212,10 +3212,10 @@ atributo_misc.__sub = function(tabela1, tabela2) end end - for spellid, habilidade in pairs (tabela2.debuff_uptime_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.debuff_uptime_spells._ActorTable) do local habilidade_tabela1 = tabela1.debuff_uptime_spells:PegaHabilidade (spellid, true, nil, false) - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) - amount end @@ -3226,14 +3226,14 @@ atributo_misc.__sub = function(tabela1, tabela2) if (tabela2.cooldowns_defensive) then tabela1.cooldowns_defensive = tabela1.cooldowns_defensive - tabela2.cooldowns_defensive - for target_name, amount in pairs (tabela2.cooldowns_defensive_targets) do + for target_name, amount in pairs(tabela2.cooldowns_defensive_targets) do tabela1.cooldowns_defensive_targets [target_name] = (tabela1.cooldowns_defensive_targets [target_name] or 0) - amount end - for spellid, habilidade in pairs (tabela2.cooldowns_defensive_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.cooldowns_defensive_spells._ActorTable) do local habilidade_tabela1 = tabela1.cooldowns_defensive_spells:PegaHabilidade (spellid, true, nil, false) - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) - amount end @@ -3244,14 +3244,14 @@ atributo_misc.__sub = function(tabela1, tabela2) if (tabela2.ress) then tabela1.ress = tabela1.ress - tabela2.ress - for target_name, amount in pairs (tabela2.ress_targets) do + for target_name, amount in pairs(tabela2.ress_targets) do tabela1.ress_targets [target_name] = (tabela1.ress_targets [target_name] or 0) - amount end - for spellid, habilidade in pairs (tabela2.ress_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.ress_spells._ActorTable) do local habilidade_tabela1 = tabela1.ress_spells:PegaHabilidade (spellid, true, nil, false) - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) - amount end @@ -3262,27 +3262,27 @@ atributo_misc.__sub = function(tabela1, tabela2) if (tabela2.dispell) then tabela1.dispell = tabela1.dispell - tabela2.dispell - for target_name, amount in pairs (tabela2.dispell_targets) do + for target_name, amount in pairs(tabela2.dispell_targets) do tabela1.dispell_targets [target_name] = (tabela1.dispell_targets [target_name] or 0) - amount end - for spellid, habilidade in pairs (tabela2.dispell_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.dispell_spells._ActorTable) do local habilidade_tabela1 = tabela1.dispell_spells:PegaHabilidade (spellid, true, nil, false) habilidade_tabela1.dispell_oque = habilidade_tabela1.dispell_oque or {} - for _spellid, amount in pairs (habilidade.dispell_oque) do + for _spellid, amount in pairs(habilidade.dispell_oque) do habilidade_tabela1.dispell_oque [_spellid] = (habilidade_tabela1.dispell_oque [_spellid] or 0) - amount end - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) - amount end subtrair_keys (habilidade, habilidade_tabela1) end - for spellid, amount in pairs (tabela2.dispell_oque) do + for spellid, amount in pairs(tabela2.dispell_oque) do tabela1.dispell_oque [spellid] = (tabela1.dispell_oque [spellid] or 0) - amount end end @@ -3291,26 +3291,26 @@ atributo_misc.__sub = function(tabela1, tabela2) tabela1.cc_break = tabela1.cc_break - tabela2.cc_break - for target_name, amount in pairs (tabela2.cc_break_targets) do + for target_name, amount in pairs(tabela2.cc_break_targets) do tabela1.cc_break_targets [target_name] = (tabela1.cc_break_targets [target_name] or 0) - amount end - for spellid, habilidade in pairs (tabela2.cc_break_spells._ActorTable) do + for spellid, habilidade in pairs(tabela2.cc_break_spells._ActorTable) do local habilidade_tabela1 = tabela1.cc_break_spells:PegaHabilidade (spellid, true, nil, false) habilidade_tabela1.cc_break_oque = habilidade_tabela1.cc_break_oque or {} - for _spellid, amount in pairs (habilidade.cc_break_oque) do + for _spellid, amount in pairs(habilidade.cc_break_oque) do habilidade_tabela1.cc_break_oque [_spellid] = (habilidade_tabela1.cc_break_oque [_spellid] or 0) - amount end - for target_name, amount in pairs (habilidade.targets) do + for target_name, amount in pairs(habilidade.targets) do habilidade_tabela1.targets [target_name] = (habilidade_tabela1.targets [target_name] or 0) - amount end subtrair_keys (habilidade, habilidade_tabela1) end - for spellid, amount in pairs (tabela2.cc_break_oque) do + for spellid, amount in pairs(tabela2.cc_break_oque) do tabela1.cc_break_oque [spellid] = (tabela1.cc_break_oque [spellid] or 0) - amount end end diff --git a/classes/container_actors.lua b/classes/container_actors.lua index ed8528f84..b7adb6605 100644 --- a/classes/container_actors.lua +++ b/classes/container_actors.lua @@ -474,7 +474,7 @@ return end - pet_tooltip_frame:SetOwner (WorldFrame, "ANCHOR_NONE") + pet_tooltip_frame:SetOwner(WorldFrame, "ANCHOR_NONE") pet_tooltip_frame:SetHyperlink ("unit:" .. serial or "") Details.tabela_vigente.raid_roster_indexed = Details.tabela_vigente.raid_roster_indexed or {} diff --git a/classes/container_segments.lua b/classes/container_segments.lua index 5bf4a86a0..d04d1cd46 100644 --- a/classes/container_segments.lua +++ b/classes/container_segments.lua @@ -93,7 +93,7 @@ function historico:adicionar_overall (tabela) local combatTime = tabela:GetCombatTime() local combatType = tabela:GetCombatType() - tinsert (_detalhes.tabela_overall.segments_added, 1, {name = combatName, elapsed = combatTime, clock = this_clock, type = combatType}) + tinsert(_detalhes.tabela_overall.segments_added, 1, {name = combatName, elapsed = combatTime, clock = this_clock, type = combatType}) if (#_detalhes.tabela_overall.segments_added > 40) then tremove (_detalhes.tabela_overall.segments_added, 41) @@ -142,7 +142,7 @@ function _detalhes:ScheduleAddCombatToOverall (combat) --deprecated (15/03/2019) local canAdd = _detalhes:CanAddCombatToOverall (combat) if (canAdd) then _detalhes.schedule_add_to_overall = _detalhes.schedule_add_to_overall or {} - tinsert (_detalhes.schedule_add_to_overall, combat) + tinsert(_detalhes.schedule_add_to_overall, combat) end end diff --git a/classes/container_spells.lua b/classes/container_spells.lua index 5fb9643be..fd2b1dc0f 100644 --- a/classes/container_spells.lua +++ b/classes/container_spells.lua @@ -56,7 +56,7 @@ local _ end function container_habilidades:ListActors() - return pairs (self._ActorTable) + return pairs(self._ActorTable) end function container_habilidades:GetOrCreateSpell(id, shouldCreate, token) diff --git a/classes/include_instance.lua b/classes/include_instance.lua index 6de2dcbaa..09fd06d88 100644 --- a/classes/include_instance.lua +++ b/classes/include_instance.lua @@ -11,7 +11,7 @@ local _detalhes = _G._detalhes local SharedMedia = LibStub:GetLibrary("LibSharedMedia-3.0") function _detalhes:ResetInstanceConfig (maintainsnap) - for key, value in pairs (_detalhes.instance_defaults) do + for key, value in pairs(_detalhes.instance_defaults) do if (type(value) == "table") then self [key] = Details.CopyTable (value) else @@ -57,7 +57,7 @@ _detalhes.instance_skin_ignored_values = { } function _detalhes:ResetInstanceConfigKeepingValues (maintainsnap) - for key, value in pairs (_detalhes.instance_defaults) do + for key, value in pairs(_detalhes.instance_defaults) do if (not _detalhes.instance_skin_ignored_values [key]) then if (type(value) == "table") then self [key] = Details.CopyTable (value) @@ -75,7 +75,7 @@ function _detalhes:ResetInstanceConfigKeepingValues (maintainsnap) end function _detalhes:LoadInstanceConfig() - for key, value in pairs (_detalhes.instance_defaults) do + for key, value in pairs(_detalhes.instance_defaults) do if (self [key] == nil) then if (type(value) == "table") then self [key] = Details.CopyTable (_detalhes.instance_defaults [key]) @@ -84,7 +84,7 @@ function _detalhes:LoadInstanceConfig() end elseif (type(value) == "table") then - for key2, value2 in pairs (value) do + for key2, value2 in pairs(value) do if (self [key] [key2] == nil) then if (type(value2) == "table") then self [key] [key2] = Details.CopyTable (_detalhes.instance_defaults [key] [key2]) diff --git a/core/control.lua b/core/control.lua index 6bfdde801..aba9094cb 100644 --- a/core/control.lua +++ b/core/control.lua @@ -65,7 +65,7 @@ for _, actor in ipairs(Details.tabela_vigente[class_type_dano]._ActorTable) do if (not actor.grupo and not actor.owner and not actor.nome:find ("[*]") and _bit_band (actor.flag_original, 0x00000060) ~= 0) then --0x20+0x40 neutral + enemy reaction - for name, _ in pairs (actor.targets) do + for name, _ in pairs(actor.targets) do if (name == Details.playername) then return actor.nome else @@ -82,7 +82,7 @@ for _, actor in ipairs(Details.tabela_vigente[class_type_dano]._ActorTable) do if (actor.grupo and not actor.owner) then - for target_name, _ in pairs (actor.targets) do + for target_name, _ in pairs(actor.targets) do return target_name end end @@ -438,7 +438,7 @@ function Details:DelayedSyncAlert() local lower_instance = Details:GetLowerInstanceNumber() if (lower_instance) then - lower_instance = Details:GetInstance (lower_instance) + lower_instance = Details:GetInstance(lower_instance) if (lower_instance) then if (not lower_instance:HaveInstanceAlert()) then lower_instance:InstanceAlert (Loc ["STRING_EQUILIZING"], {[[Interface\COMMON\StreamCircle]], 22, 22, true}, 5, {function() end}) @@ -472,7 +472,7 @@ Details.last_closed_combat = Details.tabela_vigente --if (Details.statistics) then - -- for k, v in pairs (Details.statistics) do + -- for k, v in pairs(Details.statistics) do -- print (k, v) -- end --end @@ -784,13 +784,13 @@ if (Details.tabela_vigente.is_boss.killed) then cleuIDData.kills = cleuIDData.kills + 1 cleuIDData.best_try = 0 - tinsert (cleuIDData.try_history, {0, Details.tabela_vigente:GetCombatTime()}) + tinsert(cleuIDData.try_history, {0, Details.tabela_vigente:GetCombatTime()}) --print ("KILL", "best try", cleuIDData.best_try, "amt kills", cleuIDData.kills, "wipes", cleuIDData.wipes, "longest", cleuIDData.longest) else cleuIDData.wipes = cleuIDData.wipes + 1 if (Details.boss1_health_percent and Details.boss1_health_percent < cleuIDData.best_try) then cleuIDData.best_try = Details.boss1_health_percent - tinsert (cleuIDData.try_history, {Details.boss1_health_percent, Details.tabela_vigente:GetCombatTime()}) + tinsert(cleuIDData.try_history, {Details.boss1_health_percent, Details.tabela_vigente:GetCombatTime()}) end --print ("WIPE", "best try", cleuIDData.best_try, "amt kills", cleuIDData.kills, "wipes", cleuIDData.wipes, "longest", cleuIDData.longest) end @@ -811,11 +811,11 @@ invalid_combat = Details.tabela_vigente --tutorial about the combat time < then 'minimum_combat_time' - local hasSeenTutorial = Details:GetTutorialCVar ("MIN_COMBAT_TIME") + local hasSeenTutorial = Details:GetTutorialCVar("MIN_COMBAT_TIME") if (not hasSeenTutorial) then local lower_instance = Details:GetLowerInstanceNumber() if (lower_instance) then - lower_instance = Details:GetInstance (lower_instance) + lower_instance = Details:GetInstance(lower_instance) if (lower_instance) then lower_instance:InstanceAlert ("combat ignored: less than 5 seconds.", {[[Interface\BUTTONS\UI-GROUPLOOT-PASS-DOWN]], 18, 18, false, 0, 1, 0, 1}, 20, {function() Details:Msg("combat ignored: elapsed time less than 5 seconds."); Details:Msg("add '|cFFFFFF00Details.minimum_combat_time = 2;|r' on Auto Run Code to change the minimum time.") end}) Details:SetTutorialCVar ("MIN_COMBAT_TIME", true) @@ -1108,7 +1108,7 @@ end if (playerSpecID and playerClass) then - for spellID, t in pairs (validSpells) do + for spellID, t in pairs(validSpells) do if (playerClass == t.class and playerSpecID == t.spec) then Details:SendMissData (spellID, t.container, Details.network.ids [t.commID]) end @@ -1438,7 +1438,7 @@ if (actor.grupo) then if (class_type == 1 or class_type == 2) then - for target_name, amount in pairs (actor.targets) do + for target_name, amount in pairs(actor.targets) do local target_object = container._ActorTable [container._NameIndexTable [target_name]] if (target_object) then target_object.fight_component = true @@ -1446,7 +1446,7 @@ end end if (class_type == 1) then - for damager_actor, _ in pairs (actor.damage_from) do + for damager_actor, _ in pairs(actor.damage_from) do local target_object = container._ActorTable [container._NameIndexTable [damager_actor]] if (target_object) then target_object.fight_component = true @@ -1454,7 +1454,7 @@ end end elseif (class_type == 2) then - for healer_actor, _ in pairs (actor.healing_from) do + for healer_actor, _ in pairs(actor.healing_from) do local target_object = container._ActorTable [container._NameIndexTable [healer_actor]] if (target_object) then target_object.fight_component = true @@ -1472,11 +1472,11 @@ function Details:AtualizarJanela (instancia, _segmento) if (_segmento) then --apenas atualizar janelas que estejam mostrando o segmento solicitado if (_segmento == instancia.segmento) then - instancia:TrocaTabela (instancia, instancia.segmento, instancia.atributo, instancia.sub_atributo, true) + instancia:TrocaTabela(instancia, instancia.segmento, instancia.atributo, instancia.sub_atributo, true) end else if (instancia.modo == modo_GROUP or instancia.modo == modo_ALL) then - instancia:TrocaTabela (instancia, instancia.segmento, instancia.atributo, instancia.sub_atributo, true) + instancia:TrocaTabela(instancia, instancia.segmento, instancia.atributo, instancia.sub_atributo, true) end end end @@ -1748,7 +1748,7 @@ if (instancia.rows_showing == 0 and instancia:GetSegment() == -1) then -- -1 overall data if (not instancia:IsShowingOverallDataWarning()) then - local tutorial = Details:GetTutorialCVar ("OVERALLDATA_WARNING1") or 0 + local tutorial = Details:GetTutorialCVar("OVERALLDATA_WARNING1") or 0 if ((type(tutorial) == "number") and (tutorial < 60)) then Details:SetTutorialCVar ("OVERALLDATA_WARNING1", tutorial + 1) instancia:ShowOverallDataWarning (true) diff --git a/core/gears.lua b/core/gears.lua index 77d7fb5dd..f5481806a 100644 --- a/core/gears.lua +++ b/core/gears.lua @@ -84,7 +84,7 @@ end if (is_enabled) then --was disabled, so we need to save the current window positions. if (not current_enabled_state) then - local window1 = _detalhes:GetInstance (1) + local window1 = _detalhes:GetInstance(1) if (window1) then window1:SaveMainWindowPosition() if (window1.libwindow) then @@ -92,7 +92,7 @@ end _detalhes.chat_tab_embed.w1_pos = pos end end - local window2 = _detalhes:GetInstance (2) + local window2 = _detalhes:GetInstance(2) if (window2) then window2:SaveMainWindowPosition() if (window2.libwindow) then @@ -150,7 +150,7 @@ end end if (ChatFrame) then - for index, t in pairs (ChatFrame.messageTypeList) do + for index, t in pairs(ChatFrame.messageTypeList) do ChatFrame_RemoveMessageGroup (ChatFrame, t) ChatFrame.messageTypeList [index] = nil end @@ -159,7 +159,7 @@ end if (_detalhes.chat_tab_embed.single_window) then --only one window - local window1 = _detalhes:GetInstance (1) + local window1 = _detalhes:GetInstance(1) window1:UngroupInstance() window1.baseframe:ClearAllPoints() @@ -183,7 +183,7 @@ end window1:LockInstance (true) window1:SaveMainWindowPosition() - local window2 = _detalhes:GetInstance (2) + local window2 = _detalhes:GetInstance(2) if (window2 and window2.baseframe) then if (window2.baseframe:GetParent() == ChatFrame) then --need to detach @@ -193,8 +193,8 @@ end else --window #1 and #2 - local window1 = _detalhes:GetInstance (1) - local window2 = _detalhes:GetInstance (2) + local window1 = _detalhes:GetInstance(1) + local window2 = _detalhes:GetInstance(2) if (not window2) then window2 = _detalhes:CriarInstancia() end @@ -249,8 +249,8 @@ end function _detalhes.chat_embed:ReleaseEmbed (second_window) --release - local window1 = _detalhes:GetInstance (1) - local window2 = _detalhes:GetInstance (2) + local window1 = _detalhes:GetInstance(1) + local window2 = _detalhes:GetInstance(2) if (second_window) then window2.baseframe:ClearAllPoints() @@ -336,7 +336,7 @@ function _detalhes:SetDeathLogLimit (limit) local combat = _detalhes.tabela_vigente local wipe = table.wipe - for player_name, event_table in pairs (combat.player_last_events) do + for player_name, event_table in pairs(combat.player_last_events) do if (limit > #event_table) then for i = #event_table + 1, limit do event_table [i] = {} @@ -362,7 +362,7 @@ function _detalhes:TrackSpecsNow (track_everything) if (not track_everything) then for _, actor in _detalhes.tabela_vigente[1]:ListActors() do if (actor:IsPlayer()) then - for spellid, spell in pairs (actor:GetSpellList()) do + for spellid, spell in pairs(actor:GetSpellList()) do if (spelllist [spell.id]) then actor.spec = spelllist [spell.id] _detalhes.cached_specs [actor.serial] = actor.spec @@ -374,7 +374,7 @@ function _detalhes:TrackSpecsNow (track_everything) for _, actor in _detalhes.tabela_vigente[2]:ListActors() do if (actor:IsPlayer()) then - for spellid, spell in pairs (actor:GetSpellList()) do + for spellid, spell in pairs(actor:GetSpellList()) do if (spelllist [spell.id]) then actor.spec = spelllist [spell.id] _detalhes.cached_specs [actor.serial] = actor.spec @@ -386,15 +386,15 @@ function _detalhes:TrackSpecsNow (track_everything) else local combatlist = {} for _, combat in ipairs(_detalhes.tabela_historico.tabelas) do - tinsert (combatlist, combat) + tinsert(combatlist, combat) end - tinsert (combatlist, _detalhes.tabela_vigente) - tinsert (combatlist, _detalhes.tabela_overall) + tinsert(combatlist, _detalhes.tabela_vigente) + tinsert(combatlist, _detalhes.tabela_overall) for _, combat in ipairs(combatlist) do for _, actor in combat[1]:ListActors() do if (actor:IsPlayer()) then - for spellid, spell in pairs (actor:GetSpellList()) do + for spellid, spell in pairs(actor:GetSpellList()) do if (spelllist [spell.id]) then actor.spec = spelllist [spell.id] _detalhes.cached_specs [actor.serial] = actor.spec @@ -406,7 +406,7 @@ function _detalhes:TrackSpecsNow (track_everything) for _, actor in combat[2]:ListActors() do if (actor:IsPlayer()) then - for spellid, spell in pairs (actor:GetSpellList()) do + for spellid, spell in pairs(actor:GetSpellList()) do if (spelllist [spell.id]) then actor.spec = spelllist [spell.id] _detalhes.cached_specs [actor.serial] = actor.spec @@ -672,7 +672,7 @@ function _detalhes:DoBackgroundTasks() local t = time() - for taskName, taskTable in pairs (background_tasks) do + for taskName, taskTable in pairs(background_tasks) do if (t > taskTable.nextexec) then if (type(taskTable.func) == "string") then taskTable.object [taskTable.func] (taskTable.object, unpack (taskTable.args, 1, taskTable.args_amt)) @@ -790,7 +790,7 @@ function _detalhes.storage:GetBestFromGuild (diff, encounter_id, role, dps, guil if (encounter.guild == guild_name) then local players = encounter [role] if (players) then - for playername, t in pairs (players) do + for playername, t in pairs(players) do if (dps) then if (t[1]/encounter.elapsed > bestdps) then bestdps = t[1]/encounter.elapsed @@ -855,7 +855,7 @@ function _detalhes.storage:GetPlayerGuildRank (diff, encounter_id, role, playern for index, encounter in ipairs(encounters) do if (encounter.guild == guild_name) then local roleTable = encounter [role] - for playerName, playerTable in pairs (roleTable) do + for playerName, playerTable in pairs(roleTable) do if (not playerScore [playerName]) then playerScore [playerName] = {0, 0, {}} @@ -888,9 +888,9 @@ function _detalhes.storage:GetPlayerGuildRank (diff, encounter_id, role, playern end local t = {} - for playerName, playerTable in pairs (playerScore) do + for playerName, playerTable in pairs(playerScore) do playerTable [5] = playerName - tinsert (t, playerTable) + tinsert(t, playerTable) end table.sort (t, dps and _detalhes.Sort2 or _detalhes.Sort1) @@ -986,9 +986,9 @@ local have_encounter = function(db, ID) local minTime = ID - 120 local maxTime = ID + 120 - for diff, diffTable in pairs (db or {}) do + for diff, diffTable in pairs(db or {}) do if (type(diffTable) == "table") then - for encounterID, encounterTable in pairs (diffTable) do + for encounterID, encounterTable in pairs(diffTable) do for index, encounter in ipairs(encounterTable) do --check if the encounter fits in the timespam window if (encounter.time >= minTime and encounter.time <= maxTime) then @@ -1010,7 +1010,7 @@ local have_recent_requested_encounter = function(ID) local minTime = ID - 120 local maxTime = ID + 120 - for requestedID, _ in pairs (_detalhes.RecentRequestedIDs) do + for requestedID, _ in pairs(_detalhes.RecentRequestedIDs) do if (requestedID >= minTime and requestedID <= maxTime) then return true end @@ -1029,14 +1029,14 @@ function _detalhes.storage:GetIDsToGuildSync() local myGuildName = GetGuildInfo("player") --build the encounter ID list - for diff, diffTable in pairs (db or {}) do + for diff, diffTable in pairs(db or {}) do if (type(diffTable) == "table") then - for encounterID, encounterTable in pairs (diffTable) do + for encounterID, encounterTable in pairs(diffTable) do if (encounter_is_current_tier (encounterID)) then for index, encounter in ipairs(encounterTable) do if (encounter.servertime) then if (myGuildName == encounter.guild) then - tinsert (IDs, encounter.servertime) + tinsert(IDs, encounter.servertime) end end end @@ -1078,7 +1078,7 @@ function _detalhes.storage:CheckMissingIDsToGuildSync (IDsList) for index, ID in ipairs(IDsList) do if (not have_encounter (db, ID)) then if (not have_recent_requested_encounter (ID)) then - tinsert (RequestIDs, ID) + tinsert(RequestIDs, ID) _detalhes.RecentRequestedIDs [ID] = true end end @@ -1108,7 +1108,7 @@ function _detalhes.storage:BuildEncounterDataToGuildSync (IDsList) local EncounterList = {} local CurrentTable = {} - tinsert (EncounterList, CurrentTable) + tinsert(EncounterList, CurrentTable) local AmtToSend = 0 local MaxAmount = 0 @@ -1119,9 +1119,9 @@ function _detalhes.storage:BuildEncounterDataToGuildSync (IDsList) for index, ID in ipairs(IDsList) do - for diff, diffTable in pairs (db or {}) do + for diff, diffTable in pairs(db or {}) do if (type(diffTable) == "table") then - for encounterID, encounterTable in pairs (diffTable) do + for encounterID, encounterTable in pairs(diffTable) do for index, encounter in ipairs(encounterTable) do if (ID == encounter.time or ID == encounter.servertime) then --the time here is always exactly @@ -1129,14 +1129,14 @@ function _detalhes.storage:BuildEncounterDataToGuildSync (IDsList) CurrentTable [diff] = CurrentTable [diff] or {} CurrentTable [diff] [encounterID] = CurrentTable [diff] [encounterID] or {} - tinsert (CurrentTable [diff] [encounterID], encounter) + tinsert(CurrentTable [diff] [encounterID], encounter) AmtToSend = AmtToSend + 1 MaxAmount = MaxAmount + 1 if (MaxAmount == 3) then CurrentTable = {} - tinsert (EncounterList, CurrentTable) + tinsert(EncounterList, CurrentTable) MaxAmount = 0 end end @@ -1166,9 +1166,9 @@ function _detalhes.storage:AddGuildSyncData (data, source) local AddedAmount = 0 _detalhes.LastGuildSyncReceived = GetTime() - for diff, diffTable in pairs (data) do + for diff, diffTable in pairs(data) do if (type(diff) == "number" and type (diffTable) == "table") then - for encounterID, encounterTable in pairs (diffTable) do + for encounterID, encounterTable in pairs(diffTable) do if (type(encounterID) == "number" and type (encounterTable) == "table") then for index, encounter in ipairs(encounterTable) do --validate the encounter @@ -1180,7 +1180,7 @@ function _detalhes.storage:AddGuildSyncData (data, source) db [diff] = db [diff] or {} db [diff] [encounterID] = db [diff] [encounterID] or {} - tinsert (db [diff] [encounterID], encounter) + tinsert(db [diff] [encounterID], encounter) if (_G.DetailsRaidHistoryWindow and _G.DetailsRaidHistoryWindow:IsShown()) then _G.DetailsRaidHistoryWindow:Refresh() @@ -1226,8 +1226,8 @@ function _detalhes.storage:ListDiffs() end local t = {} - for diff, _ in pairs (db) do - tinsert (t, diff) + for diff, _ in pairs(db) do + tinsert(t, diff) end return t end @@ -1243,14 +1243,14 @@ function _detalhes.storage:ListEncounters (diff) if (diff) then local table = db [diff] if (table) then - for encounter_id, _ in pairs (table) do - tinsert (t, {diff, encounter_id}) + for encounter_id, _ in pairs(table) do + tinsert(t, {diff, encounter_id}) end end else - for diff, table in pairs (db) do - for encounter_id, _ in pairs (table) do - tinsert (t, {diff, encounter_id}) + for diff, table in pairs(db) do + for encounter_id, _ in pairs(table) do + tinsert(t, {diff, encounter_id}) end end end @@ -1270,7 +1270,7 @@ function _detalhes.storage:GetPlayerData (diff, encounter_id, playername) if (not diff) then - for diff, table in pairs (db) do + for diff, table in pairs(db) do if (encounter_id) then local encounters = table [encounter_id] if (encounters) then @@ -1278,17 +1278,17 @@ function _detalhes.storage:GetPlayerData (diff, encounter_id, playername) local encounter = encounters [i] local player = encounter.healing [playername] or encounter.damage [playername] if (player) then - tinsert (t, player) + tinsert(t, player) end end end else - for encounter_id, encounters in pairs (table) do + for encounter_id, encounters in pairs(table) do for i = 1, #encounters do local encounter = encounters [i] local player = encounter.healing [playername] or encounter.damage [playername] if (player) then - tinsert (t, player) + tinsert(t, player) end end end @@ -1304,17 +1304,17 @@ function _detalhes.storage:GetPlayerData (diff, encounter_id, playername) local encounter = encounters [i] local player = encounter.healing [playername] or encounter.damage [playername] if (player) then - tinsert (t, player) + tinsert(t, player) end end end else - for encounter_id, encounters in pairs (table) do + for encounter_id, encounters in pairs(table) do for i = 1, #encounters do local encounter = encounters [i] local player = encounter.healing [playername] or encounter.damage [playername] if (player) then - tinsert (t, player) + tinsert(t, player) end end end @@ -1350,10 +1350,10 @@ function _detalhes.storage:GetEncounterData (diff, encounter_id, guild) if (guild) then if (encounter.guild == guild) then - tinsert (t, encounter) + tinsert(t, encounter) end else - tinsert (t, encounter) + tinsert(t, encounter) end end @@ -1748,7 +1748,7 @@ function Details.Database.StoreEncounter(combat) end --add the encounter data - tinsert (encounter_database, this_combat_data) + tinsert(encounter_database, this_combat_data) if (_detalhes.debug) then print ("|cFFFFFF00Details! Storage|r: combat data added to encounter database.") end @@ -1780,7 +1780,7 @@ function Details.Database.StoreEncounter(combat) local lower_instance = _detalhes:GetLowerInstanceNumber() if (lower_instance) then - local instance = _detalhes:GetInstance (lower_instance) + local instance = _detalhes:GetInstance(lower_instance) if (instance) then local my_role = UnitGroupRolesAssigned ("player") if (my_role == "TANK") then @@ -1962,7 +1962,7 @@ function ilvl_core:CalcItemLevel (unitid, guid, shout) --need to review this in classic local talentID, name, texture, selected, available = GetTalentInfo (i, o, 1, true, unitid) if (selected) then - tinsert (talents, talentID) + tinsert(talents, talentID) break end end @@ -2093,7 +2093,7 @@ function ilvl_core:Reset() ilvl_core.raid_id = 1 ilvl_core.amt_inspecting = 0 - for guid, t in pairs (inspecting) do + for guid, t in pairs(inspecting) do ilvl_core:CancelTimer (t[2]) inspecting [guid] = nil end @@ -2418,7 +2418,7 @@ if (DetailsFramework.IsWotLKWow()) then --tab information local name, iconTexture, pointsSpent, fileName = GetTalentTabInfo (i) if (name) then - tinsert (pointsPerSpec, {name, pointsSpent, fileName}) + tinsert(pointsPerSpec, {name, pointsSpent, fileName}) end --talents information @@ -2431,7 +2431,7 @@ if (DetailsFramework.IsWotLKWow()) then if (name and rank and type (rank) == "number") then --send the specID instead of the specName local specID = Details.textureToSpec [fileName] - tinsert (talentsSelected, {iconTexture, rank, tier, column, i, specID, maxRank}) + tinsert(talentsSelected, {iconTexture, rank, tier, column, i, specID, maxRank}) end end end diff --git a/core/meta.lua b/core/meta.lua index 45e856373..80ba51e7a 100644 --- a/core/meta.lua +++ b/core/meta.lua @@ -181,7 +181,7 @@ combate_overall.segments_added =combate_overall.segments_added or {} local date_start, date_end = combate:GetDate() - tinsert (combate_overall.segments_added, {name = combate:GetCombatName (true), elapsed = combate:GetCombatTime(), clock = date_start}) + tinsert(combate_overall.segments_added, {name = combate:GetCombatName (true), elapsed = combate:GetCombatTime(), clock = date_start}) end @@ -385,7 +385,7 @@ local combats = _detalhes.tabela_historico.tabelas or {} local overall_added if (not _detalhes.overall_clear_logout) then - tinsert (combats, _detalhes.tabela_overall) + tinsert(combats, _detalhes.tabela_overall) overall_added = true end @@ -406,7 +406,7 @@ local combats = _detalhes.tabela_historico.tabelas or {} local overall_added if (not _detalhes.overall_clear_logout) then - tinsert (combats, _detalhes.tabela_overall) + tinsert(combats, _detalhes.tabela_overall) overall_added = true end @@ -440,7 +440,7 @@ local combats = _detalhes.tabela_historico.tabelas or {} local overall_added if (not _detalhes.overall_clear_logout) then - tinsert (combats, _detalhes.tabela_overall) + tinsert(combats, _detalhes.tabela_overall) overall_added = true end @@ -460,7 +460,7 @@ local combats = _detalhes.tabela_historico.tabelas or {} local overall_added if (not _detalhes.overall_clear_logout) then - tinsert (combats, _detalhes.tabela_overall) + tinsert(combats, _detalhes.tabela_overall) overall_added = true end diff --git a/core/parser.lua b/core/parser.lua index f0e58700c..ca4d8efb7 100755 --- a/core/parser.lua +++ b/core/parser.lua @@ -4604,7 +4604,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 if (time) then local schedule_id = math.random (1, 10000000) local new_schedule = _detalhes:ScheduleTimer ("CaptureTimeout", time, {capture_type, schedule_id}) - tinsert (_detalhes.capture_schedules, {new_schedule, schedule_id}) + tinsert(_detalhes.capture_schedules, {new_schedule, schedule_id}) end end @@ -4838,7 +4838,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 } function parser:RefreshFunctions() - for CLUE_ID, token in pairs (all_parser_tokens) do + for CLUE_ID, token in pairs(all_parser_tokens) do if (token_list [CLUE_ID]) then --not disabled token_list [CLUE_ID] = parser [token] end @@ -4887,7 +4887,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 local lower_instance = _detalhes:GetLowerInstanceNumber() if (lower_instance) then - lower_instance = _detalhes:GetInstance (lower_instance) + lower_instance = _detalhes:GetInstance(lower_instance) lower_instance:InstanceAlert (Loc ["STRING_WIPE_ALERT"], {[[Interface\CHARACTERFRAME\UI-StateIcon]], 18, 18, false, 0.5, 1, 0, 0.5}, 4) end else @@ -5873,10 +5873,10 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 --do not save window pos if (_detalhes.tabela_instancias) then currentStep = "Dealing With Instances" - tinsert (_detalhes_global.exit_log, "2 - Clearing user place from instances.") + tinsert(_detalhes_global.exit_log, "2 - Clearing user place from instances.") for id, instance in _detalhes:ListInstances() do if (id) then - tinsert (_detalhes_global.exit_log, " - " .. id .. " has baseFrame: " .. (instance.baseframe and "yes" or "no") .. ".") + tinsert(_detalhes_global.exit_log, " - " .. id .. " has baseFrame: " .. (instance.baseframe and "yes" or "no") .. ".") if (instance.baseframe) then instance.baseframe:SetUserPlaced (false) instance.baseframe:SetDontSavePosition (true) @@ -5887,36 +5887,36 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 --leave combat start save tables if (_detalhes.in_combat and _detalhes.tabela_vigente) then - tinsert (_detalhes_global.exit_log, "3 - Leaving current combat.") + tinsert(_detalhes_global.exit_log, "3 - Leaving current combat.") currentStep = "Leaving Current Combat" xpcall (_detalhes.SairDoCombate, saver_error) _detalhes.can_panic_mode = true end if (_detalhes.CheckSwitchOnLogon and _detalhes.tabela_instancias[1] and _detalhes.tabela_instancias and getmetatable (_detalhes.tabela_instancias[1])) then - tinsert (_detalhes_global.exit_log, "4 - Reversing switches.") + tinsert(_detalhes_global.exit_log, "4 - Reversing switches.") currentStep = "Check Switch on Logon" xpcall (_detalhes.CheckSwitchOnLogon, saver_error) end if (_detalhes.wipe_full_config) then - tinsert (_detalhes_global.exit_log, "5 - Is a full config wipe.") + tinsert(_detalhes_global.exit_log, "5 - Is a full config wipe.") _detalhes_global = nil _detalhes_database = nil return end --save the config - tinsert (_detalhes_global.exit_log, "6 - Saving Config.") + tinsert(_detalhes_global.exit_log, "6 - Saving Config.") currentStep = "Saving Config" xpcall (_detalhes.SaveConfig, saver_error) - tinsert (_detalhes_global.exit_log, "7 - Saving Profiles.") + tinsert(_detalhes_global.exit_log, "7 - Saving Profiles.") currentStep = "Saving Profile" xpcall (_detalhes.SaveProfile, saver_error) --save the nicktag cache - tinsert (_detalhes_global.exit_log, "8 - Saving nicktag cache.") + tinsert(_detalhes_global.exit_log, "8 - Saving nicktag cache.") local saveNicktabCache = function() _detalhes_database.nick_tag_cache = Details.CopyTable(_detalhes_database.nick_tag_cache) @@ -5951,37 +5951,37 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 function _detalhes:PrintParserCacheIndexes() local amount = 0 - for n, nn in pairs (damage_cache) do + for n, nn in pairs(damage_cache) do amount = amount + 1 end print ("parser damage_cache", amount) amount = 0 - for n, nn in pairs (damage_cache_pets) do + for n, nn in pairs(damage_cache_pets) do amount = amount + 1 end print ("parser damage_cache_pets", amount) amount = 0 - for n, nn in pairs (damage_cache_petsOwners) do + for n, nn in pairs(damage_cache_petsOwners) do amount = amount + 1 end print ("parser damage_cache_petsOwners", amount) amount = 0 - for n, nn in pairs (healing_cache) do + for n, nn in pairs(healing_cache) do amount = amount + 1 end print ("parser healing_cache", amount) amount = 0 - for n, nn in pairs (energy_cache) do + for n, nn in pairs(energy_cache) do amount = amount + 1 end print ("parser energy_cache", amount) amount = 0 - for n, nn in pairs (misc_cache) do + for n, nn in pairs(misc_cache) do amount = amount + 1 end print ("parser misc_cache", amount) diff --git a/core/plugins.lua b/core/plugins.lua index fb86d9b2b..d837781a9 100644 --- a/core/plugins.lua +++ b/core/plugins.lua @@ -52,7 +52,7 @@ local id = plugin.instance_id if (id) then - return _detalhes:GetInstance (id) + return _detalhes:GetInstance(id) end end @@ -91,7 +91,7 @@ end function _detalhes:CheckDefaultTable (current, default) - for key, value in pairs (default) do + for key, value in pairs(default) do if (type(value) == "table") then if (type(current [key]) ~= "table") then current [key] = Details.CopyTable (value) @@ -240,7 +240,7 @@ local OnEnableFunction = function(self) self.__parent.Enabled = true --self = frame __parent = plugin object - local instance = _detalhes:GetInstance (self.__parent.instance_id) + local instance = _detalhes:GetInstance(self.__parent.instance_id) if (instance) then self:SetParent(instance.baseframe) end @@ -299,7 +299,7 @@ end end) - Frame:SetFrameStrata ("HIGH") + Frame:SetFrameStrata("HIGH") Frame:SetFrameLevel (6) Frame:Hide() @@ -335,7 +335,7 @@ if (template == 2) then local options_frame = CreateFrame("frame", name, UIParent, "ButtonFrameTemplate,BackdropTemplate") - tinsert (UISpecialFrames, name) + tinsert(UISpecialFrames, name) options_frame:SetSize(500, 200) options_frame:SetScript("OnMouseDown", function(self, button) @@ -359,7 +359,7 @@ options_frame:SetMovable (true) options_frame:EnableMouse (true) - options_frame:SetFrameStrata ("DIALOG") + options_frame:SetFrameStrata("DIALOG") options_frame:SetToplevel (true) options_frame:Hide() @@ -373,7 +373,7 @@ elseif (template == 1) then local options_frame = CreateFrame("frame", name, UIParent,"BackdropTemplate") - tinsert (UISpecialFrames, name) + tinsert(UISpecialFrames, name) options_frame:SetSize(500, 200) options_frame:SetScript("OnMouseDown", function(self, button) @@ -397,7 +397,7 @@ options_frame:SetMovable (true) options_frame:EnableMouse (true) - options_frame:SetFrameStrata ("DIALOG") + options_frame:SetFrameStrata("DIALOG") options_frame:SetToplevel (true) options_frame:Hide() @@ -632,7 +632,7 @@ newButton:SetIcon (pluginObject.__icon, nil, nil, nil, pluginObject.__iconcoords, pluginObject.__iconcolor, 4) --add it to menu table - tinsert (f.MenuButtons, newButton) + tinsert(f.MenuButtons, newButton) return newButton end diff --git a/core/plugins_raid.lua b/core/plugins_raid.lua index 7503df24c..1d2afd917 100644 --- a/core/plugins_raid.lua +++ b/core/plugins_raid.lua @@ -111,7 +111,7 @@ if (from_mode_menu) then --refresh - instance.baseframe.cabecalho.modo_selecao:GetScript ("OnEnter")(instance.baseframe.cabecalho.modo_selecao, _, true) + instance.baseframe.cabecalho.modo_selecao:GetScript("OnEnter")(instance.baseframe.cabecalho.modo_selecao, _, true) end else if (not instance.wait_for_plugin) then @@ -126,7 +126,7 @@ local available = {} for index, plugin in ipairs(self.Menu) do if (not self.PluginsInUse [ plugin [4] ] and plugin [3].__enabled) then -- 3 = plugin object 4 = absolute name - tinsert (available, plugin) + tinsert(available, plugin) end end return available diff --git a/core/plugins_solo.lua b/core/plugins_solo.lua index d16d5061a..419a2a37d 100644 --- a/core/plugins_solo.lua +++ b/core/plugins_solo.lua @@ -57,11 +57,11 @@ instance:AlteraModo (instance, DETAILS_MODE_GROUP) button.close_confirmation:Hide() - instance.baseframe.cabecalho.modo_selecao:GetScript ("OnEnter")(instance.baseframe.cabecalho.modo_selecao) + instance.baseframe.cabecalho.modo_selecao:GetScript("OnEnter")(instance.baseframe.cabecalho.modo_selecao) end - local close_window = gump:NewButton (button.close_confirmation, nil, "$parentCloseWindowButton", "CloseWindowButton", 140, 20, close_func, nil, nil, nil, Loc ["STRING_MENU_CLOSE_INSTANCE"], 1, gump:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")) - local back_to_group_and_raid = gump:NewButton (button.close_confirmation, nil, "$parentBackToGroupButton", "BackToGroupButton", 140, 20, group_func, nil, nil, nil, Loc ["STRING_SWITCH_TO"] .. ": " .. Loc ["STRING_MODE_GROUP"], 2, gump:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")) + local close_window = gump:NewButton(button.close_confirmation, nil, "$parentCloseWindowButton", "CloseWindowButton", 140, 20, close_func, nil, nil, nil, Loc ["STRING_MENU_CLOSE_INSTANCE"], 1, gump:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")) + local back_to_group_and_raid = gump:NewButton(button.close_confirmation, nil, "$parentBackToGroupButton", "BackToGroupButton", 140, 20, group_func, nil, nil, nil, Loc ["STRING_SWITCH_TO"] .. ": " .. Loc ["STRING_MODE_GROUP"], 2, gump:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")) close_window:SetIcon ([[Interface\Buttons\UI-Panel-MinimizeButton-Up]], nil, nil, nil, {0.143125, 0.8653125, 0.1446875, 0.8653125}, nil, nil, 2) back_to_group_and_raid:SetIcon ([[Interface\AddOns\Details\images\modo_icones]], nil, nil, nil, {32/256, 32/256*2, 0, 1}, nil, nil, 2) @@ -94,7 +94,7 @@ end self.need_rolagem = false - self.baseframe:EnableMouseWheel (false) + self.baseframe:EnableMouseWheel(false) Details.FadeHandler.Fader(self, 1, nil, "barras") --escondendo a janela da inst�ncia [inst�ncia [force hide [velocidade [hidar o que]]]] self.mostrando = "solo" end diff --git a/core/plugins_statusbar.lua b/core/plugins_statusbar.lua index e633b67f3..056ad78a7 100644 --- a/core/plugins_statusbar.lua +++ b/core/plugins_statusbar.lua @@ -307,7 +307,7 @@ frame:SetBackdropColor(0.7, 0.7, 0.7, 0.6) GameCooltip:Reset() - GameCooltip:AddFromTable (onEnterCooltipTexts) + GameCooltip:AddFromTable(onEnterCooltipTexts) GameCooltip:SetOption("TextSize", 9) GameCooltip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) @@ -316,7 +316,7 @@ GameCooltip:SetOption("YSpacingMod", -4) GameCooltip:SetOption("FixedHeight", 46) - GameCooltip:ShowCooltip (frame, "tooltip") + GameCooltip:ShowCooltip(frame, "tooltip") return true end @@ -368,7 +368,7 @@ GameCooltip:SetOption("HeightAnchorMod", -12) GameCooltip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) - GameCooltip:ShowCooltip (frame, "menu") + GameCooltip:ShowCooltip(frame, "menu") end return true end @@ -840,8 +840,8 @@ do --ExtraOptionsOnOpen is called when options are opened and plugin have custom options --here we setup options widgets for get the values of clicked child and also for tell options window what child we are configuring function PSegment:ExtraOptionsOnOpen (child) - _G.DetailsStatusBarOptions2SegmentTypeDropdown.MyObject:SetFixedParameter (child) - _G.DetailsStatusBarOptions2SegmentTypeDropdown.MyObject:Select (child.options.segmentType, true) + _G.DetailsStatusBarOptions2SegmentTypeDropdown.MyObject:SetFixedParameter(child) + _G.DetailsStatusBarOptions2SegmentTypeDropdown.MyObject:Select(child.options.segmentType, true) end --Create Plugin Frames (must have) @@ -1027,8 +1027,8 @@ do --ExtraOptionsOnOpen is called when options are opened and plugin have custom options --here we setup options widgets for get the values of clicked child and also for tell options window what child we are configuring function Clock:ExtraOptionsOnOpen (child) - _G.DetailsStatusBarOptions2ClockTypeDropdown.MyObject:SetFixedParameter (child) - _G.DetailsStatusBarOptions2ClockTypeDropdown.MyObject:Select (child.options.timeType, true) + _G.DetailsStatusBarOptions2ClockTypeDropdown.MyObject:SetFixedParameter(child) + _G.DetailsStatusBarOptions2ClockTypeDropdown.MyObject:Select(child.options.timeType, true) end --Create Plugin Frames @@ -1441,8 +1441,8 @@ do --ExtraOptionsOnOpen is called when options are opened and plugin have custom options --here we setup options widgets for get the values of clicked child and also for tell options window what child we are configuring function PTime:ExtraOptionsOnOpen (child) - _G.DetailsStatusBarOptions2TimeTypeDropdown.MyObject:SetFixedParameter (child) - _G.DetailsStatusBarOptions2TimeTypeDropdown.MyObject:Select (child.options.timeType, true) + _G.DetailsStatusBarOptions2TimeTypeDropdown.MyObject:SetFixedParameter(child) + _G.DetailsStatusBarOptions2TimeTypeDropdown.MyObject:Select(child.options.timeType, true) end --Create Plugin Frames (must have) @@ -1465,13 +1465,13 @@ end ---------default options panel ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- local window = _detalhes.gump:NewPanel (UIParent, nil, "DetailsStatusBarOptions", nil, 300, 180) -tinsert (UISpecialFrames, "DetailsStatusBarOptions") +tinsert(UISpecialFrames, "DetailsStatusBarOptions") window:SetPoint("center", UIParent, "center") window.locked = false window.close_with_right = true window.child = nil window.instance = nil -window:SetFrameStrata ("FULLSCREEN") +window:SetFrameStrata("FULLSCREEN") DetailsFramework:ApplyStandardBackdrop(window) --window:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], tile = true, tileSize = 16, edgeFile = [[Interface\AddOns\Details\images\border_2]], edgeSize=12}) @@ -1552,7 +1552,7 @@ end) window.textcolortexture:SetPoint("left", window.textcolor, "right", 2) window.textcolortexture:SetTexture(1, 1, 1) - _detalhes.gump:NewButton (window, _, "$parentTextColorButton", "textcolorbutton", 160, 20, colorpick) + _detalhes.gump:NewButton(window, _, "$parentTextColorButton", "textcolorbutton", 160, 20, colorpick) window.textcolorbutton:SetPoint("left", window.textcolor, "right", 2) --window.textcolorbutton:InstallCustomTexture() @@ -1584,7 +1584,7 @@ end) local buildFontMenu = function() local fontObjects = SharedMedia:HashTable ("font") local fontTable = {} - for name, fontPath in pairs (fontObjects) do + for name, fontPath in pairs(fontObjects) do fontTable[#fontTable+1] = {value = name, label = name, onclick = onSelectFont, font = fontPath} end return fontTable @@ -1630,20 +1630,20 @@ end) window.child = child window.instance = child.instance - _G.DetailsStatusBarOptionsTextStyleDropdown.MyObject:Select (child.options.textStyle, true) + _G.DetailsStatusBarOptionsTextStyleDropdown.MyObject:Select(child.options.textStyle, true) _G.DetailsStatusBarOptionsTextColorTexture:SetColorTexture (child.options.textColor[1], child.options.textColor[2], child.options.textColor[3], child.options.textColor[4]) - _G.DetailsStatusBarOptionsSliderFontSize.MyObject:SetFixedParameter (child) + _G.DetailsStatusBarOptionsSliderFontSize.MyObject:SetFixedParameter(child) _G.DetailsStatusBarOptionsSliderFontSize.MyObject:SetValue(child.options.textSize) - _G.DetailsStatusBarOptionsFontDropdown.MyObject:SetFixedParameter (child) - _G.DetailsStatusBarOptionsFontDropdown.MyObject:Select (child.options.textFace) + _G.DetailsStatusBarOptionsFontDropdown.MyObject:SetFixedParameter(child) + _G.DetailsStatusBarOptionsFontDropdown.MyObject:Select(child.options.textFace) - _G.DetailsStatusBarOptionsSliderAlignX.MyObject:SetFixedParameter (child) + _G.DetailsStatusBarOptionsSliderAlignX.MyObject:SetFixedParameter(child) _G.DetailsStatusBarOptionsSliderAlignX.MyObject:SetValue(child.options.textXMod) - _G.DetailsStatusBarOptionsSliderAlignY.MyObject:SetFixedParameter (child) + _G.DetailsStatusBarOptionsSliderAlignY.MyObject:SetFixedParameter(child) _G.DetailsStatusBarOptionsSliderAlignY.MyObject:SetValue(child.options.textYMod) _G.DetailsStatusBarOptions:Show() @@ -1656,7 +1656,7 @@ end) extraWindow:HideWidgets() - for _, widget in pairs (child.ExtraOptions) do + for _, widget in pairs(child.ExtraOptions) do widget:Show() end diff --git a/core/plugins_toolbar.lua b/core/plugins_toolbar.lua index fd6ab6873..bd186b549 100644 --- a/core/plugins_toolbar.lua +++ b/core/plugins_toolbar.lua @@ -71,7 +71,7 @@ return end - local instance = _detalhes:GetInstance (lower_instance) + local instance = _detalhes:GetInstance(lower_instance) if (#_detalhes.ToolBar.Shown > 0) then --already shown @@ -133,7 +133,7 @@ --internal functions do local PluginDescPanel = CreateFrame("frame", "DetailsPluginDescPanel", UIParent) - PluginDescPanel:SetFrameStrata ("tooltip") + PluginDescPanel:SetFrameStrata("tooltip") PluginDescPanel:Hide() PluginDescPanel:SetWidth(205) PluginDescPanel.BackdropTable = {} @@ -161,7 +161,7 @@ end local lower_instance = _detalhes:GetLowerInstanceNumber() if (lower_instance) then - _detalhes.OnEnterMainWindow(_detalhes:GetInstance (lower_instance), button, 3) + _detalhes.OnEnterMainWindow(_detalhes:GetInstance(lower_instance), button, 3) end if (button.tooltip) then @@ -229,7 +229,7 @@ end local lower_instance = _detalhes:GetLowerInstanceNumber() if (lower_instance) then - _detalhes.OnLeaveMainWindow(_detalhes:GetInstance (lower_instance), button, 3) + _detalhes.OnLeaveMainWindow(_detalhes:GetInstance(lower_instance), button, 3) end if (button.tooltip) then @@ -260,10 +260,10 @@ end return end - local instance = _detalhes:GetInstance (lower_instance) + local instance = _detalhes:GetInstance(lower_instance) if (not just_refresh) then - for _, instancia in pairs (_detalhes.tabela_instancias) do + for _, instancia in pairs(_detalhes.tabela_instancias) do if (instancia.baseframe and instancia:IsAtiva()) then instancia:ReajustaGump() end @@ -272,7 +272,7 @@ end instance:ChangeSkin() else instance:ToolbarMenuButtons() - instance:SetAutoHideMenu (nil, nil, true) + instance:SetAutoHideMenu(nil, nil, true) end return true diff --git a/core/util.lua b/core/util.lua index fa6cff0b5..b1673aff2 100644 --- a/core/util.lua +++ b/core/util.lua @@ -524,14 +524,14 @@ wipe (_detalhes.ToKFunctions) - tinsert (_detalhes.ToKFunctions, _detalhes.NoToK) - tinsert (_detalhes.ToKFunctions, _detalhes.ToK) - tinsert (_detalhes.ToKFunctions, _detalhes.ToK2) - tinsert (_detalhes.ToKFunctions, _detalhes.ToK0) - tinsert (_detalhes.ToKFunctions, _detalhes.ToKMin) - tinsert (_detalhes.ToKFunctions, _detalhes.ToK2Min) - tinsert (_detalhes.ToKFunctions, _detalhes.ToK0Min) - tinsert (_detalhes.ToKFunctions, _detalhes.comma_value) + tinsert(_detalhes.ToKFunctions, _detalhes.NoToK) + tinsert(_detalhes.ToKFunctions, _detalhes.ToK) + tinsert(_detalhes.ToKFunctions, _detalhes.ToK2) + tinsert(_detalhes.ToKFunctions, _detalhes.ToK0) + tinsert(_detalhes.ToKFunctions, _detalhes.ToKMin) + tinsert(_detalhes.ToKFunctions, _detalhes.ToK2Min) + tinsert(_detalhes.ToKFunctions, _detalhes.ToK0Min) + tinsert(_detalhes.ToKFunctions, _detalhes.comma_value) end @@ -657,14 +657,14 @@ wipe (_detalhes.ToKFunctions) - tinsert (_detalhes.ToKFunctions, _detalhes.NoToK) - tinsert (_detalhes.ToKFunctions, _detalhes.ToK) - tinsert (_detalhes.ToKFunctions, _detalhes.ToK2) - tinsert (_detalhes.ToKFunctions, _detalhes.ToK0) - tinsert (_detalhes.ToKFunctions, _detalhes.ToKMin) - tinsert (_detalhes.ToKFunctions, _detalhes.ToK2Min) - tinsert (_detalhes.ToKFunctions, _detalhes.ToK0Min) - tinsert (_detalhes.ToKFunctions, _detalhes.comma_value) + tinsert(_detalhes.ToKFunctions, _detalhes.NoToK) + tinsert(_detalhes.ToKFunctions, _detalhes.ToK) + tinsert(_detalhes.ToKFunctions, _detalhes.ToK2) + tinsert(_detalhes.ToKFunctions, _detalhes.ToK0) + tinsert(_detalhes.ToKFunctions, _detalhes.ToKMin) + tinsert(_detalhes.ToKFunctions, _detalhes.ToK2Min) + tinsert(_detalhes.ToKFunctions, _detalhes.ToK0Min) + tinsert(_detalhes.ToKFunctions, _detalhes.comma_value) -- end @@ -809,7 +809,7 @@ --yah, i know function _detalhes.table.copy (t1, t2) - for key, value in pairs (t2) do + for key, value in pairs(t2) do if (type(value) == "table") then t1 [key] = Details.CopyTable (value) else @@ -820,7 +820,7 @@ end function _detalhes.table.deploy (t1, t2) - for key, value in pairs (t2) do + for key, value in pairs(t2) do if (type(value) == "table") then t1 [key] = t1 [key] or {} _detalhes.table.deploy (t1 [key], t2 [key]) @@ -831,7 +831,7 @@ end function _detalhes.table.overwrite (t1, t2) - for key, value in pairs (t2) do + for key, value in pairs(t2) do if (type(value) == "table") then t1 [key] = t1 [key] or {} _detalhes.table.overwrite (t1 [key], t2 [key]) @@ -854,7 +854,7 @@ space = space .. " " end - for key, value in pairs (t) do + for key, value in pairs(t) do local tpe = type (value) @@ -1323,7 +1323,7 @@ end Object.HaveGradientEffect = true GradientFrameControl.HaveGradientEffect = true - if (not GradientFrameControl:GetScript ("OnUpdate")) then + if (not GradientFrameControl:GetScript("OnUpdate")) then GradientFrameControl:SetScript("OnUpdate", frame_task) end diff --git a/core/windows.lua b/core/windows.lua index 438498ec4..ba32673c9 100644 --- a/core/windows.lua +++ b/core/windows.lua @@ -879,7 +879,7 @@ _detalhes.cooltip_preset2_backdrop = preset2_backdrop --"Details BarBorder 3" - function _detalhes:CooltipPreset (preset) + function _detalhes:CooltipPreset(preset) local GameCooltip = GameCooltip GameCooltip:Reset() @@ -945,8 +945,8 @@ _detalhes.yesNo ["ask"]:SetWidth(480) _detalhes.yesNo ["ask"]:SetJustifyH("center") _detalhes.yesNo ["ask"]:SetHeight(22) - _detalhes.gump:NewButton (_detalhes.yesNo, _, "$parentNo", "no", 100, 30, function() _detalhes.yesNo:Hide() end, nil, nil, nil, Loc ["STRING_NO"]) - _detalhes.gump:NewButton (_detalhes.yesNo, _, "$parentYes", "yes", 100, 30, nil, nil, nil, nil, Loc ["STRING_YES"]) + _detalhes.gump:NewButton(_detalhes.yesNo, _, "$parentNo", "no", 100, 30, function() _detalhes.yesNo:Hide() end, nil, nil, nil, Loc ["STRING_NO"]) + _detalhes.gump:NewButton(_detalhes.yesNo, _, "$parentYes", "yes", 100, 30, nil, nil, nil, nil, Loc ["STRING_YES"]) _detalhes.yesNo ["no"]:SetPoint(10, -45) _detalhes.yesNo ["yes"]:SetPoint(390, -45) _detalhes.yesNo ["no"]:InstallCustomTexture() @@ -955,7 +955,7 @@ function _detalhes:Ask (msg, func, ...) _detalhes.yesNo ["ask"].text = msg local p1, p2 = ... - _detalhes.yesNo ["yes"]:SetClickFunction (func, p1, p2) + _detalhes.yesNo ["yes"]:SetClickFunction(func, p1, p2) _detalhes.yesNo:Show() end _detalhes.yesNo:Hide() @@ -1246,7 +1246,7 @@ end end end - _detalhes:OpenOptionsWindow (_detalhes:GetInstance (lower_instance)) + _detalhes:OpenOptionsWindow (_detalhes:GetInstance(lower_instance)) end) --create new window f.new_window_button = CreateFrame("button", nil, f) @@ -1263,8 +1263,8 @@ if (not _G.DetailsUpdateDialog) then local updatewindow_frame = CreateFrame("frame", "DetailsUpdateDialog", UIParent, "ButtonFrameTemplate") - updatewindow_frame:SetFrameStrata ("LOW") - tinsert (UISpecialFrames, "DetailsUpdateDialog") + updatewindow_frame:SetFrameStrata("LOW") + tinsert(UISpecialFrames, "DetailsUpdateDialog") updatewindow_frame:SetPoint("center", UIParent, "center") updatewindow_frame:SetSize(512, 200) --updatewindow_frame.portrait:SetTexture([[Interface\CHARACTERFRAME\TEMPORARYPORTRAIT-FEMALE-GNOME]]) @@ -1358,11 +1358,11 @@ local lower_instance = _detalhes:GetLowerInstanceNumber() if (not lower_instance) then - local instance = _detalhes:GetInstance (1) + local instance = _detalhes:GetInstance(1) _detalhes.CriarInstancia (_, _, 1) _detalhes:OpenOptionsWindow (instance) else - _detalhes:OpenOptionsWindow (_detalhes:GetInstance (lower_instance)) + _detalhes:OpenOptionsWindow (_detalhes:GetInstance(lower_instance)) end --2 = reset data @@ -1446,7 +1446,7 @@ GameCooltip:SetBackdrop(1, _detalhes.tooltip_backdrop, nil, _detalhes.tooltip_border_color) GameCooltip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0.64453125, 0}, {.8, .8, .8, 0.2}, true) - GameCooltip:SetOwner (self, "topright", "bottomleft") + GameCooltip:SetOwner(self, "topright", "bottomleft") GameCooltip:ShowCooltip() @@ -1481,11 +1481,11 @@ if (_detalhes.hotcorner_topleft.onclick_what_todo == 1) then local lower_instance = _detalhes:GetLowerInstanceNumber() if (not lower_instance) then - local instance = _detalhes:GetInstance (1) + local instance = _detalhes:GetInstance(1) _detalhes.CriarInstancia (_, _, 1) _detalhes:OpenOptionsWindow (instance) else - _detalhes:OpenOptionsWindow (_detalhes:GetInstance (lower_instance)) + _detalhes:OpenOptionsWindow (_detalhes:GetInstance(lower_instance)) end elseif (_detalhes.hotcorner_topleft.onclick_what_todo == 2) then @@ -1500,11 +1500,11 @@ local quickclick_func2 = function(frame, button) local lower_instance = _detalhes:GetLowerInstanceNumber() if (not lower_instance) then - local instance = _detalhes:GetInstance (1) + local instance = _detalhes:GetInstance(1) _detalhes.CriarInstancia (_, _, 1) _detalhes:OpenOptionsWindow (instance) else - _detalhes:OpenOptionsWindow (_detalhes:GetInstance (lower_instance)) + _detalhes:OpenOptionsWindow (_detalhes:GetInstance(lower_instance)) end end diff --git a/frames/fw_mods.lua b/frames/fw_mods.lua index d3b41d5ac..49589f0a5 100644 --- a/frames/fw_mods.lua +++ b/frames/fw_mods.lua @@ -190,7 +190,7 @@ function gump:NewDetailsButton (parent, container, instancia, func, param1, para GameCooltip:SetType ("tooltip") GameCooltip:SetColor ("main", "transparent") GameCooltip:AddLine (new_button.tooltip) - GameCooltip:SetOwner (new_button) + GameCooltip:SetOwner(new_button) GameCooltip:ShowCooltip() end @@ -208,7 +208,7 @@ function gump:NewDetailsButton (parent, container, instancia, func, param1, para new_button.enter = false if (new_button.tooltip) then - _detalhes.popup:ShowMe (false) + _detalhes.popup:ShowMe(false) end if (new_button.texture) then @@ -375,7 +375,7 @@ function gump:NewTextBox (parent, container, member, func, param1, param2, w, h, GameCooltip:SetType ("tooltip") GameCooltip:SetColor ("main", "transparent") GameCooltip:AddLine (editbox.tooltip) - GameCooltip:SetOwner (editbox) + GameCooltip:SetOwner(editbox) GameCooltip:ShowCooltip() end @@ -398,7 +398,7 @@ function gump:NewTextBox (parent, container, member, func, param1, param2, w, h, if (editbox.tooltip) then if (not editbox.HaveMenu) then - _detalhes.popup:ShowMe (false) + _detalhes.popup:ShowMe(false) end end @@ -684,7 +684,7 @@ function gump:NewScrollBar2 (master, slave, x, y) slider_gump:Disable() slider_gump:SetValue(0) slider_gump.ativo = false - master:EnableMouseWheel (false) + master:EnableMouseWheel(false) return end @@ -694,13 +694,13 @@ function gump:NewScrollBar2 (master, slave, x, y) if (not slider_gump.ativo) then slider_gump:Enable() slider_gump.ativo = true - master:EnableMouseWheel (true) + master:EnableMouseWheel(true) end else slider_gump:Disable() slider_gump:SetValue(0) slider_gump.ativo = false - master:EnableMouseWheel (false) + master:EnableMouseWheel(false) end end diff --git a/frames/window_api.lua b/frames/window_api.lua index 897a8db98..6e6af6728 100644 --- a/frames/window_api.lua +++ b/frames/window_api.lua @@ -27,7 +27,7 @@ function Details:CreateAPI2Frame() --local Api2Frame = DetailsFramework:CreateSimplePanel (UIParent, panelWidth, panelHeight, "Details! API 2.0", "DetailsAPI2Frame") local Api2Frame = _G.DetailsAPI2Frame - Api2Frame:SetFrameStrata ("FULLSCREEN") + Api2Frame:SetFrameStrata("FULLSCREEN") Api2Frame:SetPoint("center") DetailsFramework:ApplyStandardBackdrop (Api2Frame, false, 1.2) @@ -143,7 +143,7 @@ function Details:CreateAPI2Frame() end for apiIndex, apiDesc in ipairs(api) do - tinsert (apiFunctionNames, apiDesc.name) + tinsert(apiFunctionNames, apiDesc.name) end local api2ScrollMenu = DetailsFramework:CreateScrollBox (Api2Frame, "$parentApi2MenuScroll", apiMenuScrollRefresh, apiFunctionNames, scrollWidth, scrollHeight, lineAmount, lineHeight) @@ -166,7 +166,7 @@ function Details:CreateAPI2Frame() end GameCooltip2:Preset(2) - GameCooltip2:SetOwner (self, "left", "right", 2, 0) + GameCooltip2:SetOwner(self, "left", "right", 2, 0) GameCooltip2:AddLine (apiInfo.desc) GameCooltip2:ShowCooltip() end @@ -247,7 +247,7 @@ function Details:CreateAPI2Frame() local parameterOnEnter = function(self) GameCooltip2:Preset(2) - GameCooltip2:SetOwner (self) + GameCooltip2:SetOwner(self) --fill the box in the right with information about the API local apiInfo = api [currentSelected] @@ -286,7 +286,7 @@ function Details:CreateAPI2Frame() f.required:SetPoint("left", f, "left", space2, 0) f.default:SetPoint("left", f, "left", space3, 0) - tinsert (parametersLines, f) + tinsert(parametersLines, f) end --return value box @@ -339,7 +339,7 @@ function Details:CreateAPI2Frame() f.desc:SetPoint("topleft", f.name, "bottomleft", 0, -5) - tinsert (returnLines, f) + tinsert(returnLines, f) end function Api2Frame.Refresh() diff --git a/frames/window_benchmark.lua b/frames/window_benchmark.lua index e09883727..c6ec39af2 100644 --- a/frames/window_benchmark.lua +++ b/frames/window_benchmark.lua @@ -19,7 +19,7 @@ local libwindow = LibStub("LibWindow-1.1") local f = CreateFrame("frame", "DetailsBenchmark", UIParent,"BackdropTemplate") f:SetSize(800, 600) f:SetPoint("left", UIParent, "left") - f:SetFrameStrata ("LOW") + f:SetFrameStrata("LOW") f:EnableMouse (true) f:SetMovable (true) f:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true}) diff --git a/frames/window_bookmark.lua b/frames/window_bookmark.lua index 9cd5a90db..2d721747e 100644 --- a/frames/window_bookmark.lua +++ b/frames/window_bookmark.lua @@ -38,7 +38,7 @@ function Details:OpenBookmarkConfig() panel.selecting_slot = id GameCooltip:Reset() GameCooltip:SetType (3) - GameCooltip:SetOwner (self) + GameCooltip:SetOwner(self) Details:MontaAtributosOption (Details:GetInstance(1), select_attribute) GameCooltip:SetColor (1, cooltip_color) GameCooltip:SetColor (2, cooltip_color) @@ -93,7 +93,7 @@ function Details:OpenBookmarkConfig() local label = DF:CreateLabel(set, "") label:SetPoint("left", icon, "right", 2, 0) - tinsert (panel.blocks, {icon = icon, label = label, bg = set.bg, button = set}) + tinsert(panel.blocks, {icon = icon, label = label, bg = set.bg, button = set}) end local normal_coords = {0, 1, 0, 1} diff --git a/frames/window_brokertexteditor.lua b/frames/window_brokertexteditor.lua index 327b158ad..0065b872d 100644 --- a/frames/window_brokertexteditor.lua +++ b/frames/window_brokertexteditor.lua @@ -60,7 +60,7 @@ function Details:OpenBrokerTextEditor() local optiontable = {"{dmg}", "{dps}", "{dpos}", "{ddiff}", "{heal}", "{hps}", "{hpos}", "{hdiff}", "{time}"} - local add_button = DF:NewButton (panel, nil, "$parentAddButton", nil, 20, 20, function() + local add_button = DF:NewButton(panel, nil, "$parentAddButton", nil, 20, 20, function() textentry.editbox:Insert (optiontable [option_selected]) end, nil, nil, nil, "<-") @@ -194,17 +194,17 @@ function Details:OpenBrokerTextEditor() panel:Hide() end - local ok_button = DF:NewButton (panel, nil, "$parentButtonOk", nil, 80, 20, done, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_DONE"], 1) + local ok_button = DF:NewButton(panel, nil, "$parentButtonOk", nil, 80, 20, done, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_DONE"], 1) ok_button.tooltip = Loc ["STRING_OPTIONS_TEXTEDITOR_DONE_TOOLTIP"] ok_button:SetPoint("topright", panel, "topright", -12, -174) ok_button:SetTemplate(DF:GetTemplate ("button", "OPTIONS_BUTTON_TEMPLATE")) - local reset_button = DF:NewButton (panel, nil, "$parentDefaultOk", nil, 80, 20, function() textentry.editbox:SetText("") end, nil, nil, nil, "Reset", 1) + local reset_button = DF:NewButton(panel, nil, "$parentDefaultOk", nil, 80, 20, function() textentry.editbox:SetText("") end, nil, nil, nil, "Reset", 1) reset_button.tooltip = Loc ["STRING_OPTIONS_TEXTEDITOR_RESET_TOOLTIP"] reset_button:SetPoint("topright", panel, "topright", -100, -152) reset_button:SetTemplate(DF:GetTemplate ("button", "OPTIONS_BUTTON_TEMPLATE")) - local cancel_button = DF:NewButton (panel, nil, "$parentDefaultCancel", nil, 80, 20, function() textentry.editbox:SetText(panel.default_text); done(); end, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_CANCEL"], 1) + local cancel_button = DF:NewButton(panel, nil, "$parentDefaultCancel", nil, 80, 20, function() textentry.editbox:SetText(panel.default_text); done(); end, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_CANCEL"], 1) cancel_button.tooltip = Loc ["STRING_OPTIONS_TEXTEDITOR_CANCEL_TOOLTIP"] cancel_button:SetPoint("topright", panel, "topright", -100, -174) cancel_button:SetTemplate(DF:GetTemplate ("button", "OPTIONS_BUTTON_TEMPLATE")) diff --git a/frames/window_classcolor.lua b/frames/window_classcolor.lua index e72ba5b3d..5a5653951 100644 --- a/frames/window_classcolor.lua +++ b/frames/window_classcolor.lua @@ -44,7 +44,7 @@ function Details:OpenClassColorsConfig() end local on_enter = function(self, capsule) - --Details:CooltipPreset (1) + --Details:CooltipPreset(1) --GameCooltip:AddLine ("right click to reset") --GameCooltip:Show (self) end @@ -88,7 +88,7 @@ function Details:OpenClassColorsConfig() button.my_class = className button:SetHook("OnEnter", on_enter) button:SetHook("OnLeave", on_leave) - button:SetClickFunction (reset_color, nil, nil, "RightClick") + button:SetClickFunction(reset_color, nil, nil, "RightClick") panel.buttons [className] = button end @@ -130,7 +130,7 @@ function Details:OpenClassColorsConfig() local colortable = colorTable[1] local colorname = colorTable[2] local value = colorname .. "@" .. barType - tinsert (result, {label = colorname, value = value, color = colortable, onclick = colorSelected}) + tinsert(result, {label = colorname, value = value, color = colortable, onclick = colorSelected}) end return result @@ -197,7 +197,7 @@ function Details:OpenClassColorsConfig() deathLogColorsLabel:SetPoint("topleft", panel, "topleft", 5, -265) end - for class, button in pairs (_G.DetailsClassColorManager.buttons) do + for class, button in pairs(_G.DetailsClassColorManager.buttons) do button.my_texture:SetVertexColor (unpack (Details.class_colors [class])) end diff --git a/frames/window_copy.lua b/frames/window_copy.lua index 2d5b93f7a..14279b7ed 100644 --- a/frames/window_copy.lua +++ b/frames/window_copy.lua @@ -9,8 +9,8 @@ do local panel = CreateFrame("frame", "DetailsCopy", UIParent, "ButtonFrameTemplate") panel:SetSize(512, 148) - tinsert (UISpecialFrames, "DetailsCopy") - panel:SetFrameStrata ("TOOLTIP") + tinsert(UISpecialFrames, "DetailsCopy") + panel:SetFrameStrata("TOOLTIP") panel:SetPoint("center", UIParent, "center") panel.locked = false panel:SetToplevel (true) diff --git a/frames/window_currentdps.lua b/frames/window_currentdps.lua index 71cf1424b..27fb9bacd 100644 --- a/frames/window_currentdps.lua +++ b/frames/window_currentdps.lua @@ -658,7 +658,7 @@ function Details:CreateCurrentDpsFrame(parent, name) end --frame strata - f:SetFrameStrata (_detalhes.realtime_dps_meter.frame_settings.strata) + f:SetFrameStrata(_detalhes.realtime_dps_meter.frame_settings.strata) --calcule buffer size f.MaxBufferIndex = f.SampleSize * time_fraction * 100 --sample size in seconds * fraction * tick milliseconds @@ -713,8 +713,8 @@ function Details:CreateCurrentDpsFrame(parent, name) local yellowDamageDone = thisTickYellowDamage - f.LastYellowDamage --add the damage to buffer - tinsert (f.PlayerTeamBuffer, 1, playerTeamDamageDone) - tinsert (f.YellowTeamBuffer, 1, yellowDamageDone) + tinsert(f.PlayerTeamBuffer, 1, playerTeamDamageDone) + tinsert(f.YellowTeamBuffer, 1, yellowDamageDone) --save the current damage amount f.LastPlayerTeamDamage = thisTickPlayerTeamDamage @@ -811,7 +811,7 @@ function Details:CreateCurrentDpsFrame(parent, name) local groupDamageDoneOnThisTick = thisTickGroupDamage - f.LastTickGroupDamage --add the damage to buffer - tinsert (f.GroupBuffer, 1, groupDamageDoneOnThisTick) + tinsert(f.GroupBuffer, 1, groupDamageDoneOnThisTick) --save the current damage amount f.LastTickGroupDamage = thisTickGroupDamage diff --git a/frames/window_custom.lua b/frames/window_custom.lua index 4cb65c13a..4ad19acc6 100644 --- a/frames/window_custom.lua +++ b/frames/window_custom.lua @@ -193,7 +193,7 @@ GameCooltip:Hide() end) - tinsert (UISpecialFrames, "DetailsCustomPanel") + tinsert(UISpecialFrames, "DetailsCustomPanel") --menu title bar @@ -285,7 +285,7 @@ DetailsCustomPanel.code4_default = [[ local value, top, total, combat, instance = ... - return string.format ("%.1f", value/total*100) + return string.format("%.1f", value/total*100) ]] DetailsCustomPanel.code4 = DetailsCustomPanel.code4_default @@ -303,10 +303,10 @@ self.author_field:SetText(UnitName ("player") .. "-" .. GetRealmName()) self.author_field:Enable() - self.source_dropdown:Select (1, true) + self.source_dropdown:Select(1, true) self.source_field:SetText("") - self.target_dropdown:Select (1, true) + self.target_dropdown:Select(1, true) self.target_field:SetText("") self.spellid_entry:SetText("") @@ -377,19 +377,19 @@ local source = custom_object:GetSource() if (source == "[all]") then - self.source_dropdown:Select (1, true) + self.source_dropdown:Select(1, true) self.source_field:SetText("") self.source_field:Disable() elseif (source == "[raid]") then - self.source_dropdown:Select (2, true) + self.source_dropdown:Select(2, true) self.source_field:SetText("") self.source_field:Disable() elseif (source == "[player]") then - self.source_dropdown:Select (3, true) + self.source_dropdown:Select(3, true) self.source_field:SetText("") self.source_field:Disable() else - self.source_dropdown:Select (4, true) + self.source_dropdown:Select(4, true) self.source_field:SetText(source) self.source_field:Enable() end @@ -397,23 +397,23 @@ local target = custom_object:GetTarget() if (not target) then - self.target_dropdown:Select (5, true) + self.target_dropdown:Select(5, true) self.target_field:SetText("") self.target_field:Disable() elseif (target == "[all]") then - self.target_dropdown:Select (1, true) + self.target_dropdown:Select(1, true) self.target_field:SetText("") self.target_field:Disable() elseif (target == "[raid]") then - self.target_dropdown:Select (2, true) + self.target_dropdown:Select(2, true) self.target_field:SetText("") self.target_field:Disable() elseif (target == "[player]") then - self.target_dropdown:Select (3, true) + self.target_dropdown:Select(3, true) self.target_field:SetText("") self.target_field:Disable() else - self.target_dropdown:Select (4, true) + self.target_dropdown:Select(4, true) self.target_field:SetText(target) self.target_field:Enable() end @@ -486,7 +486,7 @@ end if (DetailsCustomPanel.IsImporting) then - tinsert (_detalhes.custom, object) + tinsert(_detalhes.custom, object) end DetailsCustomPanel.IsEditing = false @@ -507,7 +507,7 @@ ["tooltip"] = false, } - tinsert (_detalhes.custom, new_custom_object) + tinsert(_detalhes.custom, new_custom_object) _setmetatable (new_custom_object, _detalhes.atributo_custom) new_custom_object.__index = _detalhes.atributo_custom _detalhes:Msg (Loc ["STRING_CUSTOM_CREATED"]) @@ -554,7 +554,7 @@ end if (DetailsCustomPanel.IsImporting) then - tinsert (_detalhes.custom, object) + tinsert(_detalhes.custom, object) end DetailsCustomPanel.IsEditing = false @@ -590,7 +590,7 @@ new_custom_object.percent_script = false end - tinsert (_detalhes.custom, new_custom_object) + tinsert(_detalhes.custom, new_custom_object) _setmetatable (new_custom_object, _detalhes.atributo_custom) new_custom_object.__index = _detalhes.atributo_custom _detalhes:Msg (Loc ["STRING_CUSTOM_CREATED"]) @@ -752,7 +752,7 @@ function custom_window:CreateMenuButton (label, icon, clickfunc, param1, param2, tooltip, name, coords) local index = #custom_window.menu+1 - local button = gump:NewButton (self, nil, "$parent" .. name, nil, CONST_MENU_WIDTH, CONST_MENU_HEIGHT, clickfunc, param1, param2, nil, label) + local button = gump:NewButton(self, nil, "$parent" .. name, nil, CONST_MENU_WIDTH, CONST_MENU_HEIGHT, clickfunc, param1, param2, nil, label) button:SetPoint("topleft", self, "topleft", CONST_MENU_X_POSITION, CONST_MENU_Y_POSITION + ((index-1)*-23)) --button:SetTemplate (CONST_BUTTON_TEMPLATE) @@ -811,7 +811,7 @@ local export_object = {} - for key, value in pairs (custom_object) do + for key, value in pairs(custom_object) do if (object_keys [key]) then if (type(value) == "table") then export_object [key] = Details.CopyTable (value) @@ -906,7 +906,7 @@ custom_window.ImportConfirm:Hide() end - local okey_button = gump:NewButton (custom_window, nil, "$parentImportConfirm", "ImportConfirm", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, import, nil, nil, nil, Loc ["STRING_CUSTOM_IMPORT_BUTTON"]) + local okey_button = gump:NewButton(custom_window, nil, "$parentImportConfirm", "ImportConfirm", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, import, nil, nil, nil, Loc ["STRING_CUSTOM_IMPORT_BUTTON"]) okey_button:SetTemplate (CONST_BUTTON_TEMPLATE) okey_button:SetPoint("left", editbox, "right", 2, 0) end @@ -1072,20 +1072,20 @@ gump:IconPick (pickicon_callback, true) end local icon_image = gump:NewImage (box0, [[Interface\ICONS\TEMP]], 20, 20, nil, nil, "icontexture", "$parentIconTexture") - local icon_button = gump:NewButton (box0, nil, "$parentIconButton", "IconButton", 20, 20, pickicon) + local icon_button = gump:NewButton(box0, nil, "$parentIconButton", "IconButton", 20, 20, pickicon) icon_button:InstallCustomTexture() icon_button:SetPoint("left", icon_label, "left", 64, 0) icon_image:SetPoint("left", icon_label, "left", 64, 0) custom_window.icon_image = icon_image --cancel - local cancel_button = gump:NewButton (box0, nil, "$parentCancelButton", "cancelbutton", 130, 20, DetailsCustomPanel.CancelFunc, nil, nil, nil, Loc ["STRING_CUSTOM_CANCEL"]) + local cancel_button = gump:NewButton(box0, nil, "$parentCancelButton", "cancelbutton", 130, 20, DetailsCustomPanel.CancelFunc, nil, nil, nil, Loc ["STRING_CUSTOM_CANCEL"]) --cancel_button:SetPoint("bottomleft", attribute_box, "bottomleft", 2, 0) cancel_button:SetPoint("topleft", icon_label, "bottomleft", 0, -10) cancel_button:SetTemplate (CONST_REGULAR_BUTTON_TEMPLATE) --accept - local accept_button = gump:NewButton (box0, nil, "$parentAcceptButton", "acceptbutton", 130, 20, DetailsCustomPanel.AcceptFunc, nil, nil, nil, Loc ["STRING_CUSTOM_CREATE"]) + local accept_button = gump:NewButton(box0, nil, "$parentAcceptButton", "acceptbutton", 130, 20, DetailsCustomPanel.AcceptFunc, nil, nil, nil, Loc ["STRING_CUSTOM_CREATE"]) accept_button:SetPoint("left", cancel_button, "right", 2, 0) accept_button:SetTemplate (CONST_REGULAR_BUTTON_TEMPLATE) @@ -1168,7 +1168,7 @@ local selectedEncounterActor = function(actorName, model) source_field:SetText(actorName) - source_dropdown:Select (4, true) + source_dropdown:Select(4, true) box1.sourceentry:Enable() actorsFrame:Hide() GameCooltip:Hide() @@ -1180,7 +1180,7 @@ button.MyObject.image:SetBlendMode("ADD") button.MyObject.line:SetBlendMode("ADD") button.MyObject.label:SetTextColor (1, 1, 1, 1) - GameTooltip:SetOwner (button, "ANCHOR_TOPLEFT") + GameTooltip:SetOwner(button, "ANCHOR_TOPLEFT") GameTooltip:AddLine (button.MyObject.actor) GameTooltip:Show() @@ -1216,12 +1216,12 @@ local y = 10 local i = 1 - for actor, actorTable in pairs (actors) do + for actor, actorTable in pairs(actors) do local thisButton = actorsFrameButtons [i] if (not thisButton) then - thisButton = gump:NewButton (actorsFrame.frame, actorsFrame.frame, "DetailsCustomActorsFrame2Button"..i, "button"..i, 130, 20, selectedEncounterSpell) + thisButton = gump:NewButton(actorsFrame.frame, actorsFrame.frame, "DetailsCustomActorsFrame2Button"..i, "button"..i, 130, 20, selectedEncounterSpell) thisButton:SetPoint("topleft", "DetailsCustomActorsFrame2", "topleft", x, -y) thisButton:SetHook("OnEnter", buttonMouseOver) thisButton:SetHook("OnLeave", buttonMouseOut) @@ -1258,7 +1258,7 @@ end thisButton.label:SetText(actor) - thisButton:SetClickFunction (selectedEncounterActor, actor, actorTable.model) + thisButton:SetClickFunction(selectedEncounterActor, actor, actorTable.model) thisButton.actor = actor thisButton.ej_id = ej_id thisButton.model = actorTable.model @@ -1280,9 +1280,9 @@ GameCooltip:Reset() GameCooltip:SetType ("menu") - GameCooltip:SetOwner (adds_boss) + GameCooltip:SetOwner(adds_boss) - for instanceId, instanceTable in pairs (_detalhes.EncounterInformation) do + for instanceId, instanceTable in pairs(_detalhes.EncounterInformation) do if (_detalhes:InstanceIsRaid (instanceId)) then @@ -1376,7 +1376,7 @@ local selectedEncounterActor = function(actorName) target_field:SetText(actorName) - target_dropdown:Select (4, true) + target_dropdown:Select(4, true) box1.targetentry:Enable() actorsFrame:Hide() GameCooltip:Hide() @@ -1388,7 +1388,7 @@ button.MyObject.image:SetBlendMode("ADD") button.MyObject.line:SetBlendMode("ADD") button.MyObject.label:SetTextColor (1, 1, 1, 1) - GameTooltip:SetOwner (button, "ANCHOR_TOPLEFT") + GameTooltip:SetOwner(button, "ANCHOR_TOPLEFT") GameTooltip:AddLine (button.MyObject.actor) GameTooltip:Show() @@ -1424,12 +1424,12 @@ local y = 10 local i = 1 - for actor, actorTable in pairs (actors) do + for actor, actorTable in pairs(actors) do local thisButton = actorsFrameButtons [i] if (not thisButton) then - thisButton = gump:NewButton (actorsFrame.frame, actorsFrame.frame, "DetailsCustomActorsFrameButton"..i, "button"..i, 130, 20, selectedEncounterSpell) + thisButton = gump:NewButton(actorsFrame.frame, actorsFrame.frame, "DetailsCustomActorsFrameButton"..i, "button"..i, 130, 20, selectedEncounterSpell) thisButton:SetPoint("topleft", "DetailsCustomActorsFrame", "topleft", x, -y) thisButton:SetHook("OnEnter", buttonMouseOver) thisButton:SetHook("OnLeave", buttonMouseOut) @@ -1466,7 +1466,7 @@ end thisButton.label:SetText(actor) - thisButton:SetClickFunction (selectedEncounterActor, actor) + thisButton:SetClickFunction(selectedEncounterActor, actor) thisButton.actor = actor thisButton.ej_id = ej_id thisButton.model = actorTable.model @@ -1488,9 +1488,9 @@ GameCooltip:Reset() GameCooltip:SetType ("menu") - GameCooltip:SetOwner (adds_boss) + GameCooltip:SetOwner(adds_boss) - for instanceId, instanceTable in pairs (_detalhes.EncounterInformation) do + for instanceId, instanceTable in pairs(_detalhes.EncounterInformation) do if (_detalhes:InstanceIsRaid (instanceId)) then @@ -1564,7 +1564,7 @@ button.MyObject.line:SetBlendMode("ADD") button.MyObject.label:SetTextColor (1, 1, 1, 1) - GameTooltip:SetOwner (button, "ANCHOR_TOPLEFT") + GameTooltip:SetOwner(button, "ANCHOR_TOPLEFT") _detalhes:GameTooltipSetSpellByID (button.MyObject.spellid) GameTooltip:Show() end @@ -1589,12 +1589,12 @@ local y = 10 local i = 1 - for spell, _ in pairs (spells) do + for spell, _ in pairs(spells) do local thisButton = spellsFrameButtons [i] if (not thisButton) then - thisButton = gump:NewButton (spellsFrame.frame, spellsFrame.frame, "DetailsCustomSpellsFrameButton"..i, "button"..i, 80, 20, selectedEncounterSpell) + thisButton = gump:NewButton(spellsFrame.frame, spellsFrame.frame, "DetailsCustomSpellsFrameButton"..i, "button"..i, 80, 20, selectedEncounterSpell) thisButton:SetPoint("topleft", "DetailsCustomSpellsFrame", "topleft", x, -y) thisButton:SetHook("OnEnter", buttonMouseOver) thisButton:SetHook("OnLeave", buttonMouseOut) @@ -1629,7 +1629,7 @@ local nome_magia, _, icone_magia = _GetSpellInfo(spell) thisButton.image:SetTexture(icone_magia) thisButton.label:SetText(nome_magia) - thisButton:SetClickFunction (selectedEncounterSpell, spell) + thisButton:SetClickFunction(selectedEncounterSpell, spell) thisButton.spellid = spell thisButton:Show() i = i + 1 @@ -1648,9 +1648,9 @@ GameCooltip:Reset() GameCooltip:SetType ("menu") - GameCooltip:SetOwner (spell_id_boss) + GameCooltip:SetOwner(spell_id_boss) - for instanceId, instanceTable in pairs (_detalhes.EncounterInformation) do + for instanceId, instanceTable in pairs(_detalhes.EncounterInformation) do if (_detalhes:InstanceisRaid (instanceId)) then @@ -1699,25 +1699,25 @@ box2:SetFrameLevel (box0:GetFrameLevel()+1) --edit main code - local maincode_button = gump:NewButton (box2, nil, "$parentMainCodeButton", "maiccodebutton", 160, 20, DetailsCustomPanel.StartEditCode, 1, nil, nil, Loc ["STRING_CUSTOM_EDIT_SEARCH_CODE"]) + local maincode_button = gump:NewButton(box2, nil, "$parentMainCodeButton", "maiccodebutton", 160, 20, DetailsCustomPanel.StartEditCode, 1, nil, nil, Loc ["STRING_CUSTOM_EDIT_SEARCH_CODE"]) maincode_button:SetPoint("topleft", custom_window, "topleft", CONST_EDITBUTTONS_X_POSITION, CONST_MENU_Y_POSITION) maincode_button.tooltip = Loc ["STRING_CUSTOM_EDITCODE_DESC"] maincode_button:SetTemplate (CONST_CODETEXTENTRY_OPENCODEBUTTONS_TEMPLATE) --edit tooltip code - local tooltipcode_button = gump:NewButton (box2, nil, "$parentTooltipCodeButton", "tooltipcodebutton", 160, 20, DetailsCustomPanel.StartEditCode, 2, nil, nil, Loc ["STRING_CUSTOM_EDIT_TOOLTIP_CODE"]) + local tooltipcode_button = gump:NewButton(box2, nil, "$parentTooltipCodeButton", "tooltipcodebutton", 160, 20, DetailsCustomPanel.StartEditCode, 2, nil, nil, Loc ["STRING_CUSTOM_EDIT_TOOLTIP_CODE"]) tooltipcode_button:SetPoint("topleft", maincode_button, "bottomleft", 0, -8) tooltipcode_button.tooltip = Loc ["STRING_CUSTOM_EDITTOOLTIP_DESC"] tooltipcode_button:SetTemplate (CONST_CODETEXTENTRY_OPENCODEBUTTONS_TEMPLATE) --edit total code - local totalcode_button = gump:NewButton (box2, nil, "$parentTotalCodeButton", "totalcodebutton", 160, 20, DetailsCustomPanel.StartEditCode, 3, nil, nil, "Edit Total Code") + local totalcode_button = gump:NewButton(box2, nil, "$parentTotalCodeButton", "totalcodebutton", 160, 20, DetailsCustomPanel.StartEditCode, 3, nil, nil, "Edit Total Code") totalcode_button:SetPoint("topleft", tooltipcode_button, "bottomleft", 0, -8) totalcode_button.tooltip = "This code is responsible for edit the total number shown in the player bar.\n\nThis is not necessary if you want show exactly the value gotten in the search code." totalcode_button:SetTemplate (CONST_CODETEXTENTRY_OPENCODEBUTTONS_TEMPLATE) --edit percent code - local percentcode_button = gump:NewButton (box2, nil, "$parentPercentCodeButton", "percentcodebutton", 160, 20, DetailsCustomPanel.StartEditCode, 4, nil, nil, "Edit Percent Code") + local percentcode_button = gump:NewButton(box2, nil, "$parentPercentCodeButton", "percentcodebutton", 160, 20, DetailsCustomPanel.StartEditCode, 4, nil, nil, "Edit Percent Code") percentcode_button:SetPoint("topleft", totalcode_button, "bottomleft", 0, -8) percentcode_button.tooltip = "Edit the code responsible for the percent number in the player bar.\n\nThis is not required if you want to use simple percentage (comparing with total)." percentcode_button:SetTemplate (CONST_CODETEXTENTRY_OPENCODEBUTTONS_TEMPLATE) @@ -1746,7 +1746,7 @@ end) --create a background area where the code editor is - local codeEditorBackground = gump:NewButton (custom_window, nil, nil, nil, 1, 1, function()end) + local codeEditorBackground = gump:NewButton(custom_window, nil, nil, nil, 1, 1, function()end) codeEditorBackground:SetAllPoints(code_editor) codeEditorBackground:SetTemplate (CONST_CODETEXTENTRY_TEMPLATE) @@ -1832,23 +1832,23 @@ local supportFrame = CreateFrame("frame", "$parentSupportFrame", custom_window) supportFrame:SetFrameLevel (500) - local expand = gump:NewButton (supportFrame, nil, "$parentExpand", "expandbutton", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, expand_func, 4, nil, nil, "Expand") + local expand = gump:NewButton(supportFrame, nil, "$parentExpand", "expandbutton", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, expand_func, 4, nil, nil, "Expand") expand:SetPoint("bottomleft", code_editor, "topleft", 0, 1) expand:SetTemplate (CONST_CODETEXTENTRYBUTTON_TEMPLATE) - local font_size1 = gump:NewButton (supportFrame, nil, "$parentFont1", "font1button", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, font_change, nil, nil, nil, "Aa") + local font_size1 = gump:NewButton(supportFrame, nil, "$parentFont1", "font1button", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, font_change, nil, nil, nil, "Aa") font_size1:SetPoint("left", expand, "right", 2, 0) font_size1:SetTemplate (CONST_CODETEXTENTRYBUTTON_TEMPLATE) - local font_size2 = gump:NewButton (supportFrame, nil, "$parentFont2", "font2button", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, font_change, true, nil, nil, "aA") + local font_size2 = gump:NewButton(supportFrame, nil, "$parentFont2", "font2button", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, font_change, true, nil, nil, "aA") font_size2:SetPoint("left", font_size1, "right", 2, 0) font_size2:SetTemplate (CONST_CODETEXTENTRYBUTTON_TEMPLATE) - local apply1 = gump:NewButton (supportFrame, nil, "$parentApply", "applybutton", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, apply_code, nil, nil, nil, "Apply") + local apply1 = gump:NewButton(supportFrame, nil, "$parentApply", "applybutton", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, apply_code, nil, nil, nil, "Apply") apply1:SetPoint("left", font_size2, "right", 2, 0) apply1:SetTemplate (CONST_CODETEXTENTRYBUTTON_TEMPLATE) - local open_API = gump:NewButton (supportFrame, nil, "$parentOpenAPI", "openAPIbutton", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, function()end, nil, nil, nil, "API") --_detalhes.OpenAPI - opening the api was cancelling the editing process + local open_API = gump:NewButton(supportFrame, nil, "$parentOpenAPI", "openAPIbutton", CONST_EDITBOX_BUTTON_WIDTH, CONST_EDITBOX_BUTTON_HEIGHT, function()end, nil, nil, nil, "API") --_detalhes.OpenAPI - opening the api was cancelling the editing process open_API:SetPoint("left", apply1, "right", 2, 0) open_API:SetTemplate (CONST_CODETEXTENTRYBUTTON_TEMPLATE) diff --git a/frames/window_dump.lua b/frames/window_dump.lua index cb6f95dab..406bd3d9a 100644 --- a/frames/window_dump.lua +++ b/frames/window_dump.lua @@ -81,7 +81,7 @@ end function _detalhes:ShowImportWindow (defaultText, confirmFunc, titleText) if (not _G.DetailsExportWindow) then local importWindow = DetailsFramework:CreateSimplePanel (_G.UIParent, 800, 610, "Details! Dump String", "DetailsExportWindow") - importWindow:SetFrameStrata ("FULLSCREEN") + importWindow:SetFrameStrata("FULLSCREEN") importWindow:SetPoint("center") DetailsFramework:ApplyStandardBackdrop (importWindow, false, 1.2) diff --git a/frames/window_eventtracker.lua b/frames/window_eventtracker.lua index 6c453e0a0..068d7009c 100644 --- a/frames/window_eventtracker.lua +++ b/frames/window_eventtracker.lua @@ -61,7 +61,7 @@ function Details:OpenEventTrackerOptions (from_options_panel) local SharedMedia = _G.LibStub:GetLibrary ("LibSharedMedia-3.0") local textures = SharedMedia:HashTable ("statusbar") local texTable = {} - for name, texturePath in pairs (textures) do + for name, texturePath in pairs(textures) do texTable [#texTable + 1] = {value = name, label = name, statusbar = texturePath, onclick = set_bar_texture} end table.sort (texTable, function(t1, t2) return t1.label < t2.label end) @@ -267,7 +267,7 @@ function Details:CreateEventTrackerFrame(parent, name) left_resize:SetScript("OnMouseDown", function(self) if (not f.resizing and not _detalhes.event_tracker.frame.locked) then f.resizing = true - f:StartSizing ("bottomleft") + f:StartSizing("bottomleft") end end) left_resize:SetScript("OnMouseUp", function(self) @@ -281,7 +281,7 @@ function Details:CreateEventTrackerFrame(parent, name) right_resize:SetScript("OnMouseDown", function(self) if (not f.resizing and not _detalhes.event_tracker.frame.locked) then f.resizing = true - f:StartSizing ("bottomright") + f:StartSizing("bottomright") end end) right_resize:SetScript("OnMouseUp", function(self) @@ -705,7 +705,7 @@ function Details:CreateEventTrackerFrame(parent, name) f:SetBackdropColor(unpack (_detalhes.event_tracker.frame.backdrop_color)) scrollframe.__background:SetVertexColor (unpack (_detalhes.event_tracker.frame.backdrop_color)) - f:SetFrameStrata (_detalhes.event_tracker.frame.strata) + f:SetFrameStrata(_detalhes.event_tracker.frame.strata) _detalhes:UpdateWorldTrackerLines() scrollframe:Refresh() @@ -750,25 +750,25 @@ function Details:CreateEventTrackerFrame(parent, name) --defensive cooldown if (token == "SPELL_CAST_SUCCESS" and (cooldownListFromFramework [spellid]) and is_player (caster_flags)) then - tinsert (CurrentShowing, 1, {SPELLTYPE_COOLDOWN, spellid, caster_name, target_name, time, false, GetTime(), caster_serial, is_enemy (caster_flags), target_serial}) + tinsert(CurrentShowing, 1, {SPELLTYPE_COOLDOWN, spellid, caster_name, target_name, time, false, GetTime(), caster_serial, is_enemy (caster_flags), target_serial}) added = true --offensive cooldown elseif (token == "SPELL_CAST_SUCCESS" and (attackCooldownsFromFramework [spellid]) and is_player (caster_flags)) then - tinsert (CurrentShowing, 1, {SPELLTYPE_OFFENSIVE, spellid, caster_name, target_name, time, false, GetTime(), caster_serial, is_enemy (caster_flags), target_serial}) + tinsert(CurrentShowing, 1, {SPELLTYPE_OFFENSIVE, spellid, caster_name, target_name, time, false, GetTime(), caster_serial, is_enemy (caster_flags), target_serial}) added = true --crowd control elseif (token == "SPELL_AURA_APPLIED" and (crowdControlFromFramework [spellid])) then --check if isnt a pet if (target_flags and is_player (target_flags)) then - tinsert (CurrentShowing, 1, {SPELLTYPE_CROWDCONTROL, spellid, caster_name, target_name, time, false, GetTime(), caster_serial, is_enemy (caster_flags), target_serial}) + tinsert(CurrentShowing, 1, {SPELLTYPE_CROWDCONTROL, spellid, caster_name, target_name, time, false, GetTime(), caster_serial, is_enemy (caster_flags), target_serial}) added = true end --spell interrupt elseif (token == "SPELL_INTERRUPT") then - tinsert (CurrentShowing, 1, {SPELLTYPE_INTERRUPT, spellid, caster_name, target_name, time, extraSpellID, GetTime(), caster_serial, is_enemy (caster_flags), target_serial}) + tinsert(CurrentShowing, 1, {SPELLTYPE_INTERRUPT, spellid, caster_name, target_name, time, extraSpellID, GetTime(), caster_serial, is_enemy (caster_flags), target_serial}) added = true end diff --git a/frames/window_forge.lua b/frames/window_forge.lua index 4ee2c8a3c..3f8be0642 100644 --- a/frames/window_forge.lua +++ b/frames/window_forge.lua @@ -46,14 +46,14 @@ function Details:OpenForge() --main frame local f = DetailsForgePanel or Details.gump:CreateSimplePanel (UIParent, 960, 600, "Details! " .. L["STRING_SPELLLIST"], "DetailsForgePanel") f:SetPoint("center", UIParent, "center") - f:SetFrameStrata ("HIGH") + f:SetFrameStrata("HIGH") f:SetToplevel (true) f:SetMovable (true) f.Title:SetTextColor (1, .8, .2) local have_plugins_enabled - for id, instanceTable in pairs (Details.EncounterInformation) do + for id, instanceTable in pairs(Details.EncounterInformation) do if (Details.InstancesToStoreData [id]) then have_plugins_enabled = true break @@ -70,10 +70,10 @@ function Details:OpenForge() nopluginLabel:SetText(L["STRING_FORGE_ENABLEPLUGINS"]) end - if (not Details:GetTutorialCVar ("FORGE_TUTORIAL") and false) then + if (not Details:GetTutorialCVar("FORGE_TUTORIAL") and false) then local tutorialFrame = CreateFrame("frame", "$parentTutorialFrame", f,"BackdropTemplate") tutorialFrame:SetPoint("center", f, "center") - tutorialFrame:SetFrameStrata ("DIALOG") + tutorialFrame:SetFrameStrata("DIALOG") tutorialFrame:SetSize(400, 300) tutorialFrame:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}, edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize=1}) @@ -151,7 +151,7 @@ function Details:OpenForge() function f:InstallModule (module) if (module and type (module) == "table") then - tinsert (all_modules, module) + tinsert(all_modules, module) end end @@ -439,7 +439,7 @@ function Details:OpenForge() wipe (spell_already_added) local SpellPoll = Details.spell_pool - for spellID, className in pairs (SpellPoll) do + for spellID, className in pairs(SpellPoll) do if (type(spellID) == "number" and spellID > 12) then @@ -477,7 +477,7 @@ function Details:OpenForge() end if (can_add) then - tinsert (t, {spellID, Details.classid_to_classstring [className] or className}) + tinsert(t, {spellID, Details.classid_to_classstring [className] or className}) end end @@ -488,7 +488,7 @@ function Details:OpenForge() header = { {name = L["STRING_FORGE_HEADER_INDEX"], width = 40, type = "text", func = no_func}, {name = L["STRING_FORGE_HEADER_ICON"], width = 40, type = "texture"}, - {name = L["STRING_FORGE_HEADER_NAME"], width = 150, type = "entry", func = no_func, onenter = function(self) GameTooltip:SetOwner (self.widget, "ANCHOR_TOPLEFT"); Details:GameTooltipSetSpellByID (self.id); GameTooltip:Show() end, onleave = function(self) GameTooltip:Hide() end}, + {name = L["STRING_FORGE_HEADER_NAME"], width = 150, type = "entry", func = no_func, onenter = function(self) GameTooltip:SetOwner(self.widget, "ANCHOR_TOPLEFT"); Details:GameTooltipSetSpellByID (self.id); GameTooltip:Show() end, onleave = function(self) GameTooltip:Hide() end}, {name = L["STRING_FORGE_HEADER_SPELLID"], width = 60, type = "entry", func = no_func}, {name = L["STRING_FORGE_HEADER_SCHOOL"], width = 60, type = "entry", func = no_func}, {name = L["STRING_FORGE_HEADER_CASTER"], width = 100, type = "entry", func = no_func}, @@ -503,7 +503,7 @@ function Details:OpenForge() if (data) then local events = "" if (EncounterSpellEvents and EncounterSpellEvents [data[1]]) then - for token, _ in pairs (EncounterSpellEvents [data[1]].token) do + for token, _ in pairs(EncounterSpellEvents [data[1]].token) do token = token:gsub ("SPELL_", "") events = events .. token .. ", " end @@ -582,7 +582,7 @@ function Details:OpenForge() wipe (spell_already_added) local SpellPoll = Details.encounter_spell_pool - for spellID, spellTable in pairs (SpellPoll) do + for spellID, spellTable in pairs(SpellPoll) do if (spellID > 12) then local encounterID = spellTable [1] @@ -622,7 +622,7 @@ function Details:OpenForge() end if (can_add) then - tinsert (t, {spellID, encounterID, enemyName, bossDetails and bossDetails.boss or "--x--x--"}) + tinsert(t, {spellID, encounterID, enemyName, bossDetails and bossDetails.boss or "--x--x--"}) end end end @@ -633,7 +633,7 @@ function Details:OpenForge() header = { {name = L["STRING_FORGE_HEADER_INDEX"], width = 40, type = "text", func = no_func}, {name = L["STRING_FORGE_HEADER_ICON"], width = 40, type = "texture"}, - {name = L["STRING_FORGE_HEADER_NAME"], width = 151, type = "entry", func = no_func, onenter = function(self) GameTooltip:SetOwner (self.widget, "ANCHOR_TOPLEFT"); Details:GameTooltipSetSpellByID (self.id); GameTooltip:Show() end, onleave = function(self) GameTooltip:Hide() end}, + {name = L["STRING_FORGE_HEADER_NAME"], width = 151, type = "entry", func = no_func, onenter = function(self) GameTooltip:SetOwner(self.widget, "ANCHOR_TOPLEFT"); Details:GameTooltipSetSpellByID (self.id); GameTooltip:Show() end, onleave = function(self) GameTooltip:Hide() end}, {name = L["STRING_FORGE_HEADER_SPELLID"], width = 55, type = "entry", func = no_func}, {name = L["STRING_FORGE_HEADER_SCHOOL"], width = 60, type = "entry", func = no_func}, {name = L["STRING_FORGE_HEADER_CASTER"], width = 80, type = "entry", func = no_func}, @@ -650,7 +650,7 @@ function Details:OpenForge() local events = "" if (EncounterSpellEvents and EncounterSpellEvents [data[1]]) then - for token, _ in pairs (EncounterSpellEvents [data[1]].token) do + for token, _ in pairs(EncounterSpellEvents [data[1]].token) do token = token:gsub ("SPELL_", "") events = events .. token .. ", " end @@ -825,7 +825,7 @@ function Details:OpenForge() local source = Details.boss_mods_timers.encounter_timers_dbm or {} - for key, timer in pairs (source) do + for key, timer in pairs(source) do local can_add = true if (lower_FilterBarName ~= "") then if (not lower (timer [3]):find (lower_FilterBarName)) then @@ -852,7 +852,7 @@ function Details:OpenForge() header = { {name = L["STRING_FORGE_HEADER_INDEX"], width = 40, type = "text", func = no_func}, {name = L["STRING_FORGE_HEADER_ICON"], width = 40, type = "texture"}, - {name = L["STRING_FORGE_HEADER_BARTEXT"], width = 150, type = "entry", func = no_func, onenter = function(self) GameTooltip:SetOwner (self.widget, "ANCHOR_TOPLEFT"); Details:GameTooltipSetSpellByID (self.id); GameTooltip:Show() end, onleave = function(self) GameTooltip:Hide() end}, + {name = L["STRING_FORGE_HEADER_BARTEXT"], width = 150, type = "entry", func = no_func, onenter = function(self) GameTooltip:SetOwner(self.widget, "ANCHOR_TOPLEFT"); Details:GameTooltipSetSpellByID (self.id); GameTooltip:Show() end, onleave = function(self) GameTooltip:Hide() end}, {name = L["STRING_FORGE_HEADER_ID"], width = 130, type = "entry", func = no_func}, {name = L["STRING_FORGE_HEADER_SPELLID"], width = 50, type = "entry", func = no_func}, {name = L["STRING_FORGE_HEADER_TIMER"], width = 40, type = "entry", func = no_func}, @@ -958,7 +958,7 @@ function Details:OpenForge() local source = Details.boss_mods_timers.encounter_timers_bw or {} - for key, timer in pairs (source) do + for key, timer in pairs(source) do local can_add = true if (lower_FilterBarName ~= "") then if (not lower (timer [3]):find (lower_FilterBarName)) then @@ -985,7 +985,7 @@ function Details:OpenForge() header = { {name = L["STRING_FORGE_HEADER_INDEX"], width = 40, type = "text", func = no_func}, {name = L["STRING_FORGE_HEADER_ICON"], width = 40, type = "texture"}, - {name = L["STRING_FORGE_HEADER_BARTEXT"], width = 200, type = "entry", func = no_func, onenter = function(self) GameTooltip:SetOwner (self.widget, "ANCHOR_TOPLEFT"); Details:GameTooltipSetSpellByID (self.id); GameTooltip:Show() end, onleave = function(self) GameTooltip:Hide() end}, + {name = L["STRING_FORGE_HEADER_BARTEXT"], width = 200, type = "entry", func = no_func, onenter = function(self) GameTooltip:SetOwner(self.widget, "ANCHOR_TOPLEFT"); Details:GameTooltipSetSpellByID (self.id); GameTooltip:Show() end, onleave = function(self) GameTooltip:Hide() end}, {name = L["STRING_FORGE_HEADER_SPELLID"], width = 50, type = "entry", func = no_func}, {name = L["STRING_FORGE_HEADER_TIMER"], width = 40, type = "entry", func = no_func}, {name = L["STRING_FORGE_HEADER_ENCOUNTERID"], width = 80, type = "entry", func = no_func}, @@ -1127,7 +1127,7 @@ function Details:OpenForge() end lastButton = b - tinsert (buttons, b) + tinsert(buttons, b) end select_module (nil, nil, 1) diff --git a/frames/window_main.lua b/frames/window_main.lua index 7689962ff..c5df21099 100644 --- a/frames/window_main.lua +++ b/frames/window_main.lua @@ -150,7 +150,7 @@ function Details:RefreshScrollBar(x) --x = amount of bars being refreshed end --self é a janela das barras -local function move_barras (self, elapsed) +local function move_barras(self, elapsed) self._move_func.time = self._move_func.time+elapsed if (self._move_func.time > 0.01) then @@ -179,7 +179,7 @@ local function move_barras (self, elapsed) end --self � a inst�ncia -function Details:MoveBarrasTo (destino) +function Details:MoveBarrasTo(destino) local janela = self.baseframe janela._move_func = { @@ -198,14 +198,14 @@ function Details:MoveBarrasTo (destino) end --almost deprecated -function Details:MostrarScrollBar (sem_animacao) +function Details:MostrarScrollBar(sem_animacao) if (self.rolagem) then return end if (not Details.use_scroll) then - self.baseframe:EnableMouseWheel (true) + self.baseframe:EnableMouseWheel(true) self.scroll:Enable() self.scroll:SetValue(0) self.rolagem = true @@ -229,7 +229,7 @@ function Details:MostrarScrollBar (sem_animacao) self.bgdisplay_loc = mover_para --cancel movement if any - if (self.baseframe:GetScript ("OnUpdate") and self.baseframe:GetScript ("OnUpdate") == move_barras) then + if (self.baseframe:GetScript("OnUpdate") and self.baseframe:GetScript("OnUpdate") == move_barras) then self.baseframe:SetScript("OnUpdate", nil) end end @@ -241,7 +241,7 @@ function Details:MostrarScrollBar (sem_animacao) self.rolagem = true self.scroll:Enable() - main:EnableMouseWheel (true) + main:EnableMouseWheel(true) self.scroll:SetValue(0) --set value pode chamar o atualizador self.baseframe.button_down:Enable() @@ -262,7 +262,7 @@ function Details:EsconderScrollBar (sem_animacao, force) if (not Details.use_scroll and not force) then self.scroll:Disable() - self.baseframe:EnableMouseWheel (false) + self.baseframe:EnableMouseWheel(false) self.rolagem = false return end @@ -278,14 +278,14 @@ function Details:EsconderScrollBar (sem_animacao, force) self.bgdisplay:SetPoint("bottomright", self.baseframe, "bottomright", 0, 0) -- voltar o background na poci��o inicial self.bar_mod = 0 -- zera o bar mod, uma vez que as barras v�o estar na pocis�o inicial self.bgdisplay_loc = -2 - if (self.baseframe:GetScript ("OnUpdate") and self.baseframe:GetScript ("OnUpdate") == move_barras) then + if (self.baseframe:GetScript("OnUpdate") and self.baseframe:GetScript("OnUpdate") == move_barras) then self.baseframe:SetScript("OnUpdate", nil) end end self.rolagem = false self.scroll:Disable() - main:EnableMouseWheel (false) + main:EnableMouseWheel(false) main.resize_direita:SetPoint("bottomright", main, "bottomright", 0, 0) if (main.isLocked) then @@ -294,14 +294,12 @@ function Details:EsconderScrollBar (sem_animacao, force) end local function OnLeaveMainWindow(instancia, self) - instancia.is_interacting = false - instancia:SetMenuAlpha (nil, nil, nil, nil, true) - instancia:SetAutoHideMenu (nil, nil, true) + instancia:SetMenuAlpha(nil, nil, nil, nil, true) + instancia:SetAutoHideMenu(nil, nil, true) instancia:RefreshAttributeTextSize() if (instancia.modo ~= Details._detalhes_props["MODO_ALONE"] and not instancia.baseframe.isLocked) then - --resizes, lock and ungroup buttons if (not Details.disable_lock_ungroup_buttons) then instancia.baseframe.resize_direita:SetAlpha(0) @@ -314,7 +312,6 @@ local function OnLeaveMainWindow(instancia, self) Details.FadeHandler.Fader(instancia.baseframe.button_stretch, "ALPHA", 0) elseif (instancia.modo ~= Details._detalhes_props["MODO_ALONE"] and instancia.baseframe.isLocked) then - --resizes, lock and ungroup buttons if (not Details.disable_lock_ungroup_buttons) then instancia.baseframe.lock_button:SetAlpha(0) @@ -322,15 +319,14 @@ local function OnLeaveMainWindow(instancia, self) end Details.FadeHandler.Fader(instancia.baseframe.button_stretch, "ALPHA", 0) - end end Details.OnLeaveMainWindow = OnLeaveMainWindow local function OnEnterMainWindow(instancia, self) instancia.is_interacting = true - instancia:SetMenuAlpha (nil, nil, nil, nil, true) - instancia:SetAutoHideMenu (nil, nil, true) + instancia:SetMenuAlpha(nil, nil, nil, nil, true) + instancia:SetAutoHideMenu(nil, nil, true) instancia:RefreshAttributeTextSize() if (not instancia.last_interaction or instancia.last_interaction < Details._tempo) then @@ -342,7 +338,6 @@ local function OnEnterMainWindow(instancia, self) end if (instancia.modo ~= Details._detalhes_props["MODO_ALONE"] and not instancia.baseframe.isLocked) then - --resize, lock and ungroup buttons if (not Details.disable_lock_ungroup_buttons) then instancia.baseframe.resize_direita:SetAlpha(1) @@ -350,7 +345,7 @@ local function OnEnterMainWindow(instancia, self) instancia.baseframe.lock_button:SetAlpha(1) --ungroup - for _, instancia_id in pairs (instancia.snap) do + for _, instancia_id in pairs(instancia.snap) do if (instancia_id) then instancia.break_snap_button:SetAlpha(1) break @@ -364,12 +359,11 @@ local function OnEnterMainWindow(instancia, self) end elseif (instancia.modo ~= Details._detalhes_props["MODO_ALONE"] and instancia.baseframe.isLocked) then - if (not Details.disable_lock_ungroup_buttons) then instancia.baseframe.lock_button:SetAlpha(1) --ungroup - for _, instancia_id in pairs (instancia.snap) do + for _, instancia_id in pairs(instancia.snap) do if (instancia_id) then instancia.break_snap_button:Show() instancia.break_snap_button:SetAlpha(1) @@ -383,6 +377,7 @@ local function OnEnterMainWindow(instancia, self) end end end + Details.OnEnterMainWindow = OnEnterMainWindow local function VPL (instancia, esta_instancia) @@ -440,7 +435,6 @@ local color_green = {0.2, 1, 0.2} local pixels_per_arrow = 50 local show_instance_ids = function() - for id, instance in Details:ListInstances() do if (instance:IsEnabled()) then local id_texture1 = instance.baseframe.id_texture1 @@ -540,7 +534,7 @@ local update_line = function(self, target_frame) ball:SetSize(16, 16) ball:SetAlpha(0.3) ball:SetTexCoord(410/512, 426/512, 2/512, 18/512) - tinsert (guide_balls, ball) + tinsert(guide_balls, ball) end ball:ClearAllPoints() @@ -620,7 +614,7 @@ local movement_onupdate = function(self, elapsed) end end - instancia_alvo.h_esquerda:Flash (1, 1, 2.0, false, 0, 0) + instancia_alvo.h_esquerda:Flash(1, 1, 2.0, false, 0, 0) tem_livre = true elseif (lado == 2) then @@ -647,7 +641,7 @@ local movement_onupdate = function(self, elapsed) end end - instancia_alvo.h_baixo:Flash (1, 1, 2.0, false, 0, 0) + instancia_alvo.h_baixo:Flash(1, 1, 2.0, false, 0, 0) tem_livre = true elseif (lado == 3) then @@ -673,7 +667,7 @@ local movement_onupdate = function(self, elapsed) end end - instancia_alvo.h_direita:Flash (1, 1, 2.0, false, 0, 0) + instancia_alvo.h_direita:Flash(1, 1, 2.0, false, 0, 0) tem_livre = true elseif (lado == 4) then @@ -689,7 +683,7 @@ local movement_onupdate = function(self, elapsed) texture:SetPoint("bottomright", instancia_alvo.baseframe, "topright", 0, 0) end - instancia_alvo.h_cima:Flash (1, 1, 2.0, false, 0, 0) + instancia_alvo.h_cima:Flash(1, 1, 2.0, false, 0, 0) tem_livre = true end @@ -702,7 +696,7 @@ local movement_onupdate = function(self, elapsed) Details.snap_alert.playing = true if (not DetailsFramework.IsTimewalkWoW()) then - Details.MicroButtonAlert.Text:SetText(string.format (Loc["STRING_ATACH_DESC"], self.instance.meu_id, instancia_alvo.meu_id)) + Details.MicroButtonAlert.Text:SetText(string.format(Loc["STRING_ATACH_DESC"], self.instance.meu_id, instancia_alvo.meu_id)) Details.MicroButtonAlert:SetPoint("bottom", instancia_alvo.baseframe.cabecalho.modo_selecao.widget, "top", 0, 18) Details.MicroButtonAlert:SetHeight(200) Details.MicroButtonAlert:Show() @@ -723,7 +717,6 @@ local movement_onupdate = function(self, elapsed) end local function move_janela(baseframe, iniciando, instancia, just_updating) - instancia_alvo = Details.tabela_instancias [instancia.meu_id-1] if (Details.disable_window_groups) then instancia_alvo = nil @@ -761,13 +754,13 @@ local function move_janela(baseframe, iniciando, instancia, just_updating) start_draw_lines = 0 need_show_group_guide = nil - for lado, snap_to in pairs (instancia_alvo.snap) do + for lado, snap_to in pairs(instancia_alvo.snap) do if (snap_to == instancia.meu_id) then start_draw_lines = false end end - for lado, snap_to in pairs (instancia_alvo.snap) do + for lado, snap_to in pairs(instancia_alvo.snap) do if (snap_to) then if (snap_to == instancia.meu_id) then tempo_fades = nil @@ -818,7 +811,7 @@ local function move_janela(baseframe, iniciando, instancia, just_updating) else --eh a instancia 1 local got_snap - for side, instance_id in pairs (instancia.snap) do + for side, instance_id in pairs(instancia.snap) do if (instance_id) then got_snap = true end @@ -837,7 +830,6 @@ local function move_janela(baseframe, iniciando, instancia, just_updating) end else - baseframe:StopMovingOrSizing() baseframe.isMoving = false baseframe:SetScript("OnUpdate", nil) @@ -884,7 +876,7 @@ local function move_janela(baseframe, iniciando, instancia, just_updating) end if (_L) then - if (not instancia:EstaAgrupada (instancia_alvo, _L)) then + if (not instancia:EstaAgrupada(instancia_alvo, _L)) then esquerda = instancia_alvo.meu_id instancia.horizontalSnap = true instancia_alvo.horizontalSnap = true @@ -892,7 +884,7 @@ local function move_janela(baseframe, iniciando, instancia, just_updating) end if (_B) then - if (not instancia:EstaAgrupada (instancia_alvo, _B)) then + if (not instancia:EstaAgrupada(instancia_alvo, _B)) then baixo = instancia_alvo.meu_id instancia.verticalSnap = true instancia_alvo.verticalSnap = true @@ -900,7 +892,7 @@ local function move_janela(baseframe, iniciando, instancia, just_updating) end if (_R) then - if (not instancia:EstaAgrupada (instancia_alvo, _R)) then + if (not instancia:EstaAgrupada(instancia_alvo, _R)) then direita = instancia_alvo.meu_id instancia.horizontalSnap = true instancia_alvo.horizontalSnap = true @@ -908,7 +900,7 @@ local function move_janela(baseframe, iniciando, instancia, just_updating) end if (_T) then - if (not instancia:EstaAgrupada (instancia_alvo, _T)) then + if (not instancia:EstaAgrupada(instancia_alvo, _T)) then cima = instancia_alvo.meu_id instancia.verticalSnap = true instancia_alvo.verticalSnap = true @@ -916,10 +908,10 @@ local function move_janela(baseframe, iniciando, instancia, just_updating) end if (esquerda or baixo or direita or cima) then - instancia:agrupar_janelas ({esquerda, baixo, direita, cima}) + instancia:agrupar_janelas({esquerda, baixo, direita, cima}) --tutorial - if (not Details:GetTutorialCVar ("WINDOW_GROUP_MAKING1")) then + if (not Details:GetTutorialCVar("WINDOW_GROUP_MAKING1")) then Details:SetTutorialCVar ("WINDOW_GROUP_MAKING1", true) local group_tutorial = CreateFrame("frame", "DetailsWindowGroupPopUp1", instancia.baseframe, "DetailsHelpBoxTemplate") @@ -983,9 +975,9 @@ local function move_janela(baseframe, iniciando, instancia, just_updating) instancia_alvo.h_direita:Stop() instancia_alvo.h_cima:Stop() end - end end + Details.move_janela_func = move_janela local BGFrame_scripts_onenter = function(self) @@ -997,10 +989,9 @@ local BGFrame_scripts_onleave = function(self) end local BGFrame_scripts_onmousedown = function(self, button) - -- /run Details.disable_stretch_from_toolbar = true if (self.is_toolbar and self._instance.baseframe.isLocked and button == "LeftButton" and not Details.disable_stretch_from_toolbar) then - return self._instance.baseframe.button_stretch:GetScript ("OnMouseDown") (self._instance.baseframe.button_stretch, "LeftButton") + return self._instance.baseframe.button_stretch:GetScript("OnMouseDown") (self._instance.baseframe.button_stretch, "LeftButton") end if (self._instance.baseframe.isMoving) then @@ -1016,6 +1007,7 @@ local BGFrame_scripts_onmousedown = function(self, button) self._instance.menu_attribute_string:SetPoint("bottomleft", self._instance.baseframe.cabecalho.ball, "bottomright", self._instance.attribute_text.anchor [1]+1, self._instance.attribute_text.anchor [2]-1) end end + elseif (button == "RightButton") then if (self.is_toolbar and not Details.disable_alldisplays_window) then self._instance:ShowAllSwitch() @@ -1023,19 +1015,18 @@ local BGFrame_scripts_onmousedown = function(self, button) if (Details.switch.current_instancia and Details.switch.current_instancia == self._instance) then Details.switch:CloseMe() else - Details.switch:ShowMe (self._instance) + Details.switch:ShowMe(self._instance) end end end end local BGFrame_scripts_onmouseup = function(self, button) - if (self.is_toolbar and self._instance.baseframe.isLocked and button == "LeftButton") then if (DetailsWindowLockPopUp1 and DetailsWindowLockPopUp1:IsShown()) then _G ["DetailsWindowLockPopUp1"]:Hide() end - return self._instance.baseframe.button_stretch:GetScript ("OnMouseUp") (self._instance.baseframe.button_stretch, "LeftButton") + return self._instance.baseframe.button_stretch:GetScript("OnMouseUp") (self._instance.baseframe.button_stretch, "LeftButton") end if (self._instance.baseframe.isMoving) then @@ -1057,8 +1048,7 @@ local function BGFrame_scripts(BG, baseframe, instancia) BG:SetScript("OnMouseUp", BGFrame_scripts_onmouseup) end -function gump:RegisterForDetailsMove (frame, instancia) - +function gump:RegisterForDetailsMove(frame, instancia) frame:SetScript("OnMouseDown", function(frame, button) if (not instancia.baseframe.isLocked and button == "LeftButton") then move_janela(instancia.baseframe, true, instancia) --novo movedor da janela @@ -1124,7 +1114,7 @@ end local function instancias_horizontais (instancia, largura, esquerda, direita) if (esquerda) then - for lado, esta_instancia in pairs (instancia.snap) do + for lado, esta_instancia in pairs(instancia.snap) do if (lado == 1) then --movendo para esquerda local instancia = Details.tabela_instancias [esta_instancia] instancia.baseframe:SetWidth(largura) @@ -1138,7 +1128,7 @@ local function instancias_horizontais (instancia, largura, esquerda, direita) end if (direita) then - for lado, esta_instancia in pairs (instancia.snap) do + for lado, esta_instancia in pairs(instancia.snap) do if (lado == 3) then --movendo para esquerda local instancia = Details.tabela_instancias [esta_instancia] instancia.baseframe:SetWidth(largura) @@ -1154,7 +1144,7 @@ end local function instancias_verticais (instancia, altura, esquerda, direita) if (esquerda) then - for lado, esta_instancia in pairs (instancia.snap) do + for lado, esta_instancia in pairs(instancia.snap) do if (lado == 1) then --movendo para esquerda local instancia = Details.tabela_instancias [esta_instancia] if (instancia:IsEnabled()) then @@ -1170,7 +1160,7 @@ local function instancias_verticais (instancia, altura, esquerda, direita) end if (direita) then - for lado, esta_instancia in pairs (instancia.snap) do + for lado, esta_instancia in pairs(instancia.snap) do if (lado == 3) then --movendo para esquerda local instancia = Details.tabela_instancias [esta_instancia] if (instancia:IsEnabled()) then @@ -1187,15 +1177,14 @@ local function instancias_verticais (instancia, altura, esquerda, direita) end local check_snap_side = function(instanceid, snap, id, container) - local instance = Details:GetInstance (instanceid) + local instance = Details:GetInstance(instanceid) if (instance and instance.snap [snap] and instance.snap [snap] == id) then - tinsert (container, instance) + tinsert(container, instance) return true end end -function Details:InstanciasVerticais (instance) - +function Details:InstanciasVerticais(instance) instance = self or instance local on_top = {} @@ -1203,7 +1192,7 @@ function Details:InstanciasVerticais (instance) local id = instance:GetId() --lower instances - local this_instance = Details:GetInstance (id-1) + local this_instance = Details:GetInstance(id-1) if (this_instance) then --top side if (this_instance.snap [2] and this_instance.snap [2] == id) then @@ -1231,7 +1220,7 @@ function Details:InstanciasVerticais (instance) end --upper instances - local this_instance = Details:GetInstance (id+1) + local this_instance = Details:GetInstance(id+1) if (this_instance) then --top side if (this_instance.snap [2] and this_instance.snap [2] == id) then @@ -1285,7 +1274,7 @@ function Details:InstanciasVerticais (instance) end bottom_clamp = bottom_clamp + 20 bottom_clamp = bottom_clamp + this_instance.baseframe:GetHeight() - tinsert (on_top, this_instance) + tinsert(on_top, this_instance) end return on_top, bottom_clamp, top_clamp @@ -1302,8 +1291,7 @@ lado 1 | | lado 3 lado 2 --]] -function Details:InstanciasHorizontais (instancia) - +function Details:InstanciasHorizontais(instancia) instancia = self or instancia local linha_horizontal, esquerda, direita = {}, 0, 0 @@ -1327,6 +1315,7 @@ function Details:InstanciasHorizontais (instancia) break end end + elseif (check_index_anterior.snap[1] and check_index_anterior.snap[1] == instancia.meu_id) then --o index negativo vai para a direita for i = instancia.meu_id-1, 1, -1 do local esta_instancia = Details.tabela_instancias [i] @@ -1360,6 +1349,7 @@ function Details:InstanciasHorizontais (instancia) break end end + elseif (check_index_posterior.snap[1] and check_index_posterior.snap[1] == instancia.meu_id) then --o index posterior vai para a direita for i = instancia.meu_id+1, #Details.tabela_instancias do local esta_instancia = Details.tabela_instancias [i] @@ -1396,7 +1386,7 @@ local resizeTooltip = { --search key: ~resizescript local resize_scripts_onmousedown = function(self, button) - _G.GameCooltip:ShowMe (false) --Hide Cooltip + _G.GameCooltip:ShowMe(false) --Hide Cooltip if (Details.disable_lock_ungroup_buttons) then return @@ -1424,18 +1414,19 @@ local resize_scripts_onmousedown = function(self, button) end end - ---------------- - if (self._myside == "<") then if (_IsShiftKeyDown()) then self._instance.baseframe:StartSizing("left") self._instance.eh_horizontal = true + elseif (_IsAltKeyDown()) then self._instance.baseframe:StartSizing("top") self._instance.eh_vertical = true + elseif (_IsControlKeyDown()) then self._instance.baseframe:StartSizing("bottomleft") self._instance.eh_tudo = true + else self._instance.baseframe:StartSizing("bottomleft") end @@ -1445,16 +1436,19 @@ local resize_scripts_onmousedown = function(self, button) elseif (self._myside == ">") then if (_IsShiftKeyDown()) then - self._instance.baseframe:StartSizing ("right") + self._instance.baseframe:StartSizing("right") self._instance.eh_horizontal = true + elseif (_IsAltKeyDown()) then - self._instance.baseframe:StartSizing ("top") + self._instance.baseframe:StartSizing("top") self._instance.eh_vertical = true + elseif (_IsControlKeyDown()) then - self._instance.baseframe:StartSizing ("bottomright") + self._instance.baseframe:StartSizing("bottomright") self._instance.eh_tudo = true + else - self._instance.baseframe:StartSizing ("bottomright") + self._instance.baseframe:StartSizing("bottomright") end if (self._instance.rolagem and Details.use_scroll) then @@ -1468,15 +1462,13 @@ local resize_scripts_onmousedown = function(self, button) Details:SendEvent("DETAILS_INSTANCE_STARTRESIZE", nil, self._instance) if (Details.update_speed > 0.3) then - Details:SetWindowUpdateSpeed (0.3, true) + Details:SetWindowUpdateSpeed(0.3, true) Details.resize_changed_update_speed = true end - end end -local resize_scripts_onmouseup = function(self, button) - +local resizeScriptsOnMouseUp = function(self, button) if (Details.disable_lock_ungroup_buttons) then return end @@ -1495,7 +1487,6 @@ local resize_scripts_onmouseup = function(self, button) end if (self:GetParent().isResizing) then - self:GetParent():StopMovingOrSizing() self:GetParent().isResizing = false @@ -1519,12 +1510,12 @@ local resize_scripts_onmouseup = function(self, button) local altura = self._instance.baseframe:GetHeight() if (self._instance.eh_horizontal) then - instancias_horizontais (self._instance, largura, true, true) + instancias_horizontais(self._instance, largura, true, true) self._instance.eh_horizontal = nil end --if (instancia.eh_vertical) then - instancias_verticais (self._instance, altura, true, true) + instancias_verticais(self._instance, altura, true, true) self._instance.eh_vertical = nil --end @@ -1565,42 +1556,39 @@ local resize_scripts_onmouseup = function(self, button) end if (Details.resize_changed_update_speed) then - Details:SetWindowUpdateSpeed (false, true) + Details:SetWindowUpdateSpeed(false, true) Details.resize_changed_update_speed = nil end - end end -local resize_scripts_onhide = function(self) +local resizeScriptsOnHide = function(self) if (self.going_hide) then - _G.GameCooltip:ShowMe (false) + _G.GameCooltip:ShowMe(false) self.going_hide = nil end end -local resize_scripts_onenter = function(self) - +local resizeScriptsOnEnter = function(self) if (Details.disable_lock_ungroup_buttons) then return end if (self._instance.modo ~= Details._detalhes_props["MODO_ALONE"] and not self._instance.baseframe.isLocked and not self.mostrando) then - OnEnterMainWindow(self._instance, self) self.texture:SetBlendMode("ADD") self.mostrando = true - Details:CooltipPreset (2.1) - GameCooltip:AddFromTable (resizeTooltip) + Details:CooltipPreset(2.1) + GameCooltip:AddFromTable(resizeTooltip) - GameCooltip:SetOwner (self) + GameCooltip:SetOwner(self) GameCooltip:ShowCooltip() end end -local resize_scripts_onleave = function(self) +local resizeScriptsOnLeave = function(self) if (self.mostrando) then self.going_hide = true if (not self.movendo) then @@ -1610,19 +1598,19 @@ local resize_scripts_onleave = function(self) self.texture:SetBlendMode("BLEND") self.mostrando = false - GameCooltip:ShowMe (false) + GameCooltip:ShowMe(false) end end -local function resize_scripts (resizer, instancia, scrollbar, side, baseframe) +local setWindowResizeScripts = function(resizer, instancia, scrollbar, side, baseframe) resizer._instance = instancia resizer._myside = side resizer:SetScript("OnMouseDown", resize_scripts_onmousedown) - resizer:SetScript("OnMouseUp", resize_scripts_onmouseup) - resizer:SetScript("OnHide", resize_scripts_onhide) - resizer:SetScript("OnEnter", resize_scripts_onenter) - resizer:SetScript("OnLeave", resize_scripts_onleave) + resizer:SetScript("OnMouseUp", resizeScriptsOnMouseUp) + resizer:SetScript("OnHide", resizeScriptsOnHide) + resizer:SetScript("OnEnter", resizeScriptsOnEnter) + resizer:SetScript("OnLeave", resizeScriptsOnLeave) end local lockButtonTooltip = { @@ -1631,7 +1619,6 @@ local lockButtonTooltip = { } local lockFunctionOnEnter = function(self) - if (Details.disable_lock_ungroup_buttons) then return end @@ -1643,11 +1630,11 @@ local lockFunctionOnEnter = function(self) self.label:SetTextColor(1, 1, 1, .6) - Details:CooltipPreset (2.1) + Details:CooltipPreset(2.1) GameCooltip:SetOption("FixedWidth", 180) - GameCooltip:AddFromTable (lockButtonTooltip) + GameCooltip:AddFromTable(lockButtonTooltip) - GameCooltip:SetOwner (self) + GameCooltip:SetOwner(self) GameCooltip:ShowCooltip() end end @@ -1658,20 +1645,20 @@ local lockFunctionOnLeave = function(self) OnLeaveMainWindow(self.instancia, self) self.label:SetTextColor(.6, .6, .6, .7) self.mostrando = false - GameCooltip:ShowMe (false) + GameCooltip:ShowMe(false) end end local lockFunctionOnHide = function(self) if (self.going_hide) then - GameCooltip:ShowMe (false) + GameCooltip:ShowMe(false) self.going_hide = nil end end -function Details:DelayOptionsRefresh (instance, no_reopen) +function Details:DelayOptionsRefresh(instance, noReopen) if (_G.DetailsOptionsWindow and _G.DetailsOptionsWindow:IsShown()) then - Details:ScheduleTimer ("OpenOptionsWindow", 0.1, {instance or _G.DetailsOptionsWindow.instance, no_reopen}) + Details:ScheduleTimer ("OpenOptionsWindow", 0.1, {instance or _G.DetailsOptionsWindow.instance, noReopen}) end end @@ -1695,7 +1682,6 @@ function Details:RefreshLockedState() end local lockFunctionOnClick = function(button, button_type, button2, isFromOptionsButton) - --isFromOptionsButton is true when the call if from the button in the display section of the options panel if (Details.disable_lock_ungroup_buttons and isFromOptionsButton ~= true) then return @@ -1721,7 +1707,7 @@ local lockFunctionOnClick = function(button, button_type, button2, isFromOptions button:SetPoint("right", baseframe.resize_direita, "left", -1, 1.5) else --tutorial - if (not Details:GetTutorialCVar ("WINDOW_LOCK_UNLOCK1") and not Details.initializing) then + if (not Details:GetTutorialCVar("WINDOW_LOCK_UNLOCK1") and not Details.initializing) then Details:SetTutorialCVar ("WINDOW_LOCK_UNLOCK1", true) local lock_tutorial = CreateFrame("frame", "DetailsWindowLockPopUp1", baseframe, "DetailsHelpBoxTemplate") @@ -1756,20 +1742,19 @@ local unSnapButtonTooltip = { } local unSnapButtonOnEnter = function(self) - if (Details.disable_lock_ungroup_buttons) then return end - local have_snap = false - for _, instancia_id in pairs (self.instancia.snap) do + local haveSnap = false + for _, instancia_id in pairs(self.instancia.snap) do if (instancia_id) then - have_snap = true + haveSnap = true break end end - if (not have_snap) then + if (not haveSnap) then OnEnterMainWindow(self.instancia, self) self.mostrando = true return @@ -1778,12 +1763,11 @@ local unSnapButtonOnEnter = function(self) OnEnterMainWindow(self.instancia, self) self.mostrando = true - Details:CooltipPreset (2.1) + Details:CooltipPreset(2.1) GameCooltip:SetOption("FixedWidth", 180) - GameCooltip:AddFromTable (unSnapButtonTooltip) - - GameCooltip:ShowCooltip (self, "tooltip") + GameCooltip:AddFromTable(unSnapButtonTooltip) + GameCooltip:ShowCooltip(self, "tooltip") end local unSnapButtonOnLeave = function(self) @@ -1795,49 +1779,48 @@ local unSnapButtonOnLeave = function(self) end --this should run only when the mouse is over a instance bar -local shift_monitor = function(self) - +local shiftMonitor = function(self) if (not self:IsMouseOver()) then - self:SetScript("OnUpdate", shift_monitor) + self:SetScript("OnUpdate", nil) return end if (_IsShiftKeyDown()) then if (not self.showing_allspells) then self.showing_allspells = true - local instancia = Details:GetInstance (self.instance_id) + local instancia = Details:GetInstance(self.instance_id) instancia:MontaTooltip(self, self.row_id, "shift") end elseif (self.showing_allspells) then self.showing_allspells = false - local instancia = Details:GetInstance (self.instance_id) + local instancia = Details:GetInstance(self.instance_id) instancia:MontaTooltip(self, self.row_id) end if (_IsControlKeyDown()) then if (not self.showing_alltargets) then self.showing_alltargets = true - local instancia = Details:GetInstance (self.instance_id) + local instancia = Details:GetInstance(self.instance_id) instancia:MontaTooltip(self, self.row_id, "ctrl") end elseif (self.showing_alltargets) then self.showing_alltargets = false - local instancia = Details:GetInstance (self.instance_id) + local instancia = Details:GetInstance(self.instance_id) instancia:MontaTooltip(self, self.row_id) end if (_IsAltKeyDown()) then if (not self.showing_allpets) then self.showing_allpets = true - local instancia = Details:GetInstance (self.instance_id) + local instancia = Details:GetInstance(self.instance_id) instancia:MontaTooltip(self, self.row_id, "alt") end elseif (self.showing_allpets) then self.showing_allpets = false - local instancia = Details:GetInstance (self.instance_id) + local instancia = Details:GetInstance(self.instance_id) instancia:MontaTooltip(self, self.row_id) end end @@ -1847,6 +1830,7 @@ local barra_backdrop_onenter = { tile = true, tileSize = 16, insets = {left = 1, right = 1, top = 0, bottom = 1} } + local barra_backdrop_onleave = { bgFile = "", edgeFile = "", tile = true, tileSize = 16, edgeSize = 32, @@ -1857,10 +1841,11 @@ local barra_backdrop_onleave = { Details.left_anti_truncate = CreateFrame("frame", "DetailsLeftTextAntiTruncate", UIParent,"BackdropTemplate") Details.left_anti_truncate:SetBackdrop(defaultBackdropSt) Details.left_anti_truncate:SetBackdropColor(0, 0, 0, 0.8) - Details.left_anti_truncate:SetFrameStrata ("FULLSCREEN") + Details.left_anti_truncate:SetFrameStrata("FULLSCREEN") Details.left_anti_truncate.text = Details.left_anti_truncate:CreateFontString(nil, "overlay", "GameFontNormal") Details.left_anti_truncate.text:SetPoint("left", Details.left_anti_truncate, "left", 3, 0) +--@self: instance line (row) local lineScript_Onenter = function(self) self.mouse_over = true OnEnterMainWindow(self._instance, self) @@ -1892,8 +1877,14 @@ local lineScript_Onenter = function(self) lefttext.untruncated = true end - self:SetScript("OnUpdate", shift_monitor) + self:SetScript("OnUpdate", shiftMonitor) + local classIcon = self:GetClassIcon() + self.iconHighlight:SetTexture(classIcon:GetTexture()) + self.iconHighlight:SetTexCoord(classIcon:GetTexCoord()) + self.iconHighlight:SetVertexColor(classIcon:GetVertexColor()) + self.iconHighlight:SetBlendMode("ADD") + self.iconHighlight:SetAlpha(0.3) self.iconHighlight:Show() end @@ -1902,7 +1893,7 @@ local lineScript_Onleave = function(self) OnLeaveMainWindow(self._instance, self) --_GameTooltip:Hide() - GameCooltip:ShowMe (false) + GameCooltip:ShowMe(false) self:SetBackdrop(barra_backdrop_onleave) self:SetBackdropBorderColor(0, 0, 0, 0) @@ -1934,7 +1925,7 @@ local lineScript_Onmousedown = function(self, button) end if (button == "RightButton") then - return Details.switch:ShowMe (self._instance) + return Details.switch:ShowMe(self._instance) elseif (button == "LeftButton") then @@ -2295,10 +2286,10 @@ end local icon_frame_events = Details:CreateEventListener() function icon_frame_events:EnterCombat() - for anim, _ in pairs (Details.icon_animations.load.in_use) do + for anim, _ in pairs(Details.icon_animations.load.in_use) do anim.anim:Stop() anim:Hide() - tinsert (Details.icon_animations.load.available, anim) + tinsert(Details.icon_animations.load.available, anim) anim.icon_frame.icon_animation = nil anim.icon_frame = nil @@ -2363,7 +2354,7 @@ end local icon_frame_create_animation = function() local f = CreateFrame("frame", nil, UIParent) - f:SetFrameStrata ("FULLSCREEN") + f:SetFrameStrata("FULLSCREEN") f.anim = f:CreateAnimationGroup() f.rotate = f.anim:CreateAnimation("Rotation") f.rotate:SetDegrees(360) @@ -2375,24 +2366,24 @@ local icon_frame_create_animation = function() t:SetAlpha(0.7) t:SetAllPoints() - tinsert (Details.icon_animations.load.available, f) + tinsert(Details.icon_animations.load.available, f) end local icon_frame_on_click_down = function(self) local instanceID = self.instance_id - local instanceObject = Details:GetInstance (instanceID) + local instanceObject = Details:GetInstance(instanceID) self:GetParent():GetParent().icone_classe:SetPoint("left", self:GetParent():GetParent(), "left", instanceObject.row_info.icon_offset[1] + 1, instanceObject.row_info.icon_offset[2] + -1) end local icon_frame_on_click_up = function(self, button) local instanceID = self.instance_id - local instanceObject = Details:GetInstance (instanceID) + local instanceObject = Details:GetInstance(instanceID) self:GetParent():GetParent().icone_classe:SetPoint("left", self:GetParent():GetParent(), "left", instanceObject.row_info.icon_offset[1], instanceObject.row_info.icon_offset[2]) if (button == "LeftButton") then --open the rank panel - local instance = Details:GetInstance (self.row.instance_id) + local instance = Details:GetInstance(self.row.instance_id) if (instance) then local attribute, subattribute = instance:GetDisplay() local combat = instance:GetShowingCombat() @@ -2473,7 +2464,7 @@ local icon_frame_on_click_up = function(self, button) anim:Show() anim:SetParent(self) anim:ClearAllPoints() - anim:SetFrameStrata ("TOOLTIP") + anim:SetFrameStrata("TOOLTIP") anim:SetPoint("center", self, "center") anim:SetSize(self:GetWidth()*1.7, self:GetHeight()*1.7) @@ -2598,10 +2589,10 @@ local function button_stretch_scripts (baseframe, backgrounddisplay, instancia) end if (instancia.stretch_button_side == 1) then - baseframe:StartSizing ("top") + baseframe:StartSizing("top") baseframe.stretch_direction = "top" elseif (instancia.stretch_button_side == 2) then - baseframe:StartSizing ("bottom") + baseframe:StartSizing("bottom") baseframe.stretch_direction = "bottom" end @@ -2657,7 +2648,7 @@ local function button_stretch_scripts (baseframe, backgrounddisplay, instancia) --change the update speed if (Details.update_speed > 0.3) then - Details:SetWindowUpdateSpeed (0.3, true) + Details:SetWindowUpdateSpeed(0.3, true) Details.stretch_changed_update_speed = true end @@ -3014,7 +3005,7 @@ function Details:InstanceAlert (msg, icon, time, clickfunc, doflash, forceAlert) if (not self.meu_id) then local lower = Details:GetLowerInstanceNumber() if (lower) then - self = Details:GetInstance (lower) + self = Details:GetInstance(lower) else return end @@ -3076,8 +3067,8 @@ function Details:InstanceAlert (msg, icon, time, clickfunc, doflash, forceAlert) self.alert:SetPoint("left", self.baseframe, "left", 3, 0) self.alert:SetPoint("right", self.baseframe, "right", -3, 0) - self.alert:SetFrameStrata ("TOOLTIP") - self.alert.button:SetFrameStrata ("TOOLTIP") + self.alert:SetFrameStrata("TOOLTIP") + self.alert.button:SetFrameStrata("TOOLTIP") self.alert:Show() @@ -3106,7 +3097,7 @@ local function CreateAlertFrame (baseframe, instancia) frame_upper:SetPoint("left", baseframe, "left", 3, 0) frame_upper:SetPoint("right", baseframe, "right", -3, 0) frame_upper:SetHeight(13) - frame_upper:SetFrameStrata ("TOOLTIP") + frame_upper:SetFrameStrata("TOOLTIP") local frame_lower = CreateFrame("frame", "DetailsAlertFrameScrollChild" .. instancia.meu_id, frame_upper) frame_lower:SetHeight(25) @@ -3122,7 +3113,7 @@ local function CreateAlertFrame (baseframe, instancia) alert_bg:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) alert_bg:SetBackdropColor(.1, .1, .1, 1) - alert_bg:SetFrameStrata ("FULLSCREEN") + alert_bg:SetFrameStrata("FULLSCREEN") alert_bg:SetFrameLevel(baseframe:GetFrameLevel() + 6) alert_bg:Hide() @@ -3144,7 +3135,7 @@ local function CreateAlertFrame (baseframe, instancia) rotate_frame:SetWidth(12) rotate_frame:SetPoint("right", alert_bg, "right", -2, 0) rotate_frame:SetHeight(alert_bg:GetWidth()) - rotate_frame:SetFrameStrata ("FULLSCREEN") + rotate_frame:SetFrameStrata("FULLSCREEN") local icon = rotate_frame:CreateTexture(nil, "overlay") icon:SetPoint("center", rotate_frame, "center") @@ -3153,7 +3144,7 @@ local function CreateAlertFrame (baseframe, instancia) local button = CreateFrame("button", "DetailsInstance"..instancia.meu_id.."AlertButton", alert_bg) button:SetAllPoints() - button:SetFrameStrata ("FULLSCREEN") + button:SetFrameStrata("FULLSCREEN") button:SetScript("OnClick", alert_on_click) button._instance = instancia button.func_param = {} @@ -3303,7 +3294,7 @@ end Details.snap_alert = CreateFrame("frame", "DetailsSnapAlertFrame", UIParent, "ActionBarButtonSpellActivationAlert") Details.snap_alert:Hide() -Details.snap_alert:SetFrameStrata ("FULLSCREEN") +Details.snap_alert:SetFrameStrata("FULLSCREEN") function Details:SnapAlert() Details.snap_alert:ClearAllPoints() @@ -3328,7 +3319,7 @@ do tooltip_anchor:SetScript("OnEnter", function(self) tooltip_anchor.alert.animIn:Stop() tooltip_anchor.alert.animOut:Play() - GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT") + GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") GameTooltip:ClearLines() GameTooltip:AddLine(Loc["STRING_OPTIONS_TOOLTIPS_ANCHOR_TEXT_DESC"]) GameTooltip:Show() @@ -3367,14 +3358,14 @@ do self:SetAlpha(1) self:EnableMouse(true) self:SetMovable (true) - self:SetFrameStrata ("FULLSCREEN") + self:SetFrameStrata("FULLSCREEN") self.locked = false tooltip_anchor.alert.animOut:Stop() tooltip_anchor.alert.animIn:Play() else self:SetAlpha(0) self:EnableMouse(false) - self:SetFrameStrata ("MEDIUM") + self:SetFrameStrata("MEDIUM") self:SetMovable (false) self.locked = true tooltip_anchor.alert.animIn:Stop() @@ -3394,7 +3385,7 @@ do end tooltip_anchor.alert = CreateFrame("frame", "DetailsTooltipAnchorAlert", UIParent, "ActionBarButtonSpellActivationAlert") - tooltip_anchor.alert:SetFrameStrata ("FULLSCREEN") + tooltip_anchor.alert:SetFrameStrata("FULLSCREEN") tooltip_anchor.alert:Hide() tooltip_anchor.alert:SetPoint("topleft", tooltip_anchor, "topleft", -60, 6) tooltip_anchor.alert:SetPoint("bottomright", tooltip_anchor, "bottomright", 40, -6) @@ -3474,7 +3465,7 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) --row frame is the parent of rows, it have setallpoints on baseframe local rowframe = CreateFrame("frame", "DetailsRowFrame"..ID, _UIParent) --row frame rowframe:SetAllPoints(baseframe) - rowframe:SetFrameStrata (baseframe_strata) + rowframe:SetFrameStrata(baseframe_strata) rowframe:SetFrameLevel(3) rowframe:EnableMouse(false) instancia.rowframe = rowframe @@ -3487,14 +3478,14 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) --right click bookmark local switchbutton = CreateFrame("button", "Details_SwitchButtonFrame" .. ID, UIParent) switchbutton:SetAllPoints(baseframe) - switchbutton:SetFrameStrata (baseframe_strata) + switchbutton:SetFrameStrata(baseframe_strata) switchbutton:SetFrameLevel(4) instancia.windowSwitchButton = switchbutton --avoid mouse hover over a high window when the menu is open for a lower instance. local anti_menu_overlap = CreateFrame("frame", "Details_WindowFrameAntiMenuOverlap" .. ID, UIParent) anti_menu_overlap:SetSize(100, 13) - anti_menu_overlap:SetFrameStrata ("DIALOG") + anti_menu_overlap:SetFrameStrata("DIALOG") anti_menu_overlap:EnableMouse(true) anti_menu_overlap:Hide() --anti_menu_overlap:SetBackdrop(gump_fundo_backdrop) --debug @@ -3607,7 +3598,7 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) baseframe:SetSize(Details.new_window_size.width, Details.new_window_size.height) baseframe:SetPoint("center", _UIParent) - baseframe:EnableMouseWheel (false) + baseframe:EnableMouseWheel(false) baseframe:EnableMouse(true) if (not DetailsFramework.IsDragonflight()) then @@ -3690,7 +3681,7 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) baseframe.resize_direita:SetHeight(16) baseframe.resize_direita:SetPoint("bottomright", baseframe, "bottomright", 0, 0) baseframe.resize_direita:EnableMouse(true) - baseframe.resize_direita:SetFrameStrata ("HIGH") + baseframe.resize_direita:SetFrameStrata("HIGH") baseframe.resize_direita:SetFrameLevel(baseframe:GetFrameLevel() + 6) baseframe.resize_direita.side = 2 @@ -3710,7 +3701,7 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) baseframe.lock_button:SetScript("OnEnter", lockFunctionOnEnter) baseframe.lock_button:SetScript("OnLeave", lockFunctionOnLeave) baseframe.lock_button:SetScript("OnHide", lockFunctionOnHide) - baseframe.lock_button:SetFrameStrata ("HIGH") + baseframe.lock_button:SetFrameStrata("HIGH") baseframe.lock_button:SetFrameLevel(baseframe:GetFrameLevel() + 6) baseframe.lock_button.instancia = instancia @@ -3729,7 +3720,7 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) baseframe.resize_esquerda:SetHeight(16) baseframe.resize_esquerda:SetPoint("bottomleft", baseframe, "bottomleft", 0, 0) baseframe.resize_esquerda:EnableMouse(true) - baseframe.resize_esquerda:SetFrameStrata ("HIGH") + baseframe.resize_esquerda:SetFrameStrata("HIGH") baseframe.resize_esquerda:SetFrameLevel(baseframe:GetFrameLevel() + 6) baseframe.resize_esquerda:SetAlpha(0) @@ -3823,8 +3814,8 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) -- scripts ------------------------------------------------------------------------------------------------------------------------------------------------------------ - resize_scripts (baseframe.resize_direita, instancia, scrollbar, ">", baseframe) - resize_scripts (baseframe.resize_esquerda, instancia, scrollbar, "<", baseframe) + setWindowResizeScripts (baseframe.resize_direita, instancia, scrollbar, ">", baseframe) + setWindowResizeScripts (baseframe.resize_esquerda, instancia, scrollbar, "<", baseframe) -- side bars highlights ------------------------------------------------------------------------------------------------------------------------------------------------------------ @@ -4017,6 +4008,18 @@ local windowLineMixin = { GetActor = function(self) return self.minha_tabela end, + + GetInstanceId = function(self) + return self.instance_id + end, + + GetLineId = function(self) + return self.row_id + end, + + GetClassIcon = function(self) + return self.icone_classe + end, } Details.barras_criadas = 0 @@ -4040,6 +4043,7 @@ function gump:CreateNewLine(instance, index) newLine.instance_id = instance.meu_id newLine.animacao_fim = 0 newLine.animacao_fim2 = 0 + newLine.isInstanceLine = true --set point, almost irrelevant here, it recalc this on SetBarGrowDirection() local yOffset = instance.row_height * (index-1) @@ -4113,6 +4117,7 @@ function gump:CreateNewLine(instance, index) --class icon highlight local iconHightlight = newLine.border:CreateTexture(nil, "overlay", nil, 6) iconHightlight:SetAllPoints(classIcon) + iconHightlight:Hide() newLine.iconHighlight = iconHightlight local iconFrame = CreateFrame("frame", "DetailsBarra_IconFrame_" .. instance.meu_id .. "_" .. index, newLine.statusbar) @@ -4139,13 +4144,13 @@ function gump:CreateNewLine(instance, index) end --set the onclick, on enter scripts - setLineScripts (newLine, instance, index) + setLineScripts(newLine, instance, index) --hide Details.FadeHandler.Fader(newLine, 1) --adds the window container - instance.barras [index] = newLine + instance.barras[index] = newLine --set the left text newLine.lineText1:SetText(Loc["STRING_NEWROW"]) @@ -5916,7 +5921,7 @@ local on_leave_menu = function(self, elapsed) parameters_table[2] = parameters_table[2] + elapsed if (parameters_table[2] > 0.3) then if (not _G.GameCooltip.mouseOver and not _G.GameCooltip.buttonOver and (not _G.GameCooltip:GetOwner() or _G.GameCooltip:GetOwner() == self)) then - _G.GameCooltip:ShowMe (false) + _G.GameCooltip:ShowMe(false) end self:SetScript("OnUpdate", nil) end @@ -5931,10 +5936,10 @@ local OnClickNovoMenu = function(_, _, id, instance) end local ninstance = Details.CriarInstancia (_, _, id) - instance.baseframe.cabecalho.modo_selecao:GetScript ("OnEnter")(instance.baseframe.cabecalho.modo_selecao, _, true) + instance.baseframe.cabecalho.modo_selecao:GetScript("OnEnter")(instance.baseframe.cabecalho.modo_selecao, _, true) if (ninstance and is_new) then - ninstance.baseframe.cabecalho.modo_selecao:GetScript ("OnEnter")(ninstance.baseframe.cabecalho.modo_selecao, _, true) + ninstance.baseframe.cabecalho.modo_selecao:GetScript("OnEnter")(ninstance.baseframe.cabecalho.modo_selecao, _, true) end end @@ -6143,9 +6148,9 @@ function Details:SetMenuOwner (self, instance) if (instance.toolbar_side == 1) then if (y+300 > screen_height) then - GameCooltip:SetOwner (self, "top", "bottom", 0, -10) + GameCooltip:SetOwner(self, "top", "bottom", 0, -10) else - GameCooltip:SetOwner (self) + GameCooltip:SetOwner(self) end elseif (instance.toolbar_side == 2) then --bottom @@ -6153,9 +6158,9 @@ function Details:SetMenuOwner (self, instance) local instance_height = instance.baseframe:GetHeight() if (y + math.max (instance_height, 250) > screen_height) then - GameCooltip:SetOwner (self, "top", "bottom", 0, -10) + GameCooltip:SetOwner(self, "top", "bottom", 0, -10) else - GameCooltip:SetOwner (self, "bottom", "top", 0, 0) + GameCooltip:SetOwner(self, "bottom", "top", 0, 0) end end @@ -7015,10 +7020,10 @@ function Details:ChangeSkin(skin_name) local copy = Details.CopyTable(overwrite_cprops) - for cprop, value in pairs (copy) do + for cprop, value in pairs(copy) do if (not Details.instance_skin_ignored_values [cprop]) then if (type(value) == "table") then - for cprop2, value2 in pairs (value) do + for cprop2, value2 in pairs(value) do if (not self[cprop]) then self[cprop] = {} end @@ -7256,7 +7261,7 @@ function Details:ChangeSkin(skin_name) --auto interact if (self.menu_alpha.enabled) then - self:SetMenuAlpha (nil, nil, nil, nil, self.is_interacting) + self:SetMenuAlpha(nil, nil, nil, nil, self.is_interacting) end --set the scale @@ -7690,34 +7695,34 @@ function Details:SetFrameStrata(strata) self.baseframe:SetFrameStrata(strata) if (strata == "BACKGROUND") then - self.break_snap_button:SetFrameStrata ("LOW") - self.baseframe.resize_esquerda:SetFrameStrata ("LOW") - self.baseframe.resize_direita:SetFrameStrata ("LOW") - self.baseframe.lock_button:SetFrameStrata ("LOW") + self.break_snap_button:SetFrameStrata("LOW") + self.baseframe.resize_esquerda:SetFrameStrata("LOW") + self.baseframe.resize_direita:SetFrameStrata("LOW") + self.baseframe.lock_button:SetFrameStrata("LOW") elseif (strata == "LOW") then - self.break_snap_button:SetFrameStrata ("MEDIUM") - self.baseframe.resize_esquerda:SetFrameStrata ("MEDIUM") - self.baseframe.resize_direita:SetFrameStrata ("MEDIUM") - self.baseframe.lock_button:SetFrameStrata ("MEDIUM") + self.break_snap_button:SetFrameStrata("MEDIUM") + self.baseframe.resize_esquerda:SetFrameStrata("MEDIUM") + self.baseframe.resize_direita:SetFrameStrata("MEDIUM") + self.baseframe.lock_button:SetFrameStrata("MEDIUM") elseif (strata == "MEDIUM") then - self.break_snap_button:SetFrameStrata ("HIGH") - self.baseframe.resize_esquerda:SetFrameStrata ("HIGH") - self.baseframe.resize_direita:SetFrameStrata ("HIGH") - self.baseframe.lock_button:SetFrameStrata ("HIGH") + self.break_snap_button:SetFrameStrata("HIGH") + self.baseframe.resize_esquerda:SetFrameStrata("HIGH") + self.baseframe.resize_direita:SetFrameStrata("HIGH") + self.baseframe.lock_button:SetFrameStrata("HIGH") elseif (strata == "HIGH") then - self.break_snap_button:SetFrameStrata ("DIALOG") - self.baseframe.resize_esquerda:SetFrameStrata ("DIALOG") - self.baseframe.resize_direita:SetFrameStrata ("DIALOG") - self.baseframe.lock_button:SetFrameStrata ("DIALOG") + self.break_snap_button:SetFrameStrata("DIALOG") + self.baseframe.resize_esquerda:SetFrameStrata("DIALOG") + self.baseframe.resize_direita:SetFrameStrata("DIALOG") + self.baseframe.lock_button:SetFrameStrata("DIALOG") elseif (strata == "DIALOG") then - self.break_snap_button:SetFrameStrata ("FULLSCREEN") - self.baseframe.resize_esquerda:SetFrameStrata ("FULLSCREEN") - self.baseframe.resize_direita:SetFrameStrata ("FULLSCREEN") - self.baseframe.lock_button:SetFrameStrata ("FULLSCREEN") + self.break_snap_button:SetFrameStrata("FULLSCREEN") + self.baseframe.resize_esquerda:SetFrameStrata("FULLSCREEN") + self.baseframe.resize_direita:SetFrameStrata("FULLSCREEN") + self.baseframe.lock_button:SetFrameStrata("FULLSCREEN") end self:StretchButtonAlwaysOnTop() @@ -8128,7 +8133,7 @@ function Details:SetBackdropTexture (texturename) end -- ~alpha (transparency of buttons on the toolbar) ~autohide �utohide ~menuauto -function Details:SetAutoHideMenu (left, right, interacting) +function Details:SetAutoHideMenu(left, right, interacting) --30/07/2018: the separation by left and right menu icons doesn't exists for years, but it was still active in the code making --the toolbar icons show on initialization even when the options to auto hide them enabled. @@ -8196,7 +8201,7 @@ function Details:SetAutoHideMenu (left, right, interacting) end -- transparency for toolbar, borders and statusbar -function Details:SetMenuAlpha (enabled, onenter, onleave, ignorebars, interacting) +function Details:SetMenuAlpha(enabled, onenter, onleave, ignorebars, interacting) if (interacting) then --called from a onenter or onleave script if (self.menu_alpha.enabled) then @@ -8240,7 +8245,7 @@ function Details:SetMenuAlpha (enabled, onenter, onleave, ignorebars, interactin local r, g, b = unpack(self.color) self:InstanceColor (r, g, b, 1) r, g, b = unpack(self.statusbar_info.overlay) - self:StatusBarColor (r, g, b, 1) + self:StatusBarColor(r, g, b, 1) end if (self.is_interacting) then @@ -8307,12 +8312,11 @@ function Details:MicroDisplaysSide (side, fromuser) elseif (self.micro_displays_side == 1) then Details.StatusBar:Show (self) end - end function Details:IsGroupedWith (instance) local id = instance:GetId() - for side, instanceId in pairs (self.snap) do + for side, instanceId in pairs(self.snap) do if (instanceId == id) then return true end @@ -8321,11 +8325,10 @@ function Details:IsGroupedWith (instance) end function Details:GetInstanceGroup (instance_id) - local instance = self if (instance_id) then - instance = Details:GetInstance (instance_id) + instance = Details:GetInstance(instance_id) if (not instance or not instance:IsEnabled()) then return end @@ -8333,16 +8336,16 @@ function Details:GetInstanceGroup (instance_id) local current_group = {instance} - for side, insId in pairs (instance.snap) do + for side, insId in pairs(instance.snap) do if (insId < instance:GetId()) then local last_id = instance:GetId() for i = insId, 1, -1 do - local this_instance = Details:GetInstance (i) + local this_instance = Details:GetInstance(i) local got = false if (this_instance and this_instance:IsEnabled()) then - for side, id in pairs (this_instance.snap) do + for side, id in pairs(this_instance.snap) do if (id == last_id) then - tinsert (current_group, this_instance) + tinsert(current_group, this_instance) got = true last_id = i end @@ -8355,12 +8358,12 @@ function Details:GetInstanceGroup (instance_id) else local last_id = instance:GetId() for i = insId, Details.instances_amount do - local this_instance = Details:GetInstance (i) + local this_instance = Details:GetInstance(i) local got = false if (this_instance and this_instance:IsEnabled()) then - for side, id in pairs (this_instance.snap) do + for side, id in pairs(this_instance.snap) do if (id == last_id) then - tinsert (current_group, this_instance) + tinsert(current_group, this_instance) got = true last_id = i end @@ -8400,7 +8403,6 @@ function Details:SetWindowScale(scale, fromOptions) end function Details:ToolbarSide (side, only_update_anchors) - if (not side) then side = self.toolbar_side end @@ -8410,7 +8412,6 @@ function Details:ToolbarSide (side, only_update_anchors) local skin = Details.skins [self.skin] if (side == 1) then --top - local anchor_mod = not self.show_sidebars and skin.instance_cprops.show_sidebars_need_resize_by or 0 --icon (ball) point @@ -8457,9 +8458,7 @@ function Details:ToolbarSide (side, only_update_anchors) self.baseframe.UPFrameLeftPart:ClearAllPoints() self.baseframe.UPFrameLeftPart:SetPoint("bottomleft", self.baseframe, "topleft", 0, 0) - else --bottom - local y = 0 if (self.show_statusbar) then y = -14 @@ -8534,7 +8533,6 @@ function Details:ToolbarSide (side, only_update_anchors) end function Details:StretchButtonAlwaysOnTop (on_top) - if (type(on_top) ~= "boolean") then on_top = self.grab_on_top end @@ -8542,21 +8540,18 @@ function Details:StretchButtonAlwaysOnTop (on_top) self.grab_on_top = on_top if (self.grab_on_top) then - self.baseframe.button_stretch:SetFrameStrata ("FULLSCREEN") + self.baseframe.button_stretch:SetFrameStrata("FULLSCREEN") else - self.baseframe.button_stretch:SetFrameStrata (self.strata) + self.baseframe.button_stretch:SetFrameStrata(self.strata) end - end function Details:StretchButtonAnchor (side) - if (not side) then side = self.stretch_button_side end if (side == 1 or string.lower (side) == "top") then - self.baseframe.button_stretch:ClearAllPoints() local y = 0 @@ -8570,7 +8565,6 @@ function Details:StretchButtonAnchor (side) self.stretch_button_side = 1 elseif (side == 2 or string.lower (side) == "bottom") then - self.baseframe.button_stretch:ClearAllPoints() local y = 0 @@ -8588,9 +8582,7 @@ function Details:StretchButtonAnchor (side) self.baseframe.button_stretch.texture:SetTexCoord(r, l, b, t) self.stretch_button_side = 2 - end - end function Details:MenuAnchor (x, y) @@ -8626,7 +8618,6 @@ function Details:MenuAnchor (x, y) else --bottom menu_points [1]:SetPoint("topleft", self.baseframe.cabecalho.ball, "topright", x, (y*-1) - 4) - end elseif (self.menu_anchor.side == 2) then --right @@ -8638,7 +8629,6 @@ function Details:MenuAnchor (x, y) else --bottom menu_points [2]:SetPoint("topleft", self.baseframe.cabecalho.ball_r, "topleft", x, (y*-1) - 4) - end end @@ -8646,13 +8636,11 @@ function Details:MenuAnchor (x, y) end function Details:HideMainIcon (value) - if (type(value) ~= "boolean") then value = self.hide_icon end if (value) then - self.hide_icon = true Details.FadeHandler.Fader(self.baseframe.cabecalho.atributo_icon, 1) @@ -8685,7 +8673,6 @@ function Details:HideMainIcon (value) self.baseframe.cabecalho.emenda:SetTexCoord(unpack(COORDS_LEFT_CONNECTOR)) elseif (self.toolbar_side == 2) then - local l, r, t, b = unpack(COORDS_LEFT_BALL) self.baseframe.cabecalho.ball:SetTexCoord(l, r, b, t) local l, r, t, b = unpack(COORDS_LEFT_CONNECTOR) @@ -8696,13 +8683,11 @@ end --search key: ~desaturate function Details:DesaturateMenu (value) - if (value == nil) then value = self.desaturated_menu end if (value) then - self.desaturated_menu = true self.baseframe.cabecalho.modo_selecao:GetNormalTexture():SetDesaturated(true) self.baseframe.cabecalho.segmento:GetNormalTexture():SetDesaturated(true) @@ -8718,7 +8703,6 @@ function Details:DesaturateMenu (value) end else - self.desaturated_menu = false self.baseframe.cabecalho.modo_selecao:GetNormalTexture():SetDesaturated(false) self.baseframe.cabecalho.segmento:GetNormalTexture():SetDesaturated(false) @@ -8732,7 +8716,6 @@ function Details:DesaturateMenu (value) button:GetNormalTexture():SetDesaturated(false) end end - end end @@ -8793,7 +8776,6 @@ function Details:ShowSideBars (instancia) --self:SetBarGrowDirection() --passando true - apenas atulizar as anchors self:ToolbarSide (nil, true) - end function Details:HideSideBars (instancia) @@ -8865,8 +8847,7 @@ function Details:HideStatusBar (instancia) end end -function Details:StatusBarColor (r, g, b, a, no_save) - +function Details:StatusBarColor(r, g, b, a, no_save) if (not r) then r, g, b = unpack(self.statusbar_info.overlay) a = a or self.statusbar_info.alpha @@ -8889,7 +8870,6 @@ function Details:StatusBarColor (r, g, b, a, no_save) self.baseframe.rodape.esquerdo_nostatusbar:SetAlpha(a) self.baseframe.rodape.top_bg:SetVertexColor(r, g, b) self.baseframe.rodape.top_bg:SetAlpha(a) - end function Details:ShowStatusBar(instancia) @@ -8919,8 +8899,7 @@ function Details:ShowStatusBar(instancia) end end -function Details:SetTooltipBackdrop (border_texture, border_size, border_color) - +function Details:SetTooltipBackdrop(border_texture, border_size, border_color) if (not border_texture) then border_texture = Details.tooltip.border_texture end @@ -8941,12 +8920,10 @@ function Details:SetTooltipBackdrop (border_texture, border_size, border_color) Details.tooltip_backdrop.edgeFile = SharedMedia:Fetch("border", border_texture) Details.tooltip_backdrop.edgeSize = border_size - end --reset button functions local reset_button_onenter = function(self, _, forced, from_click) - if (Details.instances_menu_click_to_open and not forced) then return end @@ -8998,7 +8975,7 @@ end self:GetNormalTexture():SetDesaturated(true) end - hide_anti_overlap (self.instance.baseframe.anti_menu_overlap) + hide_anti_overlap(self.instance.baseframe.anti_menu_overlap) GameCooltip.buttonOver = false self.instance.baseframe.cabecalho.button_mouse_over = false @@ -9009,13 +8986,11 @@ end else self:SetScript("OnUpdate", nil) end - end --close button functions local close_button_onclick = function(self, button_type, button) - if (self and not self.instancia and button and button.instancia) then self = button end @@ -9033,10 +9008,10 @@ end --tutorial, how to fully delete a window --_detalhes:SetTutorialCVar ("FULL_DELETE_WINDOW", false) - if (not Details:GetTutorialCVar ("FULL_DELETE_WINDOW")) then + if (not Details:GetTutorialCVar("FULL_DELETE_WINDOW")) then Details:SetTutorialCVar ("FULL_DELETE_WINDOW", true) - local panel = gump:Create1PxPanel (UIParent, 600, 100, "|cFFFFFFFFDetails!, the window hit the ground, bang bang...|r", nil, nil, nil, nil) + local panel = gump:Create1PxPanel(UIParent, 600, 100, "|cFFFFFFFFDetails!, the window hit the ground, bang bang...|r", nil, nil, nil, nil) panel:SetBackdropColor(0, 0, 0, 0.9) panel:SetPoint("center", UIParent, "center") @@ -9119,7 +9094,6 @@ end else self:SetScript("OnUpdate", nil) end - end ------------------------------------------------------------------------------------------------------------------------------------------------------------------ @@ -9128,7 +9102,7 @@ end local menu_can_open = function() if (GameCooltip.active) then local owner = GameCooltip:GetOwner() - if (owner and owner:GetScript ("OnUpdate") == on_leave_menu) then + if (owner and owner:GetScript("OnUpdate") == on_leave_menu) then owner:SetScript("OnUpdate", nil) end return true @@ -9136,7 +9110,6 @@ local menu_can_open = function() end local report_on_enter = function(self, motion, forced, from_click) - local is_cooltip_opened = menu_can_open() -- and not is_cooltip_opened if (Details.instances_menu_click_to_open and not forced) then return @@ -9200,13 +9173,12 @@ local report_on_enter = function(self, motion, forced, from_click) end local report_on_leave = function(self, motion, forced, from_click) - local instancia = self._instance or self.widget._instance local baseframe = instancia.baseframe OnLeaveMainWindow(instancia, self, 3) - hide_anti_overlap (instancia.baseframe.anti_menu_overlap) + hide_anti_overlap(instancia.baseframe.anti_menu_overlap) GameCooltip.buttonOver = false baseframe.cabecalho.button_mouse_over = false @@ -9224,7 +9196,6 @@ local report_on_leave = function(self, motion, forced, from_click) end local atributo_on_enter = function(self, motion, forced, from_click) - local is_cooltip_opened = menu_can_open() -- and not is_cooltip_opened if (Details.instances_menu_click_to_open and not forced) then return @@ -9246,14 +9217,14 @@ local atributo_on_enter = function(self, motion, forced, from_click) GameCooltip:Reset() GameCooltip:SetType (3) - GameCooltip:SetFixedParameter (instancia) + GameCooltip:SetFixedParameter(instancia) if (Details.solo and Details.solo == instancia.meu_id) then - Details:MontaSoloOption (instancia) + Details:MontaSoloOption(instancia) elseif (instancia:IsRaidMode()) then - local have_plugins = Details:MontaRaidOption (instancia) + local have_plugins = Details:MontaRaidOption(instancia) if (not have_plugins) then GameCooltip:SetType ("tooltip") GameCooltip:SetOption("ButtonsYMod", 0) @@ -9277,7 +9248,7 @@ local atributo_on_enter = function(self, motion, forced, from_click) Details:SetMenuOwner (self, instancia) - GameCooltip:ShowCooltip () + GameCooltip:ShowCooltip() end local atributo_on_leave = function(self, motion, forced, from_click) @@ -9353,7 +9324,6 @@ local segmentButton_OnLeave = function(self, motion, forced, fromClick) end local modo_selecao_on_enter = function(self, motion, forced, from_click) - local is_cooltip_opened = menu_can_open() -- not is_cooltip_opened if (Details.instances_menu_click_to_open and not forced) then return @@ -9395,7 +9365,6 @@ local modo_selecao_on_enter = function(self, motion, forced, from_click) end local modo_selecao_on_leave = function(self) - local instancia = self._instance or self.widget._instance local baseframe = instancia.baseframe @@ -9419,7 +9388,6 @@ local modo_selecao_on_leave = function(self) end - -- these can local title_bar_icons = { {texture = [[Interface\AddOns\Details\images\toolbar_icons]], texcoord = {0/256, 32/256, 0, 1}}, @@ -9428,7 +9396,7 @@ local title_bar_icons = { {texture = [[Interface\AddOns\Details\images\toolbar_icons]], texcoord = {96/256, 128/256, 0, 1}}, {texture = [[Interface\AddOns\Details\images\toolbar_icons]], texcoord = {128/256, 160/256, 0, 1}}, } -function Details:GetTitleBarIconsTexture (button, instance) +function Details:GetTitleBarIconsTexture(button, instance) if (instance or self.meu_id) then local textureFile = self.toolbar_icon_file or instance.toolbar_icon_file local t = title_bar_icons [button] @@ -9463,10 +9431,10 @@ function Details:CreateFakeWindow() local b = tb:CreateTexture(nil, "overlay") b:SetSize(12, 12) b:SetPoint("bottomright", tb, "bottomright", -((abs(i-6)-1)*11) - 1, 2) - local button_texture_texcoord = Details:GetTitleBarIconsTexture (i) + local button_texture_texcoord = Details:GetTitleBarIconsTexture(i) b:SetTexture(button_texture_texcoord.texture) b:SetTexCoord(unpack(button_texture_texcoord.texcoord)) - tinsert (t.TitleIcons, b) + tinsert(t.TitleIcons, b) end t.TitleBar = tb @@ -9489,9 +9457,9 @@ local function click_to_change_segment (instancia, buttontype) local goal = segmento_goal+1 local select_ = math.abs (goal - total_shown) - GameCooltip:Select (1, select_) + GameCooltip:Select(1, select_) - instancia:TrocaTabela (segmento_goal) + instancia:TrocaTabela(segmento_goal) segmentButton_OnEnter (instancia.baseframe.cabecalho.segmento.widget, _, true, true) @@ -9506,9 +9474,9 @@ local function click_to_change_segment (instancia, buttontype) local goal = segmento_goal+1 local select_ = math.abs (goal - total_shown) - GameCooltip:Select (1, select_) + GameCooltip:Select(1, select_) - instancia:TrocaTabela (segmento_goal) + instancia:TrocaTabela(segmento_goal) segmentButton_OnEnter (instancia.baseframe.cabecalho.segmento.widget, _, true, true) elseif (buttontype == "MiddleButton") then @@ -9519,9 +9487,9 @@ local function click_to_change_segment (instancia, buttontype) local goal = segmento_goal+1 local select_ = math.abs (goal - total_shown) - GameCooltip:Select (1, select_) + GameCooltip:Select(1, select_) - instancia:TrocaTabela (segmento_goal) + instancia:TrocaTabela(segmento_goal) segmentButton_OnEnter (instancia.baseframe.cabecalho.segmento.widget, _, true, true) end @@ -9687,7 +9655,7 @@ function gump:CriaCabecalho (baseframe, instancia) local modo_selecao_button_click = function() if (Details.instances_menu_click_to_open) then if (instancia.LastMenuOpened == "mode" and GameCooltipFrame1:IsShown()) then - GameCooltip:ShowMe (false) + GameCooltip:ShowMe(false) instancia.LastMenuOpened = nil else modo_selecao_on_enter (instancia.baseframe.cabecalho.modo_selecao.widget, _, true, true) @@ -9698,7 +9666,7 @@ function gump:CriaCabecalho (baseframe, instancia) end end - baseframe.cabecalho.modo_selecao = gump:NewButton (baseframe, nil, "DetailsModeButton"..instancia.meu_id, nil, 16, 16, modo_selecao_button_click, nil, nil, [[Interface\AddOns\Details\images\modo_icone]]) + baseframe.cabecalho.modo_selecao = gump:NewButton(baseframe, nil, "DetailsModeButton"..instancia.meu_id, nil, 16, 16, modo_selecao_button_click, nil, nil, [[Interface\AddOns\Details\images\modo_icone]]) baseframe.cabecalho.modo_selecao:SetPoint("bottomleft", baseframe.cabecalho.ball, "bottomright", instancia.menu_anchor [1], instancia.menu_anchor [2]) baseframe.cabecalho.modo_selecao:SetFrameLevel(baseframe:GetFrameLevel()+5) baseframe.cabecalho.modo_selecao.widget._instance = instancia @@ -9719,7 +9687,7 @@ function gump:CriaCabecalho (baseframe, instancia) local segmento_button_click = function(self, button, param1) if (Details.instances_menu_click_to_open) then if (instancia.LastMenuOpened == "segments" and GameCooltipFrame1:IsShown()) then - GameCooltip:ShowMe (false) + GameCooltip:ShowMe(false) instancia.LastMenuOpened = nil else segmentButton_OnEnter (instancia.baseframe.cabecalho.segmento.widget, _, true, true) @@ -9730,13 +9698,13 @@ function gump:CriaCabecalho (baseframe, instancia) end end - baseframe.cabecalho.segmento = gump:NewButton (baseframe, nil, "DetailsSegmentButton"..instancia.meu_id, nil, 16, 16, segmento_button_click, nil, nil, [[Interface\AddOns\Details\images\segmentos_icone]]) + baseframe.cabecalho.segmento = gump:NewButton(baseframe, nil, "DetailsSegmentButton"..instancia.meu_id, nil, 16, 16, segmento_button_click, nil, nil, [[Interface\AddOns\Details\images\segmentos_icone]]) baseframe.cabecalho.segmento:SetFrameLevel(baseframe.UPFrame:GetFrameLevel()+1) baseframe.cabecalho.segmento.widget._instance = instancia baseframe.cabecalho.segmento:SetPoint("left", baseframe.cabecalho.modo_selecao, "right", 0, 0) --ativa bot�o do meio e direito - baseframe.cabecalho.segmento:SetClickFunction (segmento_button_click, nil, nil, "rightclick") + baseframe.cabecalho.segmento:SetClickFunction(segmento_button_click, nil, nil, "rightclick") baseframe.cabecalho.segmento:SetScript("OnEnter", segmentButton_OnEnter) baseframe.cabecalho.segmento:SetScript("OnLeave", segmentButton_OnLeave) @@ -9753,7 +9721,7 @@ function gump:CriaCabecalho (baseframe, instancia) local atributo_button_click = function() if (Details.instances_menu_click_to_open) then if (instancia.LastMenuOpened == "attributes" and GameCooltipFrame1:IsShown()) then - GameCooltip:ShowMe (false) + GameCooltip:ShowMe(false) instancia.LastMenuOpened = nil else atributo_on_enter (instancia.baseframe.cabecalho.atributo.widget, _, true, true) @@ -9762,7 +9730,7 @@ function gump:CriaCabecalho (baseframe, instancia) end end - baseframe.cabecalho.atributo = gump:NewButton (baseframe, nil, "DetailsAttributeButton"..instancia.meu_id, nil, 16, 16, atributo_button_click) + baseframe.cabecalho.atributo = gump:NewButton(baseframe, nil, "DetailsAttributeButton"..instancia.meu_id, nil, 16, 16, atributo_button_click) baseframe.cabecalho.atributo:SetFrameLevel(baseframe.UPFrame:GetFrameLevel()+1) baseframe.cabecalho.atributo.widget._instance = instancia baseframe.cabecalho.atributo:SetPoint("left", baseframe.cabecalho.segmento.widget, "right", 0, 0) @@ -9783,7 +9751,7 @@ function gump:CriaCabecalho (baseframe, instancia) instancia:Reportar ("INSTANCE" .. instancia.meu_id) GameCooltip2:Hide() end - baseframe.cabecalho.report = gump:NewButton (baseframe, nil, "DetailsReportButton"..instancia.meu_id, nil, 8, 16, report_func) + baseframe.cabecalho.report = gump:NewButton(baseframe, nil, "DetailsReportButton"..instancia.meu_id, nil, 8, 16, report_func) baseframe.cabecalho.report:SetFrameLevel(baseframe.UPFrame:GetFrameLevel()+1) baseframe.cabecalho.report.widget._instance = instancia baseframe.cabecalho.report:SetPoint("left", baseframe.cabecalho.atributo, "right", -6, 0) @@ -9807,7 +9775,7 @@ function gump:CriaCabecalho (baseframe, instancia) local reset_func = function() if (Details.instances_menu_click_to_open) then if (instancia.LastMenuOpened == "reset" and GameCooltipFrame1:IsShown()) then - GameCooltip:ShowMe (false) + GameCooltip:ShowMe(false) instancia.LastMenuOpened = nil else reset_button_onenter (instancia.baseframe.cabecalho.reset, _, true, true) diff --git a/frames/window_news.lua b/frames/window_news.lua index 5a15d285c..11b3c6e27 100644 --- a/frames/window_news.lua +++ b/frames/window_news.lua @@ -124,7 +124,7 @@ function Details:CreateOrOpenNewsWindow() frameUpper:SetVerticalScroll (self:GetValue()) end) - frameUpper:EnableMouseWheel (true) + frameUpper:EnableMouseWheel(true) frameUpper:SetScript("OnMouseWheel", function(self, delta) local current = slider:GetValue() if (IsShiftKeyDown() and (delta > 0)) then diff --git a/frames/window_options2_sections.lua b/frames/window_options2_sections.lua index 5cbb72087..fa7190325 100644 --- a/frames/window_options2_sections.lua +++ b/frames/window_options2_sections.lua @@ -754,7 +754,7 @@ do local buildSkinMenu = function() local skinOptions = {} - for skin_name, skin_table in pairs (_detalhes.skins) do + for skin_name, skin_table in pairs(_detalhes.skins) do local file = skin_table.file:gsub ([[Interface\AddOns\Details\images\skins\]], "") local desc = "Author: |cFFFFFFFF" .. skin_table.author .. "|r\nVersion: |cFFFFFFFF" .. skin_table.version .. "|r\nSite: |cFFFFFFFF" .. skin_table.site .. "|r\n\nDesc: |cFFFFFFFF" .. skin_table.desc .. "|r\n\nFile: |cFFFFFFFF" .. file .. ".tga|r" skinOptions [#skinOptions+1] = {value = skin_name, label = skin_name, onclick = onSelectSkin, icon = "Interface\\GossipFrame\\TabardGossipIcon", desc = desc} @@ -775,7 +775,7 @@ do name = skinName, } - for key, value in pairs (currentInstance) do + for key, value in pairs(currentInstance) do if (_detalhes.instance_defaults[key] ~= nil) then if (type(value) == "table") then savedObject[key] = Details.CopyTable(value) @@ -802,7 +802,7 @@ do instance:ChangeSkin(skin) --overwrite all instance parameters with saved ones - for key, value in pairs (skinObject) do + for key, value in pairs(skinObject) do if (key ~= "skin" and not _detalhes.instance_skin_ignored_values[key]) then if (type(value) == "table") then instance[key] = Details.CopyTable (value) @@ -937,7 +937,7 @@ do values = function() local loadtable = {} for index, _table in ipairs(_detalhes.savedStyles) do - tinsert (loadtable, {value = index, label = _table.name, onclick = function() loadSkin(currentInstance, _table) end, + tinsert(loadtable, {value = index, label = _table.name, onclick = function() loadSkin(currentInstance, _table) end, icon = "Interface\\GossipFrame\\TabardGossipIcon", iconcolor = {.7, .7, .5, 1}}) end return loadtable @@ -954,7 +954,7 @@ do values = function() local loadtable = {} for index, _table in ipairs(_detalhes.savedStyles) do - tinsert (loadtable, {value = index, label = _table.name, onclick = function(_, _, index) + tinsert(loadtable, {value = index, label = _table.name, onclick = function(_, _, index) table.remove (_detalhes.savedStyles, index) Details.options.SetCurrentInstanceAndRefresh(currentInstance) afterUpdate() @@ -976,7 +976,7 @@ do values = function() local loadtable = {} for index, _table in ipairs(_detalhes.savedStyles) do - tinsert (loadtable, {value = index, label = _table.name, onclick = function(_, _, index) + tinsert(loadtable, {value = index, label = _table.name, onclick = function(_, _, index) local compressedData = Details:CompressData(_detalhes.savedStyles[index], "print") if (compressedData) then _detalhes:ShowImportWindow(compressedData, nil, "Details! Export Skin") @@ -1148,7 +1148,7 @@ do local buildTextureMenu = function() local textures = SharedMedia:HashTable("statusbar") local texTable = {} - for name, texturePath in pairs (textures) do + for name, texturePath in pairs(textures) do texTable[#texTable+1] = {value = name, label = name, iconsize = texture_icon_size, statusbar = texturePath, onclick = onSelectTexture, icon = texture_icon, texcoord = texture_texcoord} end table.sort (texTable, function(t1, t2) return t1.label < t2.label end) @@ -1164,7 +1164,7 @@ do local buildTextureMenu2 = function() local textures2 = SharedMedia:HashTable ("statusbar") local texTable2 = {} - for name, texturePath in pairs (textures2) do + for name, texturePath in pairs(textures2) do texTable2[#texTable2+1] = {value = name, label = name, iconsize = texture_icon_size, statusbar = texturePath, onclick = onSelectTextureBackground, icon = texture_icon, texcoord = texture_texcoord} end table.sort (texTable2, function(t1, t2) return t1.label < t2.label end) @@ -1192,7 +1192,7 @@ do local buildTextureOverlayMenu = function() local textures2 = SharedMedia:HashTable("statusbar") local texTable2 = {} - for name, texturePath in pairs (textures2) do + for name, texturePath in pairs(textures2) do texTable2[#texTable2+1] = {value = name, label = name, iconsize = texture_icon_size, statusbar = texturePath, onclick = onSelectBarTextureOverlay, icon = texture_icon, texcoord = texture_texcoord} end table.sort(texTable2, function(t1, t2) return t1.label < t2.label end) @@ -1812,7 +1812,7 @@ do local buildFontMenu = function() local fontObjects = SharedMedia:HashTable("font") local fontTable = {} - for name, fontPath in pairs (fontObjects) do + for name, fontPath in pairs(fontObjects) do fontTable[#fontTable+1] = {value = name, label = name, icon = font_select_icon, texcoord = font_select_texcoord, onclick = onSelectFont, font = fontPath, descfont = name, desc = Loc ["STRING_MUSIC_DETAILS_ROBERTOCARLOS"]} end table.sort (fontTable, function(t1, t2) return t1.label < t2.label end) @@ -2196,7 +2196,7 @@ do local buildFontMenu = function() local fontObjects = SharedMedia:HashTable ("font") local fontTable = {} - for name, fontPath in pairs (fontObjects) do + for name, fontPath in pairs(fontObjects) do fontTable[#fontTable+1] = {value = name, label = name, icon = font_select_icon, texcoord = font_select_texcoord, onclick = onSelectFont, font = fontPath, descfont = name, desc = Loc ["STRING_MUSIC_DETAILS_ROBERTOCARLOS"]} end table.sort (fontTable, function(t1, t2) return t1.label < t2.label end) @@ -2211,7 +2211,7 @@ do local build_font_menu = function() local fonts = {} - for name, fontPath in pairs (SharedMedia:HashTable ("font")) do + for name, fontPath in pairs(SharedMedia:HashTable ("font")) do fonts [#fonts+1] = {value = name, label = name, icon = font_select_icon, texcoord = font_select_texcoord, onclick = on_select_attribute_font, font = fontPath, descfont = name, desc = "Our thoughts strayed constantly\nAnd without boundary\nThe ringing of the division bell had began."} end table.sort (fonts, function(t1, t2) return t1.label < t2.label end) @@ -2234,7 +2234,7 @@ do local buildTextureCustomTitleBar = function() local textures = SharedMedia:HashTable("statusbar") local texTable = {} - for name, texturePath in pairs (textures) do + for name, texturePath in pairs(textures) do texTable[#texTable+1] = {value = name, label = name, statusbar = texturePath, onclick = onSelectCustomTitleBarTexture} end table.sort(texTable, function(t1, t2) return t1.label < t2.label end) @@ -2751,7 +2751,7 @@ do local buildBackdropMenu = function() local backdropTable = {} - for name, backdropPath in pairs (SharedMedia:HashTable ("background")) do + for name, backdropPath in pairs(SharedMedia:HashTable ("background")) do backdropTable[#backdropTable+1] = {value = name, label = name, onclick = onBackdropSelect, icon = [[Interface\ITEMSOCKETINGFRAME\UI-EMPTYSOCKET]], iconsize = backdrop_icon_size, iconcolor = backdrop_icon_color} end return backdropTable @@ -3132,9 +3132,9 @@ do local center = instance.StatusBar ["center"].__name local right = instance.StatusBar ["right"].__name - _G[sectionFrame:GetName() .. "MicroDisplayLeftDropdown"].MyObject:Select (left) - _G[sectionFrame:GetName() .. "MicroDisplayCenterDropdown"].MyObject:Select (center) - _G[sectionFrame:GetName() .. "MicroDisplayRightDropdown"].MyObject:Select (right) + _G[sectionFrame:GetName() .. "MicroDisplayLeftDropdown"].MyObject:Select(left) + _G[sectionFrame:GetName() .. "MicroDisplayCenterDropdown"].MyObject:Select(center) + _G[sectionFrame:GetName() .. "MicroDisplayRightDropdown"].MyObject:Select(right) if (not instance.show_statusbar and instance.micro_displays_side == 2) then sectionFrame.MicroDisplayWarningLabel:Show() @@ -3273,7 +3273,7 @@ do sectionFrame.MicroDisplayRightDropdown.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_DROPDOWN_TOOLTIP"] - local hideLeftMicroFrameButton = DF:NewButton (sectionFrame.MicroDisplayLeftDropdown, _, "$parenthideLeftMicroFrameButton", "hideLeftMicroFrameButton", 22, 22, function(self, button) + local hideLeftMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayLeftDropdown, _, "$parenthideLeftMicroFrameButton", "hideLeftMicroFrameButton", 22, 22, function(self, button) if (currentInstance.StatusBar ["left"].options.isHidden) then _detalhes.StatusBar:SetPlugin (currentInstance, currentInstance.StatusBar ["left"].real_name, "left") else @@ -3298,7 +3298,7 @@ do self:GetNormalTexture():SetBlendMode("BLEND") end) - local HideCenterMicroFrameButton = DF:NewButton (sectionFrame.MicroDisplayCenterDropdown, _, "$parentHideCenterMicroFrameButton", "HideCenterMicroFrameButton", 22, 22, function(self) + local HideCenterMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayCenterDropdown, _, "$parentHideCenterMicroFrameButton", "HideCenterMicroFrameButton", 22, 22, function(self) if (currentInstance.StatusBar ["center"].options.isHidden) then _detalhes.StatusBar:SetPlugin (currentInstance, currentInstance.StatusBar ["center"].real_name, "center") else @@ -3323,7 +3323,7 @@ do self:GetNormalTexture():SetBlendMode("BLEND") end) - local HideRightMicroFrameButton = DF:NewButton (sectionFrame.MicroDisplayRightDropdown, _, "$parentHideRightMicroFrameButton", "HideRightMicroFrameButton", 20, 20, function(self) + local HideRightMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayRightDropdown, _, "$parentHideRightMicroFrameButton", "HideRightMicroFrameButton", 20, 20, function(self) if (currentInstance.StatusBar ["right"].options.isHidden) then _detalhes.StatusBar:SetPlugin (currentInstance, currentInstance.StatusBar ["right"].real_name, "right") else @@ -3347,7 +3347,7 @@ do self:GetNormalTexture():SetBlendMode("BLEND") end) - local configRightMicroFrameButton = DF:NewButton (sectionFrame.MicroDisplayRightDropdown, _, "$parentconfigRightMicroFrameButton", "configRightMicroFrameButton", 18, 18, function(self) + local configRightMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayRightDropdown, _, "$parentconfigRightMicroFrameButton", "configRightMicroFrameButton", 18, 18, function(self) currentInstance.StatusBar ["right"]:Setup() currentInstance.StatusBar ["right"]:Setup() end) @@ -3356,7 +3356,7 @@ do configRightMicroFrameButton:SetHighlightTexture([[Interface\Buttons\UI-OptionsButton]]) configRightMicroFrameButton.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_OPTION_TOOLTIP"] - local configCenterMicroFrameButton = DF:NewButton (sectionFrame.MicroDisplayCenterDropdown, _, "$parentconfigCenterMicroFrameButton", "configCenterMicroFrameButton", 18, 18, function(self) + local configCenterMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayCenterDropdown, _, "$parentconfigCenterMicroFrameButton", "configCenterMicroFrameButton", 18, 18, function(self) currentInstance.StatusBar ["center"]:Setup() currentInstance.StatusBar ["center"]:Setup() end) @@ -3365,7 +3365,7 @@ do configCenterMicroFrameButton:SetHighlightTexture([[Interface\Buttons\UI-OptionsButton]]) configCenterMicroFrameButton.tooltip = Loc ["STRING_OPTIONS_MICRODISPLAYS_OPTION_TOOLTIP"] - local configLeftMicroFrameButton = DF:NewButton (sectionFrame.MicroDisplayLeftDropdown, _, "$parentconfigLeftMicroFrameButton", "configLeftMicroFrameButton", 18, 18, function(self) + local configLeftMicroFrameButton = DF:NewButton(sectionFrame.MicroDisplayLeftDropdown, _, "$parentconfigLeftMicroFrameButton", "configLeftMicroFrameButton", 18, 18, function(self) currentInstance.StatusBar ["left"]:Setup() currentInstance.StatusBar ["left"]:Setup() end) @@ -3427,7 +3427,7 @@ do GameCooltip:Preset (2) GameCooltip:AddLine (desc) GameCooltip:SetType ("tooltip") - GameCooltip:SetOwner (self, "bottomleft", "topleft", 150, -2) + GameCooltip:SetOwner(self, "bottomleft", "topleft", 150, -2) GameCooltip:Show() end end @@ -3436,7 +3436,7 @@ do GameCooltip:Preset (2) GameCooltip:AddLine (self.hasDesc) GameCooltip:SetType ("tooltip") - GameCooltip:SetOwner (self, "bottomleft", "topleft", 150, -2) + GameCooltip:SetOwner(self, "bottomleft", "topleft", 150, -2) GameCooltip:Show() end end @@ -3508,7 +3508,7 @@ do local installedToolbarPlugins = {} local installedRaidPlugins = {} - for absName, pluginObject in pairs (allplugins_toolbar) do + for absName, pluginObject in pairs(allplugins_toolbar) do local bframe = CreateFrame("frame", "OptionsPluginToolbarBG", anchorFrame, "BackdropTemplate") bframe:SetSize(640, 20) @@ -3536,7 +3536,7 @@ do local plugin = _detalhes:GetPlugin (absName) DF:NewSwitch (bframe, _, "$parentToolbarSlider"..i, "toolbarPluginsSlider"..i, 60, 20, _, _, plugin_stable.enabled, nil, nil, nil, nil, options_switch_template) bframe ["toolbarPluginsSlider"..i].PluginName = absName - tinsert (anchorFrame.plugin_widgets, bframe ["toolbarPluginsSlider"..i]) + tinsert(anchorFrame.plugin_widgets, bframe ["toolbarPluginsSlider"..i]) bframe ["toolbarPluginsSlider"..i]:SetPoint("topleft", anchorFrame, "topleft", 415, y) bframe ["toolbarPluginsSlider"..i]:SetAsCheckBox() bframe ["toolbarPluginsSlider"..i].OnSwitch = function(self, _, value) @@ -3550,7 +3550,7 @@ do end if (pluginObject.OpenOptionsPanel) then - DF:NewButton (bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 120, 20, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], nil, options_button_template) + DF:NewButton(bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 120, 20, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], nil, options_button_template) bframe ["OptionsButton"..i]:SetPoint("topleft", anchorFrame, "topleft", 510, y-0) bframe ["OptionsButton"..i]:SetTextColor (button_color_rgb) bframe ["OptionsButton"..i]:SetIcon ([[Interface\Buttons\UI-OptionsButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 3) @@ -3643,7 +3643,7 @@ do local i = 1 local allplugins_raid = _detalhes.RaidTables.NameTable - for absName, pluginObject in pairs (allplugins_raid) do + for absName, pluginObject in pairs(allplugins_raid) do local bframe = CreateFrame("frame", "OptionsPluginRaidBG", anchorFrame, "BackdropTemplate") bframe:SetSize(640, 20) @@ -3670,7 +3670,7 @@ do local plugin_stable = _detalhes:GetPluginSavedTable (absName) local plugin = _detalhes:GetPlugin (absName) DF:NewSwitch (bframe, _, "$parentRaidSlider"..i, "raidPluginsSlider"..i, 60, 20, _, _, plugin_stable.enabled, nil, nil, nil, nil, options_switch_template) - tinsert (anchorFrame.plugin_widgets, bframe ["raidPluginsSlider"..i]) + tinsert(anchorFrame.plugin_widgets, bframe ["raidPluginsSlider"..i]) bframe ["raidPluginsSlider"..i].PluginName = absName bframe ["raidPluginsSlider"..i]:SetPoint("topleft", anchorFrame, "topleft", 415, y+1) bframe ["raidPluginsSlider"..i]:SetAsCheckBox() @@ -3681,7 +3681,7 @@ do for index, instancia in ipairs(_detalhes.tabela_instancias) do if (instancia.modo == 4) then -- 4 = raid if (instancia:IsEnabled()) then - _detalhes:TrocaTabela (instancia, 0, 1, 1, nil, 2) + _detalhes:TrocaTabela(instancia, 0, 1, 1, nil, 2) else instancia.modo = 2 -- group mode end @@ -3691,7 +3691,7 @@ do end if (pluginObject.OpenOptionsPanel) then - DF:NewButton (bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 86, 18, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], nil, options_button_template) + DF:NewButton(bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 86, 18, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], nil, options_button_template) bframe ["OptionsButton"..i]:SetPoint("topleft", anchorFrame, "topleft", 510, y-0) bframe ["OptionsButton"..i]:SetTextColor (button_color_rgb) bframe ["OptionsButton"..i]:SetIcon ([[Interface\Buttons\UI-OptionsButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 3) @@ -3781,7 +3781,7 @@ do local i = 1 local allplugins_solo = _detalhes.SoloTables.NameTable - for absName, pluginObject in pairs (allplugins_solo) do + for absName, pluginObject in pairs(allplugins_solo) do local bframe = CreateFrame("frame", "OptionsPluginSoloBG", anchorFrame,"BackdropTemplate") bframe:SetSize(640, 20) @@ -3808,7 +3808,7 @@ do local plugin_stable = _detalhes:GetPluginSavedTable (absName) local plugin = _detalhes:GetPlugin (absName) DF:NewSwitch (bframe, _, "$parentSoloSlider"..i, "soloPluginsSlider"..i, 60, 20, _, _, plugin_stable.enabled, nil, nil, nil, nil, options_switch_template) - tinsert (anchorFrame.plugin_widgets, bframe ["soloPluginsSlider"..i]) + tinsert(anchorFrame.plugin_widgets, bframe ["soloPluginsSlider"..i]) bframe ["soloPluginsSlider"..i].PluginName = absName bframe ["soloPluginsSlider"..i]:SetPoint("topleft", anchorFrame, "topleft", 415, y+1) bframe ["soloPluginsSlider"..i]:SetAsCheckBox() @@ -3818,14 +3818,14 @@ do if (not value) then for index, instancia in ipairs(_detalhes.tabela_instancias) do if (instancia.modo == 1 and instancia.baseframe) then -- 1 = solo - _detalhes:TrocaTabela (instancia, 0, 1, 1, nil, 2) + _detalhes:TrocaTabela(instancia, 0, 1, 1, nil, 2) end end end end if (pluginObject.OpenOptionsPanel) then - DF:NewButton (bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 86, 18, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], nil, options_button_template) + DF:NewButton(bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 86, 18, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"], nil, options_button_template) bframe ["OptionsButton"..i]:SetPoint("topleft", anchorFrame, "topleft", 510, y-0) bframe ["OptionsButton"..i]:SetTextColor (button_color_rgb) bframe ["OptionsButton"..i]:SetIcon ([[Interface\Buttons\UI-OptionsButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 3) @@ -4111,7 +4111,7 @@ do local buildTooltipFontOptions = function() local fonts = {} - for name, fontPath in pairs (SharedMedia:HashTable ("font")) do + for name, fontPath in pairs(SharedMedia:HashTable ("font")) do fonts [#fonts+1] = {value = name, icon = font_select_icon, texcoord = font_select_texcoord, label = name, onclick = on_select_tooltip_font, font = fontPath, descfont = name, desc = "Our thoughts strayed constantly\nAnd without boundary\nThe ringing of the division bell had began."} end @@ -4862,7 +4862,7 @@ do local f = CreateFrame("frame", "DetailsLoadWallpaperImage", UIParent, "BackdropTemplate") f:SetPoint("center", UIParent, "center") - f:SetFrameStrata ("FULLSCREEN") + f:SetFrameStrata("FULLSCREEN") f:SetSize(550, 170) f:EnableMouse (true) f:SetMovable (true) @@ -4887,7 +4887,7 @@ do DF:ApplyStandardBackdrop(f) DF:CreateTitleBar(f, "Load Your Image") --localize-me - tinsert (_G.UISpecialFrames, "DetailsLoadWallpaperImage") + tinsert(_G.UISpecialFrames, "DetailsLoadWallpaperImage") local t = f:CreateFontString (nil, "overlay", "GameFontNormal") t:SetText(Loc ["STRING_OPTIONS_WALLPAPER_LOAD_EXCLAMATION"]) @@ -4916,7 +4916,7 @@ do _detalhes:OpenOptionsWindow (instance) sectionFrame:UpdateWallpaperInfo() end - local okey = DF:NewButton (f, _, "$parentOkeyButton", nil, 105, 20, okey_func, nil, nil, nil, Loc ["STRING_OPTIONS_WALLPAPER_LOAD_OKEY"], 1, options_button_template) + local okey = DF:NewButton(f, _, "$parentOkeyButton", nil, 105, 20, okey_func, nil, nil, nil, Loc ["STRING_OPTIONS_WALLPAPER_LOAD_OKEY"], 1, options_button_template) okey:SetPoint("left", editbox.widget, "right", 2, 0) local throubleshoot_func = function() @@ -4926,7 +4926,7 @@ do _G.DetailsLoadWallpaperImage.t:SetText(Loc ["STRING_OPTIONS_WALLPAPER_LOAD_EXCLAMATION"]) end end - local throubleshoot = DF:NewButton (f, _, "$parentThroubleshootButton", nil, 105, 20, throubleshoot_func, nil, nil, nil, Loc ["STRING_OPTIONS_WALLPAPER_LOAD_TROUBLESHOOT"], 1, options_button_template) + local throubleshoot = DF:NewButton(f, _, "$parentThroubleshootButton", nil, 105, 20, throubleshoot_func, nil, nil, nil, Loc ["STRING_OPTIONS_WALLPAPER_LOAD_TROUBLESHOOT"], 1, options_button_template) throubleshoot:SetPoint("left", okey, "right", 2, 0) --throubleshoot:InstallCustomTexture() end @@ -5059,14 +5059,14 @@ do local icones = sub_atributo.icones for index, att_name in ipairs(sub_atributo.lista) do local texture, texcoord = unpack (icones [index]) - tinsert (t, {value = i, label = att_name, onclick = Current_Switch_Func, icon = texture, texcoord = texcoord}) + tinsert(t, {value = i, label = att_name, onclick = Current_Switch_Func, icon = texture, texcoord = texcoord}) sectionFrame.lastSwitchList [i] = {atributo, index, i} i = i + 1 end end for index, ptable in ipairs(_detalhes.RaidTables.Menu) do - tinsert (t, {value = i, label = ptable [1], onclick = Current_Switch_Func, icon = ptable [2]}) + tinsert(t, {value = i, label = ptable [1], onclick = Current_Switch_Func, icon = ptable [2]}) sectionFrame.lastSwitchList [i] = {"raid", ptable [4], i} i = i + 1 end @@ -5467,9 +5467,9 @@ do --[=[]] local spec1Table = {} local playerSpecs = DF.ClassSpecIds [select (2, UnitClass("player"))] - for specID, _ in pairs (playerSpecs) do + for specID, _ in pairs(playerSpecs) do local spec_id, specName, spec_description, spec_icon = GetSpecializationInfoByID(specID) - tinsert (spec1Table, { + tinsert(spec1Table, { type = "select", get = function() local specProfile = Details.profile_by_spec[specID] @@ -5477,7 +5477,7 @@ do end, values = function() local t = {} - for profileName in pairs (__profiles) do + for profileName in pairs(__profiles) do t[#t+1] = profileName end return t @@ -5566,7 +5566,7 @@ do --raid tools DF:ApplyStandardBackdrop(f) DF:CreateTitleBar(f, Loc ["STRING_OPTIONS_RT_IGNORE_TITLE"]) - f:SetFrameStrata ("FULLSCREEN") + f:SetFrameStrata("FULLSCREEN") f:EnableMouse() f:SetMovable (true) f:SetScript("OnMouseDown", function(self, button) @@ -5630,7 +5630,7 @@ do --raid tools L.switch:SetFixedParameter(1) L.switch:SetValue(false) - tinsert (f.labels, L) + tinsert(f.labels, L) return L end @@ -6304,14 +6304,14 @@ do local icon_button_func = function(texture) addframe.spellIconButton.icon.texture = texture end - local icon_button = DF:NewButton (addframe, nil, "$parentSpellIconButton", "spellIconButton", 20, 20, function() DF:IconPick (icon_button_func, true) end) + local icon_button = DF:NewButton(addframe, nil, "$parentSpellIconButton", "spellIconButton", 20, 20, function() DF:IconPick (icon_button_func, true) end) local icon_button_icon = DF:NewImage (icon_button, [[Interface\ICONS\TEMP]], 19, 19, "background", nil, "icon", "$parentSpellIcon") icon_button_icon:SetPoint(0, 0) icon_button:InstallCustomTexture() icon_button:SetPoint("left", spellicon, "right", 2, 0) --close button - local closebutton = DF:NewButton (addframe, nil, "$parentAddCloseButton", "addClosebutton", 120, 20, function() addframe:Hide() end, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_CLOSE"], nil, options_button_template) + local closebutton = DF:NewButton(addframe, nil, "$parentAddCloseButton", "addClosebutton", 120, 20, function() addframe:Hide() end, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_CLOSE"], nil, options_button_template) --confirm add spell local addspell = function() @@ -6344,7 +6344,7 @@ do addframe:Hide() end - local addspellbutton = DF:NewButton (addframe, nil, "$parentAddSpellButton", "addSpellbutton", 120, 20, addspell, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_ADD"], nil, options_button_template) + local addspellbutton = DF:NewButton(addframe, nil, "$parentAddSpellButton", "addSpellbutton", 120, 20, addspell, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_ADD"], nil, options_button_template) addspellbutton:SetIcon ([[Interface\Buttons\UI-CheckBox-Check]], 18, 18, nil, nil, nil, 4) closebutton:SetIcon ([[Interface\PetBattles\DeadPetIcon]], 14, 14, nil, nil, nil, 4) @@ -6360,7 +6360,7 @@ do local add = function() addframe:Show() end - local addbutton = DF:NewButton (sectionFrame, nil, "$parentAddButton", "addbutton", 120, 20, add, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_ADDSPELL"], nil, options_button_template) + local addbutton = DF:NewButton(sectionFrame, nil, "$parentAddButton", "addbutton", 120, 20, add, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_ADDSPELL"], nil, options_button_template) addbutton:SetPoint("bottomright", panel, "topright", -00, 1) addbutton:SetIcon ([[Interface\PaperDollInfoFrame\Character-Plus]], 12, 12, nil, nil, nil, 4) @@ -6439,13 +6439,13 @@ do big_code_editor:Hide() end - local accept_changes = DF:NewButton (big_code_editor, nil, "$parentAccept", "acceptButton", 120, 20, accept, nil, nil) + local accept_changes = DF:NewButton(big_code_editor, nil, "$parentAccept", "acceptButton", 120, 20, accept, nil, nil) accept_changes:SetPoint(0, 20) accept_changes:SetIcon([[Interface\Buttons\UI-CheckBox-Check]]) accept_changes:SetTemplate(options_button_template) accept_changes:SetText(Loc ["STRING_OPTIONS_CHART_SAVE"]) - local cancel_changes = DF:NewButton (big_code_editor, nil, "$parentCancel", "CancelButton", 120, 20, cancel, nil, nil) + local cancel_changes = DF:NewButton(big_code_editor, nil, "$parentCancel", "CancelButton", 120, 20, cancel, nil, nil) cancel_changes:SetPoint("left", accept_changes, "right", 2, 0) cancel_changes:SetIcon([[Interface\PetBattles\DeadPetIcon]]) cancel_changes:SetTemplate(options_button_template) @@ -6502,7 +6502,7 @@ do big_code_editor2:Hide() end - local close_export = DF:NewButton (big_code_editor2, nil, "$parentClose", "closeButton", 120, 20, close_export_box) + local close_export = DF:NewButton(big_code_editor2, nil, "$parentClose", "closeButton", 120, 20, close_export_box) close_export:SetPoint(10, 18) close_export:SetIcon ([[Interface\Buttons\UI-CheckBox-Check]]) close_export:SetText(Loc ["STRING_OPTIONS_CHART_CLOSE"]) @@ -6620,7 +6620,7 @@ do addframe.iconButton.iconTexture = texture addframe.iconButton:SetIcon(texture) end - local capture_icon_button = DF:NewButton (addframe, nil, "$parentIconButton", "iconButton", 20, 20, function() DF:IconPick (icon_button_func, true) end, nil, nil, nil, nil, nil, options_button_template) + local capture_icon_button = DF:NewButton(addframe, nil, "$parentIconButton", "iconButton", 20, 20, function() DF:IconPick (icon_button_func, true) end, nil, nil, nil, nil, nil, options_button_template) capture_icon_button:SetIcon([[Interface\ICONS\TEMP]]) capture_icon_button:SetTemplate(options_button_template) capture_icon_button:SetPoint("left", capture_icon, "right", 2, 0) @@ -6649,7 +6649,7 @@ do end end - local addbutton = DF:NewButton (sectionFrame, nil, "$parentAddButton", "addbutton", 120, 20, add, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_ADD"], nil, options_button_template) + local addbutton = DF:NewButton(sectionFrame, nil, "$parentAddButton", "addbutton", 120, 20, add, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_ADD"], nil, options_button_template) addbutton:SetPoint("bottomright", panel, "topright", -30, 0) addbutton:SetIcon ([[Interface\PaperDollInfoFrame\Character-Plus]], 12, 12, nil, nil, nil, 4) @@ -6696,7 +6696,7 @@ do end end - local accept_import = DF:NewButton (importframe, nil, "$parentAccept", "acceptButton", 120, 20, doimport) + local accept_import = DF:NewButton(importframe, nil, "$parentAccept", "acceptButton", 120, 20, doimport) accept_import:SetIcon ([[Interface\Buttons\UI-CheckBox-Check]]) accept_import:SetPoint(10, 18) accept_import:SetText(Loc ["STRING_OPTIONS_CHART_IMPORT"]) @@ -6707,7 +6707,7 @@ do importframe:Hide() end - local cancel_changes = DF:NewButton (importframe, nil, "$parentCancel", "CancelButton", 120, 20, cancelimport) + local cancel_changes = DF:NewButton(importframe, nil, "$parentCancel", "CancelButton", 120, 20, cancelimport) cancel_changes:SetIcon ([[Interface\PetBattles\DeadPetIcon]]) cancel_changes:SetText(Loc ["STRING_OPTIONS_CHART_CANCEL"]) cancel_changes:SetPoint(132, 18) @@ -6727,12 +6727,12 @@ do end end - local importbutton = DF:NewButton (sectionFrame, nil, "$parentImportButton", "importbutton", 120, 20, import, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_IMPORT"], nil, options_button_template) + local importbutton = DF:NewButton(sectionFrame, nil, "$parentImportButton", "importbutton", 120, 20, import, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_IMPORT"], nil, options_button_template) importbutton:SetPoint("right", addbutton, "left", -4, 0) importbutton:SetIcon ([[Interface\Buttons\UI-GuildButton-PublicNote-Up]], 14, 14, nil, nil, nil, 4) --close button - local closebutton = DF:NewButton (addframe, nil, "$parentAddCloseButton", "addClosebutton", 120, 20, function() addframe:Hide() end, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_CLOSE"], nil, options_button_template) + local closebutton = DF:NewButton(addframe, nil, "$parentAddCloseButton", "addClosebutton", 120, 20, function() addframe:Hide() end, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_CLOSE"], nil, options_button_template) --closebutton:InstallCustomTexture() --confirm add capture @@ -6776,7 +6776,7 @@ do end - local addcapturebutton = DF:NewButton (addframe, nil, "$parentAddCaptureButton", "addCapturebutton", 120, 21, addcapture, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_ADD2"], nil, options_button_template) + local addcapturebutton = DF:NewButton(addframe, nil, "$parentAddCaptureButton", "addCapturebutton", 120, 21, addcapture, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_ADD2"], nil, options_button_template) --anchors local start = 25 diff --git a/frames/window_plater.lua b/frames/window_plater.lua index 0518a2943..e03e2cb22 100644 --- a/frames/window_plater.lua +++ b/frames/window_plater.lua @@ -45,7 +45,7 @@ function Details.OpenPlaterIntegrationWindow() local build_anchor_side_table = function(member) local t = {} for i = 1, 13 do - tinsert (t, { + tinsert(t, { label = anchor_names[i], value = i, onclick = function(_, _, value) diff --git a/frames/window_playerbreakdown.lua b/frames/window_playerbreakdown.lua index 38ee7995d..ffd597aa8 100644 --- a/frames/window_playerbreakdown.lua +++ b/frames/window_playerbreakdown.lua @@ -1015,7 +1015,7 @@ function _detalhes:ApplyPDWSkin (skin_name) --hide extra frames local window = DetailsPlayerDetailsWindow if (window.extra_frames) then - for framename, frame in pairs (window.extra_frames) do + for framename, frame in pairs(window.extra_frames) do frame:Hide() end end @@ -1610,13 +1610,13 @@ function gump:CriaJanelaInfo() local este_gump = info este_gump.Loaded = true - este_gump:SetFrameStrata ("HIGH") + este_gump:SetFrameStrata("HIGH") este_gump:SetToplevel (true) este_gump.extra_frames = {} --fehcar com o esc - tinsert (UISpecialFrames, este_gump:GetName()) + tinsert(UISpecialFrames, este_gump:GetName()) --propriedades da janela este_gump:SetPoint("CENTER", UIParent) @@ -1631,7 +1631,7 @@ function gump:CriaJanelaInfo() este_gump.SummaryWindowWidgets = CreateFrame("frame", "DetailsPlayerDetailsWindowSummaryWidgets", este_gump, "BackdropTemplate") local SWW = este_gump.SummaryWindowWidgets SWW:SetAllPoints() - tinsert (SummaryWidgets, SWW) + tinsert(SummaryWidgets, SWW) local scaleBar = Details.gump:CreateScaleBar (este_gump, Details.player_details_window) este_gump:SetScale(Details.player_details_window.scale) @@ -2250,7 +2250,7 @@ function gump:CriaJanelaInfo() if (self.spellid) then --self:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 512, edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", edgeSize = 8}) self:SetBackdropColor(.5, .5, .5, .5) - GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT") + GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") _detalhes:GameTooltipSetSpellByID (self.spellid) GameTooltip:Show() end @@ -2389,7 +2389,7 @@ function gump:CriaJanelaInfo() last_total_dodge = last_actor.avoidance.overall.DODGE / last_combat:GetCombatTime() end local ps, diff = getpercent (totaldodge, last_total_dodge, elapsed_time, true) - tab.dodgepersecond:SetText( string.format ("%.2f", ps) .. " (" .. diff .. ")") + tab.dodgepersecond:SetText( string.format("%.2f", ps) .. " (" .. diff .. ")") --parry local totalparry = playerdamage.avoidance.overall.PARRY @@ -2400,7 +2400,7 @@ function gump:CriaJanelaInfo() last_total_parry = last_actor.avoidance.overall.PARRY / last_combat:GetCombatTime() end local ps, diff = getpercent (totalparry, last_total_parry, elapsed_time, true) - tab.parrypersecond:SetText(string.format ("%.2f", ps) .. " (" .. diff .. ")") + tab.parrypersecond:SetText(string.format("%.2f", ps) .. " (" .. diff .. ")") --block local totalblock = playerdamage.avoidance.overall.BLOCKED_HITS @@ -2411,7 +2411,7 @@ function gump:CriaJanelaInfo() last_total_block = last_actor.avoidance.overall.BLOCKED_HITS / last_combat:GetCombatTime() end local ps, diff = getpercent (totalblock, last_total_block, elapsed_time, true) - tab.blockpersecond:SetText(string.format ("%.2f", ps) .. " (" .. diff .. ")") + tab.blockpersecond:SetText(string.format("%.2f", ps) .. " (" .. diff .. ")") tab.blockeddamage_amt:SetText(_detalhes:ToK2 (playerdamage.avoidance.overall.BLOCKED_AMT)) @@ -2480,7 +2480,7 @@ function gump:CriaJanelaInfo() local heal_from = actor_heal.healing_from local myReceivedHeal = {} - for actorName, _ in pairs (heal_from) do + for actorName, _ in pairs(heal_from) do local thisActor = combat (2, actorName) local targets = thisActor.targets --targets is a container with target classes local amount = targets [player.nome] or 0 @@ -2548,7 +2548,7 @@ function gump:CriaJanelaInfo() local cooldowns_usados = {} - for _spellid, _tabela in pairs (minha_tabela) do + for _spellid, _tabela in pairs(minha_tabela) do cooldowns_usados [#cooldowns_usados+1] = {_spellid, _tabela.counter} end @@ -2587,7 +2587,7 @@ function gump:CriaJanelaInfo() local cooldownInfo = DetailsFramework.CooldownsInfo --see cooldowns that other players used in this actor - for playerName, _ in pairs (combat.raid_roster) do + for playerName, _ in pairs(combat.raid_roster) do if (playerName ~= player.nome) then local miscPlayer = combat (4, playerName) if (miscPlayer) then @@ -2596,7 +2596,7 @@ function gump:CriaJanelaInfo() for spellID, spellTable in cooldowns:ListActors() do local targets = spellTable.targets if (targets) then - for targetName, amountCasted in pairs (targets) do + for targetName, amountCasted in pairs(targets) do if (targetName == player.nome) then local spellName, _, spellIcon = _GetSpellInfo(spellID) local label1, label2, icon1, framebg = unpack (tab ["spell" .. index_used]) @@ -2701,7 +2701,7 @@ function gump:CriaJanelaInfo() } local line_onenter = function(self) - GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT") + GameTooltip:SetOwner(self, "ANCHOR_TOPRIGHT") _detalhes:GameTooltipSetSpellByID (self.spellID) GameTooltip:Show() self:SetBackdropColor(1, 1, 1, .2) @@ -2799,7 +2799,7 @@ function gump:CriaJanelaInfo() line.Refresh:SetText(aura [5]) --if (haveWA) then - -- line.WaButton:SetClickFunction (wa_button, aura.spellID, line.AuraType) + -- line.WaButton:SetClickFunction(wa_button, aura.spellID, line.AuraType) --else -- line.WaButton:Disable() --end @@ -2820,7 +2820,7 @@ function gump:CriaJanelaInfo() f:SetSize(40, 20) f:SetPoint("center", anchorWidget, "center") f:SetScript("OnEnter", function() - GameTooltip:SetOwner (f, "ANCHOR_TOPRIGHT") + GameTooltip:SetOwner(f, "ANCHOR_TOPRIGHT") GameTooltip:AddLine (desc) GameTooltip:Show() end) @@ -2897,9 +2897,9 @@ function gump:CriaJanelaInfo() do --buffs local newAuraTable = {} if (miscActor and miscActor.buff_uptime_spells) then - for spellID, spellObject in pairs (miscActor.buff_uptime_spells._ActorTable) do + for spellID, spellObject in pairs(miscActor.buff_uptime_spells._ActorTable) do local spellName, _, spellIcon = GetSpellInfo(spellID) - tinsert (newAuraTable, {spellIcon, spellName, spellObject.uptime, spellObject.appliedamt, spellObject.refreshamt, spellObject.uptime/combatTime*100, spellID = spellID}) + tinsert(newAuraTable, {spellIcon, spellName, spellObject.uptime, spellObject.appliedamt, spellObject.refreshamt, spellObject.uptime/combatTime*100, spellID = spellID}) end end table.sort (newAuraTable, _detalhes.Sort3) @@ -2910,9 +2910,9 @@ function gump:CriaJanelaInfo() do --debuffs local newAuraTable = {} if (miscActor and miscActor.debuff_uptime_spells) then - for spellID, spellObject in pairs (miscActor.debuff_uptime_spells._ActorTable) do + for spellID, spellObject in pairs(miscActor.debuff_uptime_spells._ActorTable) do local spellName, _, spellIcon = GetSpellInfo(spellID) - tinsert (newAuraTable, {spellIcon, spellName, spellObject.uptime, spellObject.appliedamt, spellObject.refreshamt, spellObject.uptime/combatTime*100, spellID = spellID}) + tinsert(newAuraTable, {spellIcon, spellName, spellObject.uptime, spellObject.appliedamt, spellObject.refreshamt, spellObject.uptime/combatTime*100, spellID = spellID}) end end table.sort (newAuraTable, _detalhes.Sort3) @@ -4455,7 +4455,7 @@ function gump:CriaJanelaInfo() bar.righttext2:SetJustifyH("right") bar.righttext2:SetTextColor (1, 1, 1, 1) - tinsert (parent.bars, {spellicon, bar, {0, 0, 0}}) + tinsert(parent.bars, {spellicon, bar, {0, 0, 0}}) end local create_tooltip = function(name) @@ -4467,7 +4467,7 @@ function gump:CriaJanelaInfo() tooltip:SetBackdropColor(0, 0, 0, 1) tooltip:SetBackdropBorderColor(0, 0, 0, 1) tooltip:SetSize(275, 77) - tooltip:SetFrameStrata ("tooltip") + tooltip:SetFrameStrata("tooltip") local y = -3 local x_start = 2 @@ -4569,7 +4569,7 @@ function gump:CriaJanelaInfo() tooltip:SetBackdropColor(0, 0, 0, 1) tooltip:SetBackdropBorderColor(0, 0, 0, 1) tooltip:SetSize(175, 67) - tooltip:SetFrameStrata ("tooltip") + tooltip:SetFrameStrata("tooltip") tooltip.bars = {} _detalhes.gump:CreateBorder (tooltip) @@ -4661,7 +4661,7 @@ function gump:CriaJanelaInfo() bar.bg = bg_line1 local object = {spellicon, bar} - tinsert (tooltip.bars, object) + tinsert(tooltip.bars, object) return object end @@ -4903,14 +4903,14 @@ function gump:CriaJanelaInfo() local match_percentage = same_spells / max (my_spells_total, 0.000001) * 100 if (match_percentage > 30) then - tinsert (tabOBject.players, actor) + tinsert(tabOBject.players, actor) end end end if (#tabOBject.players > 0) then --tutorial flash - local blink = _detalhes:GetTutorialCVar ("DETAILS_INFO_TUTORIAL2") or 0 + local blink = _detalhes:GetTutorialCVar("DETAILS_INFO_TUTORIAL2") or 0 if (type(blink) == "number" and blink < 10) then if (not tabOBject.FlashAnimation) then @@ -4966,7 +4966,7 @@ function gump:CriaJanelaInfo() --test if can show the tutorial for the comparison tab if (tab.tabname == "Compare") then --_detalhes:SetTutorialCVar ("DETAILS_INFO_TUTORIAL1", false) - if (not _detalhes:GetTutorialCVar ("DETAILS_INFO_TUTORIAL1")) then + if (not _detalhes:GetTutorialCVar("DETAILS_INFO_TUTORIAL1")) then _detalhes:SetTutorialCVar ("DETAILS_INFO_TUTORIAL1", true) local alert = CreateFrame("frame", "DetailsInfoPopUp1", info, "DetailsHelpBoxTemplate") @@ -5050,7 +5050,7 @@ function _detalhes:CreatePlayerDetailsTab (tabname, localized_name, condition, f newTabButton:SetTemplate ("DETAILS_TAB_BUTTONSELECTED_TEMPLATE") end newTabButton:SetText(localized_name) - newTabButton:SetFrameStrata ("HIGH") + newTabButton:SetFrameStrata("HIGH") newTabButton:SetFrameLevel (info:GetFrameLevel()+1) newTabButton:Hide() @@ -5063,7 +5063,7 @@ function _detalhes:CreatePlayerDetailsTab (tabname, localized_name, condition, f newTabButton.frame = CreateFrame("frame", "DetailsPDWTabFrame" .. tabname, UIParent,"BackdropTemplate") newTabButton.frame:SetParent(info) - newTabButton.frame:SetFrameStrata ("HIGH") + newTabButton.frame:SetFrameStrata("HIGH") newTabButton.frame:SetFrameLevel (info:GetFrameLevel()+5) newTabButton.frame:EnableMouse (true) @@ -5401,7 +5401,7 @@ local row_on_enter = function(self) self.mouse_over = true - for index, block in pairs (_detalhes.playerDetailWindow.grupos_detalhes) do + for index, block in pairs(_detalhes.playerDetailWindow.grupos_detalhes) do detalhe_infobg_onleave (block.bg) end @@ -5416,7 +5416,7 @@ local row_on_enter = function(self) if (self.isAlvo) then --monta o tooltip do alvo --talvez devesse escurecer a janela no fundo... pois o tooltip � transparente e pode confundir - GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT") + GameTooltip:SetOwner(self, "ANCHOR_TOPRIGHT") if (self.spellid == "enemies") then --damage taken enemies if (not self.minha_tabela or not self.minha_tabela:MontaTooltipDamageTaken (self, self._index, info.instancia)) then -- > poderia ser aprimerado para uma tailcall @@ -5435,14 +5435,14 @@ local row_on_enter = function(self) if (IsShiftKeyDown()) then if (type(self.show) == "number") then - GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT") + GameTooltip:SetOwner(self, "ANCHOR_TOPRIGHT") GameTooltip:AddLine (Loc ["ABILITY_ID"] .. ": " .. self.show) GameTooltip:Show() end end if (self.show == 98021) then - GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT") + GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") GameTooltip:AddLine (Loc ["STRING_SPIRIT_LINK_TOTEM_DESC"]) GameTooltip:Show() end @@ -5644,7 +5644,7 @@ local miniframe_func_on_enter = function(self) if (barra.show and type (barra.show) == "number") then local spellname = _GetSpellInfo(barra.show) if (spellname) then - GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT") + GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") _detalhes:GameTooltipSetSpellByID (barra.show) GameTooltip:Show() end @@ -5697,7 +5697,7 @@ local target_on_enter = function(self) local spellname = _GetSpellInfo(barra.show) - GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT") + GameTooltip:SetOwner(self, "ANCHOR_TOPRIGHT") GameTooltip:AddLine (barra.index .. ". " .. spellname) GameTooltip:AddLine (info.target_text) GameTooltip:AddLine (" ") @@ -5765,7 +5765,7 @@ local target_on_enter = function(self) GameTooltip:Show() else - GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT") + GameTooltip:SetOwner(self, "ANCHOR_TOPRIGHT") GameTooltip:AddLine (barra.index .. ". " .. barra.show) GameTooltip:AddLine (info.target_text) GameTooltip:AddLine (Loc ["STRING_NO_TARGET"], 1, 1, 1) @@ -5773,7 +5773,7 @@ local target_on_enter = function(self) GameTooltip:Show() end else - GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT") + GameTooltip:SetOwner(self, "ANCHOR_TOPRIGHT") GameTooltip:AddLine (barra.index .. ". " .. barra.show) GameTooltip:AddLine (info.target_text) GameTooltip:AddLine (Loc ["STRING_NO_TARGET"], 1, 1, 1) diff --git a/frames/window_profiler.lua b/frames/window_profiler.lua index 42dfc307f..b57b13a0e 100644 --- a/frames/window_profiler.lua +++ b/frames/window_profiler.lua @@ -17,7 +17,7 @@ function Details:OpenProfiler() else --check is this is the first run of the addon (after being installed) local amount = 0 - for name, profile in pairs (_detalhes_global.__profiles) do + for name, profile in pairs(_detalhes_global.__profiles) do amount = amount + 1 end if (amount == 1) then @@ -80,7 +80,7 @@ function Details:OpenProfiler() end f:Hide() end - local confirm = Details.gump:NewButton (f, f, "DetailsProfilerProfileConfirmButton", "button", 150, 20, confirm_func, nil, nil, nil, "Okey!") + local confirm = Details.gump:NewButton(f, f, "DetailsProfilerProfileConfirmButton", "button", 150, 20, confirm_func, nil, nil, nil, "Okey!") confirm:SetPoint(50, -250) confirm:InstallCustomTexture() end \ No newline at end of file diff --git a/frames/window_report.lua b/frames/window_report.lua index b4e896cbb..68875081d 100644 --- a/frames/window_report.lua +++ b/frames/window_report.lua @@ -106,7 +106,7 @@ local _ end if (Details.janela_report.ativa) then - Details.janela_report:Flash (0.2, 0.2, 0.4, true, 0, 0, "NONE") + Details.janela_report:Flash(0.2, 0.2, 0.4, true, 0, 0, "NONE") end Details.janela_report.ativa = true @@ -206,7 +206,7 @@ local _ end if (Details.janela_report.ativa) then - Details.janela_report:Flash (0.2, 0.2, 0.4, true, 0, 0, "NONE") + Details.janela_report:Flash(0.2, 0.2, 0.4, true, 0, 0, "NONE") end Details.janela_report.ativa = true diff --git a/frames/window_rowtexteditor.lua b/frames/window_rowtexteditor.lua index e59404007..111f83e78 100644 --- a/frames/window_rowtexteditor.lua +++ b/frames/window_rowtexteditor.lua @@ -12,7 +12,7 @@ local scrollWidth = 825 local panel = Details:CreateWelcomePanel ("DetailsWindowOptionsBarTextEditor", nil, windowWidth, 600, true) panel:SetPoint("center", UIParent, "center") panel:Hide() -panel:SetFrameStrata ("FULLSCREEN") +panel:SetFrameStrata("FULLSCREEN") DF:ApplyStandardBackdrop (panel) DF:CreateTitleBar (panel, "Details! Custom Line Text Editor") @@ -39,9 +39,9 @@ DF:ApplyStandardBackdrop (textentry) DF:SetFontSize (textentry.editbox, 14) DF:ReskinSlider(textentry.scroll) -local arg1_button = DF:NewButton (panel, nil, "$parentButton1", nil, 80, 20, function() textentry.editbox:Insert ("{data1}") end, nil, nil, nil, string.format (Loc ["STRING_OPTIONS_TEXTEDITOR_DATA"], "1"), 1) -local arg2_button = DF:NewButton (panel, nil, "$parentButton2", nil, 80, 20, function() textentry.editbox:Insert ("{data2}") end, nil, nil, nil, string.format (Loc ["STRING_OPTIONS_TEXTEDITOR_DATA"], "2"), 1) -local arg3_button = DF:NewButton (panel, nil, "$parentButton3", nil, 80, 20, function() textentry.editbox:Insert ("{data3}") end, nil, nil, nil, string.format (Loc ["STRING_OPTIONS_TEXTEDITOR_DATA"], "3"), 1) +local arg1_button = DF:NewButton(panel, nil, "$parentButton1", nil, 80, 20, function() textentry.editbox:Insert ("{data1}") end, nil, nil, nil, string.format(Loc ["STRING_OPTIONS_TEXTEDITOR_DATA"], "1"), 1) +local arg2_button = DF:NewButton(panel, nil, "$parentButton2", nil, 80, 20, function() textentry.editbox:Insert ("{data2}") end, nil, nil, nil, string.format(Loc ["STRING_OPTIONS_TEXTEDITOR_DATA"], "2"), 1) +local arg3_button = DF:NewButton(panel, nil, "$parentButton3", nil, 80, 20, function() textentry.editbox:Insert ("{data3}") end, nil, nil, nil, string.format(Loc ["STRING_OPTIONS_TEXTEDITOR_DATA"], "3"), 1) arg1_button:SetPoint("topright", panel, "topright", -12, y) arg2_button:SetPoint("topright", panel, "topright", -12, y - (20*1)) arg3_button:SetPoint("topright", panel, "topright", -12, y - (20*2)) @@ -162,7 +162,7 @@ local color_func = function(_, r, g, b, a) ColorSelection ( textentry.editbox, "|c" .. hex) end -local func_button = DF:NewButton (panel, nil, "$parentButton4", nil, 80, 20, function() textentry.editbox:Insert ("{func local player, combat = ...; return 0;}") end, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_FUNC"], 1) +local func_button = DF:NewButton(panel, nil, "$parentButton4", nil, 80, 20, function() textentry.editbox:Insert ("{func local player, combat = ...; return 0;}") end, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_FUNC"], 1) local color_button = DF:NewColorPickButton (panel, "$parentButton5", nil, color_func) color_button:SetSize(80, 20) color_button:SetTemplate (buttonTemplate) @@ -178,21 +178,21 @@ local done = function() panel:Hide() end -local apply_button = DF:NewButton (panel, nil, "$parentApply", nil, 80, 20, function() panel.callback(panel.editbox:GetText()) end, nil, nil, nil, "Apply", 1) --localize-me +local apply_button = DF:NewButton(panel, nil, "$parentApply", nil, 80, 20, function() panel.callback(panel.editbox:GetText()) end, nil, nil, nil, "Apply", 1) --localize-me apply_button:SetTemplate (buttonTemplate) apply_button:SetPoint("topright", panel, "topright", -14, -128) -local ok_button = DF:NewButton (panel, nil, "$parentButtonOk", nil, 80, 20, done, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_DONE"], 1) +local ok_button = DF:NewButton(panel, nil, "$parentButtonOk", nil, 80, 20, done, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_DONE"], 1) ok_button.tooltip = Loc ["STRING_OPTIONS_TEXTEDITOR_DONE_TOOLTIP"] ok_button:SetTemplate (buttonTemplate) ok_button:SetPoint("topright", panel, "topright", -14, -194) -local reset_button = DF:NewButton (panel, nil, "$parentDefaultOk", nil, 80, 20, function() textentry.editbox:SetText(panel.default); panel.callback(panel.editbox:GetText()) end, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_RESET"], 1) +local reset_button = DF:NewButton(panel, nil, "$parentDefaultOk", nil, 80, 20, function() textentry.editbox:SetText(panel.default); panel.callback(panel.editbox:GetText()) end, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_RESET"], 1) reset_button.tooltip = Loc ["STRING_OPTIONS_TEXTEDITOR_RESET_TOOLTIP"] reset_button:SetTemplate (buttonTemplate) reset_button:SetPoint("topright", panel, "topright", -14, -150) -local cancel_button = DF:NewButton (panel, nil, "$parentDefaultCancel", nil, 80, 20, function() textentry.editbox:SetText(panel.default_text); done(); end, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_CANCEL"], 1) +local cancel_button = DF:NewButton(panel, nil, "$parentDefaultCancel", nil, 80, 20, function() textentry.editbox:SetText(panel.default_text); done(); end, nil, nil, nil, Loc ["STRING_OPTIONS_TEXTEDITOR_CANCEL"], 1) cancel_button.tooltip = Loc ["STRING_OPTIONS_TEXTEDITOR_CANCEL_TOOLTIP"] cancel_button:SetTemplate (buttonTemplate) cancel_button:SetPoint("topright", panel, "topright", -14, -172) \ No newline at end of file diff --git a/frames/window_runcode.lua b/frames/window_runcode.lua index 5094c7bab..3ee051de7 100644 --- a/frames/window_runcode.lua +++ b/frames/window_runcode.lua @@ -135,7 +135,7 @@ function Details.OpenRunCodeWindow() Details:Msg("Code saved!") code_editor:ClearFocus() else - errortext_frame:Flash (0.2, 0.2, 0.4, true, nil, nil, "NONE") + errortext_frame:Flash(0.2, 0.2, 0.4, true, nil, nil, "NONE") Details:Msg("Can't save the code: it has errors.") end end @@ -167,7 +167,7 @@ function Details.OpenRunCodeWindow() DF:SetEnvironment(func) DF:QuickDispatch (func) else - errortext_frame:Flash (0.2, 0.2, 0.4, true, nil, nil, "NONE") + errortext_frame:Flash(0.2, 0.2, 0.4, true, nil, nil, "NONE") end end @@ -178,7 +178,7 @@ function Details.OpenRunCodeWindow() end DetailsPluginContainerWindow.OpenPlugin (DetailsRunCodePanel) - DetailsRunCodePanel.CodeTypeDropdown:Select (1, true) + DetailsRunCodePanel.CodeTypeDropdown:Select(1, true) --show the initialization code when showing up this window DetailsRunCodePanel.EditingCode = Details.RunCodeTypes [1].Value diff --git a/frames/window_scrolldamage.lua b/frames/window_scrolldamage.lua index a15d5c2fa..9539bbb99 100644 --- a/frames/window_scrolldamage.lua +++ b/frames/window_scrolldamage.lua @@ -220,7 +220,7 @@ function Details:ScrollDamage() elseif (token == "SWING_DAMAGE") then -- amount, overkill, school, resisted, blocked, absorbed, critical, glacing, crushing, isoffhand = spellID, spellName, spellType, amount, overKill, school, resisted, blocked, absorbed, isCritical - -- tinsert (DetailsScrollDamage.Data, 1, {timew, token, hidding, sourceSerial, sourceName, sourceFlag, sourceFlag2, targetSerial, targetName, targetFlag, targetFlag2, spellID, spellName, spellType, amount, overKill, school, resisted, blocked, absorbed, isCritical}) + -- tinsert(DetailsScrollDamage.Data, 1, {timew, token, hidding, sourceSerial, sourceName, sourceFlag, sourceFlag2, targetSerial, targetName, targetFlag, targetFlag2, spellID, spellName, spellType, amount, overKill, school, resisted, blocked, absorbed, isCritical}) -- damageScroll:RefreshScroll() end end diff --git a/frames/window_statistics.lua b/frames/window_statistics.lua index d08378035..7afe9e262 100644 --- a/frames/window_statistics.lua +++ b/frames/window_statistics.lua @@ -35,13 +35,13 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild local f = DetailsRaidHistoryWindow or CreateFrame("frame", "DetailsRaidHistoryWindow", UIParent,"BackdropTemplate") --, "ButtonFrameTemplate" f:SetPoint("center", UIParent, "center") - f:SetFrameStrata ("HIGH") + f:SetFrameStrata("HIGH") f:SetToplevel (true) f:SetMovable (true) f:SetWidth(850) f:SetHeight(500) - tinsert (UISpecialFrames, "DetailsRaidHistoryWindow") + tinsert(UISpecialFrames, "DetailsRaidHistoryWindow") function f.OpenDB() local db = Details.storage:OpenRaidStorage() @@ -80,10 +80,10 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild local titlebar = DF:CreateTitleBar(f, "Details! " .. Loc ["STRING_STATISTICS"]) - if (not Details:GetTutorialCVar ("HISTORYPANEL_TUTORIAL")) then + if (not Details:GetTutorialCVar("HISTORYPANEL_TUTORIAL")) then local tutorialFrame = CreateFrame("frame", "$parentTutorialFrame",f,"BackdropTemplate") tutorialFrame:SetPoint("center", f, "center") - tutorialFrame:SetFrameStrata ("DIALOG") + tutorialFrame:SetFrameStrata("DIALOG") tutorialFrame:SetSize(400, 300) tutorialFrame:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}, edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize=1}) @@ -130,7 +130,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild local selectGuildRank = function() f.HistoryCheckBox:SetValue(false) f.GuildRankCheckBox:SetValue(true) - _G.DetailsRaidHistoryWindow.select_player:Select (1, true) + _G.DetailsRaidHistoryWindow.select_player:Select(1, true) f.select_player2:Hide() f.select_player2_label:Hide() f.Mode = 2 @@ -276,7 +276,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild playerName = playerName:gsub ("%|c%x%x%x%x%x%x%x%x", "") playerName = playerName:gsub ("%|r", "") playerName = playerName:gsub (".*%s", "") - tinsert (result, {playerName, f.LatestResourceTable[i][2]}) + tinsert(result, {playerName, f.LatestResourceTable[i][2]}) else break end @@ -451,9 +451,9 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild for encounterIndex, encounter in ipairs(encounterTable) do if (encounter.guild == guild) then local roleTable = encounter [role] - for playerName, _ in pairs (roleTable) do + for playerName, _ in pairs(roleTable) do if (not alreadyListed [playerName]) then - tinsert (t, {value = playerName, label = playerName, icon = icon, onclick = onPlayer2Select}) + tinsert(t, {value = playerName, label = playerName, icon = icon, onclick = onPlayer2Select}) alreadyListed [playerName] = true end end @@ -493,7 +493,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild if (type(difficulty) == "number") then if (difficulty == 14) then --don't show normal encounters - --tinsert (difficultyList, {value = 14, label = "Normal", icon = icon, onclick = on_diff_select}) + --tinsert(difficultyList, {value = 14, label = "Normal", icon = icon, onclick = on_diff_select}) --print ("has normal encounter") elseif (difficulty == 15) then @@ -505,7 +505,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild end if (not alreadyHave) then - tinsert (difficultyList, 1, {value = 15, label = "Heroic", icon = icon, onclick = on_diff_select}) + tinsert(difficultyList, 1, {value = 15, label = "Heroic", icon = icon, onclick = on_diff_select}) end elseif (difficulty == 16) then @@ -517,23 +517,23 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild end if (not alreadyHave) then - tinsert (difficultyList, {value = 16, label = "Mythic", icon = icon, onclick = on_diff_select}) + tinsert(difficultyList, {value = 16, label = "Mythic", icon = icon, onclick = on_diff_select}) end end - for encounterId, encounterTable in pairs (encounterIdTable) do + for encounterId, encounterTable in pairs(encounterIdTable) do if (not bossRepeated[encounterId]) then local encounter, instance = Details:GetBossEncounterDetailsFromEncounterId(nil, encounterId) if (encounter) then local InstanceID = Details:GetInstanceIdFromEncounterId (encounterId) if (raidSelected == InstanceID) then - tinsert (bossList, {value = encounterId, label = encounter.boss, icon = icon, onclick = on_boss_select}) + tinsert(bossList, {value = encounterId, label = encounter.boss, icon = icon, onclick = on_boss_select}) bossRepeated [encounterId] = true end if (not raidRepeated [instance.name]) then - tinsert (raidList, {value = instance.id, label = instance.name, icon = icon, onclick = onRaidSelect}) + tinsert(raidList, {value = instance.id, label = instance.name, icon = icon, onclick = onRaidSelect}) raidRepeated [instance.name] = true end @@ -543,7 +543,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild for index, encounter in ipairs(encounterTable) do local guild = encounter.guild if (not guildRepeated [guild]) then - tinsert (guildList, {value = guild, label = guild, icon = icon, onclick = on_guild_select}) + tinsert(guildList, {value = guild, label = guild, icon = icon, onclick = on_guild_select}) guildRepeated [guild] = true end end @@ -555,19 +555,19 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild diff_dropdown:Refresh() - diff_dropdown:Select (1, true) + diff_dropdown:Select(1, true) boss_dropdown:Refresh() - boss_dropdown:Select (1, true) + boss_dropdown:Select(1, true) if (not DoNotSelectRaid) then raid_dropdown:Refresh() - raid_dropdown:Select (1, true) + raid_dropdown:Select(1, true) end guild_dropdown:Refresh() if (currentGuild) then - guild_dropdown:Select (currentGuild) + guild_dropdown:Select(currentGuild) else - guild_dropdown:Select (1, true) + guild_dropdown:Select(1, true) end end @@ -577,10 +577,10 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild local boss_repeated = {} wipe (bossList) - for difficulty, encounterIdTable in pairs (db) do + for difficulty, encounterIdTable in pairs(db) do if (type(difficulty) == "number") then if (difficulty == 14) then - --tinsert (difficultyList, {value = 14, label = "Normal", icon = icon, onclick = on_diff_select}) + --tinsert(difficultyList, {value = 14, label = "Normal", icon = icon, onclick = on_diff_select}) --print ("has normal encounter") elseif (difficulty == 15) then local alreadyHave = false @@ -590,7 +590,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild end end if (not alreadyHave) then - tinsert (difficultyList, 1, {value = 15, label = "Heroic", icon = icon, onclick = on_diff_select}) + tinsert(difficultyList, 1, {value = 15, label = "Heroic", icon = icon, onclick = on_diff_select}) end elseif (difficulty == 16) then local alreadyHave = false @@ -600,11 +600,11 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild end end if (not alreadyHave) then - tinsert (difficultyList, {value = 16, label = "Mythic", icon = icon, onclick = on_diff_select}) + tinsert(difficultyList, {value = 16, label = "Mythic", icon = icon, onclick = on_diff_select}) end end - for encounterId, encounterTable in pairs (encounterIdTable) do + for encounterId, encounterTable in pairs(encounterIdTable) do if (not boss_repeated [encounterId]) then local encounter, instance = Details:GetBossEncounterDetailsFromEncounterId (_, encounterId) if (encounter) then @@ -615,15 +615,15 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild if (bossIndex) then local l, r, t, b, texturePath = Details:GetBossIcon (InstanceID, bossIndex) if (texturePath) then - tinsert (bossList, {value = encounterId, label = encounter.boss, icon = texturePath, texcoord = {l, r, t, b}, onclick = on_boss_select}) + tinsert(bossList, {value = encounterId, label = encounter.boss, icon = texturePath, texcoord = {l, r, t, b}, onclick = on_boss_select}) else - tinsert (bossList, {value = encounterId, label = encounter.boss, icon = icon, onclick = on_boss_select}) + tinsert(bossList, {value = encounterId, label = encounter.boss, icon = icon, onclick = on_boss_select}) end else - tinsert (bossList, {value = encounterId, label = encounter.boss, icon = icon, onclick = on_boss_select}) + tinsert(bossList, {value = encounterId, label = encounter.boss, icon = icon, onclick = on_boss_select}) end --]=] - tinsert (bossList, {value = encounterId, label = encounter.boss, icon = icon, onclick = on_boss_select}) + tinsert(bossList, {value = encounterId, label = encounter.boss, icon = icon, onclick = on_boss_select}) boss_repeated [encounterId] = true end end @@ -681,8 +681,8 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild if (player) then - --tinsert (data, {text = date, value = player[1], data = player, fulldate = encounter.date, elapsed = encounter.elapsed}) - tinsert (data, {text = date, value = player[1]/encounter.elapsed, utext = Details:ToK2 (player[1]/encounter.elapsed), data = player, fulldate = encounter.date, elapsed = encounter.elapsed}) + --tinsert(data, {text = date, value = player[1], data = player, fulldate = encounter.date, elapsed = encounter.elapsed}) + tinsert(data, {text = date, value = player[1]/encounter.elapsed, utext = Details:ToK2 (player[1]/encounter.elapsed), data = player, fulldate = encounter.date, elapsed = encounter.elapsed}) end end end @@ -700,7 +700,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild GameCooltip:AddLine ("Item Level:", floor (self.data.data [2]), 1, "white") GameCooltip:AddLine ("Date:", self.data.fulldate:gsub (".*%s", ""), 1, "white") - GameCooltip:SetOwner (self.ball.tooltip_anchor) + GameCooltip:SetOwner(self.ball.tooltip_anchor) GameCooltip:Show() end local onleave = function(self) @@ -737,7 +737,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild date = date:gsub (".*%s", "") date = date:sub (1, -4) - for playerName, playerTable in pairs (roleTable) do + for playerName, playerTable in pairs(roleTable) do if (not playerScore [playerName]) then playerScore [playerName] = { @@ -767,7 +767,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild end local sortTable = {} - for playerName, t in pairs (playerScore) do + for playerName, t in pairs(playerScore) do local className = select (2, GetClassInfo (t.class or 0)) local classColor = "FFFFFFFF" if (className) then @@ -775,7 +775,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild end local playerNameFormated = Details:GetOnlyName (playerName) - tinsert (sortTable, { + tinsert(sortTable, { "|c" .. classColor .. playerNameFormated .. "|r", Details:comma_value (t.ps), Details:ToK2 (t.total), @@ -825,9 +825,9 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild date = date:sub (1, -4) amt_encounters = amt_encounters + 1 - tinsert (header, {name = date, type = "text"}) + tinsert(header, {name = date, type = "text"}) - for playerName, playerTable in pairs (roleTable) do + for playerName, playerTable in pairs(roleTable) do local index = players_index [playerName] local player @@ -835,19 +835,19 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild player = {playerName} player_class [playerName] = playerTable [3] for i = 1, amt_encounters-1 do - tinsert (player, "") + tinsert(player, "") end - tinsert (player, Details:ToK2 (playerTable [1] / encounter.elapsed)) - tinsert (players, player) + tinsert(player, Details:ToK2 (playerTable [1] / encounter.elapsed)) + tinsert(players, player) players_index [playerName] = #players --print ("not index", playerName, amt_encounters, date, 2, amt_encounters-1) else player = players [index] for i = #player+1, amt_encounters-1 do - tinsert (player, "") + tinsert(player, "") end - tinsert (player, Details:ToK2 (playerTable [1] / encounter.elapsed)) + tinsert(player, Details:ToK2 (playerTable [1] / encounter.elapsed)) end end @@ -859,7 +859,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild for index, playerTable in ipairs(players) do for i = #playerTable, amt_encounters do - tinsert (playerTable, "") + tinsert(playerTable, "") end local className = select (2, GetClassInfo (player_class [playerTable [1]] or 0)) @@ -917,9 +917,9 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild player_name = f.latest_player_selected or player_name if (player_name) then - player2_dropdown:Select (player_name) + player2_dropdown:Select(player_name) else - player2_dropdown:Select (1, true) + player2_dropdown:Select(1, true) end f:BuildPlayerTable (player2_dropdown.value) @@ -943,7 +943,7 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild player2_dropdown:Show() f.build_player2_data = {{}, guild, role} player2_dropdown:Refresh() - player2_dropdown:Select (1, true) + player2_dropdown:Select(1, true) f:BuildPlayerTable (player2_dropdown.value) end end @@ -1007,23 +1007,23 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild end if (_raid) then - statsWindow.select_raid:Select (_raid) + statsWindow.select_raid:Select(_raid) statsWindow:Refresh() statsWindow.UpdateBossDropdown() end if (_boss) then - statsWindow.select_boss:Select (_boss) + statsWindow.select_boss:Select(_boss) statsWindow:Refresh() end if (_difficulty) then - statsWindow.select_diff:Select (_difficulty) + statsWindow.select_diff:Select(_difficulty) statsWindow:Refresh() end if (_role) then - statsWindow.select_role:Select (_role) + statsWindow.select_role:Select(_role) statsWindow:Refresh() end @@ -1031,18 +1031,18 @@ function Details:OpenRaidHistoryWindow (_raid, _boss, _difficulty, _role, _guild if (type(_guild) == "boolean") then _guild = GetGuildInfo ("player") end - statsWindow.select_guild:Select (_guild) + statsWindow.select_guild:Select(_guild) statsWindow:Refresh() end if (_player_base) then - statsWindow.select_player:Select (_player_base) + statsWindow.select_player:Select(_player_base) statsWindow:Refresh() end if (_player_name) then statsWindow.select_player2:Refresh() - statsWindow.select_player2:Select (_player_name) + statsWindow.select_player2:Select(_player_name) statsWindow:Refresh (_player_name) end diff --git a/frames/window_switch.lua b/frames/window_switch.lua index ec4b3bea6..d622e27ba 100644 --- a/frames/window_switch.lua +++ b/frames/window_switch.lua @@ -243,7 +243,7 @@ do allDisplaysFrame.check_text_size (button.text) button.texture:SetTexture(Details.sub_atributos [attribute].icones [i] [1]) button.texture:SetTexCoord (unpack (Details.sub_atributos [attribute].icones [i] [2])) - tinsert (allDisplaysFrame.buttons [attribute], button) + tinsert(allDisplaysFrame.buttons [attribute], button) y = y - 17 end @@ -301,7 +301,7 @@ do local button = allDisplaysFrame.buttons [custom_index] [button_index] if (not button) then button = create_all_switch_button (custom_index, i, allDisplaysFrame.x, allDisplaysFrame.y) - tinsert (allDisplaysFrame.buttons [custom_index], button) + tinsert(allDisplaysFrame.buttons [custom_index], button) allDisplaysFrame.y = allDisplaysFrame.y - 17 end @@ -341,7 +341,7 @@ do local button = allDisplaysFrame.buttons [script_index] [button_index] if (not button) then button = create_all_switch_button(script_index, button_index, allDisplaysFrame.x, allDisplaysFrame.y) - tinsert (allDisplaysFrame.buttons [script_index], button) + tinsert(allDisplaysFrame.buttons [script_index], button) allDisplaysFrame.y = allDisplaysFrame.y - 17 end @@ -490,7 +490,7 @@ function Details.switch:ShowMe(instancia) if (not Details.switch.segments_blocks) then local segment_switch = function(self, button, segment) if (button == "LeftButton") then - Details.switch.current_instancia:TrocaTabela (segment) + Details.switch.current_instancia:TrocaTabela(segment) Details.switch.CloseMe() elseif (button == "RightButton") then Details.switch.CloseMe() @@ -535,7 +535,7 @@ function Details.switch:ShowMe(instancia) local button = gump:CreateButton (Details.switch.frame, segment_switch, 100, 20, "", index) button:SetPoint("topleft", s, "topleft", -17, 0) button:SetPoint("bottomright", s, "bottomright", 0, 0) - button:SetClickFunction (segment_switch, nil, nil, "right") + button:SetClickFunction(segment_switch, nil, nil, "right") local boss_texture = gump:CreateImage (button, nil, 16, 16) boss_texture:SetPoint("right", s, "left", -2, 0) @@ -560,7 +560,7 @@ function Details.switch:ShowMe(instancia) s.HideMe = hide_label s.ShowMe = show_label - tinsert (Details.switch.segments_blocks, s) + tinsert(Details.switch.segments_blocks, s) return s end @@ -886,7 +886,7 @@ end function Details.switch:InitSwitch() local instancia = Details.tabela_instancias[1] - Details.switch:ShowMe (instancia) + Details.switch:ShowMe(instancia) Details.switch:CloseMe() end diff --git a/frames/window_wa.lua b/frames/window_wa.lua index 624b91c34..c495b2065 100644 --- a/frames/window_wa.lua +++ b/frames/window_wa.lua @@ -1779,7 +1779,7 @@ function _detalhes:CreateWeakAura (aura_type, spellid, use_spellid, spellname, n else new_aura.trigger.spellId = tostring (spellid) new_aura.trigger.name = spellname - tinsert (new_aura.trigger.spellIds, spellid) + tinsert(new_aura.trigger.spellIds, spellid) end --if is a regular aura without using spells ids @@ -1902,7 +1902,7 @@ function _detalhes:CreateWeakAura (aura_type, spellid, use_spellid, spellname, n end end - tinsert (WeakAurasSaved.displays [group].controlledChildren, new_aura.id) + tinsert(WeakAurasSaved.displays [group].controlledChildren, new_aura.id) else new_aura.parent = nil end @@ -1983,7 +1983,7 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr local f = DetailsAuraPanel or CreateFrame("frame", "DetailsAuraPanel", UIParent,"BackdropTemplate") f:SetSize(800, 600) f:SetPoint("center", UIParent, "center", 0, 150) - f:SetFrameStrata ("DIALOG") + f:SetFrameStrata("DIALOG") f:EnableMouse (true) f:SetMovable (true) f:SetToplevel (true) @@ -2229,7 +2229,7 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr local checkBox = fw:CreateSwitch (f, OnChangeTriggerState, i == 1) checkBox:SetTemplate (fw:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) checkBox:SetAsCheckBox() - checkBox:SetFixedParameter (triggerList [i].value) + checkBox:SetFixedParameter(triggerList [i].value) checkBox:SetSize(20, 20) checkBox:SetPoint("topleft", aura_on_label, "bottomleft", 0, 12 + (-i*20)) @@ -2279,7 +2279,7 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr local icon_button_func = function(texture) f.IconButton.icon.texture = texture end - local icon_pick_button = fw:NewButton (f, nil, "$parentIconButton", "IconButton", 20, 20, function() fw:IconPick (icon_button_func, true) end) + local icon_pick_button = fw:NewButton(f, nil, "$parentIconButton", "IconButton", 20, 20, function() fw:IconPick (icon_button_func, true) end) local icon_button_icon = fw:NewImage (icon_pick_button, [[Interface\ICONS\TEMP]], 19, 19, "background", nil, "icon", "$parentIcon") icon_pick_button:InstallCustomTexture() @@ -2358,7 +2358,7 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr local sounds = {} local already_added = {} - for name, soundFile in pairs (game_sounds) do + for name, soundFile in pairs(game_sounds) do name = name:gsub ("(%a)([%w_']*)", titlecase) if (not already_added [name]) then sounds [#sounds+1] = {name = name, file = soundFile, gamesound = true} @@ -2366,7 +2366,7 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr end end - for name, soundFile in pairs (LibStub:GetLibrary("LibSharedMedia-3.0"):HashTable ("sound")) do + for name, soundFile in pairs(LibStub:GetLibrary("LibSharedMedia-3.0"):HashTable ("sound")) do name = name:gsub ("(%a)([%w_']*)", titlecase) if (not already_added [name]) then sounds [#sounds+1] = {name = name, file = soundFile} @@ -2375,7 +2375,7 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr end if (WeakAuras and WeakAuras.sound_types) then - for soundFile, name in pairs (WeakAuras.sound_types) do + for soundFile, name in pairs(WeakAuras.sound_types) do name = name:gsub ("(%a)([%w_']*)", titlecase) if (not already_added [name]) then sounds [#sounds+1] = {name = name, file = soundFile} @@ -2387,11 +2387,11 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr for _, sound in ipairs(sounds) do if (sound.name:find ("D_")) then --details sound - tinsert (t, {color = "orange", label = sound.name, value = sound.file, icon = [[Interface\Buttons\UI-GuildButton-MOTD-Up]], onclick = play_sound, iconsize = iconsize}) + tinsert(t, {color = "orange", label = sound.name, value = sound.file, icon = [[Interface\Buttons\UI-GuildButton-MOTD-Up]], onclick = play_sound, iconsize = iconsize}) elseif (sound.gamesound) then --game sound - tinsert (t, {color = "yellow", label = sound.name, value = {sound_path = sound.file}, icon = [[Interface\Buttons\UI-GuildButton-MOTD-Up]], onclick = play_sound, iconsize = iconsize}) + tinsert(t, {color = "yellow", label = sound.name, value = {sound_path = sound.file}, icon = [[Interface\Buttons\UI-GuildButton-MOTD-Up]], onclick = play_sound, iconsize = iconsize}) else - tinsert (t, {label = sound.name, value = sound.file, icon = [[Interface\Buttons\UI-GuildButton-MOTD-Up]], onclick = play_sound, iconsize = iconsize}) + tinsert(t, {label = sound.name, value = sound.file, icon = [[Interface\Buttons\UI-GuildButton-MOTD-Up]], onclick = play_sound, iconsize = iconsize}) end end return t @@ -2458,7 +2458,7 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr local addon_options = function() local t = {} if (WeakAuras) then - tinsert (t, {label = "Weak Auras 2", value = "WA", icon = [[Interface\AddOns\WeakAuras\Media\Textures\icon]]}) + tinsert(t, {label = "Weak Auras 2", value = "WA", icon = [[Interface\AddOns\WeakAuras\Media\Textures\icon]]}) end return t end @@ -2478,14 +2478,14 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr local weakauras_folder_options = function() local t = {} if (WeakAuras and WeakAurasSaved) then - for display_name, aura_table in pairs (WeakAurasSaved.displays) do + for display_name, aura_table in pairs(WeakAurasSaved.displays) do if (aura_table.regionType == "dynamicgroup" or aura_table.regionType == "group") then - tinsert (t, {label = display_name, value = display_name, icon = folder_icon, texcoord = folder_texcoord, iconsize = folder_iconsize}) + tinsert(t, {label = display_name, value = display_name, icon = folder_icon, texcoord = folder_texcoord, iconsize = folder_iconsize}) end end end table.sort (t, sort_func) - tinsert (t, 1, {label = "No Group", value = false, icon = folder_icon, texcoord = folder_texcoord, iconcolor = {0.8, 0.2, 0.2}, iconsize = folder_iconsize}) + tinsert(t, 1, {label = "No Group", value = false, icon = folder_icon, texcoord = folder_texcoord, iconcolor = {0.8, 0.2, 0.2}, iconsize = folder_iconsize}) return t end @@ -2533,7 +2533,7 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr --select the new group in the dropdown weakauras_folder:Refresh() - weakauras_folder:Select (groupName) + weakauras_folder:Select(groupName) end local weakauras_newgroup_label = fw:CreateLabel(f, "New WeakAuras Group: ", nil, nil, "GameFontNormal") @@ -2696,7 +2696,7 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr f.StackSlider:Disable() f.SpellName:Disable() f.UseSpellId:Disable() - DetailsAuraPanel.AuraTypeDropdown:Select (2, true) + DetailsAuraPanel.AuraTypeDropdown:Select(2, true) DetailsAuraPanel.OnSelectAuraType (nil, nil, 2, true) f.IsCooldown:Disable() @@ -2731,15 +2731,15 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr DetailsAuraPanel.WeakaurasFolderDropdown:Refresh() if (encounterid) then - DetailsAuraPanel.WeakaurasFolderDropdown:Select ("Details! Aura Group") + DetailsAuraPanel.WeakaurasFolderDropdown:Select("Details! Aura Group") DetailsAuraPanel.IconSizeSlider:SetValue(128) else - DetailsAuraPanel.WeakaurasFolderDropdown:Select (1, true) + DetailsAuraPanel.WeakaurasFolderDropdown:Select(1, true) DetailsAuraPanel.IconSizeSlider:SetValue(64) end if (DetailsAuraPanel.other_values.dbm_timer_id or DetailsAuraPanel.other_values.bw_timer_id) then - DetailsAuraPanel.WeakaurasFolderDropdown:Select ("Details! Boss Mods Group") + DetailsAuraPanel.WeakaurasFolderDropdown:Select("Details! Boss Mods Group") end if (DetailsAuraPanel.other_values.text_size) then @@ -2758,23 +2758,23 @@ function _detalhes:OpenAuraPanel (spellid, spellname, spellicon, encounterid, tr DetailsAuraPanel.UseGlow:SetValue(false) DetailsAuraPanel.StackSlider:SetValue(0) - DetailsAuraPanel.SoundEffectDropdown:Select (1, true) + DetailsAuraPanel.SoundEffectDropdown:Select(1, true) DetailsAuraPanel.AuraText:SetText(DetailsAuraPanel.other_values.text or "") DetailsAuraPanel.SaySomething:SetText("") if (triggertype and type (triggertype) == "number") then - DetailsAuraPanel.AuraOnDropdown:Select (triggertype, true) + DetailsAuraPanel.AuraOnDropdown:Select(triggertype, true) DetailsAuraPanel.SetTriggerState (DetailsAuraPanel.TriggerList [triggertype].value) --passed by index not by the trigger ID else - DetailsAuraPanel.AuraOnDropdown:Select (1, true) + DetailsAuraPanel.AuraOnDropdown:Select(1, true) DetailsAuraPanel.SetTriggerState (1) end if (auratype and type (auratype) == "number") then - DetailsAuraPanel.AuraTypeDropdown:Select (auratype, true) + DetailsAuraPanel.AuraTypeDropdown:Select(auratype, true) DetailsAuraPanel.OnSelectAuraType (nil, nil, auratype) else - DetailsAuraPanel.AuraTypeDropdown:Select (1, true) + DetailsAuraPanel.AuraTypeDropdown:Select(1, true) DetailsAuraPanel.OnSelectAuraType (nil, nil, "icon") end diff --git a/frames/window_welcome.lua b/frames/window_welcome.lua index bbc6ec630..a91aa3940 100644 --- a/frames/window_welcome.lua +++ b/frames/window_welcome.lua @@ -199,7 +199,7 @@ function _detalhes:OpenWelcomeWindow() --save standard local savedObject = {} - for key, value in pairs (instance) do + for key, value in pairs(instance) do if (_detalhes.instance_defaults [key] ~= nil) then if (type(value) == "table") then savedObject [key] = Details.CopyTable (value) @@ -211,7 +211,7 @@ function _detalhes:OpenWelcomeWindow() _detalhes.standard_skin = savedObject _detalhes:ApplyPDWSkin ("ElvUI") - --_detalhes:SetTooltipBackdrop ("Details BarBorder 3", 14, {0, 0, 0, 1}) + --_detalhes:SetTooltipBackdrop("Details BarBorder 3", 14, {0, 0, 0, 1}) end --]=] @@ -225,7 +225,7 @@ function _detalhes:OpenWelcomeWindow() _detalhes.stopwelcomealert = nil end frame_alert.alert = CreateFrame("frame", "DetailsWelcomeWindowAlert", UIParent, "ActionBarButtonSpellActivationAlert") - frame_alert.alert:SetFrameStrata ("FULLSCREEN") + frame_alert.alert:SetFrameStrata("FULLSCREEN") frame_alert.alert:Hide() local window_openned_at = time() @@ -296,15 +296,15 @@ local window_openned_at = time() --skin local onSelectSkin = function(_, _, skin_name) - local instance1 = _detalhes:GetInstance (1) + local instance1 = _detalhes:GetInstance(1) if (instance1 and instance1:IsEnabled()) then instance1:ChangeSkin (skin_name) - window.FontDropdown:Select (instance1.row_info.font_face) + window.FontDropdown:Select(instance1.row_info.font_face) window.BarHeightSlider:SetValue(instance1.row_info.height) window.TextSizeSlider:SetValue(instance1.row_info.font_size) window.ShowPercentCheckBox:SetValue(instance1.row_info.textR_show_data [3]) end - local instance2 = _detalhes:GetInstance (2) + local instance2 = _detalhes:GetInstance(2) if (instance2 and instance2:IsEnabled()) then instance2:ChangeSkin (skin_name) end @@ -312,13 +312,13 @@ local window_openned_at = time() local buildSkinMenu = function() local skinOptions = {} - for skin_name, skin_table in pairs (_detalhes.skins) do + for skin_name, skin_table in pairs(_detalhes.skins) do skinOptions [#skinOptions+1] = {value = skin_name, label = skin_name, onclick = onSelectSkin, icon = "Interface\\GossipFrame\\TabardGossipIcon", desc = skin_table.desc} end return skinOptions end - local instance1 = _detalhes:GetInstance (1) + local instance1 = _detalhes:GetInstance(1) local skin_dropdown = g:NewDropDown (window, _, "$parentSkinDropdown", "skinDropdown", 160, 20, buildSkinMenu, instance1.skin) skin_dropdown:SetTemplate (g:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")) skin_dropdown.tooltip = Loc ["STRING_WELCOME_58"] @@ -353,8 +353,8 @@ local window_openned_at = time() end end - local instance1 = Details:GetInstance (1) - local instance2 = Details:GetInstance (2) + local instance1 = Details:GetInstance(1) + local instance2 = Details:GetInstance(2) _detalhes.tabela_historico:resetar() @@ -366,7 +366,7 @@ local window_openned_at = time() instance2:SetBarTextSettings (nil, "Accidental Presidency") end - window.FontDropdown:Select ("Accidental Presidency") + window.FontDropdown:Select("Accidental Presidency") _detalhes:CreateTestBars ("en") @@ -378,7 +378,7 @@ local window_openned_at = time() instance2:SetBarTextSettings (nil, "Arial Narrow") end - window.FontDropdown:Select ("Arial Narrow") + window.FontDropdown:Select("Arial Narrow") _detalhes:CreateTestBars ("ru") @@ -390,7 +390,7 @@ local window_openned_at = time() instance2:SetBarTextSettings (nil, "AR CrystalzcuheiGBK Demibold") end - window.FontDropdown:Select ("AR CrystalzcuheiGBK Demibold") + window.FontDropdown:Select("AR CrystalzcuheiGBK Demibold") _detalhes:CreateTestBars ("cn") @@ -402,7 +402,7 @@ local window_openned_at = time() instance2:SetBarTextSettings (nil, "2002") end - window.FontDropdown:Select ("2002") + window.FontDropdown:Select("2002") _detalhes:CreateTestBars ("ko") @@ -414,7 +414,7 @@ local window_openned_at = time() instance2:SetBarTextSettings (nil, "AR CrystalzcuheiGBK Demibold") end - window.FontDropdown:Select ("AR CrystalzcuheiGBK Demibold") + window.FontDropdown:Select("AR CrystalzcuheiGBK Demibold") _detalhes:CreateTestBars ("tw") end @@ -425,57 +425,57 @@ local window_openned_at = time() g:NewLabel(window, _, "$parentLatinAlphabetLabel", "LatinAlphabetLabel", Loc["STRING_WELCOME_74"], "GameFontHighlightLeft") g:NewSwitch (window, _, "$parentLatinAlphabetCheckBox", "LatinAlphabetCheckBox", 20, 20, _, _, true) window.LatinAlphabetCheckBox:SetAsCheckBox() - window.LatinAlphabetCheckBox:SetFixedParameter (1) + window.LatinAlphabetCheckBox:SetFixedParameter(1) window.LatinAlphabetCheckBox:SetTemplate (g:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) window.LatinAlphabetCheckBox.OnSwitch = onSelectAlphabet window.LatinAlphabetLabel:SetPoint("left", window.LatinAlphabetCheckBox, "right", 2, 0) - tinsert (allAlphabetCheckBoxes, window.LatinAlphabetCheckBox) - tinsert (allAlphabetLabels, window.LatinAlphabetLabel) + tinsert(allAlphabetCheckBoxes, window.LatinAlphabetCheckBox) + tinsert(allAlphabetLabels, window.LatinAlphabetLabel) --Russian g:NewLabel(window, _, "$parentCyrillicAlphabetLabel", "CyrillicAlphabetLabel", Loc["STRING_WELCOME_75"], "GameFontHighlightLeft") g:NewSwitch (window, _, "$parentCyrillicAlphabetCheckBox", "CyrillicAlphabetCheckBox", 20, 20, _, _, false) window.CyrillicAlphabetCheckBox:SetAsCheckBox() - window.CyrillicAlphabetCheckBox:SetFixedParameter (2) + window.CyrillicAlphabetCheckBox:SetFixedParameter(2) window.CyrillicAlphabetCheckBox:SetTemplate (g:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) window.CyrillicAlphabetCheckBox.OnSwitch = onSelectAlphabet window.CyrillicAlphabetLabel:SetPoint("left", window.CyrillicAlphabetCheckBox, "right", 2, 0) - tinsert (allAlphabetCheckBoxes, window.CyrillicAlphabetCheckBox) - tinsert (allAlphabetLabels, window.CyrillicAlphabetLabel) + tinsert(allAlphabetCheckBoxes, window.CyrillicAlphabetCheckBox) + tinsert(allAlphabetLabels, window.CyrillicAlphabetLabel) --Chinese g:NewLabel(window, _, "$parentChinaAlphabetLabel", "ChinaAlphabetLabel", Loc["STRING_WELCOME_76"], "GameFontHighlightLeft") g:NewSwitch (window, _, "$parentChinaCheckBox", "ChinaCheckBox", 20, 20, _, _, false) window.ChinaCheckBox:SetAsCheckBox() - window.ChinaCheckBox:SetFixedParameter (3) + window.ChinaCheckBox:SetFixedParameter(3) window.ChinaCheckBox:SetTemplate (g:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) window.ChinaCheckBox.OnSwitch = onSelectAlphabet window.ChinaAlphabetLabel:SetPoint("left", window.ChinaCheckBox, "right", 2, 0) - tinsert (allAlphabetCheckBoxes, window.ChinaCheckBox) - tinsert (allAlphabetLabels, window.ChinaAlphabetLabel) + tinsert(allAlphabetCheckBoxes, window.ChinaCheckBox) + tinsert(allAlphabetLabels, window.ChinaAlphabetLabel) --Korea g:NewLabel(window, _, "$parentKoreanAlphabetLabel", "KoreanAlphabetLabel", Loc["STRING_WELCOME_77"], "GameFontHighlightLeft") g:NewSwitch (window, _, "$parentKoreanCheckBox", "KoreanCheckBox", 20, 20, _, _, false) window.KoreanCheckBox:SetAsCheckBox() - window.KoreanCheckBox:SetFixedParameter (4) + window.KoreanCheckBox:SetFixedParameter(4) window.KoreanCheckBox:SetTemplate (g:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) window.KoreanCheckBox.OnSwitch = onSelectAlphabet window.KoreanAlphabetLabel:SetPoint("left", window.KoreanCheckBox, "right", 2, 0) - tinsert (allAlphabetCheckBoxes, window.KoreanCheckBox) - tinsert (allAlphabetLabels, window.KoreanAlphabetLabel) + tinsert(allAlphabetCheckBoxes, window.KoreanCheckBox) + tinsert(allAlphabetLabels, window.KoreanAlphabetLabel) --Taiwan g:NewLabel(window, _, "$parentTaiwanAlphabetLabel", "TaiwanAlphabetLabel", Loc["STRING_WELCOME_78"], "GameFontHighlightLeft") g:NewSwitch (window, _, "$parentTaiwanCheckBox", "TaiwanCheckBox", 20, 20, _, _, false) window.TaiwanCheckBox:SetAsCheckBox() - window.TaiwanCheckBox:SetFixedParameter (5) + window.TaiwanCheckBox:SetFixedParameter(5) window.TaiwanCheckBox:SetTemplate (g:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) window.TaiwanCheckBox.OnSwitch = onSelectAlphabet window.TaiwanAlphabetLabel:SetPoint("left", window.TaiwanCheckBox, "right", 2, 0) - tinsert (allAlphabetCheckBoxes, window.TaiwanCheckBox) - tinsert (allAlphabetLabels, window.TaiwanAlphabetLabel) + tinsert(allAlphabetCheckBoxes, window.TaiwanCheckBox) + tinsert(allAlphabetLabels, window.TaiwanAlphabetLabel) window.LatinAlphabetCheckBox:SetPoint("topleft", texto_alphabet, "bottomleft", 0, -10) window.CyrillicAlphabetCheckBox:SetPoint("topleft", window.LatinAlphabetCheckBox, "bottomleft", 0, -2) @@ -537,14 +537,14 @@ local window_openned_at = time() end end - local instance2 = _detalhes:GetInstance (2) + local instance2 = _detalhes:GetInstance(2) if (instance2 and instance2:IsEnabled()) then instance2:InstanceColor (r, g, b, a, nil, true) end end local change_color = function() - window.editing_window = _detalhes:GetInstance (1) + window.editing_window = _detalhes:GetInstance(1) local r, g, b, a = unpack (window.editing_window.color) _detalhes.gump:ColorPick (window, r, g, b, a, windowcolor_callback) end @@ -563,8 +563,8 @@ local window_openned_at = time() window.BarHeightSlider:SetTemplate (g:GetTemplate ("slider", "OPTIONS_SLIDER_TEMPLATE")) window.BarHeightSlider:SetHook("OnValueChange", function(self, _, amount) - local instance1 = Details:GetInstance (1) - local instance2 = Details:GetInstance (2) + local instance1 = Details:GetInstance(1) + local instance2 = Details:GetInstance(2) if (instance1 and instance1:IsEnabled()) then instance1:SetBarSettings (amount) @@ -583,8 +583,8 @@ local window_openned_at = time() window.TextSizeSlider:SetTemplate (g:GetTemplate ("slider", "OPTIONS_SLIDER_TEMPLATE")) window.TextSizeSlider:SetHook("OnValueChange", function(self, _, amount) - local instance1 = Details:GetInstance (1) - local instance2 = Details:GetInstance (2) + local instance1 = Details:GetInstance(1) + local instance2 = Details:GetInstance(2) if (instance1 and instance1:IsEnabled()) then instance1:SetBarTextSettings (amount) @@ -596,8 +596,8 @@ local window_openned_at = time() --font local onSelectFont = function(_, instance, fontName) - local instance1 = Details:GetInstance (1) - local instance2 = Details:GetInstance (2) + local instance1 = Details:GetInstance(1) + local instance2 = Details:GetInstance(2) if (instance1 and instance1:IsEnabled()) then instance1:SetBarTextSettings (nil, fontName) @@ -610,14 +610,14 @@ local window_openned_at = time() local buildFontMenu = function() local fontObjects = SharedMedia:HashTable ("font") local fontTable = {} - for name, fontPath in pairs (fontObjects) do + for name, fontPath in pairs(fontObjects) do fontTable[#fontTable+1] = {value = name, label = name, icon = font_select_icon, texcoord = font_select_texcoord, onclick = onSelectFont, font = fontPath, descfont = name, desc = Loc ["STRING_MUSIC_DETAILS_ROBERTOCARLOS"]} end table.sort (fontTable, function(t1, t2) return t1.label < t2.label end) return fontTable end - local instance1 = _detalhes:GetInstance (1) + local instance1 = _detalhes:GetInstance(1) local font_dropdown = g:NewDropDown (window, _, "$parentFontDropdown", "FontDropdown", 160, 20, buildFontMenu, instance1.row_info.font_face) font_dropdown:SetTemplate (g:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")) font_dropdown.tooltip = Loc ["STRING_WELCOME_58"] @@ -630,12 +630,12 @@ local window_openned_at = time() g:NewLabel(window, _, "$parentShowPercentLabel", "ShowPercentLabel", Loc ["STRING_OPTIONS_TEXT_SHOW_PERCENT"], "GameFontNormal") g:NewSwitch (window, _, "$parentShowPercentCheckBox", "ShowPercentCheckBox", 20, 20, _, _, false) window.ShowPercentCheckBox:SetAsCheckBox() - window.ShowPercentCheckBox:SetFixedParameter (1) + window.ShowPercentCheckBox:SetFixedParameter(1) window.ShowPercentCheckBox:SetTemplate (g:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) window.ShowPercentCheckBox.OnSwitch = function(self, fixedParameter, value) - local instance1 = Details:GetInstance (1) - local instance2 = Details:GetInstance (2) + local instance1 = Details:GetInstance(1) + local instance2 = Details:GetInstance(2) if (instance1 and instance1:IsEnabled()) then instance1:SetBarRightTextSettings (nil, nil, value) @@ -677,10 +677,10 @@ local window_openned_at = time() pages [#pages+1] = {skins_frame_alert, bg55, texto55, texto_alphabet, texto555, skins_image, changemind, texto_appearance, font_label, font_dropdown, skin_dropdown, skin_label, create_window_button, window_color, window.BarHeightLabel, window.BarHeightSlider, window.TextSizeLabel, window.TextSizeSlider, window.ShowPercentLabel, window.ShowPercentCheckBox} for i, widget in ipairs(allAlphabetCheckBoxes) do - tinsert (pages [#pages], widget) + tinsert(pages [#pages], widget) end for i, widget in ipairs(allAlphabetLabels) do - tinsert (pages [#pages], widget) + tinsert(pages [#pages], widget) end for _, widget in ipairs(pages[#pages]) do @@ -712,7 +712,7 @@ local window_openned_at = time() g:NewLabel(window, _, "$parentWesternNumbersLabel", "WesternNumbersLabel", Loc ["STRING_NUMERALSYSTEM_ARABIC_WESTERN"] .. ": " .. Loc ["STRING_NUMERALSYSTEM_ARABIC_WESTERN_DESC"], "GameFontHighlightLeft") local WesternNumbersCheckbox = g:NewSwitch (window, _, "WesternNumbersCheckbox", "WesternNumbersCheckbox", 20, 20, _, _, true) WesternNumbersCheckbox:SetAsCheckBox() - WesternNumbersCheckbox:SetFixedParameter (1) + WesternNumbersCheckbox:SetFixedParameter(1) WesternNumbersCheckbox:SetTemplate (g:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) WesternNumbersCheckbox:SetPoint("topleft", window, "topleft", 40, -130) window.WesternNumbersLabel:SetPoint("left", WesternNumbersCheckbox, "right", 2, 0) @@ -721,7 +721,7 @@ local window_openned_at = time() g:NewLabel(window, _, "$parentAsianNumbersLabel", "AsianNumbersLabel", Loc ["STRING_NUMERALSYSTEM_MYRIAD_EASTASIA"] .. ": " .. Loc ["STRING_NUMERALSYSTEM_ARABIC_MYRIAD_EASTASIA"], "GameFontHighlightLeft") local AsianNumbersCheckbox = g:NewSwitch (window, _, "AsianNumbersCheckbox", "AsianNumbersCheckbox", 20, 20, _, _, true) AsianNumbersCheckbox:SetAsCheckBox() - AsianNumbersCheckbox:SetFixedParameter (2) + AsianNumbersCheckbox:SetFixedParameter(2) AsianNumbersCheckbox:SetTemplate (g:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) AsianNumbersCheckbox:SetPoint("topleft", window, "topleft", 40, -200) window.AsianNumbersLabel:SetPoint("left", AsianNumbersCheckbox, "right", 2, 0) @@ -831,7 +831,7 @@ local window_openned_at = time() g:NewLabel(window, _, "$parentChronometerLabel", "ChronometerLabel", Loc ["STRING_WELCOME_4"], "GameFontHighlightLeft") local chronometer = g:NewSwitch (window, _, "WelcomeWindowChronometer", "WelcomeWindowChronometer", 20, 20, _, _, true) chronometer:SetAsCheckBox() - chronometer:SetFixedParameter (1) + chronometer:SetFixedParameter(1) chronometer:SetTemplate (g:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) window.ChronometerLabel:SetPoint("left", chronometer, "right", 2, 0) @@ -839,7 +839,7 @@ local window_openned_at = time() g:NewLabel(window, _, "$parentContinuousLabel", "ContinuousLabel", Loc ["STRING_WELCOME_5"], "GameFontHighlightLeft") local continuous = g:NewSwitch (window, _, "WelcomeWindowContinuous", "WelcomeWindowContinuous", 20, 20, _, _, true) continuous:SetAsCheckBox() - continuous:SetFixedParameter (1) + continuous:SetFixedParameter(1) continuous:SetTemplate (g:GetTemplate ("switch", "OPTIONS_CHECKBOX_TEMPLATE")) window.ContinuousLabel:SetPoint("left", continuous, "right", 2, 0) @@ -1092,7 +1092,7 @@ local window_openned_at = time() created_test_bars = created_test_bars + 1 end - local instance = _detalhes:GetInstance (1) + local instance = _detalhes:GetInstance(1) instance:SetMode (3) end) @@ -1150,7 +1150,7 @@ local window_openned_at = time() _detalhes:StopPlayStretchAlert() end) stretch_frame_alert:SetScript("OnShow", function() - local instance = _detalhes:GetInstance (1) + local instance = _detalhes:GetInstance(1) _detalhes.OnEnterMainWindow(instance) instance.baseframe.button_stretch:SetAlpha (1) frame_alert.alert:SetPoint("topleft", instance.baseframe.button_stretch, "topleft", -20, 6) @@ -1208,7 +1208,7 @@ local window_openned_at = time() _detalhes:StopPlayStretchAlert() end) instance_frame_alert:SetScript("OnShow", function() - local instance = _detalhes:GetInstance (1) + local instance = _detalhes:GetInstance(1) frame_alert.alert:SetPoint("topleft", instance.baseframe.cabecalho.modo_selecao.widget, "topleft", -8, 6) frame_alert.alert:SetPoint("bottomright", instance.baseframe.cabecalho.modo_selecao.widget, "bottomright", 8, -6) @@ -1260,7 +1260,7 @@ local window_openned_at = time() shortcut_image2:SetTexCoord (2/512, 167/512, 306/512, 425/512) - local instance1 = _detalhes:GetInstance (1) + local instance1 = _detalhes:GetInstance(1) local bookmark_frame = CreateFrame("frame", "WelcomeBookmarkFrame", window,"BackdropTemplate") bookmark_frame:SetPoint("topleft", instance1.baseframe, "topleft") @@ -1285,7 +1285,7 @@ local window_openned_at = time() bookmark_frame:SetScript("OnMouseDown", function(self, button) if (button == "RightButton") then - _detalhes.switch:ShowMe (instance1) + _detalhes.switch:ShowMe(instance1) self:Hide() end end) diff --git a/functions/api2.lua b/functions/api2.lua index bc0ddd4ca..4b86e2523 100644 --- a/functions/api2.lua +++ b/functions/api2.lua @@ -64,7 +64,7 @@ local getSpellObject = function(playerObject, spellId, isLiteral) end if (passedSpellName) then - for thisSpellId, spellObject in pairs (playerObject.spells._ActorTable) do + for thisSpellId, spellObject in pairs(playerObject.spells._ActorTable) do local spellName = Details.GetSpellInfo(thisSpellId) if (spellName) then if (spellName:lower() == passedSpellName) then @@ -94,7 +94,7 @@ Details.API_Description = { --[=[ Details.SegmentInfo (segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "SegmentInfo", desc = "Return a table containing information about the segment.", parameters = { @@ -135,7 +135,7 @@ end --[=[ Details.SegmentElapsedTime (segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "SegmentElapsedTime", desc = "Return the total elapsed time of a segment.", parameters = { @@ -170,7 +170,7 @@ end --[=[ Details.SegmentDamagingUnits (segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "SegmentDamagingUnits", desc = "Return a numeric (ipairs) table with name of units that inflicted damage on the segment.", parameters = { @@ -249,7 +249,7 @@ end --[=[ Details.SegmentHealingUnits (segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "SegmentHealingUnits", desc = "Return a numeric (ipairs) table with name of units that inflicted healing on the segment.", parameters = { @@ -328,7 +328,7 @@ end Details.SegmentTotalDamage (segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "SegmentTotalDamage", desc = "Query the total damage done in the segment and only by players in the group.", parameters = { @@ -365,7 +365,7 @@ end Details.SegmentTotalHealing (segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "SegmentTotalHealing", desc = "Query the total healing done in the segment and only by players in the group.", parameters = { @@ -401,7 +401,7 @@ end Details.SegmentPhases (segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "SegmentPhases", desc = "Return a numeric (ipairs) table with phase numbers available on the segment.", parameters = { @@ -448,7 +448,7 @@ end Details.UnitInfo (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitInfo", desc = "Query basic information about the unit, like class and spec.", parameters = { @@ -533,7 +533,7 @@ end Details.UnitTexture (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitTexture", desc = "Query the icon and texcoords for the class and spec icon.", parameters = { @@ -612,7 +612,7 @@ end --[=[ Details.UnitDamage (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamage", desc = "Query the damage of a unit.", parameters = { @@ -661,7 +661,7 @@ end --[=[ Details.UnitDamageByPhase (unitId, phaseNumber, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamageByPhase", desc = "Query the damage of a unit but only for a specific phase of a boss encounter.", parameters = { @@ -720,7 +720,7 @@ end --[=[ Details.UnitDamageInfo (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamageInfo", desc = "Return a table with damage information.", parameters = { @@ -787,7 +787,7 @@ end --[=[ Details.UnitDamageBySpell (unitId, spellId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamageBySpell", desc = "Query the total damage done of a spell casted by the unit.", parameters = { @@ -857,7 +857,7 @@ end --[=[ Details.UnitDamageSpellInfo (unitId, spellId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamageSpellInfo", desc = "Return a table with the spell damage information.", parameters = { @@ -944,7 +944,7 @@ function Details.UnitDamageSpellInfo (unitId, spellId, isLiteral, segment) if (castedAmount) then spellInfo.casted = castedAmount else - for castedSpellId, castedAmount in pairs (miscPlayerObject.spell_cast) do + for castedSpellId, castedAmount in pairs(miscPlayerObject.spell_cast) do local castedSpellName = GetSpellInfo(castedSpellId) if (castedSpellName == spellName) then spellInfo.casted = castedAmount @@ -975,7 +975,7 @@ end --[=[ Details.UnitDamageSpellOnUnit (unitId, spellId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamageSpellOnUnit", desc = "Query the damage done of a spell into a specific target.", parameters = { @@ -1050,7 +1050,7 @@ end --[=[ Details.UnitDamageTaken (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamageTaken", desc = "Query the unit damage taken.", parameters = { @@ -1098,7 +1098,7 @@ end --[=[ Details.UnitDamageOnUnit (unitId, targetUnitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamageOnUnit", desc = "Query the unit damage done on another unit.", parameters = { @@ -1153,7 +1153,7 @@ end --[=[ Details.UnitDamageTakenFromSpell (unitId, spellId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamageTakenFromSpell", desc = "Query the unit damage taken from a spell.", parameters = { @@ -1204,7 +1204,7 @@ function Details.UnitDamageTakenFromSpell (unitId, spellId, isLiteral, segment) local totalDamageTaken = 0 if (isLiteral and type (spellId) == "number") then for i = 1, #damageContainer._ActorTable do - for thisSpellId, spellObject in pairs (damageContainer._ActorTable [i].spells._ActorTable) do + for thisSpellId, spellObject in pairs(damageContainer._ActorTable [i].spells._ActorTable) do if (thisSpellId == spellId) then totalDamageTaken = totalDamageTaken + (spellObject.targets [unitName] or 0) end @@ -1213,7 +1213,7 @@ function Details.UnitDamageTakenFromSpell (unitId, spellId, isLiteral, segment) else local spellName = GetSpellInfo(spellId) or spellId for i = 1, #damageContainer._ActorTable do - for thisSpellId, spellObject in pairs (damageContainer._ActorTable [i].spells._ActorTable) do + for thisSpellId, spellObject in pairs(damageContainer._ActorTable [i].spells._ActorTable) do local thisSpellName = GetSpellInfo(thisSpellId) if (thisSpellName == spellName) then totalDamageTaken = totalDamageTaken + (spellObject.targets [unitName] or 0) @@ -1229,7 +1229,7 @@ end --[=[ Details.UnitDamagingSpells (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamagingSpells", desc = "Return a numeric (ipairs) table with spells IDs used by the unit to apply damage.", parameters = { @@ -1273,7 +1273,7 @@ function Details.UnitDamagingSpells (unitId, segment) local unitSpells = playerObject.spells._ActorTable local resultTable = {} - for spellId, spellObject in pairs (unitSpells) do + for spellId, spellObject in pairs(unitSpells) do resultTable [#resultTable + 1] = spellId end @@ -1283,7 +1283,7 @@ end --[=[ Details.UnitDamagingTargets (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamagingTargets", desc = "Return a numeric (ipairs) table with names of targets the unit inflicted damage. You may query the amount of damage with Details.UnitDamageOnUnit( unitId, targetName ).", parameters = { @@ -1326,7 +1326,7 @@ function Details.UnitDamagingTargets (unitId, segment) return offensiveTargetNames end - for targetName, _ in pairs (playerObject.targets) do + for targetName, _ in pairs(playerObject.targets) do offensiveTargetNames [#offensiveTargetNames + 1] = targetName end @@ -1337,7 +1337,7 @@ end --[=[ Details.UnitDamagingPets (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitDamagingPets", desc = "Return a numeric (ipairs) table with all pet names the unit used to apply damage. Individual pet information can be queried with Details.UnitDamage( petName ).", parameters = { @@ -1395,7 +1395,7 @@ end --[=[ Details.UnitHealing (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitHealing", desc = "Query the healing done of a unit.", parameters = { @@ -1444,7 +1444,7 @@ end --[=[ Details.UnitHealingInfo (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitHealingInfo", desc = "Return a table with healing information.", parameters = { @@ -1516,7 +1516,7 @@ end --[=[ Details.UnitHealingBySpell (unitId, spellId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitHealingBySpell", desc = "Query the total healing done of a spell casted by the unit.", parameters = { @@ -1588,7 +1588,7 @@ end --[=[ Details.UnitHealingSpellInfo (unitId, spellId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitHealingSpellInfo", desc = "Return a table with the spell healing information.", parameters = { @@ -1675,7 +1675,7 @@ function Details.UnitHealingSpellInfo (unitId, spellId, isLiteral, segment) if (castedAmount) then spellInfo.casted = castedAmount else - for castedSpellId, castedAmount in pairs (miscPlayerObject.spell_cast) do + for castedSpellId, castedAmount in pairs(miscPlayerObject.spell_cast) do local castedSpellName = GetSpellInfo(castedSpellId) if (castedSpellName == spellName) then spellInfo.casted = castedAmount @@ -1707,7 +1707,7 @@ end --[=[ Details.UnitHealingSpellOnUnit (unitId, spellId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitHealingSpellOnUnit", desc = "Query the healing done of a spell into a specific target.", parameters = { @@ -1784,7 +1784,7 @@ end --[=[ Details.UnitHealingTaken (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitHealingTaken", desc = "Query the unit healing taken.", parameters = { @@ -1834,7 +1834,7 @@ end --[=[ Details.UnitHealingOnUnit (unitId, targetUnitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitHealingOnUnit", desc = "Query the unit healing done on another unit.", parameters = { @@ -1892,7 +1892,7 @@ end --[=[ Details.UnitHealingTakenFromSpell (unitId, spellId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitHealingTakenFromSpell", desc = "Query the unit healing taken from a spell.", parameters = { @@ -1943,7 +1943,7 @@ function Details.UnitHealingTakenFromSpell (unitId, spellId, isLiteral, segment) local totalHealingTaken = 0 if (isLiteral and type (spellId) == "number") then for i = 1, #healingContainer._ActorTable do - for thisSpellId, spellObject in pairs (healingContainer._ActorTable [i].spells._ActorTable) do + for thisSpellId, spellObject in pairs(healingContainer._ActorTable [i].spells._ActorTable) do if (thisSpellId == spellId) then totalHealingTaken = totalHealingTaken + (spellObject.targets [unitName] or 0) end @@ -1952,7 +1952,7 @@ function Details.UnitHealingTakenFromSpell (unitId, spellId, isLiteral, segment) else local spellName = GetSpellInfo(spellId) or spellId for i = 1, #healingContainer._ActorTable do - for thisSpellId, spellObject in pairs (healingContainer._ActorTable [i].spells._ActorTable) do + for thisSpellId, spellObject in pairs(healingContainer._ActorTable [i].spells._ActorTable) do local thisSpellName = GetSpellInfo(thisSpellId) if (thisSpellName == spellName) then totalHealingTaken = totalHealingTaken + (spellObject.targets [unitName] or 0) @@ -1969,7 +1969,7 @@ end --[=[ Details.UnitHealingSpells (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitHealingSpells", desc = "Return a numeric (ipairs) table with spells IDs used by the unit to apply healing.", parameters = { @@ -2013,7 +2013,7 @@ function Details.UnitHealingSpells (unitId, segment) local unitSpells = playerObject.spells._ActorTable local resultTable = {} - for spellId, spellObject in pairs (unitSpells) do + for spellId, spellObject in pairs(unitSpells) do resultTable [#resultTable + 1] = spellId end @@ -2024,7 +2024,7 @@ end --[=[ Details.UnitHealingTargets (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitHealingTargets", desc = "Return a numeric (ipairs) table with names of targets the unit applied heal. You may query the amount of damage with Details.UnitHealingOnUnit( unitId, targetName ).", parameters = { @@ -2067,7 +2067,7 @@ function Details.UnitHealingTargets (unitId, segment) return healingTargetNames end - for targetName, _ in pairs (playerObject.targets) do + for targetName, _ in pairs(playerObject.targets) do healingTargetNames [#healingTargetNames + 1] = targetName end @@ -2079,7 +2079,7 @@ end --[=[ Details.UnitHealingPets (unitId, segment) --=]=] -tinsert (Details.API_Description.namespaces[1].api, { +tinsert(Details.API_Description.namespaces[1].api, { name = "UnitHealingPets", desc = "Return a numeric (ipairs) table with all pet names the unit used to apply healing. Individual pet information can be queried with Details.UnitHealing( petName ).", parameters = { diff --git a/functions/boss.lua b/functions/boss.lua index 6b0031a03..341e57e8f 100644 --- a/functions/boss.lua +++ b/functions/boss.lua @@ -20,7 +20,7 @@ do --return the full table with all data for the instance function _detalhes:GetRaidInfoFromEncounterID (encounterID, encounterEJID) - for id, raidTable in pairs (_detalhes.EncounterInformation) do + for id, raidTable in pairs(_detalhes.EncounterInformation) do if (encounterID) then local ids = raidTable.encounter_ids2 --combatlog if (ids) then @@ -46,7 +46,7 @@ do end function _detalhes:GetInstanceIdFromEncounterId (encounterid) - for id, instanceTable in pairs (_detalhes.EncounterInformation) do + for id, instanceTable in pairs(_detalhes.EncounterInformation) do --combatlog encounter id local ids = instanceTable.encounter_ids2 if (ids) then @@ -68,7 +68,7 @@ do function _detalhes:GetBossEncounterDetailsFromEncounterId (mapid, encounterid) if (not mapid) then local bossIndex, instance - for id, instanceTable in pairs (_detalhes.EncounterInformation) do + for id, instanceTable in pairs(_detalhes.EncounterInformation) do local ids = instanceTable.encounter_ids2 if (ids) then bossIndex = ids [encounterid] diff --git a/functions/bossmods.lua b/functions/bossmods.lua index c7a8d61d9..23edd158e 100644 --- a/functions/bossmods.lua +++ b/functions/bossmods.lua @@ -79,7 +79,7 @@ function Details:BossModsLink() local cur_combat = Details:GetCurrentCombat() local time = cur_combat:GetCombatTime() if (time > 5) then - tinsert (cur_combat.PhaseData, {phase, time}) + tinsert(cur_combat.PhaseData, {phase, time}) end Details:SendEvent("COMBAT_ENCOUNTER_PHASE_CHANGED", nil, phase) @@ -114,7 +114,7 @@ function Details:CreateCallbackListeners() if (current_encounter) then if (_G.DBM) then local db = Details.boss_mods_timers - for spell, timer_table in pairs (current_table_dbm) do + for spell, timer_table in pairs(current_table_dbm) do if (not db.encounter_timers_dbm [timer_table[1]]) then timer_table.id = current_encounter db.encounter_timers_dbm [timer_table[1]] = timer_table @@ -123,7 +123,7 @@ function Details:CreateCallbackListeners() end if (BigWigs) then local db = Details.boss_mods_timers - for timer_id, timer_table in pairs (current_table_bigwigs) do + for timer_id, timer_table in pairs(current_table_bigwigs) do if (not db.encounter_timers_bw [timer_id]) then timer_table.id = current_encounter db.encounter_timers_bw [timer_id] = timer_table diff --git a/functions/deathmenu.lua b/functions/deathmenu.lua index 4312b2fd1..b3fd8c377 100644 --- a/functions/deathmenu.lua +++ b/functions/deathmenu.lua @@ -276,7 +276,7 @@ function detailsOnDeathMenu.ShowPanel() detailsOnDeathMenu:SetHeight(30) - if (not Details:GetTutorialCVar ("DISABLE_ONDEATH_PANEL")) then + if (not Details:GetTutorialCVar("DISABLE_ONDEATH_PANEL")) then detailsOnDeathMenu.disableLabel:Show() detailsOnDeathMenu.disableLabel:SetPoint("bottomleft", detailsOnDeathMenu, "bottomleft", 5, 1) detailsOnDeathMenu.disableLabel.color = "gray" diff --git a/functions/deathrecap.lua b/functions/deathrecap.lua index 0eb12862c..5e0afcd62 100644 --- a/functions/deathrecap.lua +++ b/functions/deathrecap.lua @@ -7,7 +7,7 @@ local L = AceLocale:GetLocale ( "Details" ) local on_deathrecap_line_enter = function(self) if (self.spellid) then - GameTooltip:SetOwner (self, "ANCHOR_RIGHT") + GameTooltip:SetOwner(self, "ANCHOR_RIGHT") Details:GameTooltipSetSpellByID (self.spellid) self:SetBackdropColor(.3, .3, .3, .2) GameTooltip:Show() @@ -200,7 +200,7 @@ function Details.BuildDeathTableFromRecap (recapID) not spellId and {spellId, spellName, texture}, } - tinsert (ArtificialDeathLog[1], ev) + tinsert(ArtificialDeathLog[1], ev) ArtificialDeathLog.n = ArtificialDeathLog.n + 1 end @@ -283,7 +283,7 @@ function Details.OpenDetailsDeathRecap (segment, RecapID, fromChat) segmentButton:SetScript("OnClick", function() OpenDetailsDeathRecapAtSegment (i) end) - tinsert (Details.DeathRecap.Segments, i, segmentButton) + tinsert(Details.DeathRecap.Segments, i, segmentButton) end end @@ -323,7 +323,7 @@ function Details.OpenDetailsDeathRecap (segment, RecapID, fromChat) for i, button in ipairs(Details.DeathRecap.Segments) do if (Details.tabela_historico.tabelas [i]) then button:Show() - tinsert (buttonsInUse, button) + tinsert(buttonsInUse, button) Details.gump:SetFontColor(button.text, "silver") last_index = i else @@ -333,7 +333,7 @@ function Details.OpenDetailsDeathRecap (segment, RecapID, fromChat) local buttonsInUse2 = {} for i = #buttonsInUse, 1, -1 do - tinsert (buttonsInUse2, buttonsInUse[i]) + tinsert(buttonsInUse2, buttonsInUse[i]) end for i = 1, #buttonsInUse2 do local button = buttonsInUse2 [i] @@ -391,7 +391,7 @@ function Details.OpenDetailsDeathRecap (segment, RecapID, fromChat) local BiggestDamageHits = {} for i = #events, 1, -1 do - tinsert (BiggestDamageHits, events [i]) + tinsert(BiggestDamageHits, events [i]) end table.sort (BiggestDamageHits, function(t1, t2) return t1[3] > t2[3] @@ -421,7 +421,7 @@ function Details.OpenDetailsDeathRecap (segment, RecapID, fromChat) end end if (not haveHitKill) then - tinsert (BiggestDamageHits, 1, hitKill) + tinsert(BiggestDamageHits, 1, hitKill) end end @@ -439,7 +439,7 @@ function Details.OpenDetailsDeathRecap (segment, RecapID, fromChat) end end if (not alreadyHave) then - tinsert (BiggestDamageHits, event) + tinsert(BiggestDamageHits, event) if (#BiggestDamageHits == 10) then break end @@ -541,7 +541,7 @@ function Details.OpenDetailsDeathRecap (segment, RecapID, fromChat) else source = "Gravity" end - --/run for a,b in pairs (_G) do if (type(b)=="string" and b:find ("Falling")) then print (a,b) end end + --/run for a,b in pairs(_G) do if (type(b)=="string" and b:find ("Falling")) then print (a,b) end end end end diff --git a/functions/dungeon.lua b/functions/dungeon.lua index da7a0c225..8a6dc5a96 100644 --- a/functions/dungeon.lua +++ b/functions/dungeon.lua @@ -107,7 +107,7 @@ local addPlayerDamage = function(unitName, unitRealm) local eDps = damageDone / currentCombat:GetCombatTime() --add the damage to the chart table - tinsert (playerData.ChartData, eDps) + tinsert(playerData.ChartData, eDps) --mythicDungeonCharts:Debug ("Added dps for " , CLName, ":", eDps) if (eDps > playerData.ChartData.max_value) then @@ -119,7 +119,7 @@ local addPlayerDamage = function(unitName, unitRealm) playerData.LastDamage = damageDone --add the damage to the chart table - tinsert (playerData.ChartData, damageDiff) + tinsert(playerData.ChartData, damageDiff) --mythicDungeonCharts:Debug ("Added damage for " , CLName, ":", damageDiff) if (damageDiff > playerData.ChartData.max_value) then @@ -128,7 +128,7 @@ local addPlayerDamage = function(unitName, unitRealm) end else --player still didn't made anything on this combat, so just add zero - tinsert (playerData.ChartData, 0) + tinsert(playerData.ChartData, 0) end end end @@ -172,7 +172,7 @@ function mythicDungeonCharts:OnBossDefeated() if (mythicDungeonCharts.ChartTable and mythicDungeonCharts.ChartTable.Running and bossInfo) then local copiedBossInfo = Details:GetFramework().table.copy ({}, bossInfo) - tinsert (mythicDungeonCharts.ChartTable.BossDefeated, {time() - mythicDungeonCharts.ChartTable.StartTime, copiedBossInfo, currentCombat:GetCombatTime()}) + tinsert(mythicDungeonCharts.ChartTable.BossDefeated, {time() - mythicDungeonCharts.ChartTable.StartTime, copiedBossInfo, currentCombat:GetCombatTime()}) mythicDungeonCharts:Debug ("Boss defeated, time saved", currentCombat:GetCombatTime()) else if (mythicDungeonCharts.ChartTable and mythicDungeonCharts.ChartTable.EndTime ~= -1) then @@ -182,7 +182,7 @@ function mythicDungeonCharts:OnBossDefeated() if (bossInfo) then local copiedBossInfo = Details:GetFramework().table.copy ({}, bossInfo) - tinsert (mythicDungeonCharts.ChartTable.BossDefeated, {time() - mythicDungeonCharts.ChartTable.StartTime, copiedBossInfo, currentCombat:GetCombatTime()}) + tinsert(mythicDungeonCharts.ChartTable.BossDefeated, {time() - mythicDungeonCharts.ChartTable.StartTime, copiedBossInfo, currentCombat:GetCombatTime()}) mythicDungeonCharts:Debug ("Boss defeated, time saved, but used time aproximation:", mythicDungeonCharts.ChartTable.EndTime + 2, now, currentCombat:GetCombatTime()) end end @@ -290,7 +290,7 @@ function mythicDungeonCharts.ShowReadyPanel() f:SetSize(255, 80) f:SetPoint("center", UIParent, "center", 300, 0) - f:SetFrameStrata ("LOW") + f:SetFrameStrata("LOW") f:EnableMouse (true) f:SetMovable (true) f:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true}) @@ -341,7 +341,7 @@ function mythicDungeonCharts.ShowChart() f:SetSize(1200, 620) f:SetPoint("center", UIParent, "center", 0, 0) - f:SetFrameStrata ("LOW") + f:SetFrameStrata("LOW") f:EnableMouse (true) f:SetMovable (true) f:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true}) @@ -354,7 +354,7 @@ function mythicDungeonCharts.ShowChart() fMinimized:SetSize(160, 24) fMinimized:SetPoint("center", UIParent, "center", 0, 0) - fMinimized:SetFrameStrata ("LOW") + fMinimized:SetFrameStrata("LOW") fMinimized:EnableMouse (true) fMinimized:SetMovable (true) fMinimized:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true}) @@ -397,7 +397,7 @@ function mythicDungeonCharts.ShowChart() _detalhes:FormatBackground (f) _detalhes:FormatBackground (fMinimized) - tinsert (UISpecialFrames, "DetailsMythicDungeonChartFrame") + tinsert(UISpecialFrames, "DetailsMythicDungeonChartFrame") --register to libwindow local LibWindow = LibStub ("LibWindow-1.1") @@ -631,7 +631,7 @@ function mythicDungeonCharts.ShowChart() mythicDungeonCharts.PlayerGraphIndex = {} - for playerName, playerTable in pairs (charts) do + for playerName, playerTable in pairs(charts) do local chartData = playerTable.ChartData local lineName = playerTable.Name @@ -666,7 +666,7 @@ function mythicDungeonCharts.ShowChart() chartData.max_value = maxValue mythicDungeonCharts.Frame.ChartFrame:AddLine (chartData, lineColor, lineName, combatTime, texture, "SMA") - tinsert (mythicDungeonCharts.PlayerGraphIndex, playerName) + tinsert(mythicDungeonCharts.PlayerGraphIndex, playerName) end mythicDungeonCharts.Frame.ChartFrame:RefreshBossTimeline (mythicDungeonCharts.ChartTable.BossDefeated, mythicDungeonCharts.ChartTable.ElapsedTime) @@ -676,8 +676,8 @@ function mythicDungeonCharts.ShowChart() for i, bossTable in ipairs(mythicDungeonCharts.ChartTable.BossDefeated) do local combatTime = bossTable [3] or math.random (10, 30) - tinsert (bossTimeTable, bossTable[1]) - tinsert (bossTimeTable, bossTable[1] - combatTime) + tinsert(bossTimeTable, bossTable[1]) + tinsert(bossTimeTable, bossTable[1] - combatTime) end mythicDungeonCharts.Frame.ChartFrame:AddOverlay (bossTimeTable, {1, 1, 1, 0.05}, "Show Boss", "") @@ -727,7 +727,7 @@ local PixelFrameOnEnter = function(self) GameCooltip2:AddLine (Details:GetCurrentToKFunction()(nil, floor (dps))) - GameCooltip2:SetOwner (self) + GameCooltip2:SetOwner(self) GameCooltip2:Show() showID = showID + 1 end @@ -843,7 +843,7 @@ function mythicDungeonCharts:CustomDrawLine (C, sx, sy, ex, ey, w, color, layer, pixelFrame:SetPoint("BOTTOMLEFT", C, relPoint, cx - Bwid, cy - Bhgt) pixelFrame:SetPoint("TOPRIGHT", C, relPoint, cx + Bwid, cy + Bhgt) - tinsert (mythicDungeonCharts.Frame.ChartFrame.FrameInUse, pixelFrame) + tinsert(mythicDungeonCharts.Frame.ChartFrame.FrameInUse, pixelFrame) pixelFrame.PlayerName = playerName pixelFrame.Height = ey diff --git a/functions/events.lua b/functions/events.lua index 3b42f9bd9..0c2ce2ad3 100644 --- a/functions/events.lua +++ b/functions/events.lua @@ -140,9 +140,9 @@ local common_events = { if (common_events [event]) then if (not AlreadyRegistred (_detalhes.RegistredEvents [event], object)) then if (func) then - tinsert (_detalhes.RegistredEvents [event], {object, func, __eventtable = true}) + tinsert(_detalhes.RegistredEvents [event], {object, func, __eventtable = true}) else - tinsert (_detalhes.RegistredEvents [event], object) + tinsert(_detalhes.RegistredEvents [event], object) end return true else @@ -152,9 +152,9 @@ local common_events = { if (event == "BUFF_UPDATE") then if (not AlreadyRegistred (_detalhes.RegistredEvents ["BUFF_UPDATE"], object)) then if (func) then - tinsert (_detalhes.RegistredEvents ["BUFF_UPDATE"], {object, func, __eventtable = true}) + tinsert(_detalhes.RegistredEvents ["BUFF_UPDATE"], {object, func, __eventtable = true}) else - tinsert (_detalhes.RegistredEvents ["BUFF_UPDATE"], object) + tinsert(_detalhes.RegistredEvents ["BUFF_UPDATE"], object) end _detalhes.Buffs:CatchBuffs() _detalhes.RecordPlayerSelfBuffs = true @@ -167,9 +167,9 @@ local common_events = { elseif (event == "BUFF_UPDATE_DEBUFFPOWER") then if (not AlreadyRegistred (_detalhes.RegistredEvents ["BUFF_UPDATE_DEBUFFPOWER"], object)) then if (func) then - tinsert (_detalhes.RegistredEvents ["BUFF_UPDATE_DEBUFFPOWER"], {object, func, __eventtable = true}) + tinsert(_detalhes.RegistredEvents ["BUFF_UPDATE_DEBUFFPOWER"], {object, func, __eventtable = true}) else - tinsert (_detalhes.RegistredEvents ["BUFF_UPDATE_DEBUFFPOWER"], object) + tinsert(_detalhes.RegistredEvents ["BUFF_UPDATE_DEBUFFPOWER"], object) end _detalhes.RecordPlayerAbilityWithBuffs = true _detalhes:UpdateDamageAbilityGears() diff --git a/functions/loaddata.lua b/functions/loaddata.lua index f054a4729..a0ae5a5b1 100644 --- a/functions/loaddata.lua +++ b/functions/loaddata.lua @@ -62,7 +62,7 @@ function _detalhes:ApplyBasicKeys() } --load default profile keys - for key, value in pairs (_detalhes.default_profile) do + for key, value in pairs(_detalhes.default_profile) do if (type(value) == "table") then local ctable = Details.CopyTable (value) self [key] = ctable @@ -90,7 +90,7 @@ function _detalhes:LoadGlobalAndCharacterData() end --load saved values - for key, value in pairs (_detalhes.default_player_data) do + for key, value in pairs(_detalhes.default_player_data) do --check if key exists, e.g. a new key was added if (_detalhes_database [key] == nil) then @@ -104,7 +104,7 @@ function _detalhes:LoadGlobalAndCharacterData() if (type(_detalhes.default_player_data [key]) == "string") then print("|cFFFFAA00Details!|r error 0x8538, report on discord", key, _detalhes_database [key], _detalhes.default_player_data [key]) end - for key2, value2 in pairs (_detalhes.default_player_data [key]) do + for key2, value2 in pairs(_detalhes.default_player_data [key]) do if (_detalhes_database [key] [key2] == nil) then if (type(value2) == "table") then _detalhes_database [key] [key2] = Details.CopyTable (_detalhes.default_player_data [key] [key2]) @@ -129,7 +129,7 @@ function _detalhes:LoadGlobalAndCharacterData() _detalhes_global = Details.CopyTable (_detalhes.default_global_data) end - for key, value in pairs (_detalhes.default_global_data) do + for key, value in pairs(_detalhes.default_global_data) do --check if key exists if (_detalhes_global [key] == nil) then @@ -152,7 +152,7 @@ function _detalhes:LoadGlobalAndCharacterData() end if (type(_detalhes_global [key]) == "table") then - for key2, value2 in pairs (_detalhes.default_global_data [key]) do + for key2, value2 in pairs(_detalhes.default_global_data [key]) do if (_detalhes_global [key] [key2] == nil) then if (type(value2) == "table") then _detalhes_global [key] [key2] = Details.CopyTable (_detalhes.default_global_data [key] [key2]) @@ -321,7 +321,7 @@ function _detalhes:LoadConfig() --initialize parser _detalhes.capture_current = {} - for captureType, captureValue in pairs (_detalhes.capture_real) do + for captureType, captureValue in pairs(_detalhes.capture_real) do _detalhes.capture_current [captureType] = captureValue end @@ -388,7 +388,7 @@ function _detalhes:LoadConfig() saved_skin.__snapH = instance.horizontalSnap saved_skin.__snapV = instance.verticalSnap - for key, value in pairs (instance) do + for key, value in pairs(instance) do if (_detalhes.instance_defaults [key] ~= nil) then if (type(value) == "table") then saved_skin [key] = Details.CopyTable (value) diff --git a/functions/macros.lua b/functions/macros.lua index c26898580..b6b4adca7 100644 --- a/functions/macros.lua +++ b/functions/macros.lua @@ -4,7 +4,7 @@ -- /run Details:OpenPlayerDetails(windowN) function Details:OpenPlayerDetails(window) window = window or 1 - local instance = Details:GetInstance (window) + local instance = Details:GetInstance(window) if (instance) then local display, subDisplay = instance:GetDisplay() if (display == 1) then diff --git a/functions/mythicdungeon.lua b/functions/mythicdungeon.lua index 8f760a16d..584587fd2 100644 --- a/functions/mythicdungeon.lua +++ b/functions/mythicdungeon.lua @@ -141,7 +141,7 @@ function DetailsMythicPlusFrame.MergeSegmentsOnEnd() local lower_instance = Details:GetLowerInstanceNumber() if (lower_instance) then - local instance = Details:GetInstance (lower_instance) + local instance = Details:GetInstance(lower_instance) if (instance) then local func = {function() end} instance:InstanceAlert ("Showing Mythic+ Run Segment", {[[Interface\AddOns\Details\images\icons]], 16, 16, false, 434/512, 466/512, 243/512, 273/512}, 6, func, true) @@ -417,7 +417,7 @@ function DetailsMythicPlusFrame.BossDefeated (this_is_end_end, encounterID, enco local mythicDungeonInfo = pastCombat:GetMythicDungeonInfo() -- .is_mythic_dungeon only boss, trash overall and run overall have it if (not mythicDungeonInfo or not mythicDungeonInfo.TrashOverallSegment) then --trash segment found, schedule to merge - tinsert (segmentsToMerge, pastCombat) + tinsert(segmentsToMerge, pastCombat) end end end @@ -527,7 +527,7 @@ function DetailsMythicPlusFrame.MythicDungeonFinished (fromZoneLeft) end --merge this segment - tinsert (segmentsToMerge, pastCombat) + tinsert(segmentsToMerge, pastCombat) if (DetailsMythicPlusFrame.DevelopmentDebug) then print ("MythicDungeonFinished() > found after last boss combat") @@ -777,7 +777,7 @@ function DetailsMythicPlusFrame.EventListener.OnDetailsEvent (contextObject, eve local lower_instance = _detalhes:GetLowerInstanceNumber() if (lower_instance) then - lower_instance = _detalhes:GetInstance (lower_instance) + lower_instance = _detalhes:GetInstance(lower_instance) if (lower_instance) then C_Timer.After (3, function() if (lower_instance:IsEnabled()) then diff --git a/functions/pack.lua b/functions/pack.lua index f1b403ae4..0cc6ac751 100644 --- a/functions/pack.lua +++ b/functions/pack.lua @@ -649,7 +649,7 @@ function Details.packFunctions.UnPackDamage(currentCombat, combatData, tablePosi spellObject.counter = spellHits spellObject.targets = targetTable - for targetName, amount in pairs (spellObject.targets) do + for targetName, amount in pairs(spellObject.targets) do newTargetsTable[targetName] = (newTargetsTable[targetName] or 0) + amount end @@ -897,7 +897,7 @@ function Details.packFunctions.UnPackHeal(currentCombat, combatData, tablePositi spellObject.counter = spellHits spellObject.targets = targetTable - for targetName, amount in pairs (spellObject.targets) do + for targetName, amount in pairs(spellObject.targets) do newTargetsTable[targetName] = (newTargetsTable[targetName] or 0) + amount end @@ -1436,7 +1436,7 @@ function Details.packFunctions.UnPackUtility(currentCombat, combatData, tablePos spellObject.counter = spellTotal spellObject.targets = targetTable - for targetName, amount in pairs (spellObject.targets) do + for targetName, amount in pairs(spellObject.targets) do newTargetsTable[targetName] = (newTargetsTable[targetName] or 0) + amount newTotal = newTotal + amount end @@ -1482,7 +1482,7 @@ function Details.packFunctions.UnPackUtility(currentCombat, combatData, tablePos spellObject.counter = spellTotal spellObject.targets = targetTable - for targetName, amount in pairs (spellObject.targets) do + for targetName, amount in pairs(spellObject.targets) do newTargetsTable[targetName] = (newTargetsTable[targetName] or 0) + amount newTotal = newTotal + amount end @@ -1493,7 +1493,7 @@ function Details.packFunctions.UnPackUtility(currentCombat, combatData, tablePos local interruptWhatTable = Details.packFunctions.UnpackTable(combatData, spellIndex, true) --table[index] is nil spellObject.interrompeu_oque = interruptWhatTable - for targetName, amount in pairs (spellObject.targets) do + for targetName, amount in pairs(spellObject.targets) do newTargetWhatTable[targetName] = (newTargetWhatTable[targetName] or 0) + amount end @@ -1539,7 +1539,7 @@ function Details.packFunctions.UnPackUtility(currentCombat, combatData, tablePos spellObject.cc_break = spellTotal spellObject.targets = targetTable - for targetName, amount in pairs (spellObject.targets) do + for targetName, amount in pairs(spellObject.targets) do newTargetsTable[targetName] = (newTargetsTable[targetName] or 0) + amount newTotal = newTotal + amount end @@ -1551,7 +1551,7 @@ function Details.packFunctions.UnPackUtility(currentCombat, combatData, tablePos local ccBrokeWhatTable = Details.packFunctions.UnpackTable(combatData, spellIndex, true) spellObject.cc_break_oque = ccBrokeWhatTable - for targetName, amount in pairs (spellObject.cc_break_oque) do + for targetName, amount in pairs(spellObject.cc_break_oque) do newTargetWhatTable[targetName] = (newTargetWhatTable[targetName] or 0) + amount end @@ -1596,7 +1596,7 @@ function Details.packFunctions.UnPackUtility(currentCombat, combatData, tablePos spellObject.dispell = spellTotal spellObject.targets = targetTable - for targetName, amount in pairs (spellObject.targets) do + for targetName, amount in pairs(spellObject.targets) do newTargetsTable[targetName] = (newTargetsTable[targetName] or 0) + amount newTotal = newTotal + amount end @@ -1607,7 +1607,7 @@ function Details.packFunctions.UnPackUtility(currentCombat, combatData, tablePos local dispelWhatTable = Details.packFunctions.UnpackTable(combatData, spellIndex, true) spellObject.dispell_oque = dispelWhatTable - for spellId, amount in pairs (spellObject.dispell_oque) do + for spellId, amount in pairs(spellObject.dispell_oque) do newTargetWhatTable[spellId] = (newTargetWhatTable[spellId] or 0) + amount end @@ -1654,7 +1654,7 @@ function Details.packFunctions.UnPackUtility(currentCombat, combatData, tablePos spellObject.ress = spellTotal spellObject.targets = targetTable - for targetName, amount in pairs (spellObject.targets) do + for targetName, amount in pairs(spellObject.targets) do newTargetsTable[targetName] = (newTargetsTable[targetName] or 0) + amount newTotal = newTotal + amount end @@ -1805,7 +1805,7 @@ function Details.packFunctions.DeployPackedCombatData(packedCombatData) for i = 1, #allActors do local actor = allActors[i] - for targetName, amount in pairs (actor.targets) do + for targetName, amount in pairs(actor.targets) do local actorIndex = damageContainer._NameIndexTable[targetName] if (actorIndex) then local targetActor = allActors[actorIndex] @@ -1831,7 +1831,7 @@ function Details.packFunctions.DeployPackedCombatData(packedCombatData) for i = 1, #allActors do local actor = allActors[i] - for targetName, amount in pairs (actor.targets) do + for targetName, amount in pairs(actor.targets) do local actorIndex = healingContainer._NameIndexTable[targetName] if (actorIndex) then local targetActor = allActors[actorIndex] diff --git a/functions/plater.lua b/functions/plater.lua index decab52cf..bb18a08a5 100644 --- a/functions/plater.lua +++ b/functions/plater.lua @@ -20,7 +20,7 @@ plater_integration_frame.OnTickFrame = CreateFrame("frame", "DetailsPlaterFrameO --on tick function plater_integration_frame.OnTickFrameFunc = function(self, deltaTime) if (self.NextUpdate < 0) then - for targetGUID, damageTable in pairs (plater_integration_frame.DamageTaken) do + for targetGUID, damageTable in pairs(plater_integration_frame.DamageTaken) do --total damage local totalDamage = damageTable.TotalDamageTaken @@ -39,8 +39,8 @@ plater_integration_frame.OnTickFrameFunc = function(self, deltaTime) damageTable.CurrentDamageFromPlayer = damageTable.CurrentDamageFromPlayer + damageOnThisUpdateFromPlayer --add to the buffer the damage added - tinsert (damageTable.RealTimeBuffer, 1, damageOnThisUpdate) - tinsert (damageTable.RealTimeBufferFromPlayer, 1, damageOnThisUpdateFromPlayer) + tinsert(damageTable.RealTimeBuffer, 1, damageOnThisUpdate) + tinsert(damageTable.RealTimeBufferFromPlayer, 1, damageOnThisUpdateFromPlayer) --remove the damage from the buffer local damageRemoved = tremove (damageTable.RealTimeBuffer, CONST_BUFFER_SIZE + 1) @@ -134,7 +134,7 @@ function Details:RefreshPlaterIntegration() --cleanup the old tables plater_integration_frame.CleanUpTimer = C_Timer.NewTicker (10, function() local now = time() - for GUID, damageTable in pairs (plater_integration_frame.DamageTaken) do + for GUID, damageTable in pairs(plater_integration_frame.DamageTaken) do if (damageTable.LastEvent + 9.9 < now) then plater_integration_frame.DamageTaken [GUID] = nil end diff --git a/functions/playerclass.lua b/functions/playerclass.lua index a764daf64..baff40d1f 100644 --- a/functions/playerclass.lua +++ b/functions/playerclass.lua @@ -296,7 +296,7 @@ do if (_detalhes.tabela_vigente) then local misc_actor = _detalhes.tabela_vigente (4, Actor.nome) if (misc_actor and misc_actor.spell_cast) then - for spellid, _ in pairs (misc_actor.spell_cast) do + for spellid, _ in pairs(misc_actor.spell_cast) do local spec = SpecSpellList [spellid] if (spec) then _detalhes.cached_specs [Actor.serial] = spec @@ -427,7 +427,7 @@ do local misc_actor = _detalhes.tabela_vigente (4, Actor.nome) if (misc_actor and misc_actor.spell_cast) then - for spellid, _ in pairs (misc_actor.spell_cast) do + for spellid, _ in pairs(misc_actor.spell_cast) do local spec = SpecSpellList [spellid] if (spec) then _detalhes.cached_specs [Actor.serial] = spec diff --git a/functions/profiles.lua b/functions/profiles.lua index 7e744d7d5..b062b294a 100644 --- a/functions/profiles.lua +++ b/functions/profiles.lua @@ -56,7 +56,7 @@ function _detalhes:GetProfileList() --build the table local t = {} - for name, profile in pairs (_detalhes_global.__profiles) do + for name, profile in pairs(_detalhes_global.__profiles) do t [#t + 1] = name end @@ -156,7 +156,7 @@ function _detalhes:ResetProfile (profile_name) instance:ChangeSkin (_detalhes.default_skin_to_use) end - for index, instance in pairs (_detalhes.unused_instances) do + for index, instance in pairs(_detalhes.unused_instances) do if (not instance.baseframe) then instance:AtivarInstancia() end @@ -168,7 +168,7 @@ function _detalhes:ResetProfile (profile_name) table.wipe (profile.instances) --export first instance - local instance = _detalhes:GetInstance (1) + local instance = _detalhes:GetInstance(1) local exported = instance:ExportSkin() exported.__was_opened = instance:IsEnabled() exported.__pos = Details.CopyTable (instance:GetPosition()) @@ -193,7 +193,7 @@ end function _detalhes:CreatePanicWarning() _detalhes.instance_load_failed = CreateFrame("frame", "DetailsPanicWarningFrame", UIParent,"BackdropTemplate") _detalhes.instance_load_failed:SetHeight(80) - --tinsert (UISpecialFrames, "DetailsPanicWarningFrame") + --tinsert(UISpecialFrames, "DetailsPanicWarningFrame") _detalhes.instance_load_failed.text = _detalhes.instance_load_failed:CreateFontString (nil, "overlay", "GameFontNormal") _detalhes.instance_load_failed.text:SetPoint("center", _detalhes.instance_load_failed, "center") _detalhes.instance_load_failed.text:SetTextColor (1, 0.6, 0) @@ -235,7 +235,7 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) end --update profile keys before go - for key, value in pairs (_detalhes.default_profile) do + for key, value in pairs(_detalhes.default_profile) do --the entire key doesn't exist if (profile [key] == nil) then if (type(value) == "table") then @@ -252,7 +252,7 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) end --apply the profile values - for key, _ in pairs (_detalhes.default_profile) do + for key, _ in pairs(_detalhes.default_profile) do local value = profile [key] if (type(value) == "table") then @@ -296,7 +296,7 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) --check if there is a skin saved or this is a empty profile if (#saved_skins == 0) then - local instance1 = _detalhes:GetInstance (1) + local instance1 = _detalhes:GetInstance(1) if (not instance1) then instance1 = _detalhes:CreateInstance (1) end @@ -332,14 +332,14 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) end --get the instance - local instance = _detalhes:GetInstance (index) + local instance = _detalhes:GetInstance(index) if (not instance) then --create a instance without creating its frames (not initializing) instance = _detalhes:CreateDisabledInstance (index, skin) end --copy skin - for key, value in pairs (skin) do + for key, value in pairs(skin) do if (type(value) == "table") then instance [key] = Details.CopyTable (value) else @@ -405,7 +405,7 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) instance:LockInstance (instance.isLocked) - --tinsert (_detalhes.resize_debug, #_detalhes.resize_debug+1, "libwindow X (427): " .. (instance.libwindow.x or 0)) + --tinsert(_detalhes.resize_debug, #_detalhes.resize_debug+1, "libwindow X (427): " .. (instance.libwindow.x or 0)) instance:RestoreMainWindowPosition() instance:ReajustaGump() --instance:SaveMainWindowPosition() @@ -428,11 +428,11 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) --check all snaps for invalid entries for i = 1, instances_loaded do - local instance = _detalhes:GetInstance (i) - local previous_instance_id = _detalhes:GetInstance (i-1) and _detalhes:GetInstance (i-1):GetId() or 0 - local next_instance_id = _detalhes:GetInstance (i+1) and _detalhes:GetInstance (i+1):GetId() or 0 + local instance = _detalhes:GetInstance(i) + local previous_instance_id = _detalhes:GetInstance(i-1) and _detalhes:GetInstance(i-1):GetId() or 0 + local next_instance_id = _detalhes:GetInstance(i+1) and _detalhes:GetInstance(i+1):GetId() or 0 - for snap_side, instance_id in pairs (instance.snap) do + for snap_side, instance_id in pairs(instance.snap) do if (instance_id < 1) then --invalid instance instance.snap [snap_side] = nil elseif (instance_id ~= previous_instance_id and instance_id ~= next_instance_id) then --no match @@ -452,7 +452,7 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) else --is in startup for _, instance in _detalhes:ListInstances() do - for side, id in pairs (instance.snap) do + for side, id in pairs(instance.snap) do local window = _detalhes.tabela_instancias [id] if (not window.ativa) then instance.snap [side] = nil @@ -464,7 +464,7 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) end end if (not instance:IsEnabled()) then - for side, id in pairs (instance.snap) do + for side, id in pairs(instance.snap) do instance.snap [side] = nil end instance.horizontalSnap = false @@ -528,7 +528,7 @@ function _detalhes:SaveProfile (saveas) local profile = _detalhes:GetProfile (profile_name, true) --save default keys - for key, _ in pairs (_detalhes.default_profile) do + for key, _ in pairs(_detalhes.default_profile) do local current_value = _detalhes [key] @@ -1470,7 +1470,7 @@ local default_global_data = { _detalhes.default_global_data = default_global_data -function _detalhes:GetTutorialCVar (key, default) +function _detalhes:GetTutorialCVar(key, default) --is disabling all popups from the streamer options if (_detalhes.streamer_config.no_alerts) then return true @@ -1494,7 +1494,7 @@ function _detalhes:SaveProfileSpecial() local profile = _detalhes:GetProfile (profile_name, true) --save default keys - for key, _ in pairs (_detalhes.default_profile) do + for key, _ in pairs(_detalhes.default_profile) do local current_value = _detalhes_database [key] or _detalhes_global [key] or _detalhes.default_player_data [key] or _detalhes.default_global_data [key] @@ -1680,7 +1680,7 @@ function Details:ExportCurrentProfile() local globaData = {} --fill player and global data tables - for key, _ in pairs (defaultPlayerData) do + for key, _ in pairs(defaultPlayerData) do if (not exportProfileBlacklist[key]) then if (type(Details[key]) == "table") then playerData [key] = DetailsFramework.table.copy ({}, Details[key]) @@ -1689,7 +1689,7 @@ function Details:ExportCurrentProfile() end end end - for key, _ in pairs (defaultGlobalData) do + for key, _ in pairs(defaultGlobalData) do if (not exportProfileBlacklist[key]) then if (type(Details[key]) == "table") then globaData [key] = DetailsFramework.table.copy ({}, Details[key]) @@ -1747,7 +1747,7 @@ function Details:ImportProfile (profileString, newProfileName) local defaultProfileData = Details.default_profile --transfer player and global data tables from the profile to details object - for key, _ in pairs (defaultPlayerData) do + for key, _ in pairs(defaultPlayerData) do local importedValue = playerData[key] if (importedValue ~= nil) then if (type(importedValue) == "table") then @@ -1758,7 +1758,7 @@ function Details:ImportProfile (profileString, newProfileName) end end - for key, _ in pairs (defaultGlobalData) do + for key, _ in pairs(defaultGlobalData) do local importedValue = globalData[key] if (importedValue ~= nil) then if (type(importedValue) == "table") then @@ -1770,7 +1770,7 @@ function Details:ImportProfile (profileString, newProfileName) end --transfer data from the imported profile to the new profile object - for key, _ in pairs (defaultProfileData) do + for key, _ in pairs(defaultProfileData) do local importedValue = profileData[key] if (importedValue ~= nil) then if (type(importedValue) == "table") then diff --git a/functions/raidinfo.lua b/functions/raidinfo.lua index b64742b1c..4447c5e9c 100644 --- a/functions/raidinfo.lua +++ b/functions/raidinfo.lua @@ -154,12 +154,12 @@ function Details.InstallRaidInfo() for i = 1, #PORTRAIT_LIST do local bossName = DetailsFramework.EncounterJournal.EJ_GetEncounterInfoByIndex (i, INSTANCE_EJID) if (bossName) then - tinsert (BOSSNAMES, bossName) + tinsert(BOSSNAMES, bossName) local encounterTable = { boss = bossName, portrait = PORTRAIT_LIST [i], } - tinsert (ENCOUNTERS, encounterTable) + tinsert(ENCOUNTERS, encounterTable) else break end diff --git a/functions/rowanimation.lua b/functions/rowanimation.lua index 3b0ace1e4..ded336edd 100644 --- a/functions/rowanimation.lua +++ b/functions/rowanimation.lua @@ -29,7 +29,7 @@ desc = "" end - tinsert (_detalhes.row_animation_pool, {name = name, desc = desc, func = func, options = options}) + tinsert(_detalhes.row_animation_pool, {name = name, desc = desc, func = func, options = options}) return true end @@ -47,7 +47,7 @@ function _detalhes:GetRowAnimationList() local t = {} for key, value in ipairs(_detalhes.row_animation_pool) do - tinsert (t, value.name) + tinsert(t, value.name) end return t end diff --git a/functions/savedata.lua b/functions/savedata.lua index f2d80d896..fb303ad10 100644 --- a/functions/savedata.lua +++ b/functions/savedata.lua @@ -6,7 +6,7 @@ function _detalhes:WipeConfig() local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) local b = CreateFrame("button", "DetailsResetConfigButton", UIParent) - tinsert (UISpecialFrames, "DetailsResetConfigButton") + tinsert(UISpecialFrames, "DetailsResetConfigButton") DetailsFramework:ApplyStandardBackdrop(b) @@ -100,14 +100,14 @@ function _detalhes:SaveConfig() _detalhes.last_day = date ("%d") --salva o container do personagem - for key, value in pairs (_detalhes.default_player_data) do + for key, value in pairs(_detalhes.default_player_data) do if (not is_exception [key]) then _detalhes_database [key] = _detalhes [key] end end --salva o container das globais - for key, value in pairs (_detalhes.default_global_data) do + for key, value in pairs(_detalhes.default_global_data) do if (key ~= "__profiles") then _detalhes_global [key] = _detalhes [key] end diff --git a/functions/skins.lua b/functions/skins.lua index c7aac7704..4e522dda5 100644 --- a/functions/skins.lua +++ b/functions/skins.lua @@ -59,15 +59,15 @@ local _ end local reset_tooltip = function() - _detalhes:SetTooltipBackdrop ("Blizzard Tooltip", 16, {1, 1, 1, 1}) + _detalhes:SetTooltipBackdrop("Blizzard Tooltip", 16, {1, 1, 1, 1}) _detalhes:DelayOptionsRefresh() end local set_tooltip_elvui1 = function() - _detalhes:SetTooltipBackdrop ("Blizzard Tooltip", 16, {0, 0, 0, 1}) + _detalhes:SetTooltipBackdrop("Blizzard Tooltip", 16, {0, 0, 0, 1}) _detalhes:DelayOptionsRefresh() end local set_tooltip_elvui2 = function() - _detalhes:SetTooltipBackdrop ("Blizzard Tooltip", 16, {1, 1, 1, 0}) + _detalhes:SetTooltipBackdrop("Blizzard Tooltip", 16, {1, 1, 1, 0}) _detalhes:DelayOptionsRefresh() end diff --git a/functions/slash.lua b/functions/slash.lua index a2168427e..824a5d245 100644 --- a/functions/slash.lua +++ b/functions/slash.lua @@ -53,7 +53,7 @@ function SlashCmdList.DETAILS (msg, editbox) local instance = rest:match ("^(%S*)%s*(.-)$") instance = tonumber (instance) if (instance) then - local this_instance = _detalhes:GetInstance (instance) + local this_instance = _detalhes:GetInstance(instance) if (not this_instance) then return _detalhes:Msg (Loc ["STRING_WINDOW_NOTFOUND"]) end @@ -132,7 +132,7 @@ function SlashCmdList.DETAILS (msg, editbox) local instance = rest:match ("^(%S*)%s*(.-)$") instance = tonumber (instance) if (instance) then - local this_instance = _detalhes:GetInstance (instance) + local this_instance = _detalhes:GetInstance(instance) if (not this_instance) then return _detalhes:Msg (Loc ["STRING_WINDOW_NOTFOUND"]) end @@ -176,17 +176,17 @@ function SlashCmdList.DETAILS (msg, editbox) if (rest and tonumber (rest)) then local instanceN = tonumber (rest) if (instanceN > 0 and instanceN <= #_detalhes.tabela_instancias) then - local instance = _detalhes:GetInstance (instanceN) + local instance = _detalhes:GetInstance(instanceN) _detalhes:OpenOptionsWindow (instance) end else local lower_instance = _detalhes:GetLowerInstanceNumber() if (not lower_instance) then - local instance = _detalhes:GetInstance (1) + local instance = _detalhes:GetInstance(1) _detalhes.CriarInstancia (_, _, 1) _detalhes:OpenOptionsWindow (instance) else - _detalhes:OpenOptionsWindow (_detalhes:GetInstance (lower_instance)) + _detalhes:OpenOptionsWindow (_detalhes:GetInstance(lower_instance)) end end @@ -194,7 +194,7 @@ function SlashCmdList.DETAILS (msg, editbox) elseif (command == Loc ["STRING_SLASH_WORLDBOSS"] or command == "worldboss") then local questIds = {{"Tarlna the Ageless", 81535}, {"Drov the Ruiner ", 87437}, {"Rukhmar", 87493}} - for _, _table in pairs (questIds) do + for _, _table in pairs(questIds) do print (format ("%s: \124cff%s\124r", _table [1], IsQuestFlaggedCompleted (_table [2]) and "ff0000"..Loc ["STRING_KILLED"] or "00ff00"..Loc ["STRING_ALIVE"])) end @@ -447,7 +447,7 @@ function SlashCmdList.DETAILS (msg, editbox) local f = _detalhes:CreateListPanel() local i = 1 - for k, v in pairs (_detalhes.tabela_pets.pets) do + for k, v in pairs(_detalhes.tabela_pets.pets) do if (v[6] == "Guardian of Ancient Kings") then _detalhes.ListPanel:add ( k.. ": " .. v[1] .. " | " .. v[2] .. " | " .. v[3] .. " | " .. v[6], i) i = i + 1 @@ -460,7 +460,7 @@ function SlashCmdList.DETAILS (msg, editbox) _detalhes.tabela_vigente.saved_pets = {} - for k, v in pairs (_detalhes.tabela_pets.pets) do + for k, v in pairs(_detalhes.tabela_pets.pets) do _detalhes.tabela_vigente.saved_pets [k] = {v[1], v[2], v[3]} end @@ -554,10 +554,10 @@ function SlashCmdList.DETAILS (msg, editbox) _detalhes:PrintParserCacheIndexes() elseif (msg == "captures") then - for k, v in pairs (_detalhes.capture_real) do + for k, v in pairs(_detalhes.capture_real) do print ("real -",k,":",v) end - for k, v in pairs (_detalhes.capture_current) do + for k, v in pairs(_detalhes.capture_current) do print ("current -",k,":",v) end @@ -569,7 +569,7 @@ function SlashCmdList.DETAILS (msg, editbox) f:SetHeight(150) f:SetBackdrop({bgFile = "Interface\\AddOns\\Details\\images\\background", tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}}) f:SetBackdropColor(0, 0, 0, 1) - f:EnableMouseWheel (true) + f:EnableMouseWheel(true) local rows = {} for i = 1, 7 do @@ -621,7 +621,7 @@ function SlashCmdList.DETAILS (msg, editbox) if (not _G.DetailsScanTooltip) then local scanTool = CreateFrame("GameTooltip", "DetailsScanTooltip", nil, "GameTooltipTemplate") - scanTool:SetOwner (WorldFrame, "ANCHOR_NONE") + scanTool:SetOwner(WorldFrame, "ANCHOR_NONE") end function getPetOwner (petName) @@ -673,7 +673,7 @@ function SlashCmdList.DETAILS (msg, editbox) end if (playerActor and playerActor.buff_uptime_spells and playerActor.buff_uptime_spells._ActorTable) then - for spellid, spellTable in pairs (playerActor.buff_uptime_spells._ActorTable) do + for spellid, spellTable in pairs(playerActor.buff_uptime_spells._ActorTable) do local spellname = GetSpellInfo(spellid) if (spellname) then print (spellid, spellname, spellTable.uptime) @@ -839,7 +839,7 @@ function SlashCmdList.DETAILS (msg, editbox) _detalhes.id_frame:SetPoint("center", UIParent, "center") _detalhes.id_frame:SetBackdrop(backdrop) - tinsert (UISpecialFrames, "DetailsID") + tinsert(UISpecialFrames, "DetailsID") _detalhes.id_frame.texto = CreateFrame("editbox", nil, _detalhes.id_frame) _detalhes.id_frame.texto:SetPoint("topleft", _detalhes.id_frame, "topleft") @@ -944,7 +944,7 @@ function SlashCmdList.DETAILS (msg, editbox) local container = _detalhes.tabela_vigente [t]._NameIndexTable local i = 0 - for name, _ in pairs (container) do + for name, _ in pairs(container) do i = i + 1 f:add (name, i) end @@ -1172,7 +1172,7 @@ function SlashCmdList.DETAILS (msg, editbox) for o = 1, DetailsFramework.EncounterJournal.EJ_GetNumLoot() do local name, icon, slot, armorType, itemID, link, encounterID = DetailsFramework.EncounterJournal.EJ_GetLootInfoByIndex (o) r[slot] = r[slot] or {} - tinsert (r[slot], {itemID, encounterID}) + tinsert(r[slot], {itemID, encounterID}) total = total + 1 end end @@ -1277,8 +1277,8 @@ function SlashCmdList.DETAILS (msg, editbox) local y = -50 local allspecs = {} - for a, b in pairs (_detalhes.class_specs_coords) do - tinsert (allspecs, a) + for a, b in pairs(_detalhes.class_specs_coords) do + tinsert(allspecs, a) end for i = 1, 10 do @@ -1323,7 +1323,7 @@ function SlashCmdList.DETAILS (msg, editbox) local lower_instance = _detalhes:GetLowerInstanceNumber() if (lower_instance) then - local instance = _detalhes:GetInstance (lower_instance) + local instance = _detalhes:GetInstance(lower_instance) if (instance) then local func = {_detalhes.OpenRaidHistoryWindow, _detalhes, "Hellfire Citadel", 1800, 15, "DAMAGER", "Rock Lobster", 2, "Keyspell"} instance:InstanceAlert ("Boss Defeated, Open History! ", {[[Interface\AddOns\Details\images\icons]], 16, 16, false, 434/512, 466/512, 243/512, 273/512}, 40, func, true) @@ -1342,7 +1342,7 @@ function SlashCmdList.DETAILS (msg, editbox) local icon = {[[Interface\PvPRankBadges\PvPRank08]], 16, 16, false, 0, 1, 0, 1} local lower_instance = _detalhes:GetLowerInstanceNumber() - local instance = _detalhes:GetInstance (lower_instance) + local instance = _detalhes:GetInstance(lower_instance) instance:InstanceAlert ("Boss Defeated! Show Ranking", icon, 10, func, true) @@ -1378,7 +1378,7 @@ function SlashCmdList.DETAILS (msg, editbox) for o = 1, 3 do local talentID, name, texture, selected, available = GetTalentInfo (i, o, 1) if (selected) then - tinsert (talents, talentID) + tinsert(talents, talentID) break end end @@ -1493,18 +1493,18 @@ function SlashCmdList.DETAILS (msg, editbox) local sectionInfo = C_EncounterJournal.GetSectionInfo (ID) if (sectionInfo) then - tinsert (result, sectionInfo) + tinsert(result, sectionInfo) if (sectionInfo.spellID and type (sectionInfo.spellID) == "number" and sectionInfo.spellID ~= 0) then - tinsert (spellIDs, sectionInfo.spellID) + tinsert(spellIDs, sectionInfo.spellID) end local nextChild, nextSibling = sectionInfo.firstChildSectionID, sectionInfo.siblingSectionID if (nextSibling) then - tinsert (nextID, nextSibling) + tinsert(nextID, nextSibling) end if (nextChild) then - tinsert (nextID, nextChild) + tinsert(nextID, nextChild) end else break @@ -1518,7 +1518,7 @@ function SlashCmdList.DETAILS (msg, editbox) local instance1 = Details:GetInstance(1) if (instance1) then local exportedValues = {} - for key, _ in pairs (skin) do + for key, _ in pairs(skin) do local value = instance1[key] if (value) then exportedValues[key] = value @@ -1616,7 +1616,7 @@ function SlashCmdList.DETAILS (msg, editbox) if (t1.Timer) then t1, t2 = t1.t1, t1.t2 end - for key, value in pairs (t2) do + for key, value in pairs(t2) do if (not ignoredKeys [key] and type (value) ~= "function") then if (key == "targets") then t1 [key] = {} @@ -1747,7 +1747,7 @@ function Details.RefreshUserList (ignoreIfHidden) end if (not foundPlayer) then - tinsert (newList, {playerName, "--", "--"}) + tinsert(newList, {playerName, "--", "--"}) end end end @@ -1899,7 +1899,7 @@ function _detalhes:CreateListPanel() _detalhes.ListPanel:SetPoint("center", UIParent, "center", 300, 0) _detalhes.ListPanel.barras = {} - tinsert (UISpecialFrames, "DetailsActorsFrame") + tinsert(UISpecialFrames, "DetailsActorsFrame") _detalhes.ListPanel.close_with_right = true local container_barras_window = CreateFrame("ScrollFrame", "Details_ActorsBarrasScroll", _detalhes.ListPanel.widget) diff --git a/functions/spellcache.lua b/functions/spellcache.lua index 5f68cba0e..9e34a7e6c 100644 --- a/functions/spellcache.lua +++ b/functions/spellcache.lua @@ -89,7 +89,7 @@ do --_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(_detalhes.SpellOverwrite) do local name, _, icon = _GetSpellInfo(spellId) _rawset (_detalhes.spellcache, spellId, {spellTable.name or name, 1, spellTable.icon or icon}) end @@ -226,7 +226,7 @@ do end function _detalhes:FillUserCustomSpells() - for spellid, t in pairs (defaultSpellCustomization) do + for spellid, t in pairs(defaultSpellCustomization) do local already_have for index, spelltable in ipairs(_detalhes.savedCustomSpells) do @@ -265,7 +265,7 @@ do end end if (not is_overwrite) then - tinsert (_detalhes.savedCustomSpells, {spellid, name, icon}) + tinsert(_detalhes.savedCustomSpells, {spellid, name, icon}) end return _rawset (_detalhes.spellcache, spellid, {name, 1, icon}) end @@ -315,7 +315,7 @@ do if (not load_frame) then load_frame = CreateFrame("frame", "DetailsLoadSpellCache", UIParent) - load_frame:SetFrameStrata ("DIALOG") + load_frame:SetFrameStrata("DIALOG") local progress_label = load_frame:CreateFontString ("DetailsLoadSpellCacheProgress", "overlay", "GameFontHighlightSmall") progress_label:SetText("Loading Spells: 0%") diff --git a/functions/spells.lua b/functions/spells.lua index a73b25f99..264999338 100644 --- a/functions/spells.lua +++ b/functions/spells.lua @@ -4,7 +4,7 @@ do --import potion list from the framework _detalhes.PotionList = {} - for spellID, _ in pairs (DetailsFramework.PotionIDs) do + for spellID, _ in pairs(DetailsFramework.PotionIDs) do _detalhes.PotionList [spellID] = true end @@ -3021,7 +3021,7 @@ do local getCooldownsForClass = function(class) local result = {} - for spellId, spellInfo in pairs (_G.DetailsFramework.CooldownsInfo) do + for spellId, spellInfo in pairs(_G.DetailsFramework.CooldownsInfo) do if (class == spellInfo.class) then result[#result+1] = spellId end @@ -4026,7 +4026,7 @@ local SplitLoadFunc = function(self, deltaTime) local SpellPool = Details.spell_pool local EncounterSpellPool = Details.encounter_spell_pool - for spellID, _ in pairs (spellList) do + for spellID, _ in pairs(spellList) do if (not SpellPool [spellID]) then SpellPool [spellID] = source end @@ -4049,7 +4049,7 @@ local SplitLoadFunc = function(self, deltaTime) local SpellPool = Details.spell_pool local EncounterSpellPool = Details.encounter_spell_pool - for spellID, _ in pairs (spellList) do + for spellID, _ in pairs(spellList) do if (not SpellPool [spellID]) then SpellPool [spellID] = source end @@ -4068,7 +4068,7 @@ local SplitLoadFunc = function(self, deltaTime) local SpellPool = Details.spell_pool local EncounterSpellPool = Details.encounter_spell_pool - for spellID, _ in pairs (actorToIndex.spell_cast) do + for spellID, _ in pairs(actorToIndex.spell_cast) do if (not SpellPool [spellID]) then SpellPool [spellID] = source end diff --git a/functions/timedata.lua b/functions/timedata.lua index b208bab23..5b6adc316 100644 --- a/functions/timedata.lua +++ b/functions/timedata.lua @@ -124,7 +124,7 @@ version = version or "v1.0" icon = icon or [[Interface\InventoryItems\WoWUnknownItem01]] - tinsert (_detalhes.savedTimeCaptures, {name, func, matrix, author, version, icon, is_enabled, do_not_save = no_save}) + tinsert(_detalhes.savedTimeCaptures, {name, func, matrix, author, version, icon, is_enabled, do_not_save = no_save}) if (_G.DetailsOptionsWindow and _G.DetailsOptionsWindow:IsShown()) then DetailsOptionsWindowTab17UserTimeCapturesFillPanel.MyObject:Refresh() @@ -160,7 +160,7 @@ local new_table = {} for index, t in ipairs(_detalhes.savedTimeCaptures) do if (not t.do_not_save) then - tinsert (new_table, t) + tinsert(new_table, t) end end _detalhes.savedTimeCaptures = new_table @@ -192,7 +192,7 @@ local func, errortext = loadstring (t [INDEX_FUNCTION]) if (func) then DetailsFramework:SetEnvironment(func) - tinsert (exec, { func = func, data = data, attributes = Details.CopyTable (t [INDEX_MATRIX]), is_user = true }) + tinsert(exec, { func = func, data = data, attributes = Details.CopyTable (t [INDEX_MATRIX]), is_user = true }) else _detalhes:Msg ("|cFFFF9900error compiling script for time data (charts)|r: ", errortext) end @@ -200,7 +200,7 @@ --plugin local func = t [INDEX_FUNCTION] DetailsFramework:SetEnvironment(func) - tinsert (exec, { func = func, data = data, attributes = Details.CopyTable (t [INDEX_MATRIX]) }) + tinsert(exec, { func = func, data = data, attributes = Details.CopyTable (t [INDEX_MATRIX]) }) end end diff --git a/images/spec_icons_highlight.tga b/images/spec_icons_highlight.tga deleted file mode 100644 index 3f24e992f4102f8970ba9ee23009760af5da6d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1048620 zcmeEvub137({-P~z|bY%IUyfd8oF$0XkfG82L=ZQ1}=Zt@TE;d1M>$2KP<4{drP`< zNh;ZL|Cmg6M}2BamP)0nlI$zX?w-Tp#i67ZhZq0v|CgiZ%yR^uBk&x7=LkGU;5h=% z5qOTka|E6v@En2X2s}sNIReiSc#gnx1fC=C9D(NuJV)R;0{_SeJpA==R)T})e-g>B z_wU}*uP{CP|L-1u%@ItFf7IL${Q1|;{}1m!gy+A;o;--xKdmet|I@$V{Qoe%{u3LR z-lREFkNIn~BmL13%dWUyyhUG1*XUVo`^Q^#abCl}B=lpaKQ9}3o<9M-3(6w7!`}Yq zuhj}dIQbbsOV{=P8frYfS1^{&t3dofy(iz6`46DgvE5O>m=H%`m;bLe?0Sv*|AFw~ z3@07VZ$UU;Dq`8&^BdHYI0%RHgCol4&tKp>{B32S+EVO26rZmf`?kL)d>n?r#pkLx zulfCeFq6*z&Gb7s31eK*7aW7ubnUHk{&oIy?4QS<5qi9H;H5j4d7UHu_>c$}McDEg z*1RcnI9@j&=p9ox__=^}uTy<6?{G~zkX|%&olS?s+woh({L)7l0#@(R z=f-boM;+G?=bxu*<6F1SKHklL;WvZ8e24$ZfGR-3e+%3j%)lmqw_XE;&T|0wjQ z_HE1eZ2Z@}o)c%#+vI{o{I{S{MtR3?iT~Nh+xw66)7Iy_?_%Et8+0m72fRXdJ82?{H$0!6F=Qg5`c}ep4e}0Ei%Osp{IY-qf!hF?XA3*x= z%%Q$ZkJWeAkKsPB9~PDKpZOVrkhM|UYw&-jzr8ZVd=am6eqPXaUfYQKBHsV&-k0vd1AjKEN`%mTZoRp%tgM^LHt);=m+XADi58%P?y=j>*4u3J!z@ zjUk$ZspvxORe3$<(cY#wZLH{sW0K}g-uG{@zu1F&f5ZPP_5ec9Q(@q<$9{kRzjp60 z?CEYc6@N;c(;fh^e{Z5LC5xo#JfaU$IF8BN{_jYBrQGj_>;G5SB*Lic z!x-?5B2R5xGzZ9!jV#;o%@thLdb%zSQ~nc=c<*vWobT3F*V7AaoAQ4~xAp;S{fkjb zXZ<9{UO)Yq>F35Wk^hfw$N4+r1oFPM$G%Q^dxpaMWRS|pabV9^eAyt6;xJYEAhG*c z^Wi(%l4w(*x5&G_BFpC(q;>=(2uqfNp zb7H$_vHLZi>ymo;MMiZmU%x!Re)sxJ{@d>_3O$_C`-zH+INK>5K75|(15Ls-)3%Xu z_>UVo#YpzN!G^D=17$qDOCwKtVgN#CwCw!gxEq5$X7Hx5YxOvEey5JopBX5JH?d!H zTn#4pp9q*}pP$9X#k6SRLQG z&pu{T{tN&Afop&%|EqE9V`wqf^`4_MMfv$Y-|hQJ*iXBov^8gLR*&CcGu$VKAr)=m zKQW)gH9*%EWl?!67dfBHI-Nn=RhbU=iTR#9{&UU{|84H*x+sp~oDO(qBs+-xTo3Tv zB&odRU$_rBu18gv>NXC~pbB-Ok#6n@jIn|F2${LT}SXexLtX(`@KV^}u#NLz&mv+^qxX1LPz8U)p@@0(Btn zdun1aW#`EIMwiEbj_suGN0qy9A7B)LUA8kOI2(7<6NqEv|1RGz^+DJ_YQKj6jQ1M8 zvwozvDaT=$X4{8yTniHaX@}7X{98lSeBrZvo$cb?DSvM9pXVj_0Z3Q`m@VWa;=TwT zhIWRYr$Q%>dw=2+)Ydf8N$e*U68|Ohe)^t&X`{A1=U%`}n%Dyvg}~X~_ut#7=OKs@ zV#N_;LdXgc|9KTB7yiHadOnjZzHETRHsKl|uMbRSdMq|=zu13#ITX$;V@$gqEpZKi zxz*x7$HfxX0sR<-v6%P&RoK4o2j^n8qJ+cazs_#TlxGEO1KW=%(>g$MXRPgP1SU6<=p}&;8y% z*8#-*7XJLV|=M?UAs5yz7%=d7p)Bgzb^8hdWhTS zzireo6a$X;HP0f-XJUIjFCY)>daSa@|Ev0*8KVcRm$rN+ZbmZgv;IhiWgL@HohwH+ zOfzjO8Ll^Mf1h)K`~3O&#BgquIioXqox_`@Kepxb149EM0*P0h1vhX|5~mzx#pT7(CX=vp)s7AS*V+pA$s6p)G0Q4CCHz0a zMy>%0{!UdR{1yH$-(hLOe*GctX)SRr?Gx7k?K&U_ z;R4?ouThF)$u&T<4*0}(aq@3wfYa*3`P7ig7tXO2SsUQLtslXej-Unq*)Dy!2Ji_^ z#P)8N@AKd3Lx(Wv;(mA8%kO&-S7xw9v7l`eYkNX*CiX(asDap6bQizqvn?B4&Q z^V{_4PLMi;|FJ&WIiS$_BI|Kq`JpcCxfc8%_BXQQ>hj3*gq^FltouLol{y#v=e6Ii z+h6UHh&so4?@!_$%4r#W;yAU#;;;Xg>d2S=R(*wBSAT{7 z*|=mz{tJ(6T?+1gL$eauIw1B7|0&z90a$jsHNbxVBm9R+jE4UXKO&9KDVK{&Zoz#U zTeRi;u{ne>GERNChd6?hY_5Q(evonLaGrkN(awS0{%f*vF8Mr0 zjWxh-|IP0*3K|XYjQhlbpS-8PXB;B`_q1Q`b0@H$v75pF^Ph<4sh>|z3I8?D;>(%o z=0uq%Jfn~9jNO+-B$hE@-t>C>r@r{!pEZp8fTHnd8RUP?z5fqf=?1n=mD69P$HD)6 z--lsG*lH5?3;*-86kf|cvE2y&S)Tkzy6Kzmhxnh?030*c4aYjF<5)*2k}YLtd?$m+ z_Wl1W%i$5R|JL|ly-8=?4*sD3eZJG5Q7XPdpw74Wf5z`Uz@mixkhPD#!_RV0dT)P> z|5^jE9TV38Oq?&wY2L8Rrvu{N+1lFPAMf`cI?$03`}6q=`XAb?-*_NTFT-ATT_FCG z2ADkMzu%*WF$nvZga^9!C%cjx%0>PGs0yR_)FFU^!`&G?%o4*vp~U(y!%h{~8X*^CqMF zea}aFDDy7UNM^G9TKsSP3w+n_7+74!{;%50_uk+yh*8Jmj(q$boTTH-zk{C^YDexZ zF6!J5V6t}ttnc((f&M(Oeb$+zaQvw*Q~knM#~u1E^Z$H;BP70qS-ppeIevtZB+hsD zKa^ziH1F>DsdFYFi12H0t(VW9&yRnEuh{peWr_HW9DSHSS-IA4wEhKFawH~1s3I$L ze-3|RT><)rG8?P1LUckd`+z;bJf?g2y#Hyw6y3;Jto1%1k1y!IYxBW=TRiDbeJ}ut zF4b?>>TGYLW6J;ZeoHn&#*kB|KgQY+n-p~!>Ywl$Ao9N(lO|?Xul;`3(Lcr^l2h4x zyrZ%uLs`XB?L422BY%f!rZ4CorJ*l+4;BLGg8lfk*q@Lg-6tgpp2?(?bfqX9Yl#CX z`rvs23@!ghgfc$aG4@|HCdTo+;2VA)l=Pl$V;cLP?^SKzn)$fBh2ZcP>Q9v6zV)!L zo7TMtzOXOx2lOwBZJ>M_vc#=DM8o84)p~)LPu~{oC+-{mS9*#6A3?sa93R*?lTtrR z9Etx?Dr*3&1$sM{_N_j5jBJ>)ueA<--_H{9U-@E~Lp0Xi692otN~b|4tpVUw=tEN; zI^W17JrVw+cSZy~;X};NRDSb+xzBG6b~2IU@AjQS7n?x)a7R}>l)v# zXdC$-#?SX*dosWql@V_~wD+07`-7ty{8v1`wR>!N+}V%%T;tTUR`2SN4b!ka@t=4K zfkZsY2mw(uV^oR@Yk6&*Rl`+w?C@_D}Z;EyF^JL5dKBmQd*Ku$A^nCHjgKd)c-=-yvX zNN61s_W=Cw0B|j!gwX)*lU}OG^3-N^nU_jrxCS8hGaa}mK^=1hu`tcHx8DVXa2k`$ zp>eu>B+ESjI91WcbNs3Pi2b76Z|J;iD%dal_kOkp2FFhv`x&z+ZN`!VgNB9L`+r*t z=zcbH;Xk==%e?&-K#m`=pY$FvCrQ@&_`V#gyyZLY{i%DDO1}`O@)iD@&34-1PkWZD zyyY4DTio~kFlIc~N9zC{6Z^~kMUhxKL5yq-K-;$00I~lkjBthj=*Qcqys)4Aj`#i# zc$ZB5Z{t6%l(b(q68mq8|J0qR#$4h)iTC~)`*GhcS;Ks9m+Z@2*iW9G0i?FXe&K)8 zrLo{T1eDhSw57I(?T;YIhaA;mD(wvaHM@ZOkhZmeik4>p`HuFOgEPQ?p2s9%zj)E7 z3}oOzrd(+6Iwn70ND7eTJx85?W=op~6gnTu67xI!N11(Ssqh~q1N;y5X4_~!PPt-d z!ZjPk(i3e>^VRdP=)2LgYvUSwP$`PV4LFdx${1>ff z2dT_DmmFx1IWJS z?u4P4~h>=gqs1 zXhK?KT^`pWbXLgJce6Ry~jmyJPpqwh2>n`w;(S zNBw>m5wzCJgfl`av1HBla^*wu4xhX4@AzUR!X0O{h~MeCNfERStdvp*N#d{O9Eq zYAitH%DXi{a4jpk)yD*fNSM0)BlB;B{q!-7CfO%h2&d;=_B@D_lu2uV1^ZL^@)uUr zAMOtl$Nd^W_@8an6{fT#=Bo|XN{3UXTJzGW-96?tz$N$(P4*qYD0ZKlk&a|m%l6_w zeC_m&uZ`S=F?o;w+^g_wfLq{yIvvm#`{No#>y!t(_b29ydix`vd|ASOn4I?ke4Wo9 zldl#Z*g@aTf7(Q%?C^dV)nRfveP5;!+L46+sgoN2xew4J^it_0?w@hr-r~RHAY5rs zx#zm~S6S7j=}$5Z$6=T%TOqL=+xe!mGr)h!^1I+os&q)-+8zM#->0xWfYH8Zko5`s z?f##3s-H23NSJ2YRx-p#PpHKIYJvwM9G|is6jdtzU({8|c~ zkMy#?_TFD|=4(3ZrtqK7Ms8&PJ^UZ)!~hKI7z@_lnkxJU_EW##1F&&nzj`*8=Y+SF zz0E5nzS%0NZbQJ&-I7cPm)c-bdUdN!7GfeGIrlD{3mblpD3eV z7BjdW$@qUle9&Jo=R)VpD9T39JM5=w=g(B0_)luvjWIozrMxKVBKH40{HG1T1gtfL z`{cdt@_Va}tyAJmi}kSl*wnF1dllrQDBjQ*r$(Rb<;=)Q`~Db12q*kkUNV{UUJu<= zWcZI+JH-D+2M=2vJm&gadjNK9WtjW1zpV~52~#V#9M@-NI`8ixy>_9>f1SF2w$yjsI{q;l51g8UW`7%jtvFt4{c@V{%&qfS+7pzV}aS z0IC?obYD5tgsJG)@AQtaAFZ=L;Q8Kv^zMnh6Ty2iP;f0SeNyKmQRIBsHwrm0VV!Jc z{XK|l00eBIwx1j??E!RafpI(||5+CL8RNg3qb?g_KjY`|U)az70{lm5!g}JpWQqUZ zL8nX>iv=eZ6NvwA4S+s^IT!nnmhs+yv+qy2L9Euxh5s!k?ZJQeZ`e=1P{Dpo7d=Zi z&ijAu0kAH$0SlAr9T$!YSE)m^eE0h8_cQ|4I>gzB-WHwjiXBUt>M^8z{K;f(Y@6M+ zm7MXB9+r#3wxRRvkLz5|nKxxL=mXc4Fpi{han`%Ub}bz#YZv!ZS4Y{jHdvHc-#Bdb zr1G>w($?`e0^73S7)4=<+wy#jKJI^P%4&LO6!_0_Th9%Af<>l=o-y&*o;7$~_zk85 ziS?3EJ=Y^#r|5XhL+2;jt?E9%0ez|m!wLfZ^m;R7)wz!58}-aAvQ_HuV0 zZ|kMpo;z)xeqc>N(jK~=b;Fy=ejM1?wdMJ^b3PYTIw&i@?ROsg=~%4b5Iy!`Iw zW>bKk;tz3LALc#wGcWvy4Dr8wJpSw6|55NC7Wgp+rgbCi>#xdl9pL-Z8o+a3-{dv( zi2u|>t}^mJSf1;ue!{V5VPg-EBm5`sOE0e3j8Qp`bmTI=dqBIwepr+0#EV?C2asip zOwl=I3z~%~w2k&u_@A839p&$<+sl>Xd$c3lcLG%weR%+TbuiT+Q^Ua zJkK4ooA>lQ#u}htzvRSu|NmI{pYLavnBHjL|Fye+@%|6<6ZmguWS(Kf{Sf8-{-Y1O|JQwgy7z|*XhX_lxym6YyE{4B8r}a>FX9)i0V*BZ_nopQbbjQ6VL$A) zgg&#wnd^%cseH6Ydt^KJT)SNZWbK8uwnS?HFC(lM_jN%YMPY(#!8qz17WezOu-L}* zZ?v=g_}-uO1^d-5_lHAE{{Ei@#U8Bzu=hW8{~!6Wl!eZhz81Nq|H-oCMgEI6SEUo; z1sx>LtM|bE_Wu8j^*PDE8#dv`s{g`&I1lqPA>Zm%ou6}68?^tmHT8{T_2m4mAb)(sF?E9v?{8S|`|<6Wm(P^*)XLd$=zMKc-Hu~u zsaBpkdSeePN~f!OzMqmFaLKj58K`p4iJbmAt2$j*=`{1?sw3yM+#lyWSePQ&R0gY| zDXzD=BWg)2Yh9D0o=mb0_Y8<&SslSL9HmtB@jhTpH`;Jrz`tz2L80>-ZMJk;z3jdj zFTpbBT=00z@lNvi2TZ{N4Xckg9y z?hC9-m4B$UWBWgxoO_M`JU)S>cgTZwk*=r=i@I3<@3|a2YNs+j|5m=?I1E!I&w20z z7>o-K>^OpWhOMXfxK4@Cd;0LVJ=!?@$Yqc)?5Ct;6mP!I^AW^ndF1q``HZc>kJRHA zN1-&jZidd6{%HqVS0vjm;NP%6PO9|J>S^s59sig5SFXKvf7|{S`4RpjMn#6#9_3@I^;bVv6CUjJj`KhN$E`-%S| z_;eulXZ-K5pYV_fDdqTq2tQ^e~$k<$|FxsD(^QE`)`Z?b`6tp96;rN zw?)cwta8WWSk`ms{QX3&OUl0;?Ax|;m%^++ADg!78~9HjT!H^jP{- z-%L8@+vf9@SymYFFwxE+qZ92Jsgfjqu0p zzsn!!Uix0%4P@Wm2H7&;C=Qd^e=+{2(L0~H2jKPr&{K)cY@RWkm2Kq=_hpOc*ayh6 zU|mvO$2q&X4}ca%CvYqCx}*FRKCmzT_UBqZ?X^Mni9Z(pBP!$1XViIe*w0o&{8#K4 z_lxkKp$oB}V>n8v+s1yK*SzjL;F?W>!c`jX0lW&@u8z8!5ttrZ{SN9^{BQl3!GGQR z`?ePTfqkkYKZ10Oe0Trv_cf6x=1achGwyROfVEbsAIE2h|4^bN#XMHN;flBFbu4c8 zY2Q!yt?Eqv{{?K|zu^u0Cib`Z&vK<^4WPaqM>b3_+mB(++u2Q*ajcJ*vwi<#-In+2 zqx*H($*3k;_Wp_gOqC7px?7c7>l*ucJ|_IfJmJUNSm#j{rnNT1x^(ZYHy6x>`~9(? zEo%Vwy#x2G_1Eb{?^9*zoR9lh!+$8Z@4pTD>7366l}(K4*8V@dnE!Ac z;P(BimZNy^{MSCfscK>Uj!(4V-amaDrR+c7VG7=3!hJTAU1vu2?kJ}&7_t!80xa|8 z*jp}Ts`K@}{c0Z9M83b5-lN;_-`Ql(`-#D{mE6}U@BQF<#uMuT`V^E=?!A2yzxe2BL5Tj z=Om@C$dH)wcf!5@=l?(#NM$DXig(N_=>hhTsyHq>M$W5`j$_87b^5Ii>eO%kNI&2C zFNAJwRnL_@iSt);m^^)Cz5hSHtYPx~{|3FJQuYo~piyE?>C?Y&BwG`Qx-c#M)bdm1 z{9io~#9V<9gZVkKd%8S*DZ={UvmbbI35Cu}m(~>Ki;YS0i}m)7iOP;C+KjkJI&@5~ zGIG6JsIv0>3eSX4S@g8+B)`V>j-T(_@_2rIMBk*`9;{2M8*=KhGXa=%q)vM-UfZm` zp?#=lZ`~RD7N%D`$NOPCzfFFnpU(MQP}$6}u{FT&=>Kop@E-mz>s;pH<-X4e@}%}d zoF}z$Q+d$lbFqc**olxmq*nwmwD2(ntO={~r@^ z%By~e!9naOOUyqyx*PtZ4;U%>?S#`AWZyy5_YlE-l5EVmr$EZRJ-)~v+$pGGvhk(tB>YY^65nw-cs@)9# zPTjUHboR*hjQ>s#vR#_*Zv+3Kd0y9qtgS2MOT$NfZN#s0J{MGWb8Ob|pXcuG&uOIv z_Eb85R`4GaEGJ<<$9}>7z4$L}5r6v@_bwA-70FPa%6(pC-Hg4kpQ4Yr{|SAP*f+vs zbOgsm7;>Xj?1Vth^BF(%K~Z%7|GIe;PR#cyBT^|cn@kt=)x^8xRF-hx^1tUY@|@?r zzuJy*f00>ykxwJ{OFi`GdmZ4uB^=vcK<=1x%kZC-d+}d;0Mr$v#99xKNXOos5@U-?vW+rM<4`d4h(uzAz}Xb*rou_$Hd#)%JBmZRSGX>zDj zd3$Va2iQ+pwVUO(2FP(yUpPtqeZO=+L?oeG)&dKYQ^%zk8zVbEhxqpZ0&yzPGcr+a14odt8@KXB520 z$hmgA^Tc*xzSjv@C~JV5;y>O<$HmuEx$lQF{{ElH1lLx{@c-mxunsWH=ia}byWl<& z*H^y=*wP!s5k+C@;?MhjOXRsD!+qxcv->2q{+IjzY)AZ;(QLte|6m{BNEs$R1BjCC z1u(LXwD&I#9q_cJ(D^_v?fH-J-_BT=4+})R|JNP>Ig{@D?Y^A0@RMy~eJa6NH+S_~ z2k`wLC6D`Tr^GdYY)BlnkBt9i{~x}=!TUY~$ZG)3Ma6OlhiI6Jt_c5qgo*uj@2>m* z=H4IL%ZTv4-|qeM2(gaDX94Y=Klc#SkL31pi@j#Uo$#O7&u0O$6))@A{lH#Z_sIJ- z0QdgYw{#T0-}ZBY-zAhB_$YaqG`@M?U;F>)6n^tuy}{=M9m02VeY~xzr)=|~Eh!ng zAd8sfegCI~{|NRuS_9DbWfYNz+$!-m03sQ~bkvczI(3W?*&1Ls{_EbKeKSuRkI;&5 zSH5G}C3MQ|#Hlx-1zx+r`=ZpDFkkxFpYr5y|I#tP@1}gqrN8~1MR*Y>Q-CVyOmzM; zBMv#rxE{6+Y0&?;H;rQ>79jr}81Lx~0#8yq@Cql6@SAnyJ~0SP`JI4tkpCXpClWc% zb?et`V4ka}Ou0|_;yAKlf+>sdmWSSQ|F1ff@K<<9tW6(T!7@*|UTgdlj;V*7#1GGR z`z-tVJT{24^1KE!PfsX0A;52i3!DF8p&^#>t2}iqs$Rt!rk5l_<%Jd z2wq%5q4Qps{4ie-Q;n{1U|+%iT&MQ~y^hib<6FMV?tYWT|Hdt4*|xOF$6nt|-qs}E z-Z(x`)upL866cGJ%tQajxQ{7)uwq({eU-j{AW!nX4r0dd0W{wQ=$y|5#TI-1V`~g_ zVTtG97u;zq@9@C#?GM-Br1qn7JhLgk@xwgkmVL-c!vCf{uKL+7oCmPU;_zRTF-9Qb zzs|`Z#+&{JZAxtR)IEGTb?vg@sXSTU$wYmm`#idbxQJdi*8u5@IA4jp0shN=&tVR1 zYDw?xiL;*ZkQ~-UfISk+j2GLVjYus!hSxNAh}pndG$fw$)G4qovg=yT@#Zv z?Oz%Ra@f!70u)w+UdyrNTQxjR3!tS&YXEVRNqVTm6R)XuU3L9@Z)6}pN|i1M<+G0K zv!x$lf5Ly5OOp#V*e~1{r=C+Lm=-3v&T^47-R_xpTuGds&U-X!*STzuj_ zfNY4?0O~JuurQep)GQqS+5LQ5reoFvAFPeI>LPw}x>;|ZeYW;IUy{A^%V?Xo6d68s!EPGYvxbFQE@9|%I z|4-%qpL+mpD*nmO2~PYM_KO?l1NWJR_`l%3;<`Ehi+yYO@5X7u{zWIJquMU}-Y7zO zy6-oCIK7cre$1SCCf@rm&j6&W-&PDzRgzI$+fZj!sHZt66Ui+ zd6qK~|I6M#`bcGKdqA$A+NOE`>vo&Ia$Z0PuOTP<%*cEG!G8M6|9KnPJLSLTxcTJv z0B(){ehzVzMZSD3Z~G98xod0p{*&&Acx3ALo?(_%lL1rh7pPqw)$hn%pV)-3oB|G4+h@j+Yd{XYf# zN0cq5*RBDG{UquW_S+tS$9~rPv%sE_r#7-9bFeU(e$+V5YrlmR+~Yv=+@WgY+i&H$ zzD(D8d)|vZ1g-!`X+J^V{pNAbr)L=UEF;N{`e2*T&d~YV@1*nmCcRzGcmG9{J7$X7 z>?zZp4r9PXy-JqHG4}wrcVb^T!JDB?L0#y4E9bAD<`>3* z`%J_K+Z*FCi21gyj&1Fbmb`ms(w?bsO$b>(EqgZm)ROWfytn^>2H&ZE%B=;nEE zwenZ>`EW}2r*4nByyw5}%MSlN{&QL>Mj@`cddYdt_TL(rg#U~OROdQAN6@nbm3cim zk9EKp|GmDh?X>@PeSvMlesad(n2Gs``DSf+Jtb~0F-&>Q1#Yvox>3-{ONZLE`uy=l z_%Gb|ecSl-w)noL^7y`2D%Q^WtaunC68*pK;azZLAAy*AIj zew?h&5-*fZLep>-xU~O|34A`eO#hEuL~aY z6(@28xWpL8qh!~zg8jBe;}v#U%R)>2@!0S1yGVKLZ}H!2k{*;1_nC^0oU_92Pmlj_ z&ifkWhyG8rjr2{Gb*9tDZCh&@wrSeg9(7&=OzPX=zwlpNvAqQU*>=HyKD9{i@F8P) z#lz#j`U`l7|J30rXgBgc7z@LH>;Z@$vkbZNlQD-~HU1}`VXPi&2l&6H+k$3sTYS{B zFSXl^{}J}nXMM8&(!ZNK{4e+Jy0B#C=&Xb|#x;wALjj z8RqkTSJdbt?r&f}eTq`&D}+kf={=r2fqdCx=7;zGO`IZ|V6@FeSBGqv?3sU$|KB*% zEFl8(AMOS4dg6)q|Ge-23erc|4=(I)@BP((&Ec23_t*VDJlh(l(D{jWTY5L^z5TcD zPtU4t4`4k8JNy^!i~HDKvIZdjr!_#re@;#A_1F~Mj9(SAA^yuo>QuhsQ~v83&u0L3 zZHJ9Vr_bjH{dE27I!1XWJ=d{=jQ_K`tPTEnd7cCQcsKqx?Y%BqTph2;j_Qd2c@1Fr z5A3H-r9Jw8CjQe-%@5`a{v)q7n65{Uf&U2Np0R<+VVcr0ga4Q*oGl9x`zP`L2w$qU zUe8({djS*JPamVS>if^cei*wR53GeKGa^*9b&>xptG}CE?*Gw!PS7;>A@)c3FYG7& zGf(VyAN3>re~CIJpD*(R>j~}sx7WT=JVws1$hYyk>X`oQ?Mv5`&34OHP0$DKsqmux ze*bCj2}Iu7&NaZEbpXCWa-t6Z{eH}VP&dohNc;b?i`@L%Xg7>N*pA<`=Kla8`QOv? z`E@&MA2j~{y)BjP(}SQPacv@M+ry#Ar%?cU*%z+8&eK?D-*zCE)_u^6eZ?324nO3S zTKm_I`Jcv_4zy7;=(Ev-!!S+zfY!-w%>CnBpXVR1vX}LiYA(E-aqMN!BoCdB+H#E} z^7ZZgx35cUWsYekyyIox6(B#ka@3y&wwJcjvBrTRT$7CUA-rul57wpC7;^1`7C(*F z;<5RiBYyX`w!L#c7oZ!A56Q4!zpR<&=EvZ9JT%uIea}~1>j3dux;k3U0RBIb^jXTZ z+Gh#vdUNJ)AQ2Y_|Kqgv*&h%6Z{pAJ{B@zrsYA?Gn^oCZF! z%_)<$cXE62AHUXcq7D+*0Qz6SDx1RZ+`rm*j(G#+8#IbQ*iQIQol4AKg8%lLXHe44 zS=0Mn?>ubUZ+60KH2YSt->$oj?+}c9+T}leH6q61srzB$ext~%UBfv$4|reK%bEWy zXCICH=$QDAtNvc>r~Xlz?i&h{LJG{C)*UxG(NwzLG~(m&$merpw#j#ZO!V4C4^k>g_)Rhe^Jy^L!~l zH;^Y8{u6Ukn!bhkbzb9FC`l z{NKlU&(AsA&f7DvpJ{UbnjECrpy0pRc)~z~q=#k7JC1CaBH5*k*i7u_8X(rYT@KLW zeSeGp)Mx(h#ed0*&)F3^f3Z&!eOCC7H2~N1TnAK%A>hNi3)0Rtz%Kvy;D2=QuejPC zzzI&0ICnFt-gDI%=XbkA8TVz=PTbf0jQm&Kkkb}#<74Ja99-P2Y-8>P*iRou2`Ulm za_^sTcN+T{pUKY=a-=xr-#(2iOX=GGKZJv8V>R@DqurX$Vco++dVk{9y155%{*EyM z5&J#uD=RhCZ@xEWg<8}{#easM_9kacsnRWy3 z2YvGXUu5|I30Mu9v$3|v@A-FY0L<(?I%x~9w;~2Y?Uff-dFEhYD(z9*=Xq|k+|~d= zeblBYLnM2>S%xPzv<~Y-o7k4v|HSeC1>OTB8Sdx(f6LQpCCuYX@t-P&@oB~Ya-$UL z5Z0nmsc-lH_1)w({AYW^{*yUMi;cWqlgZ^)pK)JvT(*d}Z6}W*)}`VbYQntPGpHN2 zxm9_IMUD+t;3Vx7IbrZH{maBcXmu88l!sO=HuB!G1(QyusyMY2m7 zuLA0u_WNU%Z*jH3K8U^h)5!1j-|X4{JmNC{8(T{(Hp{~~h_R`kuiD_Ze|}5*LTzz% z{HGh2Oj47Pq#I64aFZO;pr+vF4W&W2bxAXOBO@w;Z@p%E{ zcRbgx`to|4JPy0G*%nuq;rj~Ew%Ps~8H>j!+j-;e+xdvt*cw3Blcs;hjWp=9b3PZO zxaV<6b4=?1a$IY#_3K@NML?FCY4Ug-)-(y&emnc8Y2j?u?GfnHE zJTO1Pf78YKTj4*?`_|V>*8s%+R#!gW>pwINb&dK!`6ykY>*6-&zihbI|8)4zy~MPi zsD^N6uMNBXZ}Fdf+PyqE#=z(YI558)2l&r+N4DV_Ah+}O8|F(NFzyc6&sariGlskLXi`-op=ebopiuzS?{V z=EIDV-kwib-;>fhAXOZ%i|5dP#^6%=4gUzYZCl(xrmef?So>dIKi2`o|Ir$Nqh}+G zjt6OA;|TwCZ+XcYU@gvDvGVoIKR*7W(-NzT)&Q68QSZ@F+iJmnSZjVBZxj2_dG&EAr}b*vdgALOa|svjU()t+{P%N=nD2>o zx5j_pUz=x)6=!n4|Id6YA09(2Okw-c{y#LB{H^g{dLs^xIm@iy2VgJn{Uzt~EJFoI zYqUiUb)!^tL0~>ld$d14RaoiwOhp8V&`;tn2 zVI}|HZ3tbNPH3O)uK3aE#ab7!=6ydby)}i-U(%26`N^56qfM9Sy?Gn%{a?KQAH|>d z+$`5xAd!azZXy6J-|4k zFZSpAdh$z}batm|`Ee&%fm#&f`s)EgduUz8{~TX}idT&OeI%iwzbp?r)c5 z^E}Tn{#F1;``_pH`CWlGco&7#=-FxeMgB+k9!JAI!6R;{;FVIfTRoZVP`Ie)8 zr%!w2Bmbw{Yrli`nGcTN!)9J*7+1UA@LUYe$JZz$P4*x8&$9CmJWuq5A6?`>8%bop z%bV`^{riDs{)QPZpZuUNm^4N|en)>G+{i3*hxJ_Rz@ABe_R0Ss`Z1F$5&)lJ}9c%ptFzs%MeY1>wH}<2=FtM&9;;Mg-*3QR)T-5&3 zGG0H4`G)&PyyF29=8H@BPse}mN%Awe=aZdRaq7?i=h*c4d@vp>eW5B$-Pl9wu4RV* zn9IWXQGX`KHNb7`37sGHt?~%}S$E6?<9KyRw1WR^v$+Pijh~~jg9%+4$%f@x1EA8z zL>yW}`D@BM{J*}B&iPzW*?vSnEuGx|fh=Ra27U=~(wx9Gg1GN>@)}q0Uu%H-Vn2Nx zCDu*T!8k9x&uQh<`Ms3&1tJ4X6x5w1& zX-(I#E_8n6Ym5IfDw4+!lh6JJX&6_Y52W&cyomcs$VYv$Y=r;yJSg!%lQ6~lXYVWS zu?8UK`wx7D<=0Z^y!1xj2$Tk=ye-JliJr>wMuozli$) z?R~%cyes~rU-h%edH?S}d)hvpEZhi_`APieB!tA>Ns#v#eYrkD=Ux5KZ_U?M_J~-K zi2DfMCjPU1!GE?>Ajomt>c8J(3vv{6ESLhhDMRAyR_r+_Kt>Z9qDdC;u`@FNa+ctPOY7;uY zBH!ux%>VC+6n!It<$H8pEc<8b{R1BA@6-YDFzwK@;2Jaq?X(6UPSZY;&#SEE#C?{L zM|xHEbnxHfwSSIl&uoGJ?Yf=U1aq?a0r*q)x13YlTXQk6Hcgpgw02#VjN{0LX(Q%} z{Uqlaz}a8rxleGHk{a(Rx_&!hZ5u{AXK> z^{dk=?v}efyE#6%XpK_CLM%zcsd8127iCeevqFK)pW} z{%`5Ns{U&K&!>KjM>yg40CYcqyS{Fmxd*_p;<;q^{=xY_x-R^3`2TaS3sd8tCT2fQ z9HU>Hru<*?acd1g?Ekmpzv3rMCr@)~SqJFurTmN#+uRVZ*|3OTN|5`)X-d`lc0AgLxJ_C4?_#fE6C&qV_ zogROVhsNZN_5|nG^jzN6_Q%QePWwOdc@6*BW-tD;jlVejlKcPgVHB^YQhuxPe=7c5 zXa|~wX=?mN_z#VQ-6F_`J%d z`H63PILv4MwCIlXRR2%yE$*9Ti|5S$Rq27M=ky$b=LkGU;5h=%5qOTka|E6v@En2X z2s}sNIReiSc#gnx1fC=C9D(NuJV)R;0?!e6j=*ySo+I!af#(Q3N8mXE&k=Zzz;gti zBk&x7=LkGU;5h=%5qOTka|E6v@En2X2s}sNIReiSc#goY7=Z`;rj63!6~4Ovx~eq}lZPkN0O0Vp_guu{W>&=;LT?-oN9wDbDA&;Jfty z9{dl&KhO{93Y&**&rAGhu_un8$hW6oO!N`uVM-F!_eAbv|2<-|PiN@=!(VRx@6-3> zH{^uNzT zOi^9NXtqJ4^cz5`BPS+4oY6&?gk9u|PX5-ANag%(L**mRe(G{{7*2i^vi{-w@HZ2o zFIs;@^6EGJo?qN9(luFz5uve(a6LyfS<-zPdo{bq{ztw*tJ9<3G7{JCw6wenKEq4O z{};qKj-^Ljzqcdqe^1u((&PA=eZJ1+k?oV4AC=FL{6`!+|9a=?B-58P2io7I8;xf> z?oT;Z8~*3&?Q`HM`?zM?hX02jxc0rr{~lY@@g(Yw7upElnBYU0=s$lW0hRwqGUr$P zFZj>j9^x8+{FI69n77{%01tnokL8Np33$X~l3yPr{O1}VO2Ys2KLROB+?O7o=Qyc6 z;ywOTo+%uB8lLJ{e+5xLabM(hS>IRa&bkcgp^NqwYSsY*AF_|b5Xg5JNn<+_PK)#U zU*w!M-m)rB{P%5|yl`LKWcfSlqER1NkL(hcKMfE4&#^(5e$4(^`L*$v|6Bv?#ea?I zmnR;(k^d}b`X`S)eak+E^Pl+lEBGJ%cKWQ{Psx8fXK+27wfz=yYyKDfhmc`E*8nFF z@B3LsBL1(g0qD!{ zM&}P~D{;6+ziWFw)-kp{0JjgY?nmgne9r^s16uOL)lyF^Z>$&|`*tgN;l6n3%ePtU zGs_A8*C1& z+WI8?M-Xj4^h#eY8H=(1IETwso%rvupLHGn2hYkOhpmI8=jeF#{{RxkL(Edbe$GFS z{Sl6P%=dZpQ=lnor+S;?WB+e{4rKptt+&Jf+z+B&KI1-D{da*>&=!6N%=i5X_r-l3 z^Zea;D_dqM=1-ZiDW7HhTBSM1R{d{e(VfkiJ99nXdW^nC?lX?JNo~yd|1t6pkl#6u zQ}K%e@D%I{Y~XaC@@bD;=xhujSY-Jubhh1%Wkd>#eB40 z;Qu@FZG7HhJ@(&?%k{CQZKFMbE5{rWW{i76Oz=ja(b$)v|H57I639RMo}%81{CEKT zU|g3Eye~Ed{k!oT`tM}m%9Ud@-Tvsp_9%T0{l}ELP0I1F<`FfYmh*xCANwWFXVT-v z+Tt7e|JXLn_s8q+^jw;nKau||yLCS|)rXmL22$KY=Ux1_|IK<~49|bf`32|i>pxD> zg8f_v2><_wJnKZrz?4ipe?{IttOGp$^PK_iCs;emGcSzfb%CV%5m!IrPZj@VmyZYY zr%Y}6&SRbj8Vln*p4Ks(|78Fg?HG-!w{pBaV55P&zIRfBa@+E+2{iN{_q-i2Q$q*e`1z#bAo-8hq{CK(KRv zk^d}H{gdOwe%kkx@t^j=$ZC#9F@-=E-!1$v??2sUj9^xn683YRXb+&peb(V6J)`1o z#&Vlq!2Hn0ya&K_LbV29TVeke{Cf_6kE9o5 z!<;Um&>YrSFbv8+IX;TOGIp3(H%W+r)&S(he8q)(0Y0hx5qRW(v1_w`{tw0Ue-!82 znBSZui~pN>;lAg4+PAU@cJ31_OsaoU98oiS#9{fh_Jz)0tC#ox)PX;RTAiqN zTYCV(dw-aQapHY{bMMbM|C0EBG4^YmdHqs;g$wg%WM^bBGIpIvvcvJ8vTdfnTgU)U zaki9r`TUi3Zu+nDU{627f3{(Jai4GXwV3Z^mG^C;GG9NLhghHZZWT%kC4buQvElb| zIF|$kFYtR3np@!f4grZWuW^m=`Yey~)Rz4)&+8#^pEym@eZ2T$kG)s$>cRc`4U{#B zeJj~|;1Blk7UcEdC{C^1ZI6G0uO9zx4ba)P-6!t9VLs1{D)#wo$>mw5_WOKDZDa2_ zAXsA{Vhds2fzIwr+)wa*&gS_pqNueI&(nBr$@Z6Z9ESc|Tx;3EctG{5tp3kzJ^9jQ zpT~r(>p8~<<8+1t+_37EaS2<{?XaGZFVi z#A2M;jjk+Td?5alxGo;yKlTzlutVo4(Z(n>Yk=N)meB8ezKiLxA4XctaBE~emw3R2 zwLI}#`2U3#FR@SgiT3n0P7D5X9RNEXg)YT^dQbe{u(QE_#&?uh=ZM#8s`q8gyDo+O zejI!~F<-b(?&m%b2r0(o{ey{5RY+hfFP3gT+jM(xHvYE|G_w4tbaw< z2L5Y*LD>Hek?ZE)PP>Hr;*s~M?E1d0we>#<_dD#z{JA;~i*2I_bbS!}wZqK(*O#>& z!u=MfTU%|?XAJYR65)B<9>=3(_W6Ab2paawE^>w>VKq4K|52bb zoG>l?CpY|m)jkVAJJZ8h@_f)5pvC{=H10#)W^!wQ*niG3es-?`Xg__~AYJ=msp4gP z&luIIgKukYgf@8hX%mDf>fqc)BG*W*7!;NzM@ z!u$W;s&QF}|J0>-R>+T;e1A93k7hu2ERX%>88s`wJ%CKO|7Y^}U&r?5zBXfL`Xm1% zxjU6@tN}RJv<@Kt-(n3wolhD6-||d)UElN5W__yj52e=~N8``3POtD^+$L}HXU`g- z?Sra(S$pj3m>2ewkCN5^m*Rijr+&lsP1s$z{xNotApZL`0P%mg2Y|YC->)?Qv5EO3 z=(qC$℘6vTtBP(p)3I#~Oh6PoE>|pHUzN{d}~0f8GCE%v0QxPOL-piQ1a{4*b7h z4?x&2F6@Uh9PG>JA&407`!BoqXIw|Ai8<%uz+_^7fd88BBVOJAb3TOnkBuF{JU~M@ zaVZV`uME1`$>;E2I$=B40PK&~GVcrLjz7LbKJx$GeP;cfQ=T?_y%zr$%zt|L&+`|U zFFIfi;Kv$KN}t=$hiLp+R`suAVn0d83~im39YtXIeI@9(cusq^Cg|}0Z|({rwfb?)^#BZe z42t}p>(`%q7ud?Xq5VF7LL1WF*wk2Kb2jOS{Abw(eGJ<0-T`OH;cr)uJZ5!82VRrf ze%Vf+wr+I%N1$gUJMw-kZ@!p6kl{7S+sx@aN`7stdv@Q}=cyx-AL;gOAFvkTvEGOB zbwM6QK|)7|-`n@mg#X;be*uXfBXe?0uwOtuq6+&_j*3J)53-z0>BT7hIVXK z1fHiN%{k9uBq}FJI6?mg^19wDHW44SRe6j5EU)zNc+kJq?8JX+M<4ej-tVpH*BXG_ z)jAb5M;(rxu9PCU5|IzN3#s3fEYk-C0V|%tX_|G+f$i?rMz<fjGp8cM`v~)Cm))O$>$4}GcgBB2 z%VNUmD*R`DHu?5!qhoRDX^&OD#@UAWZ)tAd8cl)(1!azO>wx4xTCJIq{lXfcyYHvZ zp0p1D+-JX5$2CA&Z?v88iqc+HTAA77!1Gk3dDn6nN5AJtzHq(Ny!SAJ|G%^SMqlk3 z!0bgk1OP45C(>cRp0SSq>|2^T&bpRf1!b+wmB$_aQ(yMhcyRyk?c^GuSqH$)Fb!gl zm=XJLg#Vn!l?P!6b^q_NBCna@53Ik2Lg%T|o*jah_~AU>orwR`Ve0^g{r_`%sZ@Ib z%)k5gYux`U?(I3K@<~442jDd@8r!{l01o@94>YGke#2`YqwzHt`po+IIvf%Dg9EHleB$@wz7R5D60PB5A%LpZ*`N zu#DJDiE%3J`Ty^R_x|id_|G_~UzXSS?=j!!y#??6!A9PE3tYD%H}Cu$w0tvOS&zk| z&of^1h2+Lrd%j!i0N-YmZ}%b3$24~GA!;{^|7Z)#=ZW$+qz>6-<>(gS>(L9r` z^aAsR>$J>1Tn8-nr95gRCr;d#Tv`M8^CQsF>P*K_5vHOWwPD__LGbd@M7>Py_XSv{ zI_57)dIm7E-IXI7By?KlNzNxbPGE^1{(65VZ6#>W@uOcYVKm$4n;#)VGFgr>2%Q{3 z+HDkX`{w@aDB))`N;>?9`pvGudDgH`|H0gH^KJ1-zHM;Zi&3B1H-29%`py`vq`!rd zow9eEo83H1R&27JINC8xtXycZ##>hBy*%@3gM4)_>B_4<+V(isyMyJqz*<|?kq5fk zvOI>P06@HrUsfy6UKJ0^yhPQ-i8HrEZRkQiA9zj_YVF*0yy|}$H}3O)b?27P4?Tvw z#=*{Bu6FS5u*$^Q{!@Cl_+u_3@8h4!v?d(Y?<|k}ANDQXuRk#UV;e83!~R+LTY?Br zrH{vL*&bW!woo0Uku8(`&_ZZUqwwfh&hhT_clZy?$Lc@XT=1XAJl9h1$HeTf$8!}6|J{{JRfV&i=`>q9&r^ZT zEMh)CE3Wcf5JfibE?f1# zj9ZKUuy;M3P<>3q_}l-C%J~1DUN#p3lnC?5N&feNcg=sa-60?OzuNvT*iW1HU@qdd z!$&83OlQavqsae5v4u7*vg5qo@yoKXE|#tC;++iT*Ra2}0rDREnb-RTp}n77U$w5- z|5~Q<#jyXxIUJ`S567@Vc12jOy0#%@M|G`icT5{WYCqs84ic2n!$OG1>#}}1S>9tm z^FK0mcH{!|0$ZT7I`uRD;{r(RXDVv|nW@6sszw*R?V*d#L3-9t-=QD*oRM`~BGMSqJ!bGkHWleW$w2o$>g~ z4)THS<=H#0&x@Sp-LbW=u;1OEP_C67^w-&edmXIg6#87S|Ae!& zx$hV5lS5nQKr=-q$GlJ82k4}dnb6D0isM^TVyQ%jXk{r$i2pFBz# zZ($4l6%qf_b5P%=?EljSlf@{%OQ=rH9IS2#BM#4Yk ze+Mrg*tq!)=Hwcn^L5a_vG)9O+C zXbq6%^ZW@WzZErei?M9Fc?|q#B)JBt)&azR(qMe|l~4I!_5nsGmX)8<^=5?s3Sfl) zxh}$g1^!0RKUG1?fAkIq0k+=!wz^g{1FT_jr15 zbEIyO-sz(~>HR_UY`+m$OQj=r#~zL6>mANC9P4|Dx(_hl%KIORP^2mRd z4SmrsyHzr#xmlB{;_)jbIqpCe0@Y}&k8@f>)rp_ka$JkmJ z%D*1*dpnN)giRzRXjQi2ELWYl7f_j(^Yx>=~-pV@vlkuPN;u=8wEX=3T%nS1&10j~C z^a+!hq$L44Npj)={%Z}8$10CQ8M|8?Lv@#?^j?Gg5AgK|?ioG7ioV}BxMwCsb-T*& zok0tE*GK1kE(rS!u|L~kdjUb7SR8(Cf%`rNO+TD`6LFjJpYP}k|EZVBV}B~)Ek+mL z&IXgk`iF`3+4o-T2ocQf?a;|=`H`EKzIaUR7hh=~`|t5zYXB%)?!CRAukHTdI_v)Y zur)xt7qF}WJ`eBz4galAtSgQCKAGDbGyl=&DGU69xN z-Bz}uds9w*O9$`&wFiK@-2W&7s&BZ~0E_z=D(j)SBi8hr=8UeAMfwE2BorDw0sPmP zmAwGJ2GG4fonY*R`x*ywzXtH-%DXiHvHz*!|7(8t5B5E6%D)q!`E&RqvUhs^huDvq zsTk;afL{lwF66|2Pi;K?JwNOGrw83GJi2uCac;dc0lodK?-@W&ndjMNW z|LcUm0!nHVF01)DKl-%3+J0C*ChAMr&wGE+Ui^Qh83#SoRj9S&md76dz1|c0cb|>9 zh7pC&j&6bfe(&E0UXj^ZR@sNP!gFyO+>vf~|4;d$tm?$C#(&1NSp#6Aa&FuL|EY(m z%(autqcFLlIpW3_6>U5xk0BPORejlzWRPD2B=gf>;=kf9&b|N9{XbcB-Bga!&f9e_r^Syb|pC`P(?#S+0m*@IRKlt9?UqtghNv5w^ zO49#UZ}-3=``R+Z=ZG?q*~e=q-ye8uZzGTWM_b~*tpT*|L0dlWD}?&N7+hYSe*+Qj zU#?@rF8^F(9DstyFof1D#AA`lajg3_@**#}ri|y%mVYoH=^=0R;8^={;-yd87HBwN;6F3#q@t*KC}w8-)P=jdhswFZHb(80qug z0|rU|mjUOJwIe6Jw=cHlAm%#YiURuqZAsn^)%mh3^Jw0ss!!DZq+^ESlD_{$yOxG} zI_Gmi!Ft-jdw*z1_N3fm8;^!I9V@b*aNk4XIzXf;E`9AW%h`rWGU7in{_B`r$(J$Ddz-e5vJdVz zmGs^q%O%S^lin*#GU<+5GMR%#iT{6;`aEGog#F~i{>r}edwuEJ$m?VJO^;e8`Sa#8 zzTlse>fiiNB@17$zr}y*@wP?zyw8m<6WAKSuGz$XwxxY$3s{&I{KvJ5Zz(RgkG8f3 zu=dh(Bku731$^@KJDyvRs+eD3!=3OShLtq{EXN==1Jsml`BCs6da1im)+^i>w|ezK z&U?kSU9P_l{~2@40m7FcEO~o1{x36s$-#?cb>q%f{3h!m7AE*Oo?9u_i;b4c*Sn^4 zIV9$5JcR%48i4qp*8mazui12AUF7_#?-%wnuM-ilF<*)Qx(&eoqJ!&z@i<1#=d!9@ zhyT<`947H2&OEW2^}>B}lD7kL#CH*Dm%V~~4`1Ow+xkzm29SRI2C)A|nf4)2XsNOz zI~%ZKFB?VpFFi?X`l~W=tpOxM>?bKnZggyWo2ty*V?Wz_{HKW5>G7ZC!8wv0jMhSTmy(|>?i&&a!EgrM}+-;>OE%S8lc$Z?F)Tp zVU7Q|UZsz)pFDqJy`%oN%W3zB9vS~Fz}}iR;I7W@`&IubdqA!-C(E+--p-Ft)vwx< zO9%48eetRd<$SxQ?M?8XUC<(}1CZal2hi?{IS-*NC0|y%g!zYpL|l9OHM`0;Ihu#b z>F#yBw0O$G%!&V=c;D}nHy-Dc;XJY4uK^tX!+_N}0;^YToUD(WzlGj?Ixum{IA7)0 zF6^g`qg2`7;XkY`A7Q_6-`}eTxL?|NKdDW}+QXMVmMgEmg#WD5N9{AOr(V(@l&$(N z{Py@y9kMmh*VVDDQnZ%)e>$|bMqIORM_uIqs_#2=U#Ul79FIeq6R1ZdE3*Cnm3D}2 z_9OD2WvVwm#D9;&Y@-kH+GD@Ur8ghjJwEc~USHVHdddp-#aTA$Gx*;>e)_ff>?3`R zlJ!sQ7Nz$9I3~$9uTN#d zDa3PioNO&%apAQ{??>e^%<)1m#kcvq&Vd=ub%O7sV0 zuamu~eC>OOhy#Y9_H)o5-%<9&^$V$dIKIP_0-kzfkMaFB{9AqhPVFIw&N`jcJ0!`A zOSV03%T+I~dUBP4=NOIxp!yA7sq{USyv{nU4aR5DQp2b){RZkHRJoz`abw5g--i7o z_e*@X+IRI_8<4ohI-m5yKOJe-hpZ?4m8o3|H2=pbk5|{NJtz*7>7ve0kR>revXtvx0G2VI_ThE5|0w_0hwWIew&Y68fBnz$=I}#a z!>Hb4d%Ay0Hl#dJS9c1FZL-Vbe7g6S)XgUY2M}1@Ac6~V!!qc*bj-v zwg2|iLUrGr z2Do1XWLayYe3pgb^kAL5tn#Bas*kvDgL??;JIm!U9!-Jm_(D(AW$T%)2z&6~pKGnY zu+QRJ{(o_1+tysO`YZkK`%q8}|7k1})&blbVp+9E#Cj6f0Qio|`3qJ&B&`M98o*x* zr_N94osf(CpK14aGKdBu6VsfJYqm!Iv#f7(T&%Eq?Zv|~`?!7X^gDmKoVC=)kFdYh zpK6!CZN1t@<+%TE9a2=giQ35A1X^3=)X@jsO;m`=P+3BNsyyw(BGTj4%sSSI2z zv7g6E%ySLEr1_roEp2)IO>LHU!L$z0IwRSXt~^QBUr`oas2e5p(c{0aW#n3Y5c`+= ze_?;SADPzxFR(r!l{o0#fYJK_v~`x2*h+u&y+R9a{xfo3?N_3`?{D=Kh z{rNROb?*-wx$8DgF{YyxdbYg)-uIV#|8|hF9Ayi&GCcP6%ttbNyAkE1wMk&61XGGhPkxp$@ieSaE5VtrWyATRt6*8swQt^u?T2-W}> z__r04$p5W2k6Vu^vEOf=+g}^%$0~9@mks;WIm;_Zw-?VffIggy{^RE+Fpl^Bo;+4F z4-e8u?Rcbo%TdQvo)_eL=^VBj2cTfSDW>kCv(D>&Ti7p7dEqhhO438@_e9(m_G=$N z*w40VC;U%3mo)%>}Ga%ex@V^WLAtbwJ(+;Pvpb^J>^G8vk4Oah*Pn`!2tA-!?kks#rw+vuwLh z%*KNMelNhU0Vv~j@z{TSozFvt_%AALD5K9uU;|9opmKR1v?6X1|>WtY`jj5c?r9 zk4%mC!eQ}b*J8zzJG|riLGKNSYkXNJ{cD`^st1nZ;DjznqXd~zvi7K)=h|Q2)25Qe zZ2#TutH5ZuGp4HTz)pYv&))!QKO^s<`!k3E6=&Y4wdi#&SAFJsPC#DT-ZTGze!Oj1 zm-&8)Jt8-*qX?jB6w_#pN;%F^zHfpqb>7t0c*{y&duX5AmG1JSJ26FbkUh*|%X|HSH~w zKCCHUY>xbA*+w7f-reMmkR^S}ZOHX;dJ2|*&T{+?yZbxh;;IrNx=5 z$+9{)(STiErvAmb4hU?aKexgE(VQUuyEVWP8CkZAYtp(1*X=tuM|Q22BP?Oso?D0~ zT22!LZCr%^oLj5&i}Jdr<+jvu<269!{IpMd{J&UM^9a6g>u9IGZxhx<{GeEwoH`{9MqvLKCRf+$z1Kf8S$OQr9HRVSPB29)&R~?;{OfT0FnQD;`a!$ z$29H-{+@p~eoa|BCv>cKIwrTW$bXipe$0=M0dXB*YXEZMeuVvApVk4C=f~9%`^#}q zZ*{JGxm!y2mX*G&yTX6hSMCQaOx67|B+C9i^%+gv^Rt~NJBM=_^U3~{TmE7X0Li!8 zo3}MUzW--itpU`>CjOg^{$8H;V5IeXbRPe^>rkF!?YcqF4#ctNk6#F{5~`fvSsp{x3dE`9Hiy;~c{%CE`3=BgyUMjZWcs>6iK%nYH8l z)Wy;&jezB#((JsH{3^i@nV~k2|Z7R1^Qmn9M8)EN-3P0>I$nqD zT4uHG5AXj$UU%xZ*U`$f#|8KE9sqq|l24EyCG@ZR_7Oip#uL^D!gh4Cyw}Hf`#HZ+ zhQ15&nrL!IaFY6w@2a2Wb^qq*%AfZq>K!K5{UmbViNI2@#7p<_;71*ANcmHyy?r(EIP8)e!)@Eq`bzm@9?w9J z=EQU#RhVpO(A3%2)_1~Q_5XpgJm2?} zK4H6#@!w?8-%`(VrK0Pqts}bjxb|bS%!sn~t~TGZKt8tx3zO=> zh0853Ir6h4V zAC>DESl{`AGUC6j0U%G#)XI76w>tbDV8K58eurVd|1Ci1QYyBbvRxKcSee%VZD08q zEKEcEZ!uQ*4=tTP32$pZi@kxo*CFh$%TPLKN4r|v*jD(jcKlDJ%A*(qu{P(hLKROov!>E;1uAeE6oBl%pwmk;9`+mj? zJ{01yaD1;V>+LrE53j+CWeR@Gy|ZcmmA#SwTWxM! ze}q0#WtSV@rrhNCE&%2L3C~`PI44wAc-yv>iQKoc-X80B(P#M2GJGuG;y!CshP?1! zyt?-{oF_gk`YkW~2QT;jBm6(*w&Wyt?{D}2w5Qc?u7-aq{I~C*=66xOj&$G8-|?xx zd;2H)5yp};`F6}RMRS%I&J@Xeoje!3jM}wpfC&FxJ7mLDbVvAa2D(4c0Qq)qdA!FS z0DUsQDCfuenEMj$^WML`|M$MO{pdL1e{}EfOtq|CKU4fd=aWCa&&S9+{8y~VdGCKM z{x@^Q`M2r6uD>usf%eudWxk&IWyItBmV8^UW9jAb*PtKC1>E_a=iJEsz2mJgY_*fz zPA>fCI|PVkh5w2!Dw4~))&ZjcC_YbuXUELJ(Hel)(&%~`jJfwI^5570ygbJhKJ}Eb zU$`%>d0_1{7q)ohzLf?2BEFb?B(n*;tO01JuwHq}sSJ7HzIf}GVJx+KpELgRUbx)* z3;*-~(S^I|e-)q5ABi7u!~Av);B}|GIUD>jJG39cy)DDnVDF#(6aR_%w4Gde;Wf*Z zm=|%rGU=H44!_}h*#m*RbZR}Uw)evS!%Oblz{XQe{Cb^8Hq_t$U;Iq<4&Q7)0QE0% ztrF$m8CrC;?Rk6xF>Gt3lKp9AE#~`R=sL)2DJk%Att|3? zP5#0XvJ<@2rwH6?+#@-#DTt4zXl`Zz-w{_5S!hLXlYz>g} z!bq#hJ`$@7&i^lAKm8YCbg|Iy2Q@L$J-=Z;>-cG8N?EqY>XirAJ~}d~v~CaaFj+r( z56`}nhu^4dpK(#ArTjeB-mlAfXiYk>22q||zlX)V=B(ze{x6W1_j&$Kc6E&3IANde zeLgeC%g|=~eeGA-p3JihSeUAQAn_B9b#D0i8s%vl*8zv&@BHUcD$M=PKKGA2Jh_-ZW&F2u40DY0EF#s5&&WuYJd$Ubmsyj8>mG@?4j8+c>WJNq zOqtCoQ$^&|$XeT97ys?vrVGFl5Uv4qE!{b8(FC~RxN96nb4k~@pk6Z^z9pX={+BxH z*EK_ZffN5J!+9WLxO|?+Aj5tBPEgj1+>%!rx$>;n2W58O?As`>HXHu8_+M188=G#DKZ4IFPg1}Wy=A5cgIR&!ucg!Ba|JC>p;?cK(VB}O)ru(QJ;}`iq zZIkuGy*twSJlkKdXFf$QP%=ONDPwIR5&mmGDbFR&0n7~}=8-Y-`N;cJX7(B`yZe9i zls;Gk819>P_Mgkab+`WHW&to(&it6^1X`d@})X_NBe!hiXra_~{Ab>JC5 zSv#JfpJaRZ#PX%@dOy>b^S7Mqr1$W|?LR(L&j2iJ&_CkDebGht{yB8bvPUi`El8x1vZ~DK{enUT> z#WOscc4WCWl*0bt{-1i?DP@s4<>-;4pr+7M8Gop(g%Zv<~2V;z3{cE8FzHdjF5- z6>Pzug?Q}A*Gb;jujPH)NN%gXX)_VaP5&o!48}}h*&0vHb^YIqnRZ!b83iAily8P* z;Kv>P-|~BZ{Y#ARmu8Hsxre$FXy9v99{C^1#bqas!><1J$#Z<|Sw8zfJ{s>b&i;DK zJmlN`0=6&m%nuWH>g{7(_m{aW)nvc(vww>)94B@`{7-8DkN+pw zA-x{^nP*H>AD_pnOO3t5_r7Cq*6cT&b6J*=(=2LsZ=ki`>14D+nD~F> z&*yd;zuEr9_5rIDSp3BP4*zkC4&>BH$Kq-iSNjpJG2(HI+Q?)3M*U#EH{(C3V}Gr{ z&$X@?lJ)>w^6aZK5Hr))r&Ognzk&EuztVgW|3x1+=Kkt(>zr4cS^TN(N!OM0_U~h| z@Mju-q>X3V9{y9t<~m+)S@(9mUy$F~swKNRnyM}5=@{09Q$f5dm$Cgw+CJO6wSzze?}OFrjNmzHXWxJgZ0_^*8cG}Upj zF6^c*wF~#f*=|0Q^YsvyRljtoedO|Ch5w8p+V}BbX{q){{IB=Xe0@q}uLVThMqj=6 z=UObWS%Bd`J^NQv{|taSu7O7UZ{Ht0;{W(GfOZQ0(-&et$#R?q?|qWVd0Aci|NA_e zPD;n)sZQKi9`|JL(!Uvhiv94JYsrXpk=n%7ew1q*c^tE9k1|7@@3Gm=bM4=Z|DcYe zwl?G#GO@q3_0!rECo!%24&$}8`hBHHtzimzu6+ct(Ox1 z$9;hM0_QkU?I-@nKgm1p8}_4af4pzzAGzej*-rcyXFLDyjQ_NY3{Ljr{lBnx^3i=2 zb_>ge!_>hsrYm4R+a#kg(y_FG`+oLi_;2k=3}|1K7VpmeKavAkz6LfAT-dtF3bS z6tSPVOl;r3ZIuACpW;8_;Q0W7Mrsp}eMjoJCYa8sSGvR(dibo1r1#aHz<$QKDqkx9 zH`=M$Qg(8FZBx|Jr`PLjef>@2Z|BBp51{p_Jp%&Ga-GGW$@OiP*IVxWd7hI}U(l}S zn%>W|BH}+!xpt=H^|}wp=6-C;!nZd3)@#Fm*3-WP_w_meqAdG{Wvn3wkgd2c`Dju5 z0Af4)$>X1%|Fi7{@Sj*b-v84NVr|?9m~ZkwaA7x5in>S~7m4@$ktBBp|9KtE_9A-z zpZJHSwD>y3EaJJ*s&H%Y>gP``dj*f{i|>7E-$fGdPgeTW{_1<22YACEJS&9yYdpsq zKiyBAs}k+m?-rS^=%49MgRgdFpRfH~K&Sq&$KaoI*b&=?cJ(#igXPPW(lqOSMU#I~I}y3^9>g~T^@ z%>8T4P|4JrkS5k!1|35}zopb-N`wFQ;$7!o`@WKpd97%FxQHo>e`l`$D!JWV6I(dH zj;HgJbI9)nskXu##`(?a^&ZF9itR1NXQ)~D)>drdIexjbf)0M)P9)$}^Q+W5%*Sto zz9R9DoH6iEv8;|F0M~yxwY`E0B!qhO<^^gQc@a8D7UlJYJXPXOXkSSKrkJ z3&QEKFCIf#)u;FBah$y`&tDI*Yc21CK)Q}emb#*js9SaUVNnNrJ7dwE7MSDu-Nt|B zxa|QLZ$KHGgb$7~g1zY6yNR~;n0NzR?@6SZfb(YJH+k1Qds4dVAwb$`V9 zkvKafo|7B8zFc2A`SfkVe!CVF@1J7bBN`?>Cfa`EjXJNONiO0)`)|a4>c4?7BrUh- z`od#)Ek`7*VG}lEdK4-nNNHv z=b&de_G{b{y%fh)@IG)Ay$gXf-ytJ5M0 zjUx7sx_9pT@AMn6%lPH=vS@c)W&oQFunf8PV(8NjQJ=K%5E|B8r6w-(}myYJ`RM4wo<`AUQLKFQq9 z>zd_W05&^<{qB!@;^CT6e7xQM{`h75yk6El0QTIY_w^WZaB!lC`^@Jxk*PX{%-A!4 zOg^*`|L?E|SjJDEzirYrTzr~>HZ7mfNBoae;`jGNO!<=UEujk#aDcA$- zt_@u~2Oo77P2(vK%vb-&C;W%r>+ETutTD^6J6)Y=6kV7 zS?;FA@fUUKd1BB{dx5g|cV+r-Y}<_gMxAN=FRv@6jla1W);{rnoWU|r|3mTT>yCNX zdjQCXdC1})Wy-PgH|xmdSDy_`_3&Dd%#qscl+g9qx%yVz#zd@->w|TBk8u`1+ZHjE zc3zoLn`J&*YuBfJf$97c{Uqw=-!%|k_p5eGZ~wo>VXS>u9D7l(?@ypk?hVLIhH~v# z?E}YQTB;uO?$)`kID1EADR<=c0zJ<^sxw*JNBl{HFKeT%xAJraA#N0=V4IYmkG2OG zRgL&h?7tQN%V(*=^>6Zx=Y{#Rh+n?G5VySmblV@#ebUBX@l`(GlW)dv*l##p);HI# zQ8Ljh-1j`si^FtrWl^W|pjUedE-LK-r0b4+GyXf;x#yfMbP@BhhKvUM=lb_dS6*cQ zhvHZ4Yp#7j%TpSD$fI-}eeN%La(+G_lKSvlvEy9a`4A#4<5KW&a zV!zg(?*l6KQwDbAWk#R?HooDQkeFAMBwVn8frnDfIbNK(3dqP`x<2uu^@>8AxjQD;p{BNJ5 zmR<4a-&e-}gKGsdb7)OHLoS_s=}Yn7*IS(IBcHj8@^~?zzv6L^0loT;YjWYgxO}=Z z-;Dpxw(dNa<9d$x&vm2yFS*VEaAqD2PJiS0YYd9z7M{gF=n?iGdF~&53fQmJ{wiQU zudiy4T-V*$cD5epds#PMv-sK8yk?3l{~Pgd&(DF}!qzvhV>kY~2S6-(4V7H4uZr)* z+D*n46GO}gNoT}<*7x*1xBoMISOx!F-Ct%r*72`c-y~b-TlmjC0OO@>ms=dBWt97$ zIu6fDv*7z!aUI%!zkiogA0P0a&jF}M#C<@$w(1%?aLJzKHpf~MD_;H0;%8gS!5{P* zYmK-aN%$Q($N3*|pMT?mr$jsdum1maK1cp&d1T;`fky@&8F*yik%31B9vOIK;E{nx1|AuBWZ;p3M+P1l zcx2#_fky@&8F*yik%31B9vOIK;E{nx1|AuBWZ;p3M+P1lcx2#_fky@&8F*yik%31B z9vOIK;E{nx1|AuBWZ;p3zeNU?pR33}L-BY1j6^ygAFl1&2q18Ke3$rZM)*8V)b$P@ z++LJd=v&FYdNY2``<#C=$r#h%(fHx_JH;R4{YL7F|JS#c<1_{Tg!tdSS%3c<`&d4_ z`Ke!r-^d(x=f+8&-u_%-+lc?^pFaPO`2X40Kl{Fi>Ad1+=p&uOo!igZKVg^jBKFej zzcAuvoA@$>>2tf6ON)VZ82Kne1IIVvHCe?CnNDZ9e$R4}-{3Nr2G5{b>^B|OIfr35 zl#vI|?F|XP{Zt6oU3>>bqYLVn!~VB%)B(Ntd~-`k|J{Lm-yejLR<`1Q&CgGFIppy` z3=Ntx;`d>YRwe${6=k9hjp66JqYiv!Oy|RapU0Fc(^J0timR)Xt@vsAIlr&O?{(^& z?Q*$ZSIjx*Z!XL4@EGQ4TQ~I!-xl$kX?#Ul(MxXi5YF$RK8E>U^g+Xm&}eHsrrp}M zkq1xiB7VC5^onsn**;+(&2xpPWsv9EEWRAkK^e)fc%~Vol+(BI7& z=8-l<)_3>0NaKge1FMbq!sp~%ZhaH2?9yS6TfkN(nuOSC$;o# z=3tmCD2suA_V4T`K#F*Qh;+g6Wz&Y%*V9kZ9mm7XE*Y2Z`-3%h_1(lCW150Kem-v@ z!CWMU#XMz%Mq(@}E3bhcW1$|F{)tg()BnYOe{JJhI#TG1@ZYBx$9bW?Te07g^n{C1 zT6|N8K9Ek4jk%?bDlu**hm6o=)H}?SW6JwTSd+JNsTaWu|uJ3Uy z+l&<3T{uEb%SKK&>=LF(qwhFAdYy)7S~8v1#^(UHKMP2MM`Id)_})}ahI6=F9Yn>) zr}zIqVI`4({UiP>@X>z5f7#*qVyAGmlb3w}b+B)R|84^;Ef^}?7k87=7X^I9kFlQ=hDiZVaOHu^HQ)#L8m&f;g=x%+?a19(b;i2o$6OOok= zZI)8+?1#3M&))?Zja|v^WB=d>W6erpQ?|GGUW{8~&-A$+-1j5p1(!Kz=P8SwZKf;3 zf7;`8R!a8(p+Cxwb>hCLu1~bFKFZeqo8p8{u8l~hXET1~VUvHt9*e}BEwG=lJhx2w zfI@2%_D4UCuY<$!>$lUi2Pl)oNs%M0H)1{v|Mfb6aNn?>7mG`yBst2tVSl~3D2pYwZ`b+yg4W10csBn*udqMC|F41lNXfM97i(|%tb#gB&-V3C+27Bt zKLZHZpW(mxvpHw0*s^)fWJm0u_YFx*+5EFDtbyb8w|qu)daQo;K`|Y%=XMHt=Z=VAmJ<4c|V2Fs7q7^x28^*w1rGedOLpvsRB|v0;G2C&}LH z7Hrh}Pt8r?t`)f2*e_4;m(XYIIIR5@dM-yho=s@#f zs6XMEsF7|EaJVXp!}_78;EGFgbA=+A$SJ4a5i&o4+nxyXZNtB1{I9Vu75xcy%y--m zYmLG*)q`{%7hb%@po69AgFNec4luqR(Cln0j%%s-$Lqm#O<2Ys^Sf8K1Z=zW%wA^m zI_cQ+>p(w5rh;(dde;0p*Xsbh#%0$zcsb7H-H(xqw(eGS#-KS5^G^TZkjFR$?+rEA z=6jcqm>bp0Yqc5#_sTu#JK5py9jLA`BWFKwlwW z6@F&-NE_{kT*D#H^Tc^QdG#IT|K%iEJ#W-;;2dKyqRlSBfp@kj7sjpYs{~*?a{7lS zEn#q@U+40Rd^|5|pL`m|GM3*01$$=a4f;$6d7NkITk&{J##q~*QAd^Eh`-82`BLXS zx8nbq_Xa`M+d~Ll6{)eOq;u3Vxi#TGpF3DGHvL=1Py57uQN(`snd$5Zg$&?ULNPpgg@bOHM@EzCnKZ*hQ^rd{?H{GTzr z&OsL^&%Ky~d7S)e*k5Iq@o(g8h(G3~zlNncaBpI{G2D-1y>1wlv@=HL6q^R>Wl8m) zyFZ4Cv_N;k|6<9^P5+rc^n*mqN5zPBwUbj9IvRz3+sEMADg5_wU{*}eP57_tF*wKT zyfq)IFKO`2&nnk^kJt|nCt0=?*X#dC$5O7#laIBwE?=X@g8dWzb4=8+zXv!Jzr7#Z zHk_O+534xIz>KCmxc@G_&j$SO?)_zQ$Vs$W@xR{tV^G)wMA=YBH7%R|axZ|>Ore7p z{2vE>9vg66&V8;czE4@ngs%U9sFxg-TQHyIXp>~Rz_kx}^%wO{*QYdi`gN4dS=hNx zVRpu%EMC#UsL1?EmgNoTw-T`-%G^)4z;=wmlv3f3Hy37$cuO**A zaN{O2U1NTsi*tXA&h$CJs6Rc<;%8fzU>+O6zq+5i!q-T^HXPQ%S$k!l^WxZ}_x~J| zVLz|;?AxP0MqxjB!+q6Fma%39^1ZHO$J_W{a+2xgYXIfBKUaKj>$P9&+0J`^qzrE5y|^g~Hv(D>w<`jPPHvX*o!PN2Bty z%cF1isdK|dva2O{_5A7So$5rPtM`FX7LX(D_;YLd3ke)L+H4FK^Czc(jV4j znBP5{S^R9PyRROPa4peu+AI9xwH{Mt98P}JM1b2Kxm!n&>yF1Y#{Si7-|QQSvaxN{ zhfb7+`?@a_zt8&Lj;Z<7=aKE^-ts@(GMCR(Sd2}N+2b5oF2#p_>pRp2HED7E*J3-+qm+`{^CC+(KsOJIl53S}a`K{$Ae@#m|Gj6)e zNd$v9GLnyO8P^YfK?U~!?Ry7UM?bDrag5slON%SanNpMY&aJSpnIra(_%AKlSmHl! z`HUoYMMbiWvkin!rl1nricer^QU4}4<#OOO$4QEJRKj|tqT<)53!SF7e*_}-@8CaQ zHHrET)U)6R9n4iiSM#vtw0JxphxiWoGuUpqF&|bo*#4#QU%0P50CMy^{6B;J<9x(C zwR5drv+dd~+!r^wZ2sA{F%MgP$#vd!Mf_)-#W2&?R%!7y#Wvx;I51zO_y-y0zWTbh z-DD=;(Uq2<_d2cVtvvwyEG}?_v7{PHkWriX*7(}TeE^A=Pm(_3e#QPNZpD`dk4E(e zKH|S*_`E86W~KfGC;lgU0K@*9@PF__dCLd)ug{!vOxpw4L?%{G?E$j*6W=_C zFe$6MJc%!h`FPs_9}e#UsLS%7#m}~Kn&J8xam(;j_y59ua;!l-uI!54|KoDtcEDqO zp8NdXpJVoD*7f1aF}m*&7w*%u>dP|z=J%}sbRY4_=B7PYX>rjn^wTHvOTLK*`^r5A zm=A{kiJbcP`N8-eSj8C*GfhKf2=pZy=7{c8_!t&#|F z`o3(odFYU1D)!=+?_0dff3Uw@&9Ps0IQ9Z(^*WBY`pNq}z-%qb?$pse73Idc=Z^Us za|qLx%aKD6TJKDQA6N*v?Lkg{SAWn?ye`L6@ZR9KkG+)LL;0Qx`16*r5{G#IFM>W^ z$5mLL@qaHL*}jc_iug=ab@5qe!G5(1`^gLb%g4R=yn7>{cf z{3xH*%<{?gb>_8t%=Z=R*(v6s#$)>C@36?@;<-T|65sfpq~?2i-Cf3C24U6O;B{>B z{R1CZ-B3Pket%^W4=(~J_I|(79)7cczgu8LxsD)gv5;52>-b0A$uZt$vMiblp7-}C z<@K&|4deB7+y{&{WWVrs?c{aYuFWL}%lP~8HDBEt8*T0%=X#>8I!SmzB(|&m3+MFL z@_i3QmKmP2EcqRd?y0z4TP9p8jbN!Rp;f)Dt>FI^^)?5v82YyA95eRIAD)v7f4)aM zZp5rV^WWM`?-aZ@IR3j1j}@%N&uzBt-3w=*3U=LPpD_78#x>(w~8FIF(U`aokck&T;@g>f~|Phlcd?26-Ni#UJgO9=>05%sJ1; zHBR>OJ^tH1fHr>OmDyuFjQ?Eo^SZCU-y!^`-pS`x_)MZZVh*k2V)viWduvI2%KWsp zr=Lrlchs4nKM#bk~fAbYfB#DfL7?a zf;67Tnu`{1ky{;eY;ta!PF-)nYsP|)#D7xk<2W9Z7hk8~y`kX0$>LfC&Qiw0SJngm z<1s)j#D4bMbAn<+woY*RCnENL0tx@w-oI~zv7EtvI=dIY_e<_syx8MsAmTiSd1Jfz zM87cKtm6_#;+2ln#%ez!{Es^OI);UDec$=`sVmSQs8hewyaT88_SS2~QCiRaud$W~ z43$lC_0=|1?u-9^?=QRj-Uilxr=2mUYn<$53;siml^^gwb*h+tdr#cn{eN~n!E*pU zvx73*1CWdOJ>9*}I7~}(NQ0@PA6s$%OW{B5*F6CISr+aAyo^302#d|z!O~)4(y_%& z9aWP4uaM-SIk_`c?|DxA*FJ;y|DrFCv3gAW z*B)T;41lr~|LY#0*I(Sqo+-CnK~Gl9FKMHTl{|vl7mug!bGc4)Q}lH9i!F4(k%WTn zsXyR9eT=@ap56b)Sc<+Zezw`VwOy6#hRR~Y#$D2Te_?;U|NjwVCcm>dV;jeai2V`& z)gI;XTG4ge4t*bs`^8wZa)aN!Pf&V5hwlL(TlPylR}l-GjriYm5&MPz)W5L@;Cs=s&mz7;}Hiv2Z@)mM`Xv#Qg2Q?hhG@Bb$4+sULg`{}<2PyYW$%>IMIK-=CEd z2hZ;#_%EI0^ylU9U%o0oJbn)L-}3Cg+U7*>6v;-81ldCIHn6l5u_C%@#ne$Q67~Tq z(5~vUxIO>(dw=c$ioH1Zr7k1obz5P-UspVyuZ9057tDvg^Z)vEK_DddS-UKY%?{X#QxY2*MaW2O8@i>03%}PGt zf9BT~{!_mAFa_@o75}*h&~Dn|v~ib;|MA}6`rnlA$u>MYjsM)Q(KmA8KJWcWY_EQ! zUUIgF{e1qPmA&|-|K&O7aln7Z31}cXH2cDS@cLRng8!KJ?%B)s9sugo66}s^GalnP z41Elg<@zPtzLRaf7sb}cyMw-49BJ@qY&xW0oa<8c)9YJ$IhTI^;tgEXXLBvRynnar z31iZjJ?`Fwfb^hOMkJ1`-o`1CS_yT>RJSWm@^A6L^KgSfU z4|HtCU-~JtB-uK`FRq6iUfJ&ple5I%8h(0%HWK7w`^t|WAouxu$p1!Nq;ZBmZ2bmg zmI9C0T%a30@x5)hAxjpwx@^QW^j=(cOi_WTp`MfG`N z^{MHT47tgs7SU!}}vqo-4RDm0&xYf41G=_cO=9%VL)tWXEcw zZpEoSe?7$Z0`J>gaed1F?@=e|c;@Iz%VG?5i4-sV_z`XN*9q*46oV&NGP_?2|7q`8 zdjRdq{_{RJ-0Rwy6aUf9bLsQX zcp)+td(S`o$7`>bh5qyS&+AaxOL2}!D&>21VU8xXr?Wcm+oGgK+|K*&VK4g2{Uqxp zm(tD|G%{c4+t-t9h;3QcyBN~sdzr+&-EeA!v71hE?-zT{GY}hiA#Iv zi2bxTjx86ZhKplA*TGx{J zU-Iuq`sjNQ*1a8%AMA4tU@urLNrkmtDW0V?)mw(#%L;_T)E2RdHH zZ}Uwxl^k!8LtOT1$?(5+zCfis2ax~tPy2wGt=W*N<#Qs&?)?$4I!05v){j7XV9O|axaUw@N|LQr2Iz$2cvE1qaD}H_bq8g>t4azo{#^{ z&ir~VQHK4(Lh{~M6Bzy*Wmdr_a+ChM$h=_;(Qm~Z+r~O$EtpT-7umY(bYa}~y+3WQ z%HS8Uiuuln*hlg{;Xmj9rOO)s;SZk&h~OLo&1gG*1faM&KH@*+cHeUV?B{zoe9u;% z6Z#$i<9W3rnH}!wyKB!D{zH~=YOMHk@!ygQkH|?`IdSiQeckR+<6PWpA7G#Lr;l|H zz=^Fjz}AJu@pbY4!bF-k zLX7Gua#rW#=6c2dx(Co1MLR7&gRN}--3OohcplobRkUZ%0Nzo4d_C56SpK(SweYVz2wO z_mCrDj^qA7a`)!;TEmaDr|V_mN9{02tKhwl{hL&Nq^p3d14Hy%Er3+G6nAq7!!Tvd+|6nv^oCN>!16_SK~-*@8sjy-THbg z)Vf~!G!y&Bvf&51(sICe+79{HsmrI=#B1ix-p8Zy7aZ%EM%)YHbu;1Eq@S;;Ir&@^ zf2iAYWOFYYDNln>-ZD=N1AJybClV-VlF@! zRoAMnBRAuJ*at-HAL6TydZp&;&iMa@iuy<#ek zEk9GNXrJ2F@k_7sF`gX%sh{>`=NjhB_v!Sr`g#)o0WcP;?vv>op8-^RZg+InW3aKT z--`dz`>|mEWOwxAhGXpkUe|L~eqnyh74^qs ztjXlwpFT$XH!QVr@!7xY(erpOq0r^W7yU&6F+V1H87`tdUcE*?&evkC1I|&F=LmfSRAKGx!XnM%?IxX?qFq>^o zLHFBemw0b7y!YpNbHB)G*X;LuJmzLBQ@*ayTfQqhkDo?)&P5uOPI1$pJJNHW1DLDW zBgG%lT==$(pE>*WuSP@o(;=qUiawt|3Ea7X@z`3y9F^QeX5>e8XdJE&qa7Z1*F+rmzGm^W4RX5HOFwwLw#jd;Ker8Lg+B$ljxFevo`g%+ zSw7p1ajR}VFxIRLz8`&Ea*p}!yWD%umCg`2Fxb=aPfu^JcrPVrmhtzKb1e6Mh6#Gc zMZUGRq(2MY+7f%p8@Qf50sp^7neYrwFrP;F4=EY)QR5xs$`f!9{~7xJ|$EZO{FW;lK1mZn~tC{0iE^f4f$fL@pomUbyyNkZ#=rSnL)w zvRQ-2eW1NTv~c%3pMS)37XOuR?gO|7c**k7_LF}v{MWttOX0s^K4(q88~nxbKb{L* z1AdH!P?w;``QO^ymW{U^3xiF z=DY;Iq$A`{`1LK~|FqwYc~LBt=h2_Q|LGaPGw{E|ey)uP|NR`-`m^=Z?*EBdS+R5S z3VrCT^&R|2V!Abe0}OuO$PHZvxpCY*j?eA`vK(033H;~1|1a3Pi0nmxfOipBJ#SbaM}h^mu*$&sWFjk6q#HUR?M7~cmJ5vgm?8{^`!m*QE9&6!U`KY-_uMS--}Jh!u5Pxn_}KrX|Wfi(FW_W;s$hWELXZ&}=G+m1iiC%xx*dLMCa~$(*`N?8`W%tIT{*6GP z#PbC#Ug5vlhJE&%Oz_Wj+c^{M8vavG&;JMf#|zQ%Jsv9;El*d-N;m5_;XgEZQW^7w zb?U6~D-ZYQXFenN;pgO`Tflxk2XLRk(qg!;&+3pLErelcJSu*ZobbQkzNUm%lvcPG zq!%I{N1~5u%ufVcc`W4-J z*uI}{%B-kjWLfR={|EGIjYeN$UHyg2d-~1Nauwx1)N@p?zr4M!b=vpI82(E~jq9lY zbL6FEW4!zBG3c6tN0Rm)Y4R^sKEjaYQ5@^gu8HJ)?-n{|s@HzTxGLq@iu5|?x)Y&V z3zUR>>AYqe&UfvXQeQqn2821JUcyWl&mTCpXT6+PzIF-nXTN5X^1*g>XsDRZYtYSl z83&e@={wUg0E6JADQoeT_j4D6&?LQImD_j0&?RjH$ZaB+JQA*zJMmk%3>owqd-Cs~ zLUYgh_#Qw@3(b%?=mkshz4+GrdhzGp9M&)T^DYz-!VI1Z-;MHC$C%REF`(e)tB+0C+e*BqMoblOu>7D`UC%$f2NVqI;xCaJvj^HbNG zI z8hiX_o}pXwK^_Z6c)oluUypsi&pp7^=|}MD&kp{>h<&fGVg3UDafvPV*Egy3-RzUA zUVL0-;4uCxcBr+Yy}q>PVftsl3UJuq=NtLbHV8QEBIxy z+?$d(&ekm0Tzc1E*S)|o?B{64PfG9~?Xb8>reQ~hI*9vxo=@_i+^%Wx`iTEEcKVPN z_svzh7Dcq=H{pNs-MxqfPW3)mcx+Rc>JNP7XC0%lyYVw8!3WjhE8n|BO8X@Tj%n9@ z;hrpKYAnB8@ce+^U%F=}?T>Me_26R}3lnJ>Y?b+)^IjDCsdKvjr>;Lh#Q#W|L-rrR|MA%%eJFk|;~$^57pLK6 z8Q5Z!FAT~{jX(6M?JayE>G-9%d@;^_0ABBC&j6}@m`_Uy7a=h$-v1NxiLjg})f%ea3$#!*zg7#ru@Ard8Tg-r+w!|Mw{whkx|h+|FH?~r3XMBmjro3g(dKNC`a`peckPaUjn-l6vQ`BjhSjK|kg_;0ql zm@}P6+Z12MQyq*oD&_V*U%a1oBFC3?aC)>=lOz4Pc^=E{1N{d8x-(d5Ye_u%@-QXrt%l@ zU++!0LdKo}5dVoo8~FbRWJwYGX+!!4d-5l8n-|)UEbWtcye^CTe~c;vn-B8Ed9+>q z^gdz#J@EhO4cBFz$Ej|95ckbra!f|p1Nhig2B44mDKz5$cT`8cUQCYIFLEqU|Gjzf zz4^yAq|$PNel%9HSi-psr-~U(qZ{DD9d+x^lXN#+iTjM`% z6ZgeYjitoCil6N^zc#N>VSKzEKp(Yt#CgY5bZt>ax{QZ=|M)w8+&5JJSa*tgR44AA z#{Q^(wF3HU9j|%9{(}GcYXIe57>iSUo(PZ8JW+|{%l^;xnfX%N zcuwJRVDFdUZ}7A{romhPzmZ>(baRaAA-tfg^*8;n<*xy}f&ED4&!zYR|5&2_v~IfU z+%@@NuV^Y)-nZ2G&T&%u{}1u2zKTBRi}Ar(ce307$G)*HKh)0e^NFPP=kTYW)_VZ6 z{~rcQpF__2W0+4%xvrL>rh?Z!=96p9^2#K7ag{O!Ud~PR-;@7|nBZ}+RgPt&^m#uT z>86p^A!GV?8Iwj%1!>8fKiGQ#nH`oOWBUSsqQ&}K_Kh@O!`i!u`Z;THm3Csk=;=G? z{dLqWf7m`2UZ+h@mVzX|%$E~Xjg}4_UxNdHw47Ps!y1_oAx5^&1 z&vBLFd7}1Z{LG0xzvo)lbNtB5HEo<9_)Fj1CaP9E&uAaz?|Izp%6{XUb{K0`27l{% z@pjtN{D|}WpQ0bkdCYt6hw?OXIOVoplxMNCZLl5U+Smh(F}&n4*JdnyHf!r|i`P9s zjc*-4^^Ew>ytsZaD}Amo-)J?Oa_BbSpr3RU|8eu*+i*R+A4#77xLbx%1*ag-J%IcY z{ulq&@hASn5f855|1XJ5^i{sFjSfZpzsECxXltxL5&K!pXV01Y8$JVuVQDG(;=L6^ z29Nm9Ya!cJ=I>Z}IsC7`xlO-}$~C6?;xSqu8tG<{({)O1mXkbqDLcfO870H4`6$+J z!G8`fPZQxBd|wms-?0BQ{xc`b_|@lmQ~sR8J4JblU!{lh70yTMgQ89RKWp=&Y>AgO zQesxyGJc4y@!w*mza@W-%SZO1t}@Auo@ELkZD#!N#HNI5>N=)$? zz*|3u$Ys#^lrOZGeLUAjwbkm(*%AEDu%Eg~8`w{`4Ewk5{pruDG+%@NXoO*6KOK1W zw8DSdSAhZ3WyfI;@HO$DzPn%R_y_DK=4-tP|B3r7Ul#xA`+S`-KkBos@QjE4aoX&D z1)TT()@C_Klg?zVZHl zOK*vnkt+AF|6>v$Eqe z?0)Z5p99d|d|pENpsVdGkg~MQV@4h0am>Tmw|Sh!&bGnlc_ye!gZqt^+h+aKnEdPcrTT+ga4_&Gk9Jz44#=qRuD1 zC(eBC{S1D?y|hrI-uLqkm)AcMuWj-AhC?gu^+3j4;#S{1IlP7b@j4?PG_Uu-e?=-z zJkLso|7Grx1q|?g0H6OaUISoe8JFHYRO%RMvG#MvKHCFOH}3mQc6t9#f2lVsHWtID zVmi?ZuDKjI)KROQ-#6jEkEae?yoxR4V1@rjp8uz~Pu(Qpzm8>did_x1#^bfs;-$Z) zZ@&ImzxDO!M~Q8o!{@cjj}<>`Pw|f2=R|sl*)?Zgmu==E=0oSE#)?yih;8NGznshM zIlygsiN49+AwI^fWB50YSG>--|MBwx?CyoSBd+fm;I&z0+N+{NzS?VPZN3!m$V>bj zSMw0(nA-Yc`m5}iyLilNo$h)3GkrMkd6hLC|L5nbj;ZtC_&&|L-;BDv-n(K)&2Pw1 z7d9J4wQgg_xOHsKbUHjXC~-&00|g&6j!m&{B780ndY?Vpa2pzPhV%Vmk<7PXKkE9} z?4UU<_Wtb^;#nNSf6&sUqa5G&-LSvdev)?hnvl|u3JU)(*Lkd;iyvE?JuNnErj_h<<*mZS18+qQjWjlQ@-yPBmU#{ z_pZPCjAU6+yB}6&=QGqz1ul+rS=_ego`20*k%di;&Z0NdZF6C%VHygl&E z8}`?Ap0u~xiiNl@J(6p2Xi45bSF*L_8}Y|6%~#%58Tq=9?<;;m2kC6ln!9xmaD_qX z=s5S%XYl`*3*=)iT0O>OHWqTzcspP9JtW`}|EYs}0QyhdKcX`_!g0Taaev^LL_O>y zHJzxY#RSn4Wv!0?sG!kkJB(qMbPQs4sJ?sgBlu73KZ5_6zgul322Tqgk$4`q#+>cb zcZZgJfTn;miaN>e^SoZ$By{>#_E>6_z!O)%SP%t7|%HqV3kGS<&vfAuSyf40GI;`J3od?(Ma zUp^={%4Yik;lJcGu5jh+zPXaEO}-Jo#syzbVE=`44@Vjf z1hy$Rt#^Ocr*_`g1v~Xwzzz5x_4I!G=Z)++faZ2J{m_DctM6(@LPF%K&g-5%y${vy zi?(wgP<>R6ofG>RoBOp&fP&iP%0$rzy~KXQ|MI@gT?Houij7~MQvAO#CJ;GvR$^PE z1Ncun#C;MqiQ~YIi+0C-;D7OpvOH5k75~|$qI>qDlVkK=|5B%%_5sK6zwRTr4={a2 zckxg6|3xqV9}Dbe#p5X|yWHJ+?+?R857&RJA2}Z+4^BN9y#W4KJ3qrF365_P{d!US zrw=RI@vZtE$J>}}{@Dgw*MZ{Lu}=9F_M08_+w&&yaV!$Y+*KbX|3&yl{IVbXCH~V_ z^Em%6d-k45Zee=GKet7DTk@lR`f&9|a*pq)&c!Nx#SX5q+5ET-GLy?>mTl#}f0}pc zBKF@C|E0J0XO)1Ou+hJ=fEjTp_Dm(@%xzF&9RH<`&ClXM^+EUkoGkYPEG;3p?J7dG zQZOI;I>&!DLNn+-uK~no{|*1C-|b&uk3_p7RM=lh*w23REsdRx>aVsT8HH_`$-S5SQZ&-;JUXg|hyAW!M|sN-lncackjMPeF?8Z zDy+|U5YU+wkDKRZakb+N0orycj-@=G@mbpzMo?yT-Ef=Kk=c*-4%Kabv-sKOIXKGU z(;xJ`?dITOr{mWTpPxwQb&oz2J0+K6-|9GyQQc&3jKAo3&2y^edSzSfQI>VKi%Vw3 zHFnj1bNf#GZub*^kz>2?3`02FiCf_{p2sUI42?yq}z8Yh!gT6aR(#;5>Jrlf~>1qPQQhH4^8R=Z{mw|L7NW#ADSbU8Z+A|H8>O zDVQmGnJufqHN z&eL#=D)s?-t{>meL7QI||G93GJ-|`?=lk_y{;e+j6OU^<%ExxqLx0Fv&E#Y&$ftd# zce(zz=6LF(KfH#4IJ+#POlif}G(CF{p!dEiFMC{hV9r&q{+)>bit&-6F4Z$%gaMKn zc{XNj)0naS*~dHa!!EF&Yiz5q|18BT0_$hTYn^TR#Xju;I{ml@^!2$Df0Ez9*Lpp@ zAON9|V|D4O`ln?d{ z7W2h5C9-+#wbF`_tv$|(lecTFlKc8v&cF9dt~caIqYRJRGXM(3Jpj+xc-HFP-<4_g z^ErS$3&7qT`s}?Ncn-kzNBwmj4)_1~KnXuo0%iBQ|BvU(un#~Ow6seQU`h%_%vW2q z!8Tqi)CXRl8Bi{?N86OCazQ4_TYb<0g~;csuO1&5A_Iaw;>9_{s90vU7K7iv%#D0?W80WJ9 zUOyrQT^gJ5PEQz9+SAFW?dDKX%Ihw%U)NzcLnocM2SEMbd}Rkk997c=&N=?&KRCwa zxx_K~VzPbQYZ<89F81XL_<{wL5)YHg1JXYJbKkpFuIMCHZJ0STra|X4CzXgxvefA zw)m~_UlAY2Zs|VKr~E`&wS6&;P|{*CzVBvbKH$~W=KcmwOlFy|8Et2E>Plk@{Xbpv z)TX-v(|zRnZ*#nuhflb7UHMtZxlH}6|EPA^{B7vh+}xa9Lf9QxUrtiSMkKwlzd+p|Xm=XDNo|P_m@bm$B$qM_7h%q9Y z9tL-NalK$^>2ePVJEk?(Ih%zS`|1~e`hD~b$83w#O%Bgs-c&=z^t&BDHe3IqPJeB{ z>pU)0{IK@}*ej6ly+Mp}ydv}kdb47&p=03mDG=6McZ`dnys2FBFk57$6UR25$Excy zyWm`+xG)IFbf6!HB;`}GNR`%JR>WKQRzMTKExcBj& zb`1ZA2_WXP zSNuP_4=C^5z&)ezpS;*BehmMw`pRC(b0zF2M||-&e+PBDhsc2Zf$6lUzvGL0=uQUO z>=+gXKX8+(N#Q==dndIq;Up{m*-5p5*Ut?Q`zQS8a|9NSC%xxEC}_iL2xCbjhb_g> z^Wt7`$=t2S#Q)VE0EUYkbr%oYG1iIg1p@w4{_glMAH*%rMGCSUaLpz7PhSfFWc+P`_5oLb8t5P(Ff&`T>GoocC0_8d;!Ut<3! z=>Bb>>%P5l84>&GBl+F&pX=w;9w3`n?g4xs;JzAkm9>e!ic?+>$CA(ZuUe0p&8{t- zd^93)BJKfLFNU&b0M>`@%2AE@&n_bH;d_6`(g%@^$FZ=#;6H^x#C}qT{lb68{;SJ+ z42SR^x1+>;5vr$(`A*yy4e>}>`(BX}Z)Ws3~9vioJY2qF21e+{ltH6OU)Mc0kt1}+y_J*W8L&f-%+lZvhc0VeW`Ld-oXFP zhc-soulxTJU+G5}%M#^SXBpf2V_p}J#x6PY18UL|^tE^(8T{ZiR=QZf`Z2lc>fho~ z=X2|EjsjM6es?y~;4RL@{Xb_TCB6nlTJ;a@yZEo`COP*4SEoVGXb;_8(H`JM@Sk~I z?Ez}eIS-^{?`+tAXZ$Dj-xdFnVZ>tBb5C~M1F)}~bY@@o+pJ=5%t8!1g8wFr|KhpE zHevr0KTmH|?&B-|+Xa-kFQO9Q{}uc@)_ZdO%k@v(mnqiImipdKU&kCj#?-K1-z`?o zO}-W&*_yYC|F4r*vd?-~^)KU>eeq&petui~>w0h3m$nCB@`d~21O7+sw>1?ejK>lG z$H}zM5Gn^8H{w552-uc8JsLiqKKkh~NKb_`iq!9@ZgW%wC%t zk8P2HNe;e7Y*D|*m+Q9Y{>1*4M~!1v@>0I1yvcE_N~Wj1CVF;$%*HZ)+AMkPeaU^G z4CSv*8l%rDNY{!>{$4!8npF2P{#W0>wfAf(_ry=m#6)~g7YWzcO4{R6Ui}|YCuKTf z8&2JHJxl);{iHZ1siUbDh}$)@j%oMR>-gcsdaj2)z8(r26LmVa?#X>T_c?Wp_6@W( z?Bz0Bd`|+Yjvsu?+n4b}QG2fy>Q8tLyO4~tjl^TSc-7b7%loz1{i}V~1E&4yH7@(4 zJ^vtTGVP6!e$Qrhw1`@4<+(8L^EpuD$GESu*9EMdZKU#>aqh=5ehUrb`a4GG8%j0l zIL~oBS6CFQ)fv0R-`Yz*j<5ds0)sUs$DFbzOu6Z&E}ZKK>uhm5U}*_{6rYOz8Z8cC z^i%Y=uk(9)pxM5!2NlR~ljJ+OpH^e&P3+^b3TG^tHTqzFFj*yGY2=Wh-xBXQx0V>) zwV7IC+|bUsrtBW^)R9cAtBrb9&p3Ue%tVS~lP^-hF$XZ@lkDa;UjLL|kG}hH-k-ht zK9@zvwUl|0ExukN`?qk@vk|{^mUFJREg$x{UgISnU!Ra(@jYE<`VY(q+KUp8q2J3&|9^yRqGrm=+v6uJ#BXc%6oFtMQ-~~&B#y7w*$lVYB-40l>DL?xB z72hO-nI<5@mxlf9V|$1FjB!;=Wr8A5G#5+9_f+qGp{`QfI{cTcxfJk!Xm8;{cUcEb zFJ*b2lkjXs9S6DlwGn^I@zs9c2Pd;l0y&A8*JQ@JzN?Sz72D~k=q>6_8rxh)Ut45J z9WS(Z{TeCk&t|UpTE<~5P(xlkF7$IwMU=NO95>QI{I_xR!*xlYbd$$DfXVx{AWlj z6)y(+I{#vx=!fKq`y};8ANl()d-^r*D3?FvhsGqKTNBoOx&OypRfpPblF>TCts?e7VHkpRk`Xu1aPzZZw6Opc0*p|XHK@nVW;!y zke)64ALcUZza95a$KOv7o#4d^yy9&8u2!~{y?X!re{W4goBTor*KiRh&ytG&Y!M7O zu{H=%hS)ENvN2`s;)aXnmWD#lI+9Vuy><9)PmNWpmrc*D%pn_Knh2 z!sq%8*B^x5UnwQM<~|q8_`M%?7+swJ)OlRmqRdvE0dDmd8`4Y8!WoEdy5|=+q2WKS z8IH+jkL$zd#bkJxmc-Zaz3;oY3%y(moaZ3|##yOiy|=|+FywD;UykvCDATgK(TFQ4{@dHIAoN$Z%r z?y;0Ra<(g{k^7!lcCL^kVSQ{7uVD2m*7R<~A8nqjM_-z)MLf{`J?4&Mj>t;)5!rp2 z)A5&y;YAQ<y;QyG7}k(E}@R?sue7GxWf3~+ZM%KHrawL6tee*592vT zg&42>KpS6tL8OLy;u^E!#g|q1{X7*N^dk~|>E%|x7a8T`Pi$kIBV$j?Ae^aOe*5%9Qqex(iUty~pPZ$f zhkYC$xGWZ>pPPQ1=jMgtCnk>9X}u4CeC!*2`(k^5o%k>CRix{nc*OnD|1WW@=O^O4 zjyh={@H5s73G1Vyc3$kn|I9dOx7q6JTlmjC0P%k{_I~ZB;@7pa-v?h}Qn_#D^iEY2SOzm7& zxCcb|BW3uetSRshkBYhOqb%3dB(bpjraedAD)^VIkEqcoj%`X%-A*^ z@6LamujkZx??2xE3;Tut#D38gu}8`=^OvU)|8<{-;ayqy{*3rJFT6HPIYryJx1)^S z4rIiH`e7Sl84|L>TS$>+oIN9^zMUl%8wZm8OeEUco=t9HSD z9#6KrHi*_||9lOgfBsJ!RQleDbrJhW#Q(Mj*m&k2?QX=cb6fbYb6VWZ$~?JTA`k62 zoQgd|@SL#DQpN!Le=o<`|9YLjv&FF_$Ni$G`5E;L^RN*=HO8B(Xpz3o^Z9gb_y67e znRopdV!vqgkIw?uCHl0GVgi26bbMv}zaR%BxNU_0=xV`>(5`;+|1td6J|JR0>%x8U zD`FS%89!Pm5vNAKrfcLB9m9<=-5wQoL0d4H|;&-mZd&IxWz@z<41D;V zpO!2Ij_R`#{}Wts{rc8^b0M7v$^5Uyp2U;J|Mm^PO$HyK{&)L4S28wT5B%Ic>GRL; z(*7+y`klBfndkOtZW$wVrA0F6JRQT|Y|JD6Ap@Fw^1srPu|9^V? zb`E?xf9=2b`4Yc#M!J8%=ZY_X<=17MyOMp2?*I|K3*V<#zM00(@3P>B|M~p@((!lX zaNfR4N58LXJjb#j@^WZ-#FuZZVt=yVt(fQFJ#3I@zy5ZQAFp(c?HoI{-TOGK6R4ic zJ?6jUK)Kk7=}EtF<#Jf#_4}W>Zo}Gzx7+!7jeZj4e#3W-i2jp~n}g@TmtOyGQeU>? z%Hoc(X8rqZQ~Zqm#pB=i>wGS5(>cY@hH`$q^fk~g6YUg1%)@zbDyE>1-<6CYj7)$3 zUF-YjKO}DZJ$0Km{09a2R znf-Y@m*+uWxIENL#dEM=*uHws&LYv*a!O_c*}Pva27Xz6lvP(bf&} z5`IaRD;!_R<^(x?-+J&p4L+T~6@)h?H8$lsQ`uzZa+TfxPM`_Rsk5G2T6XeWx|`+a7@XfW>owxCaOhSLd^N zkX+Vxb`P)$KGXd*+qeffga3REKfcQ=F zqSB_{(@n6SI#$K>qqE~OGq&@1+^<&O+|LU*NoCYgxQB)9u>w^wcOnLqlt2Qb;8AI)8R-783rxUc$}LnJLn#`ZGs zrs6;Ana$O`f0Q*n)OGMr`vBs8{NwrW*MQWQVlxXq_dWV}xK7Nz7jEB65AxFd&*EoW zlzC>IzXgl6N)q;0{C}>U1@>3{!v5#uKLa4H9LbHYwY&!)_GkD1(xW{9pZT{$wYucQ z^$dWrYK#2j9sonrlIn)!S8wON|JMCK^GV_yJpEtu_cO0Ov;S%EiCi}Ji?+qzQ|Z? zw0%W9`8=;j=Vlo{u3=cKy(bUHk1reJj@ov;%nMFB(@p*Oi3+3jJ%6-)IR1BK0^-=i zbzOUpTu=1+6O<#6MsZH!^*^?&u04g0H#oY|ayT}Oo@Dv^pKSkd^nFYF`}AsK5C3Ub z@$=3~&tv|s_^-9IjsNlLZwOFv|2g?diCzXL{-bbN-}35xTxD|X{6yuZSb2*2@G zalRXYc0cCcVAvm=@yBJs(sC+B2s25B{o-`f2<@=Y(-0C5Cz)|fJPz_wHLZXs&pMy| zzxeb2fd7bo{@cjO=*YzG z?jE?IQSu6(u5baZGZIrnGeNL82b7{HIL({cmFbA^bmq{j_lu|Md)p&j48e zyWl^c?~u4=;u?tfU)$}hny&md|HA$8xqO^U)K{h6`xpGT&r13UMz`8}I9fNH;xZ@2 z((M7X7l<6f5$B~N!GEef>W|BTrRA`mIv2=^&R)3)&1*d|2WS0;r7?}uDu}irUH|$$ zKpOm}-%)R@HwzmzPX9(uqP{bA(~2uYw+8_J^G|yK_RTu8_%pd@v~f*77rRfd>!bc= z@w4sd_(YDrI&oc#tnHG>-(m~v-*I2--t3&ie)_U1OFy*-z`!cAg^7|oB2(}E%bi3> zWV0oG@&ishWqW`l_Ey2m#)@z0<{selQA|H77jk_B|LM2x`&Iwe@jt$?{|;=pYHwR{eL@|byEM!_A0A&qIO6ZcjY!YaX%J&h!=4mbz;26L|N9q z5&UP2oU4fatSj~{u8=H5=-862eF^qck5+)V?UbdHILN>G835F#<(MzhPhS5HJOha1 z_*sW|d~03yiSzcC;Qzb_$b!F*KQ#`ng?r%tb9JP7&f;g=i5&1=n`Ea!<2(mQwf%xR z>5Oj4Qa|fhTi+GETIb|;={S%5)VV5?pAlnOCkAfeAQVqJ&d6ghB4cnRftN&|`smMi z%|B@CaQrbI^DBHl@)x&HA4WgoxO>!}en&n)M|6G0`7TLK&hvm?r zdEDg0{EGXim$R#JzE}@kde(Gs9@5}TT)kWPI93;Hc|K3`!t7#yih+yezs=3gZM;vX zD={p5%m8nqYs9`)LEP8hiMqXy2j*uZ{_VNdd|qLj-zv%1V8vo0g z#1*hjc%L7Fuh@TZ@5g+t3e^Q_bB_TW*O9r$h00>CaFwMHjQ(vLqbn`DI*9*Q(0k-Q;y<+Qj=e=j*FABiW9GO|eCIwOY1J07pMT`d zM^w`iWscQv!GFvdb4P*~_aTci*#ng5@pTlPohHgn`gx!WjyaDa ziyOzriT_>R_m6Sicoj(NUcA~d?2misSl_jo%|F}BKkWgw_5pX>1N@p_w~)?KN+PGc zp~3b5dc9k|ALNWRE0Y}vO>MmI7k!C)fBEn~jsLjM8s5=@?d}h`hXZQI_fSKlcGf=;4RpH$s`l#yx=25`~I`vBjPPMBjGm=uXRS+{Axk z|ChjjzEq;?p7@+b;64&uvESw}oU`-2KVw{#K7PH1KI)9eTlim}$#eRfPs0AY;y-<| zKU`1sr`H&W{a+maVKe6G<~q+s(!KPVo@4Vr-uGiY&g(C-i)8Cwl;-q7+WPKjV$Q)Mo(K7Vn9@z;67qMLVjK3-`(K z#=jST?jLQRt@9ZG_YBFt0jko{#R`dMA45SrDJ*Bqn~|MOTG`_0i)R_GulD?3e9#xM z|9y{^IO|04WyU|C8bu;7AXj|EoR>t15Kwue7LRu*ErI`4ad4j8V`3 zg<*8>)%7{wVb>i-N1hMYxn(-vcL8WAYJ^jUAgcdd(+xRospz_i+A$v z-v7n%pFTy~t&ZlYtYlBN^Hf;cy|M4^I;Y^hA^4|f{7H@3QJ?t>^Tki){6PHq>j3c@8|ydEx$uA31Jpbd`<bqd6^M{#!n^ z7cvfCJ~%-`D*r9DYvm3;rNIv}cZ&^QfP?82>B=r%XL_jAg|3q-<=xyIpN}+ty7=l9 zzqg~G*TJ#rQ1aHnFd14bcxLz{itT&#PZ0Pm2>EAw)zaBTqmB=7h@|DP4!!S>q4HgT z&~`t9PJ1t*>8Ab_;qw{)4t8Um{yhB<#-iSQOoI>oMfN|`;eTyx({ri4kmCF9NZgZ< z^7+udNqn-I**Vi@?~~*+01-ZzzmrLJJSYL)i{C`ftbqQbo z{`B?-B1i9|)MkD!+R&VqGNuhW{8JzE2CIn#=|D`seu1{uTcJj`>4OqE1)T``miPeqe+CdYxJDEiRKSxbzBd zJm2<{`HeY_by)B1-grFPII5SQ-zA<;@>%?Bb9s&_Hn*^!=UrW&75^t&nf=gK-rGuD zV-fa~S3B;P{7YgBx<_BG>f4Ba98->u;Ni2L2jHaVdC#Jl?BEX%m>g#gpFgUfb>Y9- z(P%q{ru_CD29 zE3MeudWicK`%_yxF$?v26A}A!{OA4uncQ9>UvrqvKiif%bqqw%?VcgJfTiDSUi z6Rz7>nf(cXcFI^kx%E4b?V%nqYA2R7ewt|N@?6Nt@i~C()f-|768Fu2aMpiU$3ZUa zCr9D^zijDQfHbN70Eb9gs&4dl^_pA1_tzdk_y2c!9RPt)?=aiRF|Y5vfA%_nVcwzh zCJnyRIpY7g2e`n#{bks{c>W*ozq2*Qa*t#4E!_X}xarN}kNu$@&xvdw!2YOP^0DnX zbRy?(x#m_d3C%*XD4g5Fke*?LS{~Xt2Q=ga2kK(V+-;Bq7!0q>i*A|n- zxC%e>v9%l$a_ZhU{J zuQPJsf)V1!VWF4v;VZ}A?%Qh;YSdZ*0lAJ11B|66+xE!F5;R()L4 z?iuY}RnMOp{Oi@F_Z{+2k^0{L=nvZG_agFY!?(fUy>3a28kF@d+R&VqR6iu!bGM)I z+fpznl5KIDvBXE}*rcaV-E5m4`<-B1|LvZhSmt;(>f-N=v2XEvV~JffrKS1!Cw20V z^Bey7nqK$E{$W3YF?P>3`pIMJ%i3R}&HSW)m-4&9%|;gdj$ibf6fsWc3F4}{B_|&H zZmCNT`PO)z8%?(4e>oKQ+x`|?^mD7QUsPW6-^xMO=QzW?3aR9f zv1Ud6FUDVg|N1GCVuv$klUo4MPapVw=*%!OfZx70;(OXjE?@c`17h2?{05Bl4m^vU zZRW$va$&zXu3JAMoPQYpGsnEAwD}XatD{!LS&lV;&lMb;JBZDt;eT{%r4ur6vEu)g zV^*?#`%(O7euVu`b}AG-Km6Z-H_RV>IcR^5ytbq|xW^Xp{q)5CRpFUvc{%P&v8i#! z@p%Hn{_wd1?E&-||ET{Q_S4>~wD?!}56}9)Iq&s)%~+zJU!!jMyufErv!BHu`#0(t z=EwETm?Oo$v-PNl^|Rxb@>%?B>wQP=wn|y&w_-nR#rO6mhD`szwU<2myg$Su?7s>B z<9=_M&)vC+n6LV$KRuenIw6X>c$vkc`EWh>rO{%a*w3-L|Bre`{MWsIl-aMR!JAEu zt@w}YJ3nK%{7dFS@krO#y8j6PxisZtSOTAY#7A-@CjDe%3*q*&L6y*2lv7$ltwv z_eAU;@!xU`r+MEmUo40{{AZy4u3G)>i{bxu`5VNm6jZyie}A6f|LXo9QP~{Ynq!W6 zyw3HBK8U8}UiuH~@t|U$$Lrh&*t~P)umF9Kp96ba^!GR~Q4;eE<#(_oIEZsR;kc59OqL?$6f%c<;Xv--!Rb z_m93DtMA8O@!#WE?g8d!F*o>gOAN=y*j!wqd=`J~KT#jg56)dA&d-@Sietz6v(|i! zDT|+NgYU4<_hV@-M_yyR1^Yb?zyH_sBJ#5K8TWHy<#?wV`>A_X7Iw!uKJHt@eb%?I zAK_2-Esz!d$7cYJ|CC2?CHQOMJRay|{L}bR-@#+P7Nh+Xd6*~7{U@|VvU5l05INs7 z@@#*;Qv7Sbl?=m~E-^7lq0VPMq&FZtYq)w?u9noD9HsHU#@vi2`|L^*1FV`C%XvA0 z5z^)S^M9{Tq_ObZLSEywX#Mu&PQ2rqN#h@N@biX0{pVdJ!}MP_t_8$m_uKe?xz|nd z#kMF{>&O$H^DW1Wx@2!`-#+t&tBCliI(1Qgi!vWhw`K9O4Yo=2Y0C%oN&Z$2 zJzD$K9&>$0pYkf7z~g1i^tStH*A14IwQW9|KH=9-uYYx)R?=BpvQi;Z=HK*?02$h@aN*`^qt50Z@OkMt z{a1U4h2oP<;2+w#uP3p-`>arM&WZiR`Ed^*{D+v8*>>=4@@o}-KSub^cUltr?JEgq zT}j-%p2;`pvRsgF=|k3_X?*V*TKpO*{QqlXpONcdC7}6JEaU&+tJTdTwDY>V6X&r{3qu=7x{|#Z=Yr6JPW7dSm8do^iVdCt&wnC`=Xv!|A5a? zk$N9nzqe=cvuzm1eE?sJiZseR_n0;!oz=&@hWy0!YH&DVKjfE%eK`^T5AFek{p7-Z z@>sYJAQAhcO<}*D=cBXV0}%To@ybf<7ygIyvRrk?^=k30643b){jxf~_it)j<*T*> z^X(iM@Skm@i{=h~vfkbMv+ow0yJMg>EiYy7kX{HW8T(xK|8|9rE9;7bLWpo>Hw~Wh z$pwGm)}R|!?X#TKX2E`F>{Qx4^w#TzgFFrm|G5WV$6PGqkK-9Qzte+0 zlb-ec9yKq>8+1iG%lZocrHguw>e86P_v44=^4HH_Y2&`+pN9X4yw9N@3%AL!M
v$$c6pn(Le45i2rP>_>c39&j9Q>0P1$nKjOc&v(L$W z7ye)7SkA|P6ZSI}$N#zq;GF2%f%?UX>zZ}pzpe9h?kqnsZ#UG>$3N%r9)3(Z(10Wy zAmYERbTAdX7NA^6hmHrnjK7^gP%0CFH`kgi(@pVu-;rRy-5YVe{)d-|LfG|ID_YY1M+1cN7@n7?J<>x*RA$&reB%dswe#|=GuTh_cJ=gAX z{JHq$>w@b&mo=t^+>w5pGmPKmwi1yr6^yChQRDXceHDxEtk{UZH$9r+aqphz7=CcI zeMg(%BDTGHeQiYF-s5o<+rg)t0BCIt`#~(Pf5K;GK_C9)x9qg?f%~2R!}GI9cux^O zR}^);`oZ5%Puqo-@iT`a21-4Q#q_oD(sQ2McjJEO^CSJ@vhy45BR-MZM>(}0=gauJ z`GDp2eS$+y>4WUWy4t=q-usxv-{QH+cVdm>_va*6n{&oz0A-B!4dQhjv)`z$;m%*E zF9jIIy>OkIyq?9+w!LxRK)><;&VAL-AVglt_FC6HKW~p;wnDCcdHeQBq}TgD{`Jx3 zV}B^(j+p|Nq&pWlyL-ea5?yBl$kS-n$GRZG7<6b%Uj)^9>Sl z&ph`9y-$B(4ruTD!fkBmFPM%#Vn5052caJxa+s0Tx7Q%;u*~|m#|`p0Ov_DriU0T5 z1GGdaAq!qo(Ef*gVHTpQG4MLD*aM`&m$6|!Y;u|ztJ&N|nPv~>4F9Tt3FS*F9&IkL-5~apeBAT7^zHc^ z{U!eE7?GA3W8P2Km+@CSlf6906{jTsE%N_*&YEvo{4K{#?nImLpL2m+WqSa&2i_!UgLoP(vM^A8e-j~OuK*Z418drna zVHSC&J9!2Gv9wGs@S`VmtCq>d*(R|c+I#Y601^ACld9YMpL6`DT!#N_xA7~^=K%A) zKmA&jx{rd8{f?nwKlP9C+;R*(Ro}{IwNrn*|ChbkueS4i8UGX~GQ7+&?C#?Kef)i1 z{=W$RbG>u@#&yqi6G^XoQs#opsE^0K2jKmzs2f{k@l}hZ*nMuZmEnKyOOstq{)YSz zSEuU>^bz+R`x!U$My@)KNyk4Mwo1YASgOsE3*!G+_zZyfKju}h4UFyMF~{bRVtLqBZ_|5?{F0MyF3bL(u# z%`*N$&aBa*e63tL;oK-TwK-=BCwcF)yt027^CHLcquI*he<5Fp`H{-J!6hq}AM=a& z?|T3=qG=`#0?+cqJwVo;v}N(L?dbR&xx;?!=#f9r$CyRW!+zRam4p7Y^MO+WWk#&C z=-EHH`oxdk^Gm+mG3W{bPR!4W_5cC@VVurE8sqx8h5EEi{zB?x8{Yf%2Iffi-A!l5 z5AuA^g=pGe53*U0-^9*# z8-}E%=zujo6o$H5+VbY&g*H@?pbG zKYHmv{{hBk1AEU&DOD*|svh0_&BOQTn;fb1NM#PXeq)z;s(uKoU9Pa4Bt|9l^* zr}o~R4WIB*q$kSlcBRg5>Z`Vo`+YxNtpQNK<+pCg-Ia0%-EcRe;cjQ@#O$UB!#o!``F_aX|XN6wFF^R3$9`JKPfM#m-Qy+j(TkYdB9;{QvV zyS?x0@d5a|9Xxvu+ojaqJTK9}3;S2l?Ohxn9J47YQXR%krH2$8&+ll<_mQOvmZG zoBijzb)z^B_xxY)d=>}Xk>hbUm^|P^@difQ_j|v`aqckM@SoSo)?NP@8`c2a`^P@} z%B5i}w=}t*0>!2q9-(HD1N_f5K+6B7uk)+3ZDq$&A4O?c+M`d~|1WKpvZHzK<7N!| z{qKkBOS}ibGIGC*@i6!Qj%RIi)TUA|bsm{>AFB_}>sj2sqlmg*-o|;fx9UTW^FFui zIa=2G`BeN*e=b4h{*~9aa*vQ*OeZRWYewZIwP=l2J>=a1*1e?P$aA6<39`ss4Q!LtE`jI#eHU{yDw zGT_L;5AZ*^-|qvowqrl%j#KAH+wbB3l>f|c;1K`z?2h|>*7d#rnfw2a_tMwgf389N zZ>f)*GH&iy7B~D**UP<~#fd)aE9QIp86^}yJ{$8liQRAB1L)gl{*QGYdrVtkgL6L9 z3~tx52DtNnQ}1Wf@BP#mQ5t6TH}akPd)|WfjW%0l*z;e23x)W&jNH%r05|uM`p(ST zbdvi6|5J~D4!~W+QN84Uuj{<;ad{RHVAR0-0M?IZOk>_~C5k1k`Vpm}^^ek*PxJFC zSVr@T)IRMw7CsBZWB5taUC2eBkpD-Xt%kb6>)1SsgJB-h%SB!xO`+26zN*epK_Itcc+nF8*#;m602c)*E{e4RxIR{n*Omc*S(o+4488 z53&AUy6GF{7}qlEw#ZtAtlr&uew9XVri=XV0+TIx8DoC7$Z+5{Jnyk><$TRJq0_ma z=kLAzU%4MQ+`8)na9ABbvp?S(?wkkfad-dj@W1kraooIrbhP|N4}Uuo$6NeQ?<# zpZAmd$?uFK|NEZ*7Vfu6MLY{8clbZ^nfy}s~54e%oOQ&>jscfHR4 z_pJd=`QLcI%|=IaFNXD;2Nbqt%zb~;6VtA1d6&tyxpUczktoytEo{`H)J|9KzeeV4-d)laWa?)SgvTu0MwpZyQ*smHj#{?@YV z-H7kz|H=Np*;)H`{;d$O_fvKX`8_d9sR`m=P_U(3VwXuSr28>=uKU(~$0jQn4| zyT0hy;(zw#Yk+(D-D!*BG#v0V@;-fg0QZCU{ruUyJ{XpFb3c8Yg$@77W0Z6~nYL@c z(RYCV{que2eP08>WeYIa`Z&w|-k!1Rm^mNHW8H&k=l^A%7pxq&m|xRd{O@Z3azAaS zFx~NgqVw3fI)fnf6`5`U;xhs5*fx{44jA;IE_vVOzA>5NbIO03zY2Iy6W0QneGB)a zeBAdN9Bc z_sso&awgXR@2Wr#$F=Jl$BqA^9kI`(jeXxS*1tC$`}2GKcu_@}SC#)gzw`w+R-yOp zUYlBbzPF~1qrJnXq`3yLVEY&^U!E;y*$dtSSUF!af~|{9#eVM5IsQ@F{p5{yqn>z- zu?gJIb7=EgV138-H>XedzrkN^Tyr}NELoacwwe3AKEA^ySlFlEqKvYd zvCaf_HbV#B!^yFy{3i$;sO=HeFuv>Q4j;GhnE|kBGk%=$4S1Mh-eqfH_+h-xy*&9H zE-vqU=5dd4JAOtPh3zw$wcE{)*WcFnVgH+blYaP&Af?&-FZ4l)dDm?2S6g_`Khq7i zZ9Hk8XCv?2N*%KW}W>T{@fx*S$^ZQApH z7013j^S^I@k1a{t-+9qusO#8Yu@<1X&7~0kzxvaDXNob!%O4zP{xdJ>4`YuBkV{to zU>-jApt z=Xde?Ugy@>_0$+q8Xk!;ba4$p?x$qez;a!&vF5%0h$|emeCK_S@8^E@GYicIx*l9_`C2R?2X*d^wh3e zHsgO@H@F5M_Z$BM$LnQZ-(G*EJaxX=YTVEM>N<~O>gk|=@f+nK-_o@WR|&D~#rS{P z|L5ob#{Iy=0@eT>_rLQ3#Fh8?Ta%xc|9PLC<2sWAb9)>U-qWqTPwvkG=h;e(`}uo+ zxAd8|fvPmrKC*k+sh-p(=YGF`L+)>a@At*;_&EmT{>cBZuIX+U8Lxap9QCE1m(14Z zQ2)mKJNTdeb1r~`n%G>t+-S>!=brzK`!oKBT`-^t&(kQ5oAW&DZu|~MyDwlm=`rfN zju(t)5VXFH`+fL;F&^#Q*Z z4!mIW_=mnm-sk?G`5gvzoXP*$8X)rjmAcWM>wrwh`MhoaxA=ebgU4eY?V07DxAiuk zy??)t!g%RB^FNk9EN$Fh7d=e-zCZGRunSg~;MWwEaSy z#ckf8(9)0Re)>2ID7$^n52a<_e<|lF`M>c#&SzdN-v9o-N%WuG&-PL5**{)jqQpiA z(otVXBbkP-f7E!uG57s0qrN)E@B^3T)>n6*5gbHVpX?mCZ)}1;sq-vv+}}Va$Tky8 zJna4bJoPyAVgC5uf6Vt||6HKm2Y3kPBhIU1bf1Pc1}Mcd2tVR|1DJf|eg^V?-TV9J z0OWlJ#%yE!@7&Kk?*BWV9?AXGJ?dZiTI+OmQ|Eg-Gd&@XzCn0u+P>U5dgOlkUhAg% zXZ-KH^~k;dzuWn&g zr%RvYe2U`}`F~skTyYsJ``POJiv2!i3$OpYuQyN+;&Q4Q)(RVazli@E{cYJ| zWn2T4_IS>eYk<@9%-bJ|r~ad3pKv9{{tJm9xYCC@kF@hk;{Rv(NE!W$+|T*g@jp=_ ze2!MvzJo15_>8p6xF@CXjU10^ zAN0I9|FaKD!zA^cnX%4dx3}+g^mWI!w;q3*zA^wF;?Fg3zj5~o-iPZ;;5{^8Xgca1 za5X-+Vw`zj^3W&y&EyvD=X|QV;2G!OUSJ*L{f_^a`za5?V1|HUerq3e);WL1|1Zk< z4(>Mh)5lr3%YP_6)ZX^}-1|ekO?MCApdN2~LyRVAXrIUXeR&vICU9E^RFG>v>-jn# z8k;}2q{;ucw7a1Vnxw({r_awDwr~yL!TI0LTV%G_V2l0~7_D7}6kV{ZiS%t<@zWDI zf8hP+sKf8IGS2R0n%>lTWTMT!xbKV`|IgZ?4qSu`dVRgivdd6LUE}_LrvFI3+pyH# z_unjb+iSeEKZMf}EW0}PnMdgJ<@(F~f2dDf2T-{8kHTw36#DP)17PfXf4kpC9SCQy zF9)t8ng7fK2EczMw{m|yPvJv32bRzOUzun9e_ZBxy?*ci_3{4|_W>v$|HL!GkWU%P zI40K=8(+)c82`<7cb_B9{n5rx%>DFX7LM~jul&H%*9nZF^e#DY-rl7@*f;f`K2ccr zdBY!{&vxHGp0}P}wKcV--rAOKyt|EOHnK7h?87JKczACLFy-(H^izdepO^yU123ntG0 z&ix)A)fKNLOvmHQ`I@(!FMi&n-`g7I@)VnT{`q*;IOBd4wP5E&yZ2A-|GN0UIr0e- zd}lxm2j|CZ3Ow{2;GA>5_t>9>XZ-$WjPzfN9JKurHctKbb7gfRT=Dt03GpuS3GID^ z&r!$JfBH?o7<)SR6VK8EiIoiRGch$JNe}ofpB9iV-S}tsj6JW9eLpoTU)h09tnN36 zDLkeW`=w&s7l=9!%KmYLD4VzMay3Gdk;(hMN-WTID?atTDoPSuK@9_+|%a!-aqTuifZo{A! z`I#9Z@FU?MuIFAn;9T@C^PhRF7KHEo>DnDQ=CfK9=)v=hZT`TmaN96A+$URop0j3) z^Z%{)Afo-$X~*<63toOx%)5c*8^OI#pXvw>9ko02oq4=v{QLBXe?e6s(#gpGjf99_2yq>N z?9lBhZQReMxE~4{GD+)Gud>wEP|3g;{#A;X20JWCC3(^$Jr{73t;^mBQ;D5qy z(3AUb;s3S1@%+5#Vv5zJX-}6QL;mRt+@-*#x7qm>vV}9iAL&OKaTLAx47uNyQ z6ZOv0sI;mV^I{r0W`WhJ+`|2|0o*ru{O`Q)@p#UV^C`XtfE9KRfbm&bo*6vdHg(=?p*?u- z>GH|04=A`leE09HtzTIEZU2FRzvn;NT|VPD$^U>7m#}rHdw+WgSSTg@Q9ykyFwL^f zH9%~SmbUHnYYJm1m^mMP&C<;f>MeS1l1D1CCGYCGDO2*=OW_ zC~-YdmxfXfYnMOw;h@h;AKusTIQq==J-W8rX3p>ShY#X+>tr^+!Ed6US_4%6&vb3& zaiqp_WUTT~XBJo;ax3?vZNmMWhFK`*1lsUB-Y$NwnjOynx9XI8fCy-$}o>_jlfB9BnYZ$9)6FQDU7lX@6z_qYA|Pz7FU?l{5_8 z&nxLaiuZj?QsL{t~1(>H%N4S)jIBr$D5c%ecNfMS%q#qIH6FZ$*tT^ z9gY9vCfGj%fS+Bsk^9*XZC=^^yv|#BzGR^Jt=vzn(EY&wop0d)Rc*Yv|F?AHe>0if zPkAKw6CNAW#p6EZx8?D>>EmzGjXV!kt-hz@n!ul9 zVN88T+Pj_@yH4g^Aebp8TwBC?lQgo^zzO0r($eHS+UkN=zG@$0ev1?`x(h<#Ry`l~=Ct)APnw2L~JX0Z5% z`~U4b4p1<|D9vY|O`eyw$hE&ceQ5i}>^|NvKb>NqjLS_`tY7)=1~a7T*&cth&d;dm z1JZjoZ}YQ}uO9?P9i zZ{>gLh;1)8=G6nEY%WWpt1R z_uI!TJUN#05;)_K6-l}b+$Rme>y&um{-Ot!y`$%$ArDXTfBSv|I?M3c%nPP;^?sZ|1%#wFZxBFd4|Tkn08Di{BM56`uC+_#ws-1kZ5VtvI)tU z;{5Ni=kLXP9Pjr;_wP$KlPhWsq@GD%`tiZGf%dc4fohLv_0)Vxqr}c^D#M<>wrh-yg(0y zwlVheh_h@}Sk!$#xxeuL!nX#M^FIz^+f|zUKdu3I zy71)B0xl-h|E9`n9l&;3+h^ocYPs2n^b*^9wh#ILgy%g>&7N;rd3c9DzDc=_P1c@y zaN`vJSGSkFfBDRYd_VvKFKqk&3;X6@Tv1m@qpjoj_3Q7P8)o?2teXQ>W0%+IVqg4= z`+uZkoyVm!|65~fppJ%BLIxFua?(a>k+Kl4`l_w&gA zh5OI&f0-k7PCbPCX?r}+k>+p3wSB*rnU4?jzhH(_??uD@IGh^0)BZn#tKElq55V(o zjV~Bip>674M68-uJluzK@@4cHe&w z7wrG}&K~eT_x$bNKhGG`bFr9dZX!5zE>r$z+ZaL{Z=1(v>mmPX&WOq3Meh$7g{;%ItjP+LhU-`ZBFY01> zSZ~C7k56aLH{X$HX;f@!&nK39{75zr`^o+GTd@WUp@Gm=8_(4FTIO{Q$1kz>ztxt5?H=m?!9ESo_*p=_e}6{D zSeI*)xIXbdSns31XRVC8k12}MV0uP;B$eJ#z!S#Xv4QqvHx2+XITk63#6c=4c^Z10%t!?b*SUU5+*%Ify zfBxrqvd_ODSA2(QtN)J=dS}hvH4;B4*z91Mc1F8+ExZ1^zdmNp*SxN6)H6?`OCK}D zV~Axfja%h3Yb~pF$^m;4J^YN%KIe;N9WFBn4)oXQvHGLWTgUJ595sc(<2knLz8+Nf zq5hw-$>+1jXWGu{?(uc92H5nU`euFoL-IHMhx0l2bFKbdex}zt77!!#(K5=1u?a9%GPjc@FQ+``5Te9I?f@pTD(OF2)hqbS@wFpZp)!0FUB- zT-`4<)BmXm<{=p3X#qsfa)&}!o#s97eyidPBBmZ}HS05Z# zFWcMyv)&{4-}}pAo}V56^SIg@>nGPn6sMsdvqTqK4RttHi;(~QIHoPHnCDQ|_*U*W zS9@LDL#+1wtT)=6`p(R(?msba2EapnjnAKCm_C~O*+(+Rw|sd~|1+Pzl)R76Hpi#_ zJO6uJ>|W04^L{x0dpvUfc+Mr~b$8tu>)&)d_5ZwoH}$_YH}5J#;}w9>r@iryb$8Rg z7I+N|T=uS^Y!hXyPu_PK%N}sN;r}M?{(U9Kg!ceE{W)Wf_nH1T{D+!zx=Q^z-2(3$ z*T>@@R#TE@SGl9lrUSbC{$b3sbgG}eX5kc;Q1G?Z&wOXz*Xqw%yZmFYV)}(|_Cee>(eK`uelu|JHo@N0jaO&vW7*;pYKA z=xY}K+x^clQJxSG0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@ zLO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYco@C6~@?<2%lH~(?pgP>0gZ+^D- zO{A#*H~9bSn_oG$X?XVse!Lq2h5tyQZ}c&B9+`Xozj}S^Z;^jGJimMW-IdbD@SEB< z;ywRgzrl|(GWg4j5jQ;#niKEde7I81=)GLF>c57rC^^<2{{B#W!~f_z3)fe#URfRf z=fUkh{$l#iwWl2vTerFWHTE*coX3}; zj+aqMITKUo`GeFoJUzW#>1bu12=UVs*C#HaKh$}`nu7jj;Z^wUEH9tc^>W4qkC<~T z9o8c`1j_xdMxe|s&R@*2_S;GIn0Z^mc{!7N`2QJtDO-JKWo`>NpXZcI^)VgiTGr}% z8^+{*8sWUpn8(*2dLcjm`Nua+sB;X){iql9cj+JbdwJ_}t^uBrPww}10J)!b9A5(% z9#Ef#((l)>26zR0DDeG^a4b^KOXewEX}@2<8eq!*oGTmtmqJ#!;&-$Sr~C2f#^)BD zY~$iclCinMFuW#vZx##e5 zxCFb%{agHBeN6p-_39nwG$yM}?Z=NJhV3*4Z_$PVw;<&IjQeS;*SR3=;=Zt~^C$7Y z=ii~ewg3LF7>t8D?_v+_jiobbJMw>;Iw@|IGDcy-tGSl z0X$=XdVU{(Cnq{t1iT-^(;NOWb_q;(bz{4lcJAjr0H$dZ#rfW2&!6ZU{r2O>^8X{( z0w51up>NvrCm6WDV?4#5+<%z=X(#HNjQsx|`4lg|C+2(fhxU))|CibO{{mZwb78Q3 z^o6HW;ePu0&eH3BKg-%_fHAsuGU}|yh{mwb|7hW-Y8Tty8aXUwolb_me^)lv9ge$B zOgHquA9K$i!v+N*kRi~WOZ|La&M}?_E8+ay68ttPf1k8#H`dSeKBEmKE1Ts-y=VwW z7u(8l<~#FB-68%4$MzXK;?a<&e_>IRgzw(1-(5ded;0Fj>zn#p(6Q|D_CKi|&5yyp zXt%9Nd~H(gjh|W6x`@(neZmD6C8y=BJ%g3B1M*E@OrsC%mX566N z)2Z`&x^0Z`+3+uW{gLzkthUl_JbTx4&-~ldnUxQ^K0INEn0$6^eSZu#%)Cc?@+Z1l z?9KYUDUUka^B1O{9nm)4%>N_NNxU65xQd1Ka_sq8OdKd#S!Lz;{;|#TkT=%Jj$N;nRr_0>9XE%EMDW-Be!7zXd&6-26Y~Fn(jgq-eQ!c+ zXJK;<(8gr3(RBR=ea`(JSKECJzytb(jCi{S>YP_~*LfI>7VpiGyzEyvOi=u=yVQT3d3lpF)dnW)ho> z`x|CW$I|YevU)!OD*AAS|DS&AKL=QRqmR9v@%%3J`tq@Uf4sE*Zb{yq>OI$y5NHU5 z^R!;IyZP+r@Fd2}T(0&*`YY!DZ0}F*H(!ZQy$1jkyYruGfvv#$V<7KG8FlU*+Wjl>cd~+u!#7;Jrt4zV|`Bp-<=kW`oyb-0%Hq=Op<4Kll>$97_KI{gkM~r(l_f zv23>Yk9D&2mCt~5eH=U9+!tp>c6@yc7;l1?@ztQ>@4+yf{o-8?h};n zEO7o8+c&Dy1_dFIA#i>A4fDqZlL(c9l)2?|Y!$QqOgpX43Ybp{{H9SL$E3KN7Umn(`Kjhe^>+5dWh1n z(t}zd&$%_mv3yB)Yk*Eis6)HK{h9rJze}5SKCgLE+_tSYsqf4TzUFE2f4T-p#=!Rf z2Xr3kcU9*M|F3PJuSxKIdhR=bfc@6SVNe?(ZWHc2W2YrH{GA2XTP1HWo~e>jr*?;14el z50}Yvn=Ai+cpKRomT^y=Nw6b6i&vM0czzb`s=(0}mOc97$3C8hP}30;`)$3SdS2q0 zXb&srl_3NQ0=TA>Ifp|#&3Iasw9h9VyC9F8?`wcP{vYoFcwZhjz0jHE#qw3U+S}T> zy)|b3a_$yy*Z;>lt8{Q2+Ll1xr|vU>^`Aona{rs>!u|dFeeh%PVX=?=55d3divMXB z?*lMi+O9n>Ig8GvZjyIFo=fCn?`Glsw;O91)P}`Hh(|8Y<&0f_j3f6m{TcWlKG^pj z8Am^I?(OTu`bW~<#|3>={wMdZ_@C>5THe`I`ao71?z7Ewm$5j(9_ zzQ?^i3ay;+$o=qSdFUT$a{u2ow)#l3PLP%JBmcwteg6MuSu8)jUe+%iD zKTY%euI;Q&Jl|bM%bSh&;&*?&X!*?;*zVyh|39N43`qIE?E9OYtzXtprSd+xpYrt7 ze}@nmFTnq9%LVG4{~hBPmwK}`0BX`=lhilka_X3IKl>)%hijbG^)-Xrxr)(U8lY=c zx8%W2mc{*l`#vDc{4chDApf_%F4ex;U)=lK{@?rmO#BbC8iq{sK8f%BEe7xVp4|59 zbsZ3KAGzOfC-zlhU8dXKzv}Y6ztzVWF!nxcTSR@x_#f7<*8t%BCkk|$EK7j$(NMDg zU-3Wee4@CHX^j49LL>q0j`06<4FEUVX8~Ab^In^+0k{qT|5F&~uHXA-?4jd-*z_9XOldxGEkFr4lyuSQ zdQAVSPS!5w`T4mR1lwlMw7`fj_&tGvv2<|S>HJigP%jQyQGE#V0-*PJvMvY?!`Y8r(vZZwGQMh_u%1l?azFHz2D; z{`_mvNBtxg#+29m=HxFWef=Kf6U6J-dmN|}&)Bs**Nu!x$m*WV-Zp-dXO4A4^|M?_GlM`V28U zG60k(1UR33zU|JfZ!oVYf%BP$f~LcDZN=Wt$p36ZU3+5ncph*KP}c#ja~{ve8alSm zDKp5J^WAJzm@xGt8+hnXL_{X>_t7s-!H!1?Ek30KmO2hKi2_$`GV~)_+B4M zuW$cT;=G=j9bG{BZtkZ|vyj_sZysFu*SVju^FI`}w*39PcFgN~C_9`c|ML%Re}Itx z8C(0x{agb??!S0BWB-eJOB!m@aGR}*UbMGKxC|WZz`;r{^Gs@6YuM>ow}HiLJ?xPD zUOC?M)HQ&w1-i0gOXfW6*$>rfx4v<|uK{AYYrBj8FC58=R^oq#Ny$SSG&Jrf|5p+J zXG5>Nia?laoIC6DtYp2bKUe&=Y~Aj`ljbF_tURg*!9^Aa{fo` z+<)u-|6cwFOt8Uy_jnmMe|G`7|K<6=^gHhV0rm>lI&y8avpVasU+c-+?bbU#{>yLY zwY|Ud|F{NtDgKZ50Brvs`2R9uj5BEioAdsU`lrXki5u+jdjK%3jQdnav7NlV;e(Yq z_j^6#eDXi9B)$%aYlC9X%75p z)2^StXT^N4eC7@#uB;dx1CkU+g5$3|tfXJL=23+J>Wew9S4!Tz~hU{bPT#Ft>$v{;=3O zJWtlz*>i30xrqJ2K5s@xcy?@QXU9kIVt;jyc>UMq>f-G`e2;hBL$Fyi@qCNH5%xFs zvtW&CX=r|+^oDeu{%DKFI87EE_|a<9XZf{!)(3h2mU&^i@%cG`U&Pk|@SWxLy;Ljb zFK?Y4cTeHn3dMSQumrrK0`JzO2@58-ri*6i3G;ETi+wJ3Ftu`C8A6~Su<-xW<>Xwg zv$C9KHuvLsz&VI6&dJv20i4HN1Dw@a>d(e|Q(xo%%KLs+xeb226_fK>pRuRC{Y^1( za7nO0X9UUkKj=p?4HN%gBj06<`^mq@#`t#r_w`3+2mALmz~-}*sq@WtAllOI53jXJ zKJNv@y2k$)4~ww|u(G54ANAKXe`~Ejw;%!3tO9Ui07?%qFZ$NMA&cj)jnfb)Ni@8N%&TfEN_rP_}t9ac7&C;-`?~CLAZ}Hs>$Jwx1`(6g)Q}BP`Ucc`TbW<$J``7QW5rVJ|N0#?-U1se{ zKHF^ZKl?0p?A!-{x^>_eF^~(3>L1flm>-Xm^osw<{VraAc5mMGbFW;}j3s2*8l~BmHV^(|1zJp z{4QnW|6hV2*}_Bl-^T!J(zkEXH%_|F|L^g=Sk7gBu_y^E=anG@3IYrNW8NU^q@WGk zxgass!FK^reh#u#pJmkR+;8^b_>7I##(XN?uK(ZE_ut9?zVG)qn-k8t%k%%Uaf#f| zI(1YH_wjS|UWfN_g#UNn0k9tVlCz9|;fdv#^X$O=R_Fg~{R{xDiVlydXN&(?kAGYP zK-&HvNJakdu|eH<9*q3&I+r^8{x5ZV-JAKa@nR=2Ps}3d+s2sOPg%9+xGwgy?%wDA zv3^YZ{@?RB7Sv^H3dFV!AQnl;_@7N&*WtK$>t5SEe`J;82i^Z~wq*QYd0+gW46?HJ z5Lo6d=PXWu)8cb|+8%nz`{h!wj=g;=4>ow&RClPG*}k-!;jrtk{hr>5`~Ud3|LTJ7 zclDpb`&a1ucaXtnTdyGR_aT4g{Jd}H{{CL~yna3oe109)HVj_B#~{}k_w>h-e^zf_ zpP#Rk&sh5WPCts$(A|fy^~lkC_Z4H~8eHc+{==W;@|g7k2C$;xQA)P6~{X2d^eTEGx z9I@{m>QPvi%K0uJZ^!if{{IDiFTvZKiuwJ0%xTIK?m3jUy^l|LH-hcgxo02u?ZMW= z{eHxH7((O>J%0BTG6owBgM{m61tE|kaDDogXJ8dfB-A=DY`<#vQ_)*aOO&(DhM0~- zPpbQfjo;M%t#0c4+U8#Gdm2pcKgjxmajHD>{}b>XFpmIp4M3@N5T(J( zhuC@FF@y{We4Sw(b#5#Zv ze7AjPeK${grkm@W;A>}lDY5^_QLTyV@r61T{LwTGK_{PGIP(1qsI{S_ zeu(ovV~T$cUt{#z`WX42bKn|&@A-nd#4)xxlQw&>?uu)G+8$9KE^jZGk0qewwm$hB zf8+g8hvPZnf8cXdzm@xGIoAO|unRnfJ3++%{mAPmAW-%1%O_R+t^PTFB#_^N9F?*IAS zymlXeeviIWKlg(ESNHzD2Jm&jG2fwOu=i4rkMlpds=UY1>3ezpGwQdgRsLfG3Vbl$ zPx#;MLM00s|GTZM%k(|`&-(!Q;%npounvIwJ~;oEXXc`h2h-sG47sr6(vcdmux5uBB|GCF-DdX<^ z@Av%E`Ghq<+jlo#dp&8pR@dj)?f3s(zpnxO_-yR=0OI@k+HVAs=XoC>+U?wrIP$*l z{h8O*KXH6PT}o(=WEyInvRB2D1e3Pk!b1(}EYcmYV8Z|Ct@V#eEp)nwL9KT|O!50D zo_{tDoNsG^iX+tY!TFztq2!!Y?kE4-z5m_z;U0k3J;nbE{v+?3{p5X@FjnXae(`)# z5CSOzg)7&5dG37hIc>4eRlb|X-%sOt7vy<5#_{~~{Frx38hVyj&(?JfEYm^*cA{snsoQoc}#OV#}ywb(}iyHa;T8 zCjc1ox3>2r2T}MuTKNM`*!;G?mS5H_oO|Rw(`aW*M;-U1vFWzoBTAkB0c9ba>F4qr9V@c>y#?|*7*f0-XF^nsbnHsj(k> z?DZIDd9nOp+Ru%0Zsp#WGW1!ly?gvm<5;&y;Qz|~FU9{{Uo79xTyy`Au!*)sS?n}> zahQhSkNb5bcJ9ylA3d2~t^;7yW*@l14du@Jp3iHbi|3t=Q|H~zN5zr<$^C6F>c1yI zUwQo}K8*Q?wDUjH<4n zlZ$`Uz}WLZxhtEG@c+*DMpruN*RIU?pKAg9*&2YUOM$>E@_x&C(n}aObt5YXC~!|I@B_VaG*$pOgI8Z_#aHzjYIL*?*n{B{=Z=@V3XjNU+mt$ z-T%jUm_PK$(x_wTwV6`A1jaiw_Ym+APrF3 zOc`|JFb!k9gU7t4uliW!5wWfwzb`emCv8R@`^TyCD_dNT?bFsAJ+Hsm z$oawGzv=cG*MG{>pXQ}8fTg@Ik3n7^xIQ4SGcU!YmU$aIf42JbvLCv-ssFTddEXtM z-=KIq78Y6ZN?E(--|CipK0o;G2b+e_!?<$)8_(nK(zt%BUJ#k3Ab|dDJ;e z_nzxW2s8xBDIWPBlL(~`7UzAB<9Yq)zMzl1Pd`2p|G&BXc5U)-{wL>0>G48g1T*7) zj^!-eIL-(7pVv43)wu*_X=%^1c$5DpZO+fnhxpGudS|;I2Vcqi3?u*B8X(kzCcFRp z9qyk~$om#kC;wdc(KzZ}>qz}KL-Aj~28eyLut>BA4Q$SNp4TD&mmvTDQ6 z`sduwK2X8rPsDr&z@*)sx(Juf+njkGt~ob)y2 zf7T6c{c_ATfbILS_iy}M`B&AprQsqdxvAAITd ze**p|KD_r&{^xi7DdPWnUBXD%{2}*$4g7y#PH*x*+gG3CJpks7p8**6Uuu2wy-Uz> z_}r^~w)#9C^H4Ym7$dS@3FtmK=gIlY8UP2a4%6K8qdODyVRfy3(;4sivtHl6KA+cg zQpa-Nf2mt^pFgH;neUPRtErt0oBh@M|MnR`^XH+TS8dxu?su`zY?d)}Ut*m3uRI}O zbDXDS_fB~`mCGreUJuTngVv9&CoY)RJRhUnsIQ%Op*?+}urHTVZ#LMQ=NaD#WX67r z7((6HPF(Ry@1@<3SaW>C_Z*b-{|$~Q=5uD_;XL2>^PSB3dzs5Sc8iVQZ0o(r|GRwf z>k}^Kn|iqab1@%IeD1#ObL@B9|KE3P^nS?G<1>N3ATJ8*Vt;6Re9V|~kG96d#C>JV z&+jh~{xSCSJESSzZ){U)FJ)dQ#_T5^&%E#IU}7V@!pGFe9^2RB@~pj=0}lLNk=JL; zwZg(hUT?9b^x?;NDUvnz;}TPc>st9y?Kqte)noVpNUj4;?b<(Lrr}N}$a4=F$NL@V z;a2<3wc{Kd=ivoo2Ya$Gdah$3P!TBHk4e+k06h12?DD8N{VmUx3xsi$2c0u+FJtya zVY=8q8*ndA<1d~6BamMl|NFezzAd6{r{?btbgd(_x_CU-uu(u zS?GP?wS`=B$i@@(d=237qxJ9WJLZ3;hn%0~dmhdbE9W}E|M>Z^%NGAr$ECKi823KN z`^@K`r@gP+{$q>_Mh&G5pG^lHm|kem^S{3*dZ~A$?}|~-y|hou z693oy@7Fu>{$42lx&LXOo$ovL&3Qfe_?qX>jQ?5hl3SfPuPh-z1j-!6w6VF*H2~B2 z&(DQ&eDD0eye$8_{fwReJzad9jrQ(2YG8Z|6d=EU{B>QQ{BQUBA9vr{zV_^6GvWU- zNF1oA>(1VvHqXLxJ>hkw_4$uW&;5U-&sYPr`~Kwby}$PTJE?LC>*RdneV?b3dfxA7Bacz0AOtc5 z%KXKb*lj*DcK-DJGv`m4LwC&eOZn}ZasSVE4khohhoQ&&a{J6i=z9*b=*fI%Ue^!r z_pjao{3E=t!usETz^h3hOWW^}cIovkbx!2FKZ9+fuIsN)*Jsp0=fRd~8qL$N{cPSb z-ADR=(K@fdqb@+8|0_PE&Li_>?D_$EDfYgfp%1(}#`T@OWAVTe}C_i$9uN* z`+iJcyyu3~lIxkcrm?Bo`FVYXJ^0FR*26dCR{48&Y?eda80PzbyWaVE7-A$bqOgy0 z=DUAezFc5;6z6xwr6=$4`V@XE8Qvrqt)Bp>^+xA)ECh(aGKVimIrM|6J;bvFEWp7)sNj;B4|!r0G< zB?kP^G4ek-9d!cd$MiB5Z2J}P|9XzW?t&9MZ)wk)#*zD(cK+x30)IfG$*bS@^rC0J zlq`hWFCqmYutH#&r&clQ7S|MUA_9@h5&2HQqkA9(EizrthQ$07eu=zE#x1m^aaapDzmuTEb6 zc>nW$Znf{F+imz?&l}_XGP~FO&vn3v{fG7(yq^<{`@MhM|Fga8FS@=a{&yegLbvzl z`zwN=G{I^o?}Bod%KOME{cz78Wi<{cZ+Qi8x0UgCv{yk0`dNgSo8lQ?*Y)?{62tl|7Y9( zN6dIHAl?s%=~(ZcG_QmFyGO@t^zYMouT7t_{R{!v;O8(ozRYd@U-EtbU&@$Qr~guM zNR@WvA(uFIU?c4RErk03%h-CqvCTu$iU0fe|7j;739yu7IJwx2cLC!b6oob6bypVa zdAcG%^`-6wZR#JMm@I!>2k>6N(ASY;Qyl(78wDYdA%OYyO`T(iIUj%KoUHSbG2fp> zVVR51N&7AOBXjgp_vMI9H*_(kKG(Gyhq`V@j7{&KcCSL!iP`q2!P4^Ok;j$kdkBX)4JI`sTa%R8inb_7rvW->y^y;@%=xj zirKb^L-6#Ua!-TD%e{@*e@Ua~@|ysA^Q89S`Wf?niwAor1V7Vq+0(Zw=MxHj$oyBH z5C8)8`~vs4wC9C*)5{7=8I2H?otjfv}E?9a*_!fmtfQ{#WP5BJ-9KaR9vhyO8P z*FUPDI{K_~;~L=YpKMPK-WrQ7{%1S4V@pRYV}DUT*gJ{nn}=-hNB;M^F}4{E{`bJO zz|=Q>1~B;jDt`C#Z?2EIyU&BK0iJ%sO4_-f@t||}_+M-NXrmwmG6d@U%J_dc56Ale zXXoX!>kBcaDvUZOY(t^GrgK+E<~#Ea_l=77JpkwbGi}e+-Qa$1oC5dLrY~au4?7;V z|0m}=_kRlhPp;eN#_RYT`lNan?&lm&!%q zxF0U3A#;9<|Eb1>dwvha&V%C(V~qd7`%hJsd@@d&?(uLIC2>^~&yoqw@B z^Iv&Fpr2RS8sONx>-9|9JY!yC!gs>+;o#i9vmTnK;c)+EIPL*Fbl?B)@!dW-_rvmX zbLr6U#IdcDUjH zg!`!l<}KrP)YkEuV8`V38UK5k-{&vY_`U7pVTSDp|!Gq3WxbEk~4w-Tu+) zSRFFf(Ykx}u+A}Ej32|zsq+uBm;OA;f9k;p*Eidi+cELKn@Z?&eT+xY4u|#oe(&(3 z&5>n)U-tUFjXx|Oolosdoqv7l>eEg8{xjnsvC?g0Qr9U}r|WBdaL+%i0lGS<*pJIL zrrtKjssG9p0__~zo>Rx?J?H8~7bc|5dEOC|2K5a`k3d>#(HjVqRUQ1J_k^_ zpXb=qum3rvqv3No=AZHYg!^ev)3=>|i2s{?<-Bv$zP_IG|F%zko9(*${@-i=z3tup zN9l2WC7$@tIhYG?HFW{=HB9@i$PYd>|9iiCaq9f*OKWDlUwN2ryR-^5u{r;Hyu;iq zpZSk)dLLcilXZaG;dc<0XB?CBKhcr;uS_8@owLcjnmm)XJ|`x;#`9|IZ_58k-LdVt z9+D~L&urAe?kwmvx8LloZ>-!5AlDquSfFM=iq;0$v?l} zz}VAAaDJ5k_w4=Wc235BnO1c==g|e(l#PI{F&DYl1#S-$e5%x@zTXGfFd`Iv09h_= z6ZcNr?Y$iJog6O zoX=w(PJsQqc}X}|OS8SZDhuaN(fkEA<7v3mfQE^B%K2r#aX;D2&H#pgA7 zzdSEE?K~9pyzi$=GW}m)@OzGsgm;6wF1gs`w(Z4yDh4(LEq>hM*nh3t+4MWw2MMYU zCll|LB?O2-IM0rzkG|&y^ET?w_WIwl&Lz|v+QjzvrDvlZ`ab4A8qi4l;q&-4si#+b zrs0^5BlWKTMjsUD{MGwJ9KV}*L{F`QC=Cy_89jWd`cmf~W-orD<%#l@`JWO9zUOmw zNh_4h*KzVAYnh_=;t+L}^oAK-5gvOCc9irlZy0BRZ|XtWAb)on`-A@X3=a6ozJrR^ zSH}5+9jz`5dipbnx2^Sq`e`!rUU@XZLnxDN1k z9>)$Q>D+(i3IXTdv+06(4fUx$`CU6S=!NGm?E?2R ztbF_t-;tmkwB7XAeZRMH{`cb>Vl+v^VY|@!Yp$C*|1h6klK&s`SxD-?O<4Zt+}|>` z6FddRz`P>2%##b+Qi=}zbmHOQZ9I0)j|x)f`F>(la*6e4>BIh2?vLNc_kKG5PWo^4 zyv%vt*8qO(ajiGAnfbZ@$`t~)oU3QskpDRceH}2iFXueQg7fsHWH!{N`pfv=ZT9o; z2`9McG3IvaDF55%{1fiy8X)RDnMU5>FzGt({XL&$=P|vY4W;OI?q|%rS@8N}O#UC&0J-~x|7ZGV`NcojMvgZdeGb** z!2RTZy3mR9Hses{{lz>>$NE{i>ew2_+<)Z?0iU}s9rN7y6O#4AvMm3hd9$HD-8UN0 z;9f2~Q$lKBsk-^QzI?uqYXZuh7(LAYJMFmFk6YV+UH*d^9`w5hj#ujc zGGmXYFcs6l{6+TW>jiaPV!J+_c7)8OpThOd`HW+kw@;ntxprrWeOVgs2abFGl>gBu zdmhD28S`hytUs2yjxkRCSEdlaqy-3{K*;?(H^;u1m*tQ3?mnK4bz;+YU)5kYe2K$J zcb5Mf_Xqy>-y(bf_tVETdwaN z?;hLmn+*15=G=SI$10#Z^tl#RWd1C?{Ux@+Z|iN^eM$T9e%}ty7J8qN-#u@PT}RAM z-G2oC$4-Vcp*kwD>CrYm6tRBP6Vs{x$`k^d=jff+o|W!w|Icg2qx(tq&Bpq4|J;}R z#Ve+-7e6CeeEhor)wG9To4_>-+H-r~WHb2;hVR2>%T-8|%})J1=|OUCio{zd}s;+UJG)RsEQczx`tSfi(c1!+XrLcrTA_jpw=l}Ei|NWo;>wo@_pZ=Hs?|=KB|NZs<`t<(;ansAO diff --git a/images/spec_icons_normal.tga b/images/spec_icons_normal.tga index da9d00ed5bc61ffd8de47cc1668bd31c43a28a0d..ada5dfdb6a162be59d3be2c4fc54ddc55616f400 100644 GIT binary patch literal 1048620 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 NIYcb&0PfQV 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 b=(xIb?F-j0Ub*=A_QKN_E?)k^;g0_g@rn^L literal 1048620 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

KH``>6xKeG_$nB>x9A4is4pV6ps% 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�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

`49WKpRL^XrxL2eNFo360H(&4NuA%5 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 EncounterDetails.db.max_emote_segments) then table.remove (EncounterDetails.boss_emotes_table, EncounterDetails.db.max_emote_segments+1) @@ -283,7 +283,7 @@ local function CreatePluginFrames (data) if (_G.DBM) then local db = _detalhes.global_plugin_database ["DETAILS_PLUGIN_ENCOUNTER_DETAILS"] - for spell, timer_table in pairs (current_table_dbm) do + for spell, timer_table in pairs(current_table_dbm) do if (not db.encounter_timers_dbm [timer_table[1]]) then timer_table.id = current_encounter db.encounter_timers_dbm [timer_table[1]] = timer_table @@ -292,7 +292,7 @@ local function CreatePluginFrames (data) end if (BigWigs) then local db = _detalhes.global_plugin_database ["DETAILS_PLUGIN_ENCOUNTER_DETAILS"] - for timer_id, timer_table in pairs (current_table_bigwigs) do + for timer_id, timer_table in pairs(current_table_bigwigs) do if (not db.encounter_timers_bw [timer_id]) then timer_table.id = current_encounter db.encounter_timers_bw [timer_id] = timer_table @@ -415,7 +415,7 @@ local function CreatePluginFrames (data) EncounterDetails:ShowToolbarIcon (EncounterDetails.ToolbarButton, "star") --EncounterDetails:SetTutorialCVar ("ENCOUNTER_DETAILS_BALLON_TUTORIAL1", false) --debug - if (not EncounterDetails:GetTutorialCVar ("ENCOUNTER_DETAILS_BALLON_TUTORIAL1")) then + if (not EncounterDetails:GetTutorialCVar("ENCOUNTER_DETAILS_BALLON_TUTORIAL1")) then --print ("nao viu o tutorial ainda") C_Timer.After (2, EncounterDetails.ShowIconBallonTutorial) end @@ -468,7 +468,7 @@ local function CreatePluginFrames (data) end --select latest emote segment - Details_EncounterDetailsEmotesSegmentDropdown.MyObject:Select (1) + Details_EncounterDetailsEmotesSegmentDropdown.MyObject:Select(1) Details_EncounterDetailsEmotesSegmentDropdown.MyObject:Refresh() FauxScrollFrame_SetOffset (EncounterDetails_EmoteScroll, 0) EncounterDetails:SetEmoteSegment (1) @@ -476,7 +476,7 @@ local function CreatePluginFrames (data) if (EncounterDetailsFrame.ShowType ~= "emotes") then --hide emote frames - for _, widget in pairs (EncounterDetails.Frame.EmoteWidgets) do + for _, widget in pairs(EncounterDetails.Frame.EmoteWidgets) do widget:Hide() end end @@ -569,7 +569,7 @@ local function CreatePluginFrames (data) --apply the backdrop settings to the menu Details:FormatCooltipBackdrop() - CoolTip:SetOwner (ENCOUNTERDETAILS_BUTTON, "bottom", "top", 0, 0) + CoolTip:SetOwner(ENCOUNTERDETAILS_BUTTON, "bottom", "top", 0, 0) CoolTip:ShowCooltip() end @@ -621,7 +621,7 @@ end GameCooltip:Reset() GameCooltip:SetType ("tooltipbar") - GameCooltip:SetOwner (row) + GameCooltip:SetOwner(row) GameCooltip:AddLine ("Click to Report", nil, 1, "orange") GameCooltip:AddIcon ([[Interface\TUTORIALFRAME\UI-TUTORIAL-FRAME]], 1, 1, 12, 16, 0.015625, 0.13671875, 0.4375, 0.59765625) @@ -741,7 +741,7 @@ end GameCooltip:SetOption("StatusBarTexture", [[Interface\AddOns\Details\images\bar_serenity]]) GameCooltip:SetBackdrop(1, _detalhes.cooltip_preset2_backdrop, bgColor, borderColor) - GameCooltip:SetOwner (row, "bottomright", "bottomleft", -2, -50) + GameCooltip:SetOwner(row, "bottomright", "bottomleft", -2, -50) row.OverlayTexture:Show() GameCooltip:ShowCooltip() end @@ -778,7 +778,7 @@ local function DispellInfo (dispell, barra) local spellname = GetSpellInfo(barra.spellid) if (spellname) then - GameTooltip:SetOwner (GameCooltipFrame1, "ANCHOR_NONE") + GameTooltip:SetOwner(GameCooltipFrame1, "ANCHOR_NONE") GameTooltip:SetSpellByID(barra.spellid) GameTooltip:SetPoint("topright", GameCooltipFrame1, "topleft", -2, 0) GameTooltip:Show() @@ -821,7 +821,7 @@ local function KickBy (magia, barra) local spellname = GetSpellInfo(barra.spellid) if (spellname) then - GameTooltip:SetOwner (GameCooltipFrame1, "ANCHOR_NONE") + GameTooltip:SetOwner(GameCooltipFrame1, "ANCHOR_NONE") GameTooltip:SetSpellByID(barra.spellid) GameTooltip:SetPoint("topright", GameCooltipFrame1, "topleft", -2, 0) GameTooltip:Show() @@ -880,13 +880,13 @@ local function EnemySkills (habilidade, barra) local spellname = GetSpellInfo(barra.spellid) if (spellname) then - GameTooltip:SetOwner (GameCooltipFrame1, "ANCHOR_NONE") + GameTooltip:SetOwner(GameCooltipFrame1, "ANCHOR_NONE") GameTooltip:SetSpellByID(barra.spellid) GameTooltip:SetPoint("right", barra, "left", -2, 0) GameTooltip:Show() end - GameCooltip:SetOwner (barra, "left", "right", 2, 0) + GameCooltip:SetOwner(barra, "left", "right", 2, 0) end --custom tooltip for damage taken details --------------------------------------------------------------------------------------------------------- @@ -947,7 +947,7 @@ local function DamageTakenDetails (jogador, barra) GameTooltip:AddLine ("* "..Loc ["STRING_MELEE_DAMAGE"], 0, 1, 0) end - GameCooltip:SetOwner (barra, "left", "right", 2, 0) + GameCooltip:SetOwner(barra, "left", "right", 2, 0) end --custom tooltip clicks on any bar --------------------------------------------------------------------------------------------------------- @@ -1064,9 +1064,9 @@ function EncounterDetails:SetRowScripts (barra, index, container) self:SetAlpha (1) EncounterDetails.SetBarBackdrop_OnEnter (self) - --GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT") + --GameTooltip:SetOwner(self, "ANCHOR_TOPRIGHT") GameCooltip:Preset (2) - GameCooltip:SetOwner (self) + GameCooltip:SetOwner(self) EncounterDetails:FormatCooltipSettings() if (not self.TTT) then --tool tip type @@ -1151,7 +1151,7 @@ function EncounterDetails:OpenAndRefresh (_, segment) DebugMessage ("segment found: ", index, combate:GetCombatName(), combate.is_trash) --the first segment found here will be the first segment the dropdown found, so it can use the index 1 of the dropdown list - _G [frame:GetName().."SegmentsDropdown"].MyObject:Select (1, true) + _G [frame:GetName().."SegmentsDropdown"].MyObject:Select(1, true) foundABoss = index break @@ -1196,7 +1196,7 @@ function EncounterDetails:OpenAndRefresh (_, segment) _combat_object = combat --the first segment found here will be the first segment the dropdown found, so it can use the index 1 of the dropdown list - _G [frame:GetName().."SegmentsDropdown"].MyObject:Select (1, true) + _G [frame:GetName().."SegmentsDropdown"].MyObject:Select(1, true) DebugMessage ("found another segment during another loop", index, combat:GetCombatName(), combat.is_trash) foundSegment = true @@ -1492,7 +1492,7 @@ function EncounterDetails:OpenAndRefresh (_, segment) local tt = tabela_em_ordem [index] [2] -- tabela com [PlayerName] = {amount, class} - for playerName, t in pairs (tabela [2]) do + for playerName, t in pairs(tabela [2]) do local amount, class = unpack (t) if (tt [playerName]) then tt [playerName][1] = tt [playerName][1] + amount @@ -1636,7 +1636,7 @@ function EncounterDetails:OpenAndRefresh (_, segment) _table_sort (tabela.damage_from, sort_damage_from) tabela [1] = tabela.damage_from_total - tinsert (adds, tabela) + tinsert(adds, tabela) end end @@ -1652,7 +1652,7 @@ function EncounterDetails:OpenAndRefresh (_, segment) local dano_em = tabela.dano_em GameCooltip:Preset (2) - GameCooltip:SetOwner (self) + GameCooltip:SetOwner(self) EncounterDetails:FormatCooltipSettings() @@ -1685,7 +1685,7 @@ function EncounterDetails:OpenAndRefresh (_, segment) self.textura:SetBlendMode("ADD") self.textura:SetSize(18, 18) self.ArrowOnEnter = true - GameCooltip:SetOwner (self, "right", "left", -10, 0) + GameCooltip:SetOwner(self, "right", "left", -10, 0) GameCooltip:AddLine (" ") GameCooltip:AddLine ("CLICK to Report") @@ -1699,7 +1699,7 @@ function EncounterDetails:OpenAndRefresh (_, segment) local damage_from = tabela.damage_from GameCooltip:Preset (2) - GameCooltip:SetOwner (self) + GameCooltip:SetOwner(self) EncounterDetails:FormatCooltipSettings() @@ -1743,7 +1743,7 @@ function EncounterDetails:OpenAndRefresh (_, segment) GameCooltip:AddLine (" ") GameCooltip:AddLine ("CLICK to Report") - GameCooltip:SetOwner (self, "left", "right", -60, 0) + GameCooltip:SetOwner(self, "left", "right", -60, 0) GameCooltip:Show() end diff --git a/plugins/Details_EncounterDetails/frames.lua b/plugins/Details_EncounterDetails/frames.lua index e2fbb1c29..30eb83a80 100644 --- a/plugins/Details_EncounterDetails/frames.lua +++ b/plugins/Details_EncounterDetails/frames.lua @@ -404,10 +404,10 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) local scaleW = 1/670 local content = graphicData - tinsert (content, 1, 0) - tinsert (content, 1, 0) - tinsert (content, #content+1, 0) - tinsert (content, #content+1, 0) + tinsert(content, 1, 0) + tinsert(content, 1, 0) + tinsert(content, #content+1, 0) + tinsert(content, #content+1, 0) local _i = 3 @@ -534,12 +534,12 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) GameCooltip:SetOption("HeightAnchorMod", -15) GameCooltip:SetWallpaper (1, [[Interface\SPELLBOOK\Spellbook-Page-1]], {.6, 0.1, 0, 0.64453125}, {1, 1, 1, 0.1}, true) - GameCooltip:ShowCooltip (frame, "tooltip") + GameCooltip:ShowCooltip(frame, "tooltip") end end) vRowFrame:SetScript("OnLeave", function(frame) - _detalhes.popup:ShowMe (false) + _detalhes.popup:ShowMe(false) end) vRowFrame.texture = vRowFrame:CreateTexture(nil, "overlay") @@ -604,7 +604,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) --build the phase panel local phase_panel = CreateFrame("frame", "EncounterDetailsPhasePanel", g, "BackdropTemplate") - phase_panel:SetFrameStrata ("TOOLTIP") + phase_panel:SetFrameStrata("TOOLTIP") phase_panel:SetWidth(CONST_PHASE_PANEL_WIDTH) phase_panel:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16, edgeFile = [[Interface\AddOns\Details\images\border_2]], edgeSize = 32, @@ -699,7 +699,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) t:SetTexture([[Interface\CastingBar\UI-CastingBar-Spark]]) t:SetBlendMode("ADD") t:Hide() - tinsert (spark_container, t) + tinsert(spark_container, t) end local get_spark = function(index) local spark = spark_container [index] @@ -752,8 +752,8 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) --damage local players = {} - for player_name, damage in pairs (combat.PhaseData.damage [self.phase]) do - tinsert (players, {player_name, damage}) + for player_name, damage in pairs(combat.PhaseData.damage [self.phase]) do + tinsert(players, {player_name, damage}) end table.sort (players, _detalhes.Sort2) @@ -789,8 +789,8 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) --heal local players = {} - for player_name, heal in pairs (combat.PhaseData.heal [self.phase]) do - tinsert (players, {player_name, heal}) + for player_name, heal in pairs(combat.PhaseData.heal [self.phase]) do + tinsert(players, {player_name, heal}) end table.sort (players, _detalhes.Sort2) @@ -858,9 +858,9 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) end --need to build here because the mouse will leave the block to click in the send button - tinsert (result, "Details!: Damage for Phase " .. self.phase .. " of " .. (g.combat and g.combat.is_boss and g.combat.is_boss.name or "Unknown") .. ":") + tinsert(result, "Details!: Damage for Phase " .. self.phase .. " of " .. (g.combat and g.combat.is_boss and g.combat.is_boss.name or "Unknown") .. ":") for i = 1, #self.damage_actors do - tinsert (result, EncounterDetails:GetOnlyName (self.damage_actors[i][1]) .. ": " .. _detalhes:ToK (_math_floor(self.damage_actors [i][2]))) + tinsert(result, EncounterDetails:GetOnlyName (self.damage_actors[i][1]) .. ": " .. _detalhes:ToK (_math_floor(self.damage_actors [i][2]))) end EncounterDetails:SendReportWindow (reportFunc, nil, nil, true) @@ -877,9 +877,9 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) EncounterDetails:SendReportLines (result) end - tinsert (result, "Details!: Healing for Phase " .. self.phase .. " of " .. (g.combat and g.combat.is_boss and g.combat.is_boss.name or "Unknown") .. ":") + tinsert(result, "Details!: Healing for Phase " .. self.phase .. " of " .. (g.combat and g.combat.is_boss and g.combat.is_boss.name or "Unknown") .. ":") for i = 1, #self.heal_actors do - tinsert (result, EncounterDetails:GetOnlyName (self.heal_actors[i][1]) .. ": " .. _detalhes:ToK (_math_floor(self.heal_actors [i][2]))) + tinsert(result, EncounterDetails:GetOnlyName (self.heal_actors[i][1]) .. ": " .. _detalhes:ToK (_math_floor(self.heal_actors [i][2]))) end EncounterDetails:SendReportWindow (reportFunc, nil, nil, true) @@ -905,7 +905,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) f:SetScript("OnMouseUp", phase_on_click) texture = f - tinsert (g.PhaseTextures, f) + tinsert(g.PhaseTextures, f) end texture:ClearAllPoints() @@ -926,7 +926,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) end function g:ClearPhaseTexture() - for i, texture in pairs (g.PhaseTextures) do + for i, texture in pairs(g.PhaseTextures) do texture:Hide() end end @@ -1026,7 +1026,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) local BossFrame = EncounterDetails.Frame local DetailsFrameWork = _detalhes.gump - BossFrame:SetFrameStrata ("HIGH") + BossFrame:SetFrameStrata("HIGH") BossFrame:SetToplevel (true) BossFrame:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\AddOns\Details\images\background]], tileSize = 64, tile = true}) @@ -1177,14 +1177,14 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) local hide_Emote = function() --hide emote frames - for _, widget in pairs (BossFrame.EmoteWidgets) do + for _, widget in pairs(BossFrame.EmoteWidgets) do widget:Hide() end end local hide_WeakAuras = function() --hide spells frames - for _, widget in pairs (BossFrame.EnemySpellsWidgets) do + for _, widget in pairs(BossFrame.EnemySpellsWidgets) do widget:Hide() end end @@ -1251,7 +1251,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) hide_Emote() --show spells frames - for _, widget in pairs (BossFrame.EnemySpellsWidgets) do + for _, widget in pairs(BossFrame.EnemySpellsWidgets) do widget:Show() end @@ -1291,12 +1291,12 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) BossFrame["phases_string"]:Hide() end --show emote frames - for _, widget in pairs (BossFrame.EmoteWidgets) do + for _, widget in pairs(BossFrame.EmoteWidgets) do widget:Show() end --hide spells frames - for _, widget in pairs (BossFrame.EnemySpellsWidgets) do + for _, widget in pairs(BossFrame.EnemySpellsWidgets) do widget:Hide() end @@ -1304,7 +1304,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) scrollframe:Update() BossFrame.EmotesSegment:Refresh() - BossFrame.EmotesSegment:Select (emote_segment) + BossFrame.EmotesSegment:Select(emote_segment) BossFrame.segmentosDropdown:Disable() @@ -1362,12 +1362,12 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) BossFrame.ShowType = "graph" --hide emote frames - for _, widget in pairs (BossFrame.EmoteWidgets) do + for _, widget in pairs(BossFrame.EmoteWidgets) do widget:Hide() end --hide spells frames - for _, widget in pairs (BossFrame.EnemySpellsWidgets) do + for _, widget in pairs(BossFrame.EnemySpellsWidgets) do widget:Hide() end @@ -1509,7 +1509,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) local bar_div_emotes = DetailsFrameWork:CreateImage (BossFrame, "Interface\\AddOns\\Details_EncounterDetails\\images\\boss_bg", 4, 480, "artwork", {724/1024, 728/1024, 0, 245/512}) bar_div_emotes:SetPoint("TOPLEFT", BossFrame, "TOPLEFT", 244, -74) bar_div_emotes:Hide() - tinsert (BossFrame.EmoteWidgets, bar_div_emotes) + tinsert(BossFrame.EmoteWidgets, bar_div_emotes) scrollframe = CreateFrame("ScrollFrame", "EncounterDetails_EmoteScroll", BossFrame, "FauxScrollFrameTemplate, BackdropTemplate") scrollframe:SetScript("OnVerticalScroll", function(self, offset) FauxScrollFrame_OnVerticalScroll (self, offset, 14, refresh_emotes) end) @@ -1520,7 +1520,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) _detalhes.gump:ReskinSlider(scrollframe, 3) -- - tinsert (BossFrame.EmoteWidgets, scrollframe) + tinsert(BossFrame.EmoteWidgets, scrollframe) local row_on_enter = function(self) self:SetBackdrop({bgFile = [[Interface\AddOns\Details\images\background]], tile = true, tileSize = 16}) @@ -1528,7 +1528,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) if (self.righttext:IsTruncated()) then GameCooltip:Reset() GameCooltip:AddLine (self.righttext:GetText()) - GameCooltip:SetOwner (self, "bottomleft", "topleft", 42, -9) + GameCooltip:SetOwner(self, "bottomleft", "topleft", 42, -9) GameCooltip:Show() end end @@ -1596,8 +1596,8 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) line:SetScript("OnEnter", row_on_enter) line:SetScript("OnLeave", row_on_leave) line:SetScript("OnMouseUp", row_on_mouse_up) - tinsert (emote_lines, line) - tinsert (BossFrame.EmoteWidgets, line) + tinsert(emote_lines, line) + tinsert(BossFrame.EmoteWidgets, line) line:Hide() end @@ -1625,7 +1625,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) return t end for index, segment in ipairs(EncounterDetails.charsaved.emotes) do - tinsert (t, {label = "#" .. index .. " " .. (segment.boss or "unknown"), value = index, icon = segment_icon, texcoord = segment_icon_coord, onclick = on_emote_Segment_select, iconcolor = segment_icon_color}) + tinsert(t, {label = "#" .. index .. " " .. (segment.boss or "unknown"), value = index, icon = segment_icon, texcoord = segment_icon_coord, onclick = on_emote_Segment_select, iconcolor = segment_icon_color}) end return t end @@ -1633,8 +1633,8 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) dropdown:SetPoint("topleft", emotes_segment_label, "bottomleft", -1, -2) dropdown:SetTemplate (DetailsFrameWork:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")) - tinsert (BossFrame.EmoteWidgets, dropdown) - tinsert (BossFrame.EmoteWidgets, emotes_segment_label) + tinsert(BossFrame.EmoteWidgets, dropdown) + tinsert(BossFrame.EmoteWidgets, emotes_segment_label) --search box local emotes_search_label = DetailsFrameWork:CreateLabel(BossFrame, "Search:", 11, nil, "GameFontHighlightSmall") @@ -1662,7 +1662,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) end end) - local reset = DetailsFrameWork:NewButton (BossFrame, nil, "$parentResetSearchBoxtButton", "ResetSearchBox", 16, 16, function() + local reset = DetailsFrameWork:NewButton(BossFrame, nil, "$parentResetSearchBoxtButton", "ResetSearchBox", 16, 16, function() search:SetText("") end) @@ -1673,12 +1673,12 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) reset:GetNormalTexture():SetDesaturated (true) reset.tooltip = "Reset Search" - tinsert (BossFrame.EmoteWidgets, search) - tinsert (BossFrame.EmoteWidgets, reset) - tinsert (BossFrame.EmoteWidgets, emotes_search_label) + tinsert(BossFrame.EmoteWidgets, search) + tinsert(BossFrame.EmoteWidgets, reset) + tinsert(BossFrame.EmoteWidgets, emotes_search_label) -- report button - local report_emote_button = DetailsFrameWork:NewButton (BossFrame, nil, "$parentReportEmoteButton", "ReportEmoteButton", 180, 20, function() + local report_emote_button = DetailsFrameWork:NewButton(BossFrame, nil, "$parentReportEmoteButton", "ReportEmoteButton", 180, 20, function() local reportFunc = function(IsCurrent, IsReverse, AmtLines) local segment = EncounterDetails.charsaved.emotes and EncounterDetails.charsaved.emotes [emote_segment] @@ -1710,7 +1710,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) -- remove the left space text = text:gsub ("^%s$", "") - tinsert (EncounterDetails.report_lines, time .. " " .. text) + tinsert(EncounterDetails.report_lines, time .. " " .. text) added = added + 1 if (added == AmtLines) then @@ -1735,11 +1735,11 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) report_emote_button:SetPoint("topleft", search, "bottomleft", 0, -4) report_emote_button:Disable() - tinsert (BossFrame.EmoteWidgets, report_emote_button) + tinsert(BossFrame.EmoteWidgets, report_emote_button) -- - for _, widget in pairs (BossFrame.EmoteWidgets) do + for _, widget in pairs(BossFrame.EmoteWidgets) do widget:Hide() end @@ -1771,7 +1771,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) local on_enter_spell = function(self) if (self.MyObject._spellid) then - GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT") + GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") if (type(self.MyObject._spellid) == "string") then local spellId = self.MyObject._spellid:gsub("%a", "") @@ -1805,10 +1805,10 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) local info = EncounterDetails.EnemySpellPool [spellid] if (info) then - _detalhes:CooltipPreset (2) + _detalhes:CooltipPreset(2) GameCooltip:SetOption("FixedWidth", false) - for token, _ in pairs (info.token) do + for token, _ in pairs(info.token) do GameCooltip:AddLine ("event:", token, 1, nil, "white") end @@ -1818,7 +1818,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) if (info.type) then GameCooltip:AddLine ("aura type:", info.type, 1, nil, "white") end - GameCooltip:ShowCooltip (self, "tooltip") + GameCooltip:ShowCooltip(self, "tooltip") end self:SetBackdropColor(1, 1, 1, .5) @@ -1830,12 +1830,12 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) local bossModsTitle = DetailsFrameWork:CreateLabel(BossFrame, "Boss Mods Time Bars:", 12, "orange") bossModsTitle:SetPoint(10, -85) - tinsert (BossFrame.EnemySpellsWidgets, bossModsTitle) + tinsert(BossFrame.EnemySpellsWidgets, bossModsTitle) bossModsTitle:Hide() local bossSpellsTitle = DetailsFrameWork:CreateLabel(BossFrame, "Boss Spells and Auras:", 12, "orange") bossSpellsTitle:SetPoint(444, -85) - tinsert (BossFrame.EnemySpellsWidgets, bossSpellsTitle) + tinsert(BossFrame.EnemySpellsWidgets, bossSpellsTitle) bossSpellsTitle:Hide() --create boss mods list @@ -1860,7 +1860,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) spellname:SetHook("OnEnter", on_enter_spell) spellname:SetHook("OnLeave", on_leave_spell) - local create_aura = DetailsFrameWork:NewButton (anchor_frame, nil, "$parentCreateAuraButton", "AuraButton", 90, 18, create_aura_func, nil, nil, nil, "Make Aura") + local create_aura = DetailsFrameWork:NewButton(anchor_frame, nil, "$parentCreateAuraButton", "AuraButton", 90, 18, create_aura_func, nil, nil, nil, "Make Aura") create_aura:SetTemplate (AurasButtonTemplate) spellicon:SetPoint("topleft", BossFrame, "topleft", 10, -85 + (i * 21 * -1)) @@ -1877,8 +1877,8 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) anchor_frame.aurabutton = create_aura anchor_frame.aurabutton._icon = spellicon - tinsert (bossmods_blocks, anchor_frame) - tinsert (BossFrame.EnemySpellsWidgets, anchor_frame) + tinsert(bossmods_blocks, anchor_frame) + tinsert(BossFrame.EnemySpellsWidgets, anchor_frame) anchor_frame:Hide() end @@ -1921,7 +1921,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) spellinfotext:SetText("info") spellinfo:SetPoint("left", spellname.widget, "right", 4, 0) - local create_aura = DetailsFrameWork:NewButton (anchor_frame, nil, "$parentCreateAuraButton", "AuraButton", 90, 18, create_aura_func, nil, nil, nil, "Make Aura") + local create_aura = DetailsFrameWork:NewButton(anchor_frame, nil, "$parentCreateAuraButton", "AuraButton", 90, 18, create_aura_func, nil, nil, nil, "Make Aura") create_aura:SetPoint("left", spellinfo, "right", 4, 0) create_aura:SetTemplate (AurasButtonTemplate) @@ -1932,8 +1932,8 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) anchor_frame.aurabutton._icon = spellicon anchor_frame.info = spellinfo - tinsert (spell_blocks, anchor_frame) - tinsert (BossFrame.EnemySpellsWidgets, anchor_frame) + tinsert(spell_blocks, anchor_frame) + tinsert(BossFrame.EnemySpellsWidgets, anchor_frame) anchor_frame:Hide() end @@ -1946,10 +1946,10 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) for i, npc in combat[1]:ListActors() do --damage if (npc:IsNeutralOrEnemy()) then - for spellid, spell in pairs (npc.spells._ActorTable) do + for spellid, spell in pairs(npc.spells._ActorTable) do if (spellid > 10) then local name, _, icon = EncounterDetails.getspellinfo (spellid) - tinsert (spell_list, {spellid, name, icon, nil, npc.serial}) + tinsert(spell_list, {spellid, name, icon, nil, npc.serial}) end end end @@ -1958,10 +1958,10 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) for i, npc in combat[2]:ListActors() do --heal if (npc:IsNeutralOrEnemy()) then - for spellid, spell in pairs (npc.spells._ActorTable) do + for spellid, spell in pairs(npc.spells._ActorTable) do if (spellid > 10) then local name, _, icon = EncounterDetails.getspellinfo (spellid) - tinsert (spell_list, {spellid, name, icon, true, npc.serial}) + tinsert(spell_list, {spellid, name, icon, true, npc.serial}) end end end @@ -1988,7 +1988,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) wipe(already_added) local timersToAdd = {} - for timerId, timerTable in pairs (db.encounter_timers_dbm) do + for timerId, timerTable in pairs(db.encounter_timers_dbm) do if (timerTable.id == encounter_id) then local spellId = timerTable [7] local spellIcon = timerTable [5] @@ -2001,12 +2001,12 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) if (spell and not already_added[spell]) then if (spell > 40000) then local spellname, _, spellicon = _GetSpellInfo(spell) - tinsert (timersToAdd, {label = spellname, value = {timerTable[2], spellname, spellIcon or spellicon, timerTable.id, timerTable[7]}, icon = spellIcon or spellicon}) + tinsert(timersToAdd, {label = spellname, value = {timerTable[2], spellname, spellIcon or spellicon, timerTable.id, timerTable[7]}, icon = spellIcon or spellicon}) else --local title, description, depth, abilityIcon, displayInfo, siblingID, nextSectionID, filteredByDifficulty, link, startsOpen, flag1, flag2, flag3, flag4 = C_EncounterJournal.GetSectionInfo(spell) local sectionInfo = C_EncounterJournal.GetSectionInfo(spell) - tinsert (timersToAdd, {label = sectionInfo.title, value = {timerTable[2], sectionInfo.title, spellIcon or sectionInfo.abilityIcon, timerTable.id, timerTable[7]}, icon = spellIcon or sectionInfo.abilityIcon}) + tinsert(timersToAdd, {label = sectionInfo.title, value = {timerTable[2], sectionInfo.title, spellIcon or sectionInfo.abilityIcon, timerTable.id, timerTable[7]}, icon = spellIcon or sectionInfo.abilityIcon}) end already_added[spell] = true @@ -2086,7 +2086,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) bar.spellname:SetBackdropBorderColor(0, 0, 0) end - bar.aurabutton:SetClickFunction (create_aura_func, data [1], encounter_id) + bar.aurabutton:SetClickFunction(create_aura_func, data [1], encounter_id) else bar:Hide() @@ -2106,7 +2106,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) EncounterDetails.SpellScrollframe = spell_scrollframe _G.DetailsFramework:ReskinSlider(spell_scrollframe) - tinsert (BossFrame.EnemySpellsWidgets, spell_scrollframe) + tinsert(BossFrame.EnemySpellsWidgets, spell_scrollframe) EncounterDetails.update_enemy_spells = update_enemy_spells @@ -2118,7 +2118,7 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) bossmods_scrollframe:Hide() EncounterDetails.BossModsScrollframe = bossmods_scrollframe - tinsert (BossFrame.EnemySpellsWidgets, bossmods_scrollframe) + tinsert(BossFrame.EnemySpellsWidgets, bossmods_scrollframe) EncounterDetails.update_bossmods = function() bossmods_scrollframe:Update() end @@ -2129,20 +2129,20 @@ _detalhes.EncounterDetailsTempWindow = function(EncounterDetails) wipe (already_added) local encounter_id = EncounterDetails_SpellAurasScroll.encounter_id - for timer_id, timer_table in pairs (db.encounter_timers_bw) do + for timer_id, timer_table in pairs(db.encounter_timers_bw) do if (timer_table.id == encounter_id) then local spell = timer_id if (spell and not already_added [spell]) then local int_spell = tonumber (spell) if (not int_spell) then local spellname = timer_table [2]:gsub (" %(.%)", "") - tinsert (t, {label = spellname, value = {timer_table [2], spellname, timer_table [5], timer_table.id}, icon = timer_table [5], onclick = on_select_bw_bar}) + tinsert(t, {label = spellname, value = {timer_table [2], spellname, timer_table [5], timer_table.id}, icon = timer_table [5], onclick = on_select_bw_bar}) elseif (int_spell < 0) then local title, description, depth, abilityIcon, displayInfo, siblingID, nextSectionID, filteredByDifficulty, link, startsOpen, flag1, flag2, flag3, flag4 = C_EncounterJournal.GetSectionInfo (abs (int_spell)) - tinsert (t, {label = title, value = {timer_table [2], title, timer_table [5] or abilityIcon, timer_table.id}, icon = timer_table [5] or abilityIcon, onclick = on_select_bw_bar}) + tinsert(t, {label = title, value = {timer_table [2], title, timer_table [5] or abilityIcon, timer_table.id}, icon = timer_table [5] or abilityIcon, onclick = on_select_bw_bar}) else local spellname, _, spellicon = _GetSpellInfo(int_spell) - tinsert (t, {label = spellname, value = {timer_table [2], spellname, timer_table [5] or spellicon, timer_table.id}, icon = timer_table [5] or spellicon, onclick = on_select_bw_bar}) + tinsert(t, {label = spellname, value = {timer_table [2], spellname, timer_table [5] or spellicon, timer_table.id}, icon = timer_table [5] or spellicon, onclick = on_select_bw_bar}) end already_added [spell] = true @@ -2230,7 +2230,7 @@ function PhaseFrame.OnSelectPhase (phaseSelected) end end button:SetText(phase) - button:SetClickFunction (selectSegment, phase) + button:SetClickFunction(selectSegment, phase) end if (not phaseData.damage [phaseSelected]) then @@ -2240,14 +2240,14 @@ function PhaseFrame.OnSelectPhase (phaseSelected) --update damage and healing scrolls table.wipe (PhaseFrame.DamageTable) - for charName, amount in pairs (phaseData.damage [phaseSelected]) do - tinsert (PhaseFrame.DamageTable, {charName, amount}) + for charName, amount in pairs(phaseData.damage [phaseSelected]) do + tinsert(PhaseFrame.DamageTable, {charName, amount}) end table.sort (PhaseFrame.DamageTable, function(a, b) return a[2] > b[2] end) table.wipe (PhaseFrame.HealingTable) - for charName, amount in pairs (phaseData.heal [phaseSelected]) do - tinsert (PhaseFrame.HealingTable, {charName, amount}) + for charName, amount in pairs(phaseData.heal [phaseSelected]) do + tinsert(PhaseFrame.HealingTable, {charName, amount}) end table.sort (PhaseFrame.HealingTable, function(a, b) return a[2] > b[2] end) @@ -2275,9 +2275,9 @@ local report_damage = function(IsCurrent, IsReverse, AmtLines) EncounterDetails:SendReportLines (result) end - tinsert (result, "Details!: Damage for Phase " .. PhaseFrame.LastPhaseSelected .. " of " .. (PhaseFrame.CurrentSegment and PhaseFrame.CurrentSegment.is_boss and PhaseFrame.CurrentSegment.is_boss.name or "Unknown") .. ":") + tinsert(result, "Details!: Damage for Phase " .. PhaseFrame.LastPhaseSelected .. " of " .. (PhaseFrame.CurrentSegment and PhaseFrame.CurrentSegment.is_boss and PhaseFrame.CurrentSegment.is_boss.name or "Unknown") .. ":") for i = 1, #PhaseFrame.DamageTable do - tinsert (result, EncounterDetails:GetOnlyName (PhaseFrame.DamageTable[i][1]) .. ": " .. _detalhes:ToK (_math_floor(PhaseFrame.DamageTable [i][2]))) + tinsert(result, EncounterDetails:GetOnlyName (PhaseFrame.DamageTable[i][1]) .. ": " .. _detalhes:ToK (_math_floor(PhaseFrame.DamageTable [i][2]))) end EncounterDetails:SendReportWindow (reportFunc, nil, nil, true) @@ -2300,9 +2300,9 @@ local report_healing = function() EncounterDetails:SendReportLines (result) end - tinsert (result, "Details!: Healing for Phase " .. PhaseFrame.LastPhaseSelected .. " of " .. (PhaseFrame.CurrentSegment and PhaseFrame.CurrentSegment.is_boss and PhaseFrame.CurrentSegment.is_boss.name or "Unknown") .. ":") + tinsert(result, "Details!: Healing for Phase " .. PhaseFrame.LastPhaseSelected .. " of " .. (PhaseFrame.CurrentSegment and PhaseFrame.CurrentSegment.is_boss and PhaseFrame.CurrentSegment.is_boss.name or "Unknown") .. ":") for i = 1, #PhaseFrame.HealingTable do - tinsert (result, EncounterDetails:GetOnlyName (PhaseFrame.HealingTable[i][1]) .. ": " .. _detalhes:ToK (_math_floor(PhaseFrame.HealingTable [i][2]))) + tinsert(result, EncounterDetails:GetOnlyName (PhaseFrame.HealingTable[i][1]) .. ": " .. _detalhes:ToK (_math_floor(PhaseFrame.HealingTable [i][2]))) end EncounterDetails:SendReportWindow (reportFunc, nil, nil, true) @@ -2322,7 +2322,7 @@ PhaseTimersLabel:SetPoint("topleft", PhaseFrame, "topleft", (ScrollWidth * 2) + for i = 1, 10 do local button = _detalhes.gump:CreateButton (PhaseFrame, PhaseFrame.OnSelectPhase, 60, 20, "", i) button:SetPoint("left", PhaseSelectLabel, "right", 8 + ((i-1) * 61), 0) - tinsert (PhaseFrame.PhaseButtons, button) + tinsert(PhaseFrame.PhaseButtons, button) end local ScrollRefresh = function(self, data, offset, total_lines) @@ -2471,7 +2471,7 @@ for i = 1, 10 do name:SetHeight(10) name:SetJustifyH("left") - tinsert (PhaseFrame.PhasesBars, line) + tinsert(PhaseFrame.PhasesBars, line) end --cria a linha do segmento para a compara��o, � o que fica na parte direita da tela @@ -2497,7 +2497,7 @@ for i = 1, 20 do name:SetHeight(10) name:SetJustifyH("left") - tinsert (PhaseFrame.PhasesSegmentCompare, line) + tinsert(PhaseFrame.PhasesSegmentCompare, line) end function PhaseFrame:ClearPhaseBars() @@ -2529,8 +2529,8 @@ function PhaseFrame:GetPhaseTimers (segment, ordered) if (ordered) then local order = {} - for phase, _ in pairs (t) do - tinsert (order, phase) + for phase, _ in pairs(t) do + tinsert(order, phase) end table.sort (order, function(a, b) return a < b end) return order, t @@ -2636,7 +2636,7 @@ end segmentos:SetTemplate (DetailsFrameWork:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE")) --options button - local options = DetailsFrameWork:NewButton (frame, nil, "$parentOptionsButton", "OptionsButton", 120, 20, EncounterDetails.OpenOptionsPanel, nil, nil, nil, "Options") + local options = DetailsFrameWork:NewButton(frame, nil, "$parentOptionsButton", "OptionsButton", 120, 20, EncounterDetails.OpenOptionsPanel, nil, nil, nil, "Options") options:SetPoint("left", segmentos, "right", 10, 0) options:SetTemplate (DetailsFrameWork:GetTemplate ("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE")) options:SetIcon ([[Interface\Buttons\UI-OptionsButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 3) @@ -2994,7 +2994,7 @@ end --print ("2 =", arg2, "3 =", arg3, "4 =", arg4, "5 =", arg5, "6 =", arg6, "7 =", arg7, "8 =", arg8, "9 =", arg9) if (combat and EncounterDetails:IsInCombat() and EncounterDetails:GetZoneType() == "raid") then local arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 = ... - tinsert (EncounterDetails.current_whisper_table, {combat:GetCombatTime(), arg3, arg4, emote_table [arg2]}) + tinsert(EncounterDetails.current_whisper_table, {combat:GetCombatTime(), arg3, arg4, emote_table [arg2]}) end end) diff --git a/plugins/Details_RaidCheck/Details_RaidCheck.lua b/plugins/Details_RaidCheck/Details_RaidCheck.lua index ee6c5f64a..25614f6fa 100644 --- a/plugins/Details_RaidCheck/Details_RaidCheck.lua +++ b/plugins/Details_RaidCheck/Details_RaidCheck.lua @@ -683,7 +683,7 @@ local CreatePluginFrames = function() end end - tinsert (PlayerData, {unitName, unitClassID, + tinsert(PlayerData, {unitName, unitClassID, Name = unitName, UnitNameRealm = unitNameWithRealm, Class = unitClass, diff --git a/plugins/Details_Streamer/Details_Streamer.lua b/plugins/Details_Streamer/Details_Streamer.lua index 6e4f5b6cb..d5cb09979 100644 --- a/plugins/Details_Streamer/Details_Streamer.lua +++ b/plugins/Details_Streamer/Details_Streamer.lua @@ -10,7 +10,7 @@ local _ --create the plugin object -- "Details_StreamOverlay" is the old name local StreamOverlay = _detalhes:NewPluginObject("Details_Streamer", DETAILSPLUGIN_ALWAYSENABLED) ---tinsert (UISpecialFrames, "Details_StreamOverlays") +--tinsert(UISpecialFrames, "Details_StreamOverlays") --main frame (shortcut) local SOF = StreamOverlay.Frame @@ -149,8 +149,8 @@ local function CreatePluginFrames() 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: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) @@ -241,8 +241,8 @@ local function CreatePluginFrames() LibWindow.RestorePosition (StreamerOverlayDpsHpsFrame) LibWindow.SavePosition (StreamerOverlayDpsHpsFrame) --set the frame strata - SOF:SetFrameStrata (StreamOverlay.db.main_frame_strata) - StreamerOverlayDpsHpsFrame:SetFrameStrata (StreamOverlay.db.main_frame_strata) + SOF:SetFrameStrata(StreamOverlay.db.main_frame_strata) + StreamerOverlayDpsHpsFrame:SetFrameStrata(StreamOverlay.db.main_frame_strata) end --two resizers @@ -265,7 +265,7 @@ local function CreatePluginFrames() 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) @@ -280,7 +280,7 @@ local function CreatePluginFrames() 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) @@ -1600,8 +1600,8 @@ screen_frame:SetScript("OnMouseUp", function(self) end end) screen_frame:SetScript("OnEnter", function(self) - GameTooltip:SetOwner (self) - GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT") + GameTooltip:SetOwner(self) + GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") GameTooltip:AddLine ("|cFFFF7700Left Click|r: Open Options\n|cFFFF7700Slash Command|r: /streamer") GameTooltip:Show() end) @@ -2245,7 +2245,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) 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 @@ -2257,7 +2257,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) 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 if (not Details_StreamerDB.profiles [pname]) then @@ -2279,7 +2279,7 @@ function StreamOverlay.OpenOptionsPanel (fromOptionsPanel) --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")) @@ -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 diff --git a/plugins/Details_TinyThreat/Details_TinyThreat.lua b/plugins/Details_TinyThreat/Details_TinyThreat.lua index e7cde9f49..9370f9962 100644 --- a/plugins/Details_TinyThreat/Details_TinyThreat.lua +++ b/plugins/Details_TinyThreat/Details_TinyThreat.lua @@ -89,7 +89,7 @@ local function CreatePluginFrames (data) elseif (event == "SHOW") then - instance = ThreatMeter:GetInstance (ThreatMeter.instance_id) + instance = ThreatMeter:GetInstance(ThreatMeter.instance_id) ThreatMeter.RowWidth = instance.baseframe:GetWidth()-6 @@ -131,11 +131,11 @@ local function CreatePluginFrames (data) end elseif (event == "DETAILS_INSTANCE_STARTSTRETCH") then - ThreatMeterFrame:SetFrameStrata ("TOOLTIP") + 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") diff --git a/plugins/Details_Vanguard/Details_Vanguard.lua b/plugins/Details_Vanguard/Details_Vanguard.lua index 31c8ddfd3..6fc322b2c 100644 --- a/plugins/Details_Vanguard/Details_Vanguard.lua +++ b/plugins/Details_Vanguard/Details_Vanguard.lua @@ -93,7 +93,7 @@ local function CreatePluginFrames (data) Vanguard.db.first_run = true local welcome = CreateFrame("frame", nil, UIParent, "BackdropTemplate") - welcome:SetFrameStrata ("TOOLTIP") + welcome:SetFrameStrata("TOOLTIP") welcome:SetPoint("center", UIParent, "center") welcome:SetSize(400, 200) DF:ApplyStandardBackdrop(welcome) @@ -109,7 +109,7 @@ local function CreatePluginFrames (data) end - Vanguard.CurrentInstance = Vanguard:GetInstance (Vanguard.instance_id) + Vanguard.CurrentInstance = Vanguard:GetInstance(Vanguard.instance_id) VanguardFrame:RegisterEvent ("ROLE_CHANGED_INFORM") VanguardFrame:RegisterEvent ("GROUP_ROSTER_UPDATE") @@ -120,7 +120,7 @@ local function CreatePluginFrames (data) Vanguard:IdentifyTanks() Vanguard.CurrentCombat = _detalhes:GetCombat ("current") - VanguardFrame:SetFrameStrata (Vanguard.CurrentInstance.baseframe:GetFrameStrata()) + VanguardFrame:SetFrameStrata(Vanguard.CurrentInstance.baseframe:GetFrameStrata()) VanguardFrame:SetFrameLevel (Vanguard.CurrentInstance.baseframe:GetFrameLevel()+5) if (Vanguard:IsInCombat()) then @@ -132,7 +132,7 @@ local function CreatePluginFrames (data) elseif (event == "COMBAT_PLAYER_ENTER") then --a new combat has been started - Vanguard.CurrentInstance = Vanguard:GetInstance (Vanguard.instance_id) + Vanguard.CurrentInstance = Vanguard:GetInstance(Vanguard.instance_id) Vanguard.CurrentCombat = select (1, ...) Vanguard.Running = true @@ -158,7 +158,7 @@ local function CreatePluginFrames (data) elseif (event == "DETAILS_STARTED") then - Vanguard.CurrentInstance = Vanguard:GetInstance (Vanguard.instance_id) + Vanguard.CurrentInstance = Vanguard:GetInstance(Vanguard.instance_id) Vanguard.CurrentCombat = Vanguard:GetCurrentCombat() elseif (event == "DETAILS_INSTANCE_ENDRESIZE" or event == "DETAILS_INSTANCE_SIZECHANGED") then @@ -357,7 +357,7 @@ local function CreatePluginFrames (data) local debuff_on_enter = function(self) if (self.spellid) then --self.texture:SetBlendMode("ADD") - GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT") + GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") GameTooltip:SetSpellByID(self.spellid) GameTooltip:Show() end @@ -376,7 +376,7 @@ local function CreatePluginFrames (data) elseif (button == "RightButton") then local instance = Vanguard:GetPluginInstance() if (instance) then - _detalhes.switch:ShowMe (instance) + _detalhes.switch:ShowMe(instance) end end end @@ -721,7 +721,7 @@ local function CreatePluginFrames (data) onUpdateFrame.onUpdate = function(self, deltaTime) --do healthbar animation ~animation ~healthbar - for tank_name, block_index in pairs (Vanguard.TankHashNames) do + for tank_name, block_index in pairs(Vanguard.TankHashNames) do local tframe = Vanguard.TankBlocks [block_index] local bar = tframe.heal_inc if (bar.IsAnimating) then @@ -732,7 +732,7 @@ local function CreatePluginFrames (data) function Vanguard:TrackIncoming() - for tank_name, block_index in pairs (Vanguard.TankHashNames) do + for tank_name, block_index in pairs(Vanguard.TankHashNames) do local shields = UnitGetTotalAbsorbs and UnitGetTotalAbsorbs(tank_name) or 0 local heals = UnitGetIncomingHeals and UnitGetIncomingHeals(tank_name) or 0 @@ -941,7 +941,7 @@ local build_options_panel = function() local textures = SharedMedia:HashTable ("statusbar") local texTable = {} - for name, texturePath in pairs (textures) do + for name, texturePath in pairs(textures) do texTable[#texTable+1] = {value = name, label = name, iconsize = texture_icon_size, statusbar = texturePath, onclick = tank_texture_set, icon = texture_icon, texcoord = texture_texcoord} end table.sort (texTable, function(t1, t2) return t1.label < t2.label end)