diff --git a/API UI.txt b/API UI.txt index f694b74d..d0c103d9 100644 --- a/API UI.txt +++ b/API UI.txt @@ -54,10 +54,6 @@ side = number, 1 = left, 2 = right, set the anchor point for buttons on window's instance:SetFrameStrata (strata) strata = string, "BACKGROUND", "LOW", "MEDIUM", "HIGH" or "DIALOG". -instance:SetCombatAlpha (modify_type, alpha_amount) -modify_type = number, 1 = none, 2 = While In Combat, 3 = "While Out of Combat", 4 = "While Out of a Group" (can be only one type) -alpha_amount = number, the amount of alpha. - instance:ChangeSkin (skin_name) skin_name = string, the name of the skin to apply. if skin name is nil, it reaply all config based on the window's config table. diff --git a/Libs/DF/fw.lua b/Libs/DF/fw.lua index a9e414b1..f40cd21d 100644 --- a/Libs/DF/fw.lua +++ b/Libs/DF/fw.lua @@ -1,5 +1,5 @@ -local dversion = 184 +local dversion = 187 local major, minor = "DetailsFramework-1.0", dversion local DF, oldminor = LibStub:NewLibrary (major, minor) @@ -1057,7 +1057,7 @@ end --volatile menu can be called several times, each time all settings are reset and a new menu is built using the same widgets function DF:BuildMenuVolatile (parent, menu, x_offset, y_offset, height, use_two_points, text_template, dropdown_template, switch_template, switch_is_box, slider_template, button_template, value_change_hook) - + if (not parent.widget_list) then DF:SetAsOptionsPanel (parent) end @@ -1093,15 +1093,20 @@ end local label = getMenuWidgetVolative(parent, "label", widgetIndexes) widget_created = label - label.text = widget_table.get() or widget_table.text or "" - label.color = widget_table.color - label.fontface = widget_table.font - if (widget_table.text_template or text_template) then label:SetTemplate(widget_table.text_template or text_template) else label.fontsize = widget_table.size or 10 end + + if (label.fontface) then + label.fontface = widget_table.font or "GameFontHighlightSmall" + end + if (widget_table.color) then + label.fontcolor = widget_table.color + end + + label.text = widget_table.get() or widget_table.text or "" label._get = widget_table.get label.widget_type = "label" @@ -1211,15 +1216,16 @@ end local slider = getMenuWidgetVolative(parent, "slider", widgetIndexes) widget_created = slider - slider.slider:SetMinMaxValues (widget_table.min, widget_table.max) - slider.slider:SetValue (widget_table.get()) - slider.ivalue = slider.slider:GetValue() - if (widget_table.usedecimals) then slider.slider:SetValueStep (0.01) else slider.slider:SetValueStep (widget_table.step) end + slider.useDecimals = widget_table.usedecimals + + slider.slider:SetMinMaxValues (widget_table.min, widget_table.max) + slider.slider:SetValue (widget_table.get()) + slider.ivalue = slider.slider:GetValue() slider:SetTemplate(slider_template) @@ -1366,7 +1372,10 @@ end textentry:SetPoint ("left", textentry.hasLabel, "right", 2) textentry.hasLabel:SetPoint (cur_x, cur_y) - --> text entry doesn't trigger global callback + if (value_change_hook) then + textentry:SetHook("OnEnterPressed", value_change_hook) + textentry:SetHook("OnEditFocusLost", value_change_hook) + end --> hook list if (widget_table.hooks) then @@ -2040,8 +2049,6 @@ function DF:GetBestFontForLanguage (language, western, cyrillic, china, korean, end end ---DF.font_templates ["ORANGE_FONT_TEMPLATE"] = {color = "orange", size = 11, font = "Accidental Presidency"} ---DF.font_templates ["OPTIONS_FONT_TEMPLATE"] = {color = "yellow", size = 12, font = "Accidental Presidency"} DF.font_templates ["ORANGE_FONT_TEMPLATE"] = {color = "orange", size = 11, font = DF:GetBestFontForLanguage()} DF.font_templates ["OPTIONS_FONT_TEMPLATE"] = {color = "yellow", size = 12, font = DF:GetBestFontForLanguage()} @@ -3311,6 +3318,21 @@ function DF_CALC_PERFORMANCE() end) end +DF.ClassIndexToFileName = { + [6] = "DEATHKNIGHT", + [1] = "WARRIOR", + [4] = "ROGUE", + [8] = "MAGE", + [5] = "PRIEST", + [3] = "HUNTER", + [9] = "WARLOCK", + [12] = "DEMONHUNTER", + [7] = "SHAMAN", + [11] = "DRUID", + [10] = "MONK", + [2] = "PALADIN", +} + DF.ClassFileNameToIndex = { ["DEATHKNIGHT"] = 6, ["WARRIOR"] = 1, diff --git a/Libs/DF/panel.lua b/Libs/DF/panel.lua index f0ad0e4d..2f5dc956 100644 --- a/Libs/DF/panel.lua +++ b/Libs/DF/panel.lua @@ -4228,7 +4228,7 @@ DF.ScrollBoxFunctions.Refresh = function (self) local offset = 0 if (self.IsFauxScroll) then - FauxScrollFrame_Update (self, #self.data, self.LineAmount, self.LineHeight+1) + FauxScrollFrame_Update (self, #self.data, self.LineAmount, self.LineHeight) offset = FauxScrollFrame_GetOffset (self) end diff --git a/Libs/DF/slider.lua b/Libs/DF/slider.lua index 1555028c..11eb997f 100644 --- a/Libs/DF/slider.lua +++ b/Libs/DF/slider.lua @@ -904,6 +904,7 @@ local set_switch_func = function (self, newFunction) end local set_as_checkbok = function (self) + if self.is_checkbox and self.checked_texture then return end local checked = self:CreateTexture (self:GetName() .. "CheckTexture", "overlay") checked:SetTexture ([[Interface\Buttons\UI-CheckBox-Check]]) checked:SetPoint ("center", self.button, "center", -1, -1) diff --git a/classes/classe_instancia.lua b/classes/classe_instancia.lua index 6f08683c..0a1601bf 100644 --- a/classes/classe_instancia.lua +++ b/classes/classe_instancia.lua @@ -609,7 +609,7 @@ end end end - if (type (self.hide_in_combat_type) == "number" and self.hide_in_combat_type > 1 and _detalhes.LastShowCommand and _detalhes.LastShowCommand+10 > GetTime()) then + if (_detalhes.LastShowCommand and _detalhes.LastShowCommand+10 > GetTime()) then self:ToolbarMenuButtons() self:ToolbarSide() self:AttributeMenu() @@ -621,16 +621,16 @@ end _detalhes.WindowAutoHideTick [self.meu_id] = C_Timer.NewTicker (10, function() if (self.last_interaction) then if (self.last_interaction + 10 < _detalhes._tempo) then - self:SetCombatAlpha (nil, nil, true) + self:AdjustAlphaByContext(true) _detalhes.WindowAutoHideTick [self.meu_id]:Cancel() end else - self:SetCombatAlpha (nil, nil, true) + self:AdjustAlphaByContext(true) _detalhes.WindowAutoHideTick [self.meu_id]:Cancel() end end) else - self:SetCombatAlpha (nil, nil, true) + self:AdjustAlphaByContext(true) end self:DesaturateMenu() diff --git a/classes/classe_instancia_include.lua b/classes/classe_instancia_include.lua index 78759d1b..f93ff2e6 100644 --- a/classes/classe_instancia_include.lua +++ b/classes/classe_instancia_include.lua @@ -276,8 +276,88 @@ _detalhes.instance_defaults = { hide_in_combat = false, hide_out_of_combat = false, - hide_in_combat_type = 1, - hide_in_combat_alpha = 0, + hide_in_combat_type = 1, --deprecated + hide_in_combat_alpha = 0, --deprecated + + --hide or show the window by context + hide_on_context = { + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + { + enabled = false, + inverse = false, + value = 100, + }, + }, + --switches switch_all_roles_in_combat = false, switch_all_roles_after_wipe = false, diff --git a/classes/container_combatentes.lua b/classes/container_combatentes.lua index 44a77d28..4c541d68 100644 --- a/classes/container_combatentes.lua +++ b/classes/container_combatentes.lua @@ -473,6 +473,11 @@ end end + --english alias + function container_combatentes:GetOrCreateActor (serial, nome, flag, criar) + return self:PegarCombatente (serial, nome, flag, criar) + end + function container_combatentes:PegarCombatente (serial, nome, flag, criar) --[[statistics]]-- _detalhes.statistics.container_calls = _detalhes.statistics.container_calls + 1 diff --git a/core/control.lua b/core/control.lua index f9f0d874..8065c6c3 100644 --- a/core/control.lua +++ b/core/control.lua @@ -412,7 +412,6 @@ --> hide / alpha / switch in combat for index, instancia in ipairs (_detalhes.tabela_instancias) do if (instancia.ativa) then - --instancia:SetCombatAlpha (nil, nil, true) --passado para o regen disable instancia:CheckSwitchOnCombatStart (true) end end @@ -884,7 +883,6 @@ --> hide / alpha in combat for index, instancia in ipairs (_detalhes.tabela_instancias) do if (instancia.ativa) then - --instancia:SetCombatAlpha (nil, nil, true) --passado para o regen enabled if (instancia.auto_switch_to_old) then instancia:CheckSwitchOnCombatEnd() end diff --git a/core/parser.lua b/core/parser.lua index b212a78c..3c537859 100755 --- a/core/parser.lua +++ b/core/parser.lua @@ -4379,8 +4379,8 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 _detalhes.last_zone_type = zoneType for index, instancia in ipairs (_detalhes.tabela_instancias) do - if (instancia.ativa and instancia.hide_in_combat_type ~= 1) then --> 1 = none, we doesn't need to call - instancia:SetCombatAlpha (nil, nil, true) + if (instancia.ativa) then + instancia:AdjustAlphaByContext(true) end end end @@ -4672,8 +4672,8 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 end for index, instancia in ipairs (_detalhes.tabela_instancias) do - if (instancia.ativa and instancia.hide_in_combat_type ~= 1) then --> 1 = none, we doesn't need to call - instancia:SetCombatAlpha (nil, nil, true) + if (instancia.ativa) then --> 1 = none, we doesn't need to call + instancia:AdjustAlphaByContext(true) end end @@ -4757,8 +4757,8 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 end for index, instancia in ipairs (_detalhes.tabela_instancias) do - if (instancia.ativa and instancia.hide_in_combat_type ~= 1) then --> 1 = none, we doesn't need to call - instancia:SetCombatAlpha (nil, nil, true) + if (instancia.ativa) then --> 1 = none, we doesn't need to call + instancia:AdjustAlphaByContext(true) end end @@ -5033,7 +5033,8 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 _detalhes:IniciarColetaDeLixo (true) _detalhes:WipePets() _detalhes:SchedulePetUpdate (1) - _detalhes:InstanceCall (_detalhes.SetCombatAlpha, nil, nil, true) + _detalhes:InstanceCall (_detalhes.AdjustAlphaByContext) + _detalhes:CheckSwitchOnLogon() _detalhes:CheckVersion() _detalhes:SendEvent ("GROUP_ONENTER") @@ -5053,7 +5054,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 _detalhes:WipePets() _detalhes:SchedulePetUpdate (1) _table_wipe (_detalhes.details_users) - _detalhes:InstanceCall (_detalhes.SetCombatAlpha, nil, nil, true) + _detalhes:InstanceCall (_detalhes.AdjustAlphaByContext) _detalhes:CheckSwitchOnLogon() _detalhes:SendEvent ("GROUP_ONLEAVE") @@ -5202,7 +5203,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 if (_detalhes.debug) then _detalhes:Msg ("(debug 2) restoring windows after Pet Battle.") end - instance:SetCombatAlpha (nil, nil, true) + instance:AdjustAlphaByContext(true) end end end diff --git a/core/util.lua b/core/util.lua index 879b4ec8..e387c049 100644 --- a/core/util.lua +++ b/core/util.lua @@ -1209,10 +1209,6 @@ end function gump:Fade (frame, tipo, velocidade, parametros) - --if (frame.GetObjectType and frame:GetObjectType() == "Frame" and frame.GetName and type (frame:GetName()) == "string" and frame:GetName():find ("DetailsBaseFrame")) then - -- print (debugstack()) - --end - if (_type (frame) == "table") then if (frame.meu_id) then --> ups, � uma inst�ncia @@ -1281,6 +1277,7 @@ end frame.fadeInfo.finishedArg1 = frame elseif (_upper (tipo) == "OUT") then --> aparecer + if (frame:GetAlpha() == 1 and not frame.hidden and not frame.fading_in) then --> ja esta na tela return elseif (frame.fading_out) then --> j� ta com fading out diff --git a/functions/profiles.lua b/functions/profiles.lua index af45587f..e2d597b4 100644 --- a/functions/profiles.lua +++ b/functions/profiles.lua @@ -1134,7 +1134,7 @@ local default_profile = { border_color = {0, 0, 0, 1}, border_size = 14, - tooltip_max_abilities = 7, + tooltip_max_abilities = 6, tooltip_max_targets = 2, tooltip_max_pets = 2, @@ -1339,7 +1339,7 @@ local default_global_data = { --> mythic plus config mythic_plus = { always_in_combat = false, -- - merge_boss_trash = true, -- + merge_boss_trash = false, -- delete_trash_after_merge = true, -- --merge_boss_with_trash = false, --this won't be used boss_dedicated_segment = true, -- diff --git a/functions/slash.lua b/functions/slash.lua index 96499f79..204b7389 100644 --- a/functions/slash.lua +++ b/functions/slash.lua @@ -725,10 +725,6 @@ function SlashCmdList.DETAILS (msg, editbox) print (serial) --tonumber((UnitGUID("target")):sub(-12, -9), 16)) - - elseif (command == "callfunction") then - - _detalhes:InstanceCall (_detalhes.SetCombatAlpha, nil, nil, true) elseif (command == "guid") then --> localize-me diff --git a/gumps/janela_options.lua b/gumps/janela_options.lua index 5798c908..06f5fcca 100644 --- a/gumps/janela_options.lua +++ b/gumps/janela_options.lua @@ -2552,70 +2552,142 @@ function window:CreateFrame17() --anchor g:NewLabel (frame17, _, "$parentHideInCombatAnchor", "hideInCombatAnchor", Loc ["STRING_OPTIONS_ALPHAMOD_ANCHOR"], "GameFontNormal") + frame17.hideInCombatAnchor:SetPoint("topleft", frame17, "topleft", window.right_start_at, window.top_start_at) --> hide in combat g:NewLabel (frame17, _, "$parentCombatAlphaLabel", "combatAlphaLabel", Loc ["STRING_OPTIONS_COMBAT_ALPHA"], "GameFontHighlightLeft") - local onSelectCombatAlpha = function (_, _, combat_alpha) - local instance = _G.DetailsOptionsWindow.instance - - instance:SetCombatAlpha (combat_alpha) - - if (_detalhes.options_group_edit and not DetailsOptionsWindow.loading_settings) then - for _, this_instance in ipairs (instance:GetInstanceGroup()) do - if (this_instance ~= instance) then - this_instance:SetCombatAlpha (combat_alpha) - end - end - end - - _detalhes:SendOptionsModifiedEvent (DetailsOptionsWindow.instance) - end local texCoords = {.9, 0.1, 0.1, .9} local typeCombatAlpha = { - {value = 1, label = Loc ["STRING_OPTIONS_COMBAT_ALPHA_1"], onclick = onSelectCombatAlpha, icon = "Interface\\Icons\\INV_Misc_Spyglass_03", texcoord = texCoords, color = "gray"}, - {value = 2, label = Loc ["STRING_OPTIONS_COMBAT_ALPHA_2"], onclick = onSelectCombatAlpha, icon = "Interface\\Icons\\INV_Misc_Spyglass_02", texcoord = texCoords}, - {value = 3, label = Loc ["STRING_OPTIONS_COMBAT_ALPHA_3"], onclick = onSelectCombatAlpha, icon = "Interface\\Icons\\INV_Misc_Spyglass_02", texcoord = texCoords}, - {value = 4, label = Loc ["STRING_OPTIONS_COMBAT_ALPHA_4"], onclick = onSelectCombatAlpha, icon = "Interface\\Icons\\INV_Misc_Spyglass_02", texcoord = texCoords}, - {value = 5, label = Loc ["STRING_OPTIONS_COMBAT_ALPHA_5"], onclick = onSelectCombatAlpha, icon = "Interface\\Icons\\INV_Misc_Spyglass_02", texcoord = texCoords}, - {value = 6, label = Loc ["STRING_OPTIONS_COMBAT_ALPHA_6"], onclick = onSelectCombatAlpha, icon = "Interface\\Icons\\INV_Misc_Spyglass_02", texcoord = texCoords}, - {value = 7, label = Loc ["STRING_OPTIONS_COMBAT_ALPHA_7"], onclick = onSelectCombatAlpha, icon = "Interface\\Icons\\INV_Misc_Spyglass_02", texcoord = texCoords, desc = Loc ["STRING_OPTIONS_COMBAT_ALPHA_6"] .. " + " .. Loc ["STRING_OPTIONS_COMBAT_ALPHA_3"]}, - {value = 8, label = Loc ["STRING_OPTIONS_COMBAT_ALPHA_8"], onclick = onSelectCombatAlpha, icon = "Interface\\Icons\\INV_Misc_Spyglass_02", texcoord = texCoords}, + Loc["STRING_OPTIONS_COMBAT_ALPHA_2"], + Loc["STRING_OPTIONS_COMBAT_ALPHA_3"], + Loc["STRING_OPTIONS_COMBAT_ALPHA_4"], + Loc["STRING_OPTIONS_COMBAT_ALPHA_5"], + Loc["STRING_OPTIONS_COMBAT_ALPHA_6"], + Loc["STRING_OPTIONS_COMBAT_ALPHA_7"], + Loc["STRING_OPTIONS_COMBAT_ALPHA_8"], + Loc["STRING_OPTIONS_COMBAT_ALPHA_9"], } - local buildTypeCombatAlpha = function() - return typeCombatAlpha - end - - local d = g:NewDropDown (frame17, _, "$parentCombatAlphaDropdown", "combatAlphaDropdown", 160, dropdown_height, buildTypeCombatAlpha, nil, options_dropdown_template) - - frame17.combatAlphaDropdown:SetPoint ("left", frame17.combatAlphaLabel, "right", 2, 0) - - window:CreateLineBackground2 (frame17, "combatAlphaDropdown", "combatAlphaLabel", Loc ["STRING_OPTIONS_COMBAT_ALPHA_DESC"]) - g:NewLabel (frame17, _, "$parentHideOnCombatAlphaLabel", "hideOnCombatAlphaLabel", Loc ["STRING_ALPHA"], "GameFontHighlightLeft") - - local s = g:NewSlider (frame17, _, "$parentHideOnCombatAlphaSlider", "hideOnCombatAlphaSlider", SLIDER_WIDTH, SLIDER_HEIGHT, 0, 100, 1, _G.DetailsOptionsWindow.instance.hide_in_combat_alpha, nil, nil, nil, options_slider_template) - --config_slider (s) - - frame17.hideOnCombatAlphaSlider:SetPoint ("left", frame17.hideOnCombatAlphaLabel, "right", 2, 0) - frame17.hideOnCombatAlphaSlider:SetHook ("OnValueChange", function (self, instance, amount) --> slider, fixedValue, sliderValue - instance.hide_in_combat_alpha = amount - instance:SetCombatAlpha (nil, nil, true) - + local optionsOrder = {3, 4, 5, 6, 7, 8, 1, 2} + + local header1Label = _G.DetailsFramework:CreateLabel(frame17, Loc["STRING_CONTEXT"]) + local header2Label = _G.DetailsFramework:CreateLabel(frame17, Loc["STRING_ENABLED"]) + local header3Label = _G.DetailsFramework:CreateLabel(frame17, Loc["STRING_INVERT_RULE"]) + local header4Label = _G.DetailsFramework:CreateLabel(frame17, Loc["STRING_ALPHA"]) + + local yyy = window.top_start_at - 20 + header1Label:SetPoint("topleft", frame17, "topleft", window.right_start_at, yyy) + header2Label:SetPoint("topleft", frame17, "topleft", window.right_start_at + 96, yyy) + header3Label:SetPoint("topleft", frame17, "topleft", window.right_start_at + 140, yyy) + header4Label:SetPoint("topleft", frame17, "topleft", window.right_start_at + 270, yyy) + + local onEnableHideContext = function(self, contextId, value) + local instance = _G.DetailsOptionsWindow.instance + + instance.hide_on_context[contextId].enabled = value + instance:AdjustAlphaByContext() + --instance:SetCombatAlpha(combat_alpha) + if (_detalhes.options_group_edit and not DetailsOptionsWindow.loading_settings) then for _, this_instance in ipairs (instance:GetInstanceGroup()) do if (this_instance ~= instance) then - this_instance.hide_in_combat_alpha = amount - this_instance:SetCombatAlpha (nil, nil, true) + this_instance.hide_on_context[contextId].enabled = value + --this_instance:SetCombatAlpha (combat_alpha) + this_instance:AdjustAlphaByContext() end end end - _detalhes:SendOptionsModifiedEvent (DetailsOptionsWindow.instance) - end) - - window:CreateLineBackground2 (frame17, "hideOnCombatAlphaSlider", "hideOnCombatAlphaLabel", Loc ["STRING_OPTIONS_HIDECOMBATALPHA_DESC"]) - + _detalhes:SendOptionsModifiedEvent (instance) + end + + local onInverseValue = function(self, contextId, value) + local instance = _G.DetailsOptionsWindow.instance + + instance.hide_on_context[contextId].inverse = value + --instance:SetCombatAlpha(combat_alpha) + instance:AdjustAlphaByContext() + + if (_detalhes.options_group_edit and not DetailsOptionsWindow.loading_settings) then + for _, this_instance in ipairs (instance:GetInstanceGroup()) do + if (this_instance ~= instance) then + this_instance.hide_on_context[contextId].inverse = value + --this_instance:SetCombatAlpha (combat_alpha) + this_instance:AdjustAlphaByContext() + end + end + end + + _detalhes:SendOptionsModifiedEvent (instance) + end + + local onAlphaChanged = function(self, contextId, value) + value = floor(value) + local instance = _G.DetailsOptionsWindow.instance + + instance.hide_on_context[contextId].value = value + --instance:SetCombatAlpha(combat_alpha) + instance:AdjustAlphaByContext() + + if (_detalhes.options_group_edit and not DetailsOptionsWindow.loading_settings) then + for _, this_instance in ipairs (instance:GetInstanceGroup()) do + if (this_instance ~= instance) then + this_instance.hide_on_context[contextId].value = value + --this_instance:SetCombatAlpha (combat_alpha) + this_instance:AdjustAlphaByContext() + end + end + end + + _detalhes:SendOptionsModifiedEvent (instance) + end + + frame17.AutoHideOptions = {} + + for id, i in ipairs(optionsOrder) do + local line = _G.CreateFrame("frame", nil, frame17) + line:SetSize(300, 22) + line:SetPoint("topleft", frame17, "topleft", window.right_start_at, yyy + ((id) * -23) + 4) + _G.DetailsFramework:ApplyStandardBackdrop(line) + + local contextLabel = _G.DetailsFramework:CreateLabel(line, typeCombatAlpha[i]) + contextLabel:SetPoint("left", line, "left", 2, 0) + + local enabledCheckbox = _G.DetailsFramework:NewSwitch(line, nil, nil, nil, 20, 20, nil, nil, false, nil, nil, nil, nil, options_switch_template) + enabledCheckbox:SetPoint("left", line, "left", 118, 0) + enabledCheckbox:SetAsCheckBox() + enabledCheckbox.OnSwitch = onEnableHideContext + enabledCheckbox:SetFixedParameter(i) + + local reverseCheckbox = _G.DetailsFramework:NewSwitch(line, nil, nil, nil, 20, 20, nil, nil, false, nil, nil, nil, nil, options_switch_template) + reverseCheckbox:SetPoint("left", line, "left", 140, 0) + reverseCheckbox:SetAsCheckBox() + reverseCheckbox.OnSwitch = onInverseValue + reverseCheckbox:SetFixedParameter(i) + + local alphaSlider = _G.DetailsFramework:CreateSlider(line, 138, 20, 0, 100, 1, 100, false, nil, nil, nil, options_slider_template) + alphaSlider:SetPoint("left", line, "left", 162, 0) + alphaSlider:SetHook("OnValueChanged", onAlphaChanged) + alphaSlider:SetFixedParameter(i) + + line.contextLabel = contextLabel + line.enabledCheckbox = enabledCheckbox + line.reverseCheckbox = reverseCheckbox + line.alphaSlider = alphaSlider + + frame17.AutoHideOptions[i] = line + end + + --hide_on_context + + --old alpha handle only allowed 1 context to be operational + --the new allows all context to be active + + --old instruction + --instance:SetCombatAlpha (combat_alpha_id, ?, alpha value) + --Loc ["STRING_OPTIONS_HIDECOMBATALPHA_DESC"] + --> auto transparency --> alpha onenter onleave auto transparency @@ -3033,9 +3105,9 @@ function window:CreateFrame17() window:arrange_menu (frame17, left_side, x, window.top_start_at) local right_side = { - {"hideInCombatAnchor", 1, true}, - {"combatAlphaLabel", 2}, - {"hideOnCombatAlphaLabel", 3}, + --{"hideInCombatAnchor", 1, true}, --deprecated + --{"combatAlphaLabel", 2}, + --{"hideOnCombatAlphaLabel", 3}, {"menuAlphaAnchorLabel", 4, true}, {"alphaSwitchLabel", 5}, @@ -3044,7 +3116,7 @@ function window:CreateFrame17() {"menuOnLeaveLabel", 8}, } - window:arrange_menu (frame17, right_side, window.right_start_at, window.top_start_at) + window:arrange_menu (frame17, right_side, window.right_start_at, window.top_start_at - 235) @@ -11930,10 +12002,20 @@ end --> if not window --_G.DetailsOptionsWindow18AdvancedAnimationsSlider.MyObject:SetValue (_detalhes.streamer_config.use_animation_accel) --> window 17 - _G.DetailsOptionsWindow17CombatAlphaDropdown.MyObject:Select (editing_instance.hide_in_combat_type, true) - _G.DetailsOptionsWindow17HideOnCombatAlphaSlider.MyObject:SetFixedParameter (editing_instance) - _G.DetailsOptionsWindow17HideOnCombatAlphaSlider.MyObject:SetValue (editing_instance.hide_in_combat_alpha) - +-- _G.DetailsOptionsWindow17CombatAlphaDropdown.MyObject:Select (editing_instance.hide_in_combat_type, true) --deprecated, lines are now used +-- _G.DetailsOptionsWindow17HideOnCombatAlphaSlider.MyObject:SetFixedParameter (editing_instance) +-- _G.DetailsOptionsWindow17HideOnCombatAlphaSlider.MyObject:SetValue (editing_instance.hide_in_combat_alpha) + + --hide_on_context + local autoHideLines = _G.DetailsOptionsWindow17.AutoHideOptions + --for id, i in ipairs(autoHideLines) do + for i = 1, #autoHideLines do + local line = autoHideLines[i] + line.enabledCheckbox:SetValue(editing_instance.hide_on_context[i].enabled) + line.reverseCheckbox:SetValue(editing_instance.hide_on_context[i].inverse) + line.alphaSlider:SetValue(editing_instance.hide_on_context[i].value) + end + _G.DetailsOptionsWindow17MenuOnEnterLeaveAlphaSwitch.MyObject:SetFixedParameter (editing_instance) _G.DetailsOptionsWindow17MenuOnEnterAlphaSlider.MyObject:SetFixedParameter (editing_instance) _G.DetailsOptionsWindow17MenuOnLeaveAlphaSlider.MyObject:SetFixedParameter (editing_instance) diff --git a/gumps/janela_principal.lua b/gumps/janela_principal.lua index 419a43d7..60d7bcaa 100644 --- a/gumps/janela_principal.lua +++ b/gumps/janela_principal.lua @@ -18,6 +18,7 @@ local _math_floor = math.floor local _math_max = math.max local _ipairs = ipairs local _pairs = pairs +local abs = _G.abs local _string_lower = string.lower local _unpack = unpack --api locals @@ -35,6 +36,7 @@ local modo_raid = _detalhes._detalhes_props["MODO_RAID"] local modo_alone = _detalhes._detalhes_props["MODO_ALONE"] local modo_grupo = _detalhes._detalhes_props["MODO_GROUP"] local modo_all = _detalhes._detalhes_props["MODO_ALL"] +local IsInInstance = _G.IsInInstance local tok_functions = _detalhes.ToKFunctions @@ -1045,6 +1047,7 @@ 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 _detalhes.disable_stretch_from_toolbar) then return self._instance.baseframe.button_stretch:GetScript ("OnMouseDown") (self._instance.baseframe.button_stretch, "LeftButton") @@ -3471,8 +3474,8 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) --> background holds the wallpaper, alert strings ans textures, have setallpoints on baseframe --> backgrounddisplay is a scrollschild of backgroundframe - local backgroundframe = CreateFrame ("scrollframe", "Details_WindowFrame"..ID, baseframe) - local backgrounddisplay = CreateFrame ("frame", "Details_GumpFrame"..ID, backgroundframe) + local backgroundframe = CreateFrame ("scrollframe", "Details_WindowFrame"..ID, baseframe) --window frame + local backgrounddisplay = CreateFrame ("frame", "Details_GumpFrame"..ID, backgroundframe) --gump frame backgroundframe:SetFrameLevel (3) backgrounddisplay:SetFrameLevel (3) backgroundframe.instance = instancia @@ -3480,20 +3483,18 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) instancia.windowBackgroundDisplay = backgrounddisplay --> row frame is the parent of rows, it have setallpoints on baseframe - local rowframe = CreateFrame ("frame", "DetailsRowFrame"..ID, _UIParent) + local rowframe = CreateFrame ("frame", "DetailsRowFrame"..ID, _UIParent) --row frame rowframe:SetAllPoints (baseframe) rowframe:SetFrameStrata (baseframe_strata) - rowframe:SetFrameLevel (2) + rowframe:SetFrameLevel (3) + rowframe:EnableMouse(false) instancia.rowframe = rowframe --> right click bookmark - local switchbutton = gump:NewDetailsButton (backgrounddisplay, baseframe, nil, function() end, nil, nil, 1, 1, "", "", "", "", - {rightFunc = {func = function() _detalhes.switch:ShowMe (instancia) end, param1 = nil, param2 = nil}}, "Details_SwitchButtonFrame" .. ID) - - switchbutton:SetPoint ("topleft", backgrounddisplay, "topleft") - switchbutton:SetPoint ("bottomright", backgrounddisplay, "bottomright") - switchbutton:SetFrameLevel (backgrounddisplay:GetFrameLevel()+1) - + local switchbutton = CreateFrame("button", "Details_SwitchButtonFrame" .. ID, UIParent) + switchbutton:SetAllPoints (baseframe) + 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. @@ -3744,9 +3745,8 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) -- scripts ------------------------------------------------------------------------------------------------------------------------------------------------------------ - BFrame_scripts (baseframe, instancia) - - BGFrame_scripts (switchbutton, baseframe, instancia) + BFrame_scripts (baseframe, instancia) --baseframe + BGFrame_scripts (switchbutton, baseframe, instancia) --backgroundframe BGFrame_scripts (backgrounddisplay, baseframe, instancia) iterate_scroll_scripts (backgrounddisplay, backgroundframe, baseframe, scrollbar, instancia) @@ -4982,11 +4982,12 @@ function _detalhes:SetWindowAlphaForInteract (alpha) end else --> saiu - if (self.combat_changes_alpha) then --> combat alpha + if (self.combat_changes_alpha and self.combat_changes_alpha ~= 1) then --> combat alpha self:InstanceAlpha (self.combat_changes_alpha) self:SetIconAlpha (self.combat_changes_alpha, nil, true) self.rowframe:SetAlpha (self.combat_changes_alpha) --alpha do combate � absoluta self.baseframe:SetAlpha (self.combat_changes_alpha) --alpha do combate � absoluta + else self:InstanceAlpha (alpha) self:SetIconAlpha (alpha, nil, true) @@ -5008,13 +5009,13 @@ function _detalhes:SetWindowAlphaForInteract (alpha) end -- ~autohide �utohide -function _detalhes:SetWindowAlphaForCombat (entering_in_combat, true_hide) +function _detalhes:SetWindowAlphaForCombat (entering_in_combat, true_hide, alphaAmount) local amount, rowsamount, menuamount --get the values if (entering_in_combat) then - amount = self.hide_in_combat_alpha / 100 + amount = alphaAmount / 100 self.combat_changes_alpha = amount rowsamount = amount menuamount = amount @@ -5054,6 +5055,7 @@ function _detalhes:SetWindowAlphaForCombat (entering_in_combat, true_hide) --apply if (true_hide and amount == 0) then + -- gump:Fade (self.baseframe, _unpack (_detalhes.windows_fade_in)) gump:Fade (self.rowframe, _unpack (_detalhes.windows_fade_in)) self:SetIconAlpha (nil, true) @@ -5061,8 +5063,9 @@ function _detalhes:SetWindowAlphaForCombat (entering_in_combat, true_hide) if (_detalhes.debug) then _detalhes:Msg ("(debug) hiding window SetWindowAlphaForCombat()", amount, rowsamount, menuamount) end + --]] else - + -- self.baseframe:Show() self.baseframe:SetAlpha (1) @@ -5074,6 +5077,7 @@ function _detalhes:SetWindowAlphaForCombat (entering_in_combat, true_hide) if (_detalhes.debug) then _detalhes:Msg ("(debug) showing window SetWindowAlphaForCombat()", amount, rowsamount, menuamount) end + --]] end if (self.show_statusbar) then @@ -7168,7 +7172,7 @@ function _detalhes:ChangeSkin (skin_name) self:SetFrameStrata() --> update the combat alphas - self:SetCombatAlpha (nil, nil, true) + self:AdjustAlphaByContext() --> update icons _detalhes.ToolBar:ReorganizeIcons (true) --call self:SetMenuAlpha() @@ -7398,103 +7402,201 @@ end --endd -function _detalhes:DelayedCheckCombatAlpha (instance) - if (UnitAffectingCombat ("player") or InCombatLockdown()) then - instance:SetWindowAlphaForCombat (true, true) --> hida a janela +function _detalhes:DelayedCheckCombatAlpha (instance, alpha) + if ((UnitAffectingCombat("player") or InCombatLockdown())) then + instance:SetWindowAlphaForCombat (true, true, alpha) --> hida a janela + instance:SetWindowAlphaForCombat (true, true, alpha) --> hida a janela else - instance:SetWindowAlphaForCombat (false) --> deshida a janela + instance:SetWindowAlphaForCombat (false, false, alpha) --> deshida a janela end end -function _detalhes:DelayedCheckOutOfCombatAlpha (instance) - if (UnitAffectingCombat ("player") or InCombatLockdown()) then - instance:SetWindowAlphaForCombat (false) --> deshida a janela +function _detalhes:DelayedCheckOutOfCombatAlpha (instance, alpha) + if (UnitAffectingCombat("player") or InCombatLockdown()) then + instance:SetWindowAlphaForCombat (false, false, alpha) --> deshida a janela else - instance:SetWindowAlphaForCombat (true, true) --> hida a janela + instance:SetWindowAlphaForCombat (true, true, alpha) --> hida a janela + instance:SetWindowAlphaForCombat (true, true, alpha) --> hida a janela end end -function _detalhes:DelayedCheckOutOfCombatAndGroupAlpha (instance) +function _detalhes:DelayedCheckOutOfCombatAndGroupAlpha (instance, alpha, invert) if ((_detalhes.zone_type == "raid" or _detalhes.zone_type == "party") and IsInInstance()) then - if (UnitAffectingCombat ("player") or InCombatLockdown()) then - instance:SetWindowAlphaForCombat (true, true) --> hida a janela + if (invert) then + if (UnitAffectingCombat("player") or InCombatLockdown()) then + instance:SetWindowAlphaForCombat (true, true, alpha) --> hida a janela + instance:SetWindowAlphaForCombat (true, true, alpha) --> hida a janela + else + instance:SetWindowAlphaForCombat (false, false, alpha) --> deshida a janela + end else - instance:SetWindowAlphaForCombat (false) --> deshida a janela + if (UnitAffectingCombat("player") or InCombatLockdown()) then + instance:SetWindowAlphaForCombat (false, false, alpha) --> deshida a janela + else + instance:SetWindowAlphaForCombat (true, true, alpha) --> hida a janela + instance:SetWindowAlphaForCombat (true, true, alpha) --> hida a janela + end end else - instance:SetWindowAlphaForCombat (true, true) --> hida a janela + instance:SetWindowAlphaForCombat (true, true, alpha) --> hida a janela + instance:SetWindowAlphaForCombat (true, true, alpha) --> hida a janela end end -function _detalhes:SetCombatAlpha (modify_type, alpha_amount, interacting) - - if (interacting) then - if (self.hide_in_combat_type == 1) then --None - return - - elseif (self.hide_in_combat_type == 2) then --While In Combat - _detalhes:ScheduleTimer ("DelayedCheckCombatAlpha", 0.3, self) - - elseif (self.hide_in_combat_type == 3) then --"While Out of Combat" - _detalhes:ScheduleTimer ("DelayedCheckOutOfCombatAlpha", 0.3, self) - - elseif (self.hide_in_combat_type == 4) then --"While Out of a Group" - if (_detalhes.in_group) then - self:SetWindowAlphaForCombat (false) --> deshida a janela - else - self:SetWindowAlphaForCombat (true, true) --> hida a janela - end - - elseif (self.hide_in_combat_type == 5) then --"While Not Inside Instance" - local isInInstance = IsInInstance() - if (isInInstance or _detalhes.zone_type == "raid" or _detalhes.zone_type == "party") then - self:SetWindowAlphaForCombat (false) --> deshida a janela - else - self:SetWindowAlphaForCombat (true, true) --> hida a janela - end - - elseif (self.hide_in_combat_type == 6) then --"While Inside Instance" - local isInInstance = IsInInstance() - if (isInInstance or _detalhes.zone_type == "raid" or _detalhes.zone_type == "party") then - self:SetWindowAlphaForCombat (true, true) --> hida a janela - else - self:SetWindowAlphaForCombat (false) --> deshida a janela - end - - elseif (self.hide_in_combat_type == 7) then --"Raid Debug" = Out of Combat and Inside Raid or Dungeon - _detalhes:ScheduleTimer ("DelayedCheckOutOfCombatAndGroupAlpha", 0.3, self) - - elseif (self.hide_in_combat_type == 8) then --"In Battlegrounds" - local isInInstance = IsInInstance() - if (isInInstance and _detalhes.zone_type == "pvp") then - self:SetWindowAlphaForCombat (true, true) --> hida a janela - else - self:SetWindowAlphaForCombat (false) --> deshida a janela - end - end - - return +local getAlphaByContext = function(instance, contextIndex, invert) + local alpha = instance.hide_on_context[contextIndex].value + if (invert) then + alpha = abs(alpha - 100) end - - if (not modify_type) then - modify_type = self.hide_in_combat_type - else - if (modify_type == 1) then --> changed to none - self:SetWindowAlphaForCombat (false) - end - end - - if (not alpha_amount) then - alpha_amount = self.hide_in_combat_alpha - end - - self.hide_in_combat_type = modify_type - self.hide_in_combat_alpha = alpha_amount - - self:SetCombatAlpha (nil, nil, true) - + return alpha end +function _detalhes:AdjustAlphaByContext(interacting) + + --in combat + if (not self.meu_id) then + print("error Details! AdjustAlphaByContext()", debugstack()) + end + + local hasRuleEnabled = false + + --not in group + if (self.hide_on_context[3].enabled) then + hasRuleEnabled = true + if (_detalhes.in_group) then + if (self.hide_on_context[3].inverse) then + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 3)) --> hida a janela + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 3)) --> hida a janela + else + self:SetWindowAlphaForCombat (false, false, getAlphaByContext(self, 3)) --> deshida a janela + end + else + if (self.hide_on_context[3].inverse) then + self:SetWindowAlphaForCombat (false, false, getAlphaByContext(self, 3)) --> deshida a janela + else + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 3)) --> hida a janela + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 3)) --> hida a janela + end + end + end + + --while not inside instance + if (self.hide_on_context[4].enabled) then + hasRuleEnabled = true + local isInInstance = IsInInstance() + if (not self.hide_on_context[4].inverse) then + if (isInInstance or _detalhes.zone_type == "raid" or _detalhes.zone_type == "party") then + self:SetWindowAlphaForCombat (false, false, getAlphaByContext(self, 4)) --> deshida a janela + else + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 4)) --> hida a janela + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 4)) --> hida a janela + end + else + if (isInInstance or _detalhes.zone_type == "raid" or _detalhes.zone_type == "party") then + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 4)) --> hida a janela + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 4)) --> hida a janela + else + self:SetWindowAlphaForCombat (false, false, getAlphaByContext(self, 4)) --> deshida a janela + end + end + end + + --while inside instance + if (self.hide_on_context[5].enabled) then + hasRuleEnabled = true + local isInInstance = IsInInstance() + if (not self.hide_on_context[5].inverse) then + if (isInInstance or _detalhes.zone_type == "raid" or _detalhes.zone_type == "party") then + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 5)) --> hida a janela + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 5)) --> hida a janela + else + self:SetWindowAlphaForCombat (false, false, getAlphaByContext(self, 5)) --> deshida a janela + end + else + if (isInInstance or _detalhes.zone_type == "raid" or _detalhes.zone_type == "party") then + self:SetWindowAlphaForCombat (false, false, getAlphaByContext(self, 5)) --> deshida a janela + else + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 5)) --> hida a janela + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 5)) --> hida a janela + end + end + end + + --raid debug (inside instance + out of combat) + if (self.hide_on_context[6].enabled) then + hasRuleEnabled = true + _detalhes:ScheduleTimer ("DelayedCheckOutOfCombatAndGroupAlpha", 0.3, self, getAlphaByContext(self, 6), self.hide_on_context[6].inverse) + end + + --in battleground + if (self.hide_on_context[7].enabled) then + hasRuleEnabled = true + local isInInstance = IsInInstance() + if (isInInstance and _detalhes.zone_type == "pvp") then + if (not self.hide_on_context[7].inverse) then + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 7)) --> hida a janela + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 7)) --> hida a janela + else + self:SetWindowAlphaForCombat (false, false, getAlphaByContext(self, 7)) --> deshida a janela + end + else + if (not self.hide_on_context[7].inverse) then + self:SetWindowAlphaForCombat (false, false, getAlphaByContext(self, 7)) --> deshida a janela + else + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 7)) --> hida a janela + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 7)) --> hida a janela + end + end + end + + --mythic+ + if (self.hide_on_context[8].enabled) then + hasRuleEnabled = true + if (_G.DetailsMythicPlusFrame.IsDoingMythicDungeon) then + if (not self.hide_on_context[8].inverse) then + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 8)) --> hida a janela + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 8)) --> hida a janela + else + self:SetWindowAlphaForCombat (false, false, getAlphaByContext(self, 8)) --> deshida a janela + end + else + if (not self.hide_on_context[8].inverse) then + self:SetWindowAlphaForCombat (false, false, getAlphaByContext(self, 8)) --> deshida a janela + else + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 8)) --> hida a janela + self:SetWindowAlphaForCombat (true, true, getAlphaByContext(self, 8)) --> hida a janela + end + end + end + + --in combat + if (self.hide_on_context[1].enabled) then + if (self.hide_on_context[1].inverse) then + _detalhes:ScheduleTimer ("DelayedCheckOutOfCombatAlpha", 0.3, self, getAlphaByContext(self, 1)) + else + _detalhes:ScheduleTimer ("DelayedCheckCombatAlpha", 0.3, self, getAlphaByContext(self, 1)) + end + hasRuleEnabled = true + end + + --out of combat + if (self.hide_on_context[2].enabled) then + hasRuleEnabled = true + if (self.hide_on_context[2].inverse) then + _detalhes:ScheduleTimer ("DelayedCheckCombatAlpha", 0.3, self, getAlphaByContext(self, 2)) + else + _detalhes:ScheduleTimer ("DelayedCheckOutOfCombatAlpha", 0.3, self, getAlphaByContext(self, 2)) + end + end + + --if no rule is enabled, show the window + if (not hasRuleEnabled) then + self:SetWindowAlphaForCombat (true, true, 100) + self:SetWindowAlphaForCombat (true, true, 100) + end +end + + function _detalhes:SetFrameStrata (strata) if (not strata) then @@ -7504,6 +7606,7 @@ function _detalhes:SetFrameStrata (strata) self.strata = strata self.rowframe:SetFrameStrata (strata) + self.windowSwitchButton:SetFrameStrata (strata) self.baseframe:SetFrameStrata (strata) if (strata == "BACKGROUND") then @@ -7535,11 +7638,9 @@ function _detalhes:SetFrameStrata (strata) self.baseframe.resize_esquerda:SetFrameStrata ("FULLSCREEN") self.baseframe.resize_direita:SetFrameStrata ("FULLSCREEN") self.baseframe.lock_button:SetFrameStrata ("FULLSCREEN") - end self:StretchButtonAlwaysOnTop() - end function _detalhes:LeftMenuAnchorSide (side)