diff --git a/boot.lua b/boot.lua index 2606f81c..2ffe6372 100644 --- a/boot.lua +++ b/boot.lua @@ -4,8 +4,8 @@ _ = nil _detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0") - _detalhes.build_counter = 32 --it's 33 for release - _detalhes.userversion = "v1.22.0" + _detalhes.build_counter = 32 --it's 36 for release + _detalhes.userversion = "v1.22.2" _detalhes.realversion = 25 _detalhes.version = _detalhes.userversion .. " (core " .. _detalhes.realversion .. ")" @@ -21,9 +21,15 @@ do --[[ |cFFFFFF00a1.22.0 (|cFFFFCC00Ago 10, 2014|r|cFFFFFF00)|r:\n\n |cFFFFFF00-|r Added support for hotcorners.\n\n +|cFFFFFF00-|r Few improvements on report for Deaths and Spells over Player Detail Window.\n\n +|cFFFFFF00-|r Added option for disable window groups.\n\n +|cFFFFFF00-|r Added option for select the icon pack to use, also added black white icon pack.\n\n +|cFFFFFF00-|r Fixed many bugs involving skins and profiles, thing should run more smooth now.\n\n +|cFFFFFF00-|r Plugin Time Attack now correctly saves the attempt when pressing the big save button.\n\n + --]] - Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00a1.22.0 (|cFFFFCC00Ago 10, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added support for hotcorners.\n\n|cFFFFFF00v1.21.4 (|cFFFFCC00Ago 9, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added Shaman's Ancestral Guidance on cooldowns list |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r Added a profile selection screen when Details! are running for the first time on a character.\n\n|cFFFFFF00-|r Added Menu Text Size option over miscellaneous section on options panel |cFF999999(thanks @ Revi-mmochampion forum)|r.\n\n|cFFFFFF00-|r Fixed a bug over Healing Player Details Window where pets wasn't being shown |cFF999999(thanks @Mystery2012-mmochampion forum)|r.\n\n|cFFFFFF00-|r Fixed issue with summoning pets with unknown owners where it was breaking the summon of all the others pets. |cFF999999(thanks @ThunderLost-curse website)|r.\n\n|cFFFFFF00-|r Hot Corners isn't no more a part of Details!, instead of that, Hot Corner is now a standalone addon which needs to be installed separately for who wants to use it.\n\n|cFFFFFF00-|r Skin data is now stored inside the profiles, many code parts got rewrite, still may have few bugs but it's more reliable then before.\n\n|cFFFFFF00-|r Rework on Auras and Voidzones: now shows damage, dps and percentage. Also its tooltip got fixes and now shows the correct damage done to players.\n\n|cFFFFFF00-|r Tooltip for Enemies now shows damage taken from players |cFF999999(thanks @Arieth-mmochampion forum)|r.\n\n|cFFFFFF00-|r Right clicking a real-time enemy bar, makes it back to Enemies display instead of show Bookmark panel |cFF999999(thanks @Arieth-mmochampion forum)|r.\n\n|cFFFFFF00-|r Tank comparison from previous segment now uses the same percentage method from player comparison panel.\n\n|cFFFFFF00-|r Fix bug with the slash command 'show' where was ignoring the window limit set on options panel |cFF999999(thanks @Castiel-US-Azralon realm)|r.\n\n|cFFFFFF00-|r Fixed few bugs with scroll bars, including scrolls on dropdown menu and player detail window |cFF999999(thanks @Revi-mmochampion forum)|r.\n\n|cFFFFFF00v1.20.2 (|cFFFFCC00Aug 1, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added a option under Miscellaneous section to provide spell link instead of spell name for helpful spells when reporting a death |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r Improvements done on how deaths are handled, now latest events before death will be more precise.\n\n|cFFFFFF00-|r Implemented Damage Taken from environment like lava, gravity, etc.\n\n|cFFFFFF00-|r Added Warlock's Fire and Brimstone spell on customized spells.\n\n|cFFFFFF00-|r Added dwarf racial Stone Form on cooldown list |cFF999999(thanks @Mystery2012-mmochampion forum)|r.\n\n|cFFFFFF00-|r Bookmark now are shared between all characters.\n\n|cFFFFFF00-|r Fixed few inconsistencies with trash recognition.\n\n|cFFFFFF00-|r Fixed Cloud Capture where sometimes it wasn't sharing.\n\n|cFFFFFF00-|r Fixed report where it wasn't sharing for guild and raid when the player name box were empty.\n\n|cFFFFFF00-|r Report box now also saves the position and the last channel used to report |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r You Are Not Prepared plugin now have tooltips for spells and its window auto opens after a boss encounter.\n\n|cFFFFFF00-|r Advanced Death Logs plugin got full rewrite (and still are in development).\n\n|cFFFFFF00v1.19.0 - v1.19.1 - v1.19.2 (|cFFFFCC00Jul 21, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Details! is now able to be translated by its community for all supported languages through Curse Forge Web Site:\n\n|cFFFFFF00http://wow.curseforge.com/addons/details/localization/|r\n\n|cFFFFFF00-|r Slash commands now are multi language, accepting both english and the localized language.\n\n|cFFFFFF00-|r Added Data Broker for: Combat Time, Player Dps and Player Hps.\n\n|cFFFFFF00-|r Rework on plugins: Timeline, You Are Not Prepared, Tiny Threat, Encounter Details. All those plugins got a options panel and few improvaments.\n\n|cFFFFFF00-|r Trash segments won't be saved anymore.\n\n|cFFFFFF00-|r Added support for plugins options.\n\n|cFFFFFF00-|r Revamp on Deaths report lines, adding links for harmful spells and changing the text order |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r Modified the percentage used on Comparison panel |cFF999999(thanks @Mystery2012-mmochampion forum)|r.\n\n|cFFFFFF00-|r Fixed the Raid Dps and Hps data exported by Data Broker |cFF999999(thanks @Arieth-mmochampion forum)|r.\n\n|cFFFFFF00v1.18.4 - v1.18.5 - v1.18.6 (|cFFFFCC00Jul 13, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added option to customize the bar left text.\n\n|cFFFFFF00-|r Added option for show or hide bar placement number.\n\n|cFFFFFF00-|r Spell icon is shown in the bar when the enemy character is a environment spell type.\n\n|cFFFFFF00-|r Changed the non-player enemy icon (monsters).\n\n|cFFFFFF00-|r Fixed bug on flex performance profile |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r Added new version tracker which should alert you when a newer Details! version is found.\n\n|cFFFFFF00-|r Added Enemy Damage Taken by clicking with middle mouse button over a enemy bar (enemies display).\n\n|cFFFFFF00-|r Added import/export for saved skins and custom displays created.\n\n|cFFFFFF00-|r Small changes on ElvUI Frame Style skin (need reaply).\n\n|cFFFFFF00-|r Fixed the death recognition for bosses, now it should show the correct color over segments menu.\n\n|cFFFFFF00-|r Fixed Dps inacuracy when plyaing solo (no party or raid group).\n\n|cFFFFFF00-|r Fixed the duration time of buffs applied before the pull, like pre-potions.\n\n|cFFFFFF00v1.17.5 (|cFFFFCC00Jun 30, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Shortcut panel is now known as Bookmarks and a revamp has done on its panel.\n\n|cFFFFFF00-|r NickTag now doesnt check anymore if a received nickname from other guild member is invalid.\n\n|cFFFFFF00-|r Healthstone now is considered a cooldown.\n\n|cFFFFFF00-|r Few improvements on Default Skin, Minimalistic Skin and ElvUI Frame Style Skin.\n\n|cFFFFFF00-|r Revamp on Image Editor, many bugs solves and now it is usable.\n\n|cFFFFFF00-|r 'Hide' slash command now hides all opened windows; 'Show', open all closed windows and 'New' create a new window.\n\n|cFFFFFF00-|r Added Devotion Aura, Rallying Cry as cooldowns.\n\n|cFFFFFF00-|r Added options for lock, unlock, break snap, close, reopen and create new window.\n\n|cFFFFFF00-|r Added a options panel for HotCorners, access it through options button or slash hotcorner command.\n\n|cFFFFFF00-|r Added 'Logos' and 'Raid & Dungeons' sections for Wallpapers. \n\n|cFFFFFF00-|r Added a option to load a image from the computer to use as wallpaper.\n\n|cFFFFFF00-|r Fixed the percent issue with Healing Done and HPS while in combat.\n\n|cFFFFFF00-|r Fixed non-combat switch by role where changing role wasnt changing the shown attribute.\n\n|cFFFFFF00-|r Fixed 'While in Combat' hiding schema |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r Fixed several bugs on Interact Auto Transparency.\n\n|cFFFFFF00-|r Fixed the report window alert when opening the report window and it already is opened |cFF999999(thanks @Rasstapp-mmochampion forum)|r.\n\n|cFFFFFF00-|r Fixed the gap between last row created and the end of the window.\n\n|cFFFFFF00-|r Fixed all tooltips bugs on Wallpaper Section on Options Panel.\n\n|cFFFFFF00a1.17.0 (|cFFFFCC00Jun 21, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Support for Custom Displays has been rewrited, to access the new panel go to Sword Menu -> Custom -> Create New Display.\n\n|cFFFFFF00-|r Added a custom display for show potion usage.\n\n|cFFFFFF00-|r Fixed a bug where the player pet wasnt being tracked after logon in the game. This bug was affecting directly classes with pets playing out of a raid group." + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00a1.22.2 (|cFFFFCC00Ago 14, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Few improvements on report for Deaths and Spells over Player Detail Window.\n\n|cFFFFFF00-|r Added option for disable window groups.\n\n|cFFFFFF00-|r Added option for select the icon pack to use, also added black white icon pack.\n\n|cFFFFFF00-|r Fixed many bugs involving skins and profiles, thing should run more smooth now.\n\n|cFFFFFF00-|r Plugin Time Attack now correctly saves the attempt when pressing the big save button.\n\n|cFFFFFF00-|r Added support for hotcorners.\n\n|cFFFFFF00v1.21.4 (|cFFFFCC00Ago 9, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added Shaman's Ancestral Guidance on cooldowns list |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r Added a profile selection screen when Details! are running for the first time on a character.\n\n|cFFFFFF00-|r Added Menu Text Size option over miscellaneous section on options panel |cFF999999(thanks @ Revi-mmochampion forum)|r.\n\n|cFFFFFF00-|r Fixed a bug over Healing Player Details Window where pets wasn't being shown |cFF999999(thanks @Mystery2012-mmochampion forum)|r.\n\n|cFFFFFF00-|r Fixed issue with summoning pets with unknown owners where it was breaking the summon of all the others pets. |cFF999999(thanks @ThunderLost-curse website)|r.\n\n|cFFFFFF00-|r Hot Corners isn't no more a part of Details!, instead of that, Hot Corner is now a standalone addon which needs to be installed separately for who wants to use it.\n\n|cFFFFFF00-|r Skin data is now stored inside the profiles, many code parts got rewrite, still may have few bugs but it's more reliable then before.\n\n|cFFFFFF00-|r Rework on Auras and Voidzones: now shows damage, dps and percentage. Also its tooltip got fixes and now shows the correct damage done to players.\n\n|cFFFFFF00-|r Tooltip for Enemies now shows damage taken from players |cFF999999(thanks @Arieth-mmochampion forum)|r.\n\n|cFFFFFF00-|r Right clicking a real-time enemy bar, makes it back to Enemies display instead of show Bookmark panel |cFF999999(thanks @Arieth-mmochampion forum)|r.\n\n|cFFFFFF00-|r Tank comparison from previous segment now uses the same percentage method from player comparison panel.\n\n|cFFFFFF00-|r Fix bug with the slash command 'show' where was ignoring the window limit set on options panel |cFF999999(thanks @Castiel-US-Azralon realm)|r.\n\n|cFFFFFF00-|r Fixed few bugs with scroll bars, including scrolls on dropdown menu and player detail window |cFF999999(thanks @Revi-mmochampion forum)|r.\n\n|cFFFFFF00v1.20.2 (|cFFFFCC00Aug 1, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added a option under Miscellaneous section to provide spell link instead of spell name for helpful spells when reporting a death |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r Improvements done on how deaths are handled, now latest events before death will be more precise.\n\n|cFFFFFF00-|r Implemented Damage Taken from environment like lava, gravity, etc.\n\n|cFFFFFF00-|r Added Warlock's Fire and Brimstone spell on customized spells.\n\n|cFFFFFF00-|r Added dwarf racial Stone Form on cooldown list |cFF999999(thanks @Mystery2012-mmochampion forum)|r.\n\n|cFFFFFF00-|r Bookmark now are shared between all characters.\n\n|cFFFFFF00-|r Fixed few inconsistencies with trash recognition.\n\n|cFFFFFF00-|r Fixed Cloud Capture where sometimes it wasn't sharing.\n\n|cFFFFFF00-|r Fixed report where it wasn't sharing for guild and raid when the player name box were empty.\n\n|cFFFFFF00-|r Report box now also saves the position and the last channel used to report |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r You Are Not Prepared plugin now have tooltips for spells and its window auto opens after a boss encounter.\n\n|cFFFFFF00-|r Advanced Death Logs plugin got full rewrite (and still are in development).\n\n|cFFFFFF00v1.19.0 - v1.19.1 - v1.19.2 (|cFFFFCC00Jul 21, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Details! is now able to be translated by its community for all supported languages through Curse Forge Web Site:\n\n|cFFFFFF00http://wow.curseforge.com/addons/details/localization/|r\n\n|cFFFFFF00-|r Slash commands now are multi language, accepting both english and the localized language.\n\n|cFFFFFF00-|r Added Data Broker for: Combat Time, Player Dps and Player Hps.\n\n|cFFFFFF00-|r Rework on plugins: Timeline, You Are Not Prepared, Tiny Threat, Encounter Details. All those plugins got a options panel and few improvaments.\n\n|cFFFFFF00-|r Trash segments won't be saved anymore.\n\n|cFFFFFF00-|r Added support for plugins options.\n\n|cFFFFFF00-|r Revamp on Deaths report lines, adding links for harmful spells and changing the text order |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r Modified the percentage used on Comparison panel |cFF999999(thanks @Mystery2012-mmochampion forum)|r.\n\n|cFFFFFF00-|r Fixed the Raid Dps and Hps data exported by Data Broker |cFF999999(thanks @Arieth-mmochampion forum)|r.\n\n|cFFFFFF00v1.18.4 - v1.18.5 - v1.18.6 (|cFFFFCC00Jul 13, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added option to customize the bar left text.\n\n|cFFFFFF00-|r Added option for show or hide bar placement number.\n\n|cFFFFFF00-|r Spell icon is shown in the bar when the enemy character is a environment spell type.\n\n|cFFFFFF00-|r Changed the non-player enemy icon (monsters).\n\n|cFFFFFF00-|r Fixed bug on flex performance profile |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r Added new version tracker which should alert you when a newer Details! version is found.\n\n|cFFFFFF00-|r Added Enemy Damage Taken by clicking with middle mouse button over a enemy bar (enemies display).\n\n|cFFFFFF00-|r Added import/export for saved skins and custom displays created.\n\n|cFFFFFF00-|r Small changes on ElvUI Frame Style skin (need reaply).\n\n|cFFFFFF00-|r Fixed the death recognition for bosses, now it should show the correct color over segments menu.\n\n|cFFFFFF00-|r Fixed Dps inacuracy when plyaing solo (no party or raid group).\n\n|cFFFFFF00-|r Fixed the duration time of buffs applied before the pull, like pre-potions.\n\n|cFFFFFF00v1.17.5 (|cFFFFCC00Jun 30, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Shortcut panel is now known as Bookmarks and a revamp has done on its panel.\n\n|cFFFFFF00-|r NickTag now doesnt check anymore if a received nickname from other guild member is invalid.\n\n|cFFFFFF00-|r Healthstone now is considered a cooldown.\n\n|cFFFFFF00-|r Few improvements on Default Skin, Minimalistic Skin and ElvUI Frame Style Skin.\n\n|cFFFFFF00-|r Revamp on Image Editor, many bugs solves and now it is usable.\n\n|cFFFFFF00-|r 'Hide' slash command now hides all opened windows; 'Show', open all closed windows and 'New' create a new window.\n\n|cFFFFFF00-|r Added Devotion Aura, Rallying Cry as cooldowns.\n\n|cFFFFFF00-|r Added options for lock, unlock, break snap, close, reopen and create new window.\n\n|cFFFFFF00-|r Added a options panel for HotCorners, access it through options button or slash hotcorner command.\n\n|cFFFFFF00-|r Added 'Logos' and 'Raid & Dungeons' sections for Wallpapers. \n\n|cFFFFFF00-|r Added a option to load a image from the computer to use as wallpaper.\n\n|cFFFFFF00-|r Fixed the percent issue with Healing Done and HPS while in combat.\n\n|cFFFFFF00-|r Fixed non-combat switch by role where changing role wasnt changing the shown attribute.\n\n|cFFFFFF00-|r Fixed 'While in Combat' hiding schema |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00-|r Fixed several bugs on Interact Auto Transparency.\n\n|cFFFFFF00-|r Fixed the report window alert when opening the report window and it already is opened |cFF999999(thanks @Rasstapp-mmochampion forum)|r.\n\n|cFFFFFF00-|r Fixed the gap between last row created and the end of the window.\n\n|cFFFFFF00-|r Fixed all tooltips bugs on Wallpaper Section on Options Panel.\n\n|cFFFFFF00a1.17.0 (|cFFFFCC00Jun 21, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Support for Custom Displays has been rewrited, to access the new panel go to Sword Menu -> Custom -> Create New Display.\n\n|cFFFFFF00-|r Added a custom display for show potion usage.\n\n|cFFFFFF00-|r Fixed a bug where the player pet wasnt being tracked after logon in the game. This bug was affecting directly classes with pets playing out of a raid group." Loc ["STRING_DETAILS1"] = "|cffffaeaeDetails!:|r " --> startup @@ -202,6 +208,11 @@ do [_detalhes._detalhes_props["MODO_ALL"]] = Loc ["STRING_MODE_ALL"], [_detalhes._detalhes_props["MODO_RAID"]] = Loc ["STRING_MODE_RAID"] } + + --[[global]] DETAILS_MODE_SOLO = 1 + --[[global]] DETAILS_MODE_RAID = 4 + --[[global]] DETAILS_MODE_GROUP = 2 + --[[global]] DETAILS_MODE_ALL = 3 _detalhes.icones = { --> report window diff --git a/classes/classe_instancia.lua b/classes/classe_instancia.lua index b8e295df..90f5ed53 100644 --- a/classes/classe_instancia.lua +++ b/classes/classe_instancia.lua @@ -220,6 +220,14 @@ function _detalhes:GetDisplay() return self.atributo, self.sub_atributo end +function _detalhes:GetMaxInstancesAmount() + return _detalhes.instances_amount +end + +function _detalhes:GetFreeInstancesAmount() + return _detalhes.instances_amount - #_detalhes.tabela_instancias +end + ------------------------------------------------------------------------------------------------------------------------ --> retorna se a instância esta ou não ativa @@ -255,7 +263,8 @@ end self.verticalSnap = config.verticalSnap self.sub_atributo_last = config.sub_atributo_last self.isLocked = config.isLocked - + self.last_raid_plugin = config.last_raid_plugin + end end @@ -367,8 +376,8 @@ end self.baseframe.lock_button:SetWidth (self.baseframe.lock_button.label:GetStringWidth()+2) self.baseframe.lock_button:ClearAllPoints() self.baseframe.lock_button:SetPoint ("bottomright", self.baseframe, "bottomright", -3, 0) - self.baseframe.resize_direita:SetAlpha (1) - self.baseframe.resize_esquerda:SetAlpha (1) + self.baseframe.resize_direita:SetAlpha (0) + self.baseframe.resize_esquerda:SetAlpha (0) end end end @@ -468,14 +477,6 @@ end return false end - --> check is is open - --if (instance:IsEnabled()) then - -- instance:ShutDown() - --end - - -- deletei a janela 1 - -- a janela 2 ficou com snap [1] = 1 [3] = 3 - --> break snaps of previous and next window local left_instance = _detalhes:GetInstance (id-1) if (left_instance) then @@ -511,84 +512,6 @@ end table.remove (_detalhes.tabela_instancias, id) - if (true) then - return - end - - table.remove (_detalhes.local_instances_config, id) - _detalhes:SaveProfile() - _detalhes:SaveLocalInstanceConfig() - table.insert (_detalhes.tabela_instancias, 3, instance) - _detalhes:ApplyProfile (_detalhes:GetCurrentProfileName(), true) - - if (true) then - return - end - - --> break snaps of previous and next window - local left_instance = _detalhes:GetInstance (id-1) - if (left_instance) then - for index, instance_id in _pairs (left_instance.snap) do - if (index == id) then --snap na proxima instancia - left_instance.snap [index] = nil - end - end - end - local right_instance = _detalhes:GetInstance (id+1) - if (right_instance) then - for index, instance_id in _pairs (right_instance.snap) do - if (index == id) then --snap na proxima instancia - right_instance.snap [index] = nil - end - end - end - - --> copy skins from next instances - for i = id+1, #_detalhes.tabela_instancias do - local current_instance = _detalhes:GetInstance (i-1) - local next_instance = _detalhes:GetInstance (i) - - if (next_instance) then - local exported = next_instance:ExportSkin() - - end - end - - --fixas os snaps nas janelas superiores - for i = id+1, #_detalhes.tabela_instancias do - local this_instance = _detalhes:GetInstance (i) - - --down the id - this_instance.meu_id = i-1 - - --fix the snaps - for index, id in _pairs (this_instance.snap) do - if (id == i+1) then --snap na proxima instancia - this_instance.snap [index] = i - elseif (id == i-1) then --snap na instancia anterior - this_instance.snap [index] = i-2 - end - end - end - - - - - - --remover do container tabela_instancias - - -- fiz alterações das outras instancias, precisa salvar agora? // ele salva ao sair ou mudar o profile - -- remover a instancia do container deste profile - - --local profile = _detalhes:GetProfile (current_profile_name) - --local saved_skins = profile.instances - --tremove (saved_skins, id) - - --tremove (_detalhes.tabela_instancias, id) - - --> save the current profile - _detalhes:SaveProfile() - end @@ -619,6 +542,18 @@ end end local new_instance = _detalhes:NovaInstancia (next_id) + + if (_detalhes.standard_skin) then + for key, value in pairs (_detalhes.standard_skin) do + if (type (value) == "table") then + new_instance [key] = table_deepcopy (value) + else + new_instance [key] = value + end + end + new_instance:ChangeSkin() + end + return new_instance elseif (id) then @@ -1795,6 +1730,13 @@ function _detalhes:AtualizaSegmentos_AfterCombat (instancia, historico) end +function _detalhes:SetDisplay (segmento, atributo, sub_atributo, iniciando_instancia, InstanceMode) + if (not self.meu_id) then + return + end + return self:TrocaTabela (segmento, atributo, sub_atributo, iniciando_instancia, InstanceMode) +end + 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 @@ -2334,6 +2276,10 @@ function _detalhes:ChangeIcon (icon) end end +function _detalhes:SetMode (qual) + return self:AlteraModo (qual) +end + function _detalhes:AlteraModo (instancia, qual, from_mode_menu) if (_type (instancia) == "number") then @@ -2797,7 +2743,7 @@ function _detalhes:envia_relatorio (linhas, custom) local segmento = self.segmento local luta = nil - + if (not custom) then if (segmento == -1) then --overall luta = Loc ["STRING_REPORT_LAST"] .. " " .. #_detalhes.tabela_historico.tabelas .. " " .. Loc ["STRING_REPORT_FIGHTS"] diff --git a/classes/classe_instancia_include.lua b/classes/classe_instancia_include.lua index df9876e6..d0f2dc7d 100644 --- a/classes/classe_instancia_include.lua +++ b/classes/classe_instancia_include.lua @@ -2,7 +2,7 @@ local _detalhes = _G._detalhes local SharedMedia = LibStub:GetLibrary("LibSharedMedia-3.0") -function _detalhes:ResetInstanceConfig() +function _detalhes:ResetInstanceConfig (maintainsnap) for key, value in pairs (_detalhes.instance_defaults) do if (type (value) == "table") then self [key] = table_deepcopy (value) @@ -10,10 +10,12 @@ function _detalhes:ResetInstanceConfig() self [key] = value end end - self.snap = {} - self.horizontalSnap = nil - self.verticalSnap = nil - self:LockInstance (false) + if (not maintainsnap) then + self.snap = {} + self.horizontalSnap = nil + self.verticalSnap = nil + self:LockInstance (false) + end end function _detalhes:LoadInstanceConfig() diff --git a/classes/classe_others.lua b/classes/classe_others.lua index 34550388..ef1355ae 100644 --- a/classes/classe_others.lua +++ b/classes/classe_others.lua @@ -300,9 +300,14 @@ function atributo_misc:ReportSingleDeadLine (morte, instancia) if (evento [1] and type (evento [1]) == "boolean") then --> damage if (evento [3]) then local elapsed = _cstr ("%.1f", evento [4] - time_of_death) .."s" - local spelllink = GetSpellLink (evento [2]) - local source = _detalhes:GetOnlyName (evento [6]) local spellname, _, spellicon = _GetSpellInfo (evento [2]) + local spelllink + if (evento [2] > 10) then + spelllink = GetSpellLink (evento [2]) + else + spelllink = spellname + end + local source = _detalhes:GetOnlyName (evento [6]) local amount = evento [3] local hp = _math_floor (evento [5] / max_health * 100) if (hp > 100) then @@ -331,36 +336,16 @@ function atributo_misc:ReportSingleDeadLine (morte, instancia) end end - -- ELAPSED | HP | LINK | SOURCE - local bigger_len = 0 - for index, table in _ipairs (report_array) do - local spell = table [2] --[[ - _detalhes.fontstring_len:SetText (spell) - local stringlen = _detalhes.fontstring_len:GetStringWidth() - while (stringlen < default_len) do - spell = spell .. " " - _detalhes.fontstring_len:SetText (spell) - stringlen = _detalhes.fontstring_len:GetStringWidth() - end - table [2] = spell--]] - reportar [#reportar+1] = table [1] .. table [4] .. spell .. table [3] + for index = #report_array, 1, -1 do + local table = report_array [index] + reportar [#reportar+1] = table [1] .. table [4] .. table [2] .. table [3] end - return _detalhes:Reportar (reportar, {_no_current = true, _no_inverse = true, _custom = true}) + --for index, table in _ipairs (report_array) do + -- reportar [#reportar+1] = table [1] .. table [4] .. table [2] .. table [3] + --end - --[[ - local barra = instancia.barras [morte.minha_barra] - local reportar = {"Details! " .. Loc ["STRING_REPORT_SINGLE_DEATH"] .. " " .. morte [3] .. " " .. barra.texto_esquerdo:GetText()} --> localize-me - for i = 1, GameCooltip:GetNumLines() do - local texto_left, texto_right = GameCooltip:GetText (i) - - if (texto_left and texto_right) then - texto_left = texto_left:gsub (("|T(.*)|t "), "") - reportar [#reportar+1] = ""..texto_left.." "..texto_right.."" - end - end return _detalhes:Reportar (reportar, {_no_current = true, _no_inverse = true, _custom = true}) - --]] end function atributo_misc:ReportSingleCooldownLine (misc_actor, instancia) diff --git a/core/plugins.lua b/core/plugins.lua index eafa85e4..d4ea9045 100644 --- a/core/plugins.lua +++ b/core/plugins.lua @@ -141,6 +141,10 @@ _detalhes.PluginCount.STATUSBAR = _detalhes.PluginCount.STATUSBAR + 1 end + if (saved_table) then + PluginObject.db = saved_table + end + if (PluginObject.__enabled) then return true, saved_table, true else diff --git a/core/plugins_solo.lua b/core/plugins_solo.lua index 542a1d91..39765809 100644 --- a/core/plugins_solo.lua +++ b/core/plugins_solo.lua @@ -165,8 +165,16 @@ return end - --> jump to the next - if (_switchTo == -1) then + --> if passed the absolute plugin name + if (type (_switchTo) == "string") then + for index, ptable in ipairs (_detalhes.SoloTables.Menu) do + if (ptable [3].__enabled and ptable [4] == _switchTo) then + _switchTo = index + break + end + end + + elseif (_switchTo == -1) then _switchTo = _detalhes.SoloTables.Mode + 1 if (_switchTo > #_detalhes.SoloTables.Plugins) then _switchTo = 1 diff --git a/core/timemachine.lua b/core/timemachine.lua index 122cc955..a28f154c 100644 --- a/core/timemachine.lua +++ b/core/timemachine.lua @@ -38,7 +38,7 @@ for nome, jogador in _ipairs (tabela) do if (jogador) then - local ultima_acao = jogador.last_event+3 + local ultima_acao = jogador.last_event+10 if (ultima_acao > _tempo) then --> okey o jogador esta dando dps if (jogador.on_hold) then --> o dps estava pausado, retornar a ativa diff --git a/framework/button.lua b/framework/button.lua index 84e6d1c9..b9c9b5d7 100644 --- a/framework/button.lua +++ b/framework/button.lua @@ -309,7 +309,10 @@ local ButtonMetaFunctions = {} end -- textcolor - function ButtonMetaFunctions:SetTextColor (color) + function ButtonMetaFunctions:SetTextColor (color, arg2, arg3, arg4) + if (arg2) then + return self.button.text:SetTextColor (color, arg2, arg3, arg4 or 1) + end local _value1, _value2, _value3, _value4 = gump:ParseColors (color) return self.button.text:SetTextColor (_value1, _value2, _value3, _value4) end @@ -397,7 +400,12 @@ local ButtonMetaFunctions = {} self.icon:SetTexCoord (0, 1, 0, 1) end if (overlay) then - self.icon:SetVertexColor (unpack (overlay)) + if (type (overlay) == "string") then + local r, g, b, a = gump:ParseColors (overlay) + self.icon:SetVertexColor (r, g, b, a) + else + self.icon:SetVertexColor (unpack (overlay)) + end else self.icon:SetVertexColor (1, 1, 1, 1) end @@ -471,31 +479,67 @@ local ButtonMetaFunctions = {} end --> custom textures - function ButtonMetaFunctions:InstallCustomTexture (texture, rect, coords) + function ButtonMetaFunctions:InstallCustomTexture (texture, rect, coords, use_split) self.button:SetNormalTexture (nil) self.button:SetPushedTexture (nil) self.button:SetDisabledTexture (nil) self.button:SetHighlightTexture (nil) + + local button = self.button - texture = texture or "Interface\\AddOns\\Details\\images\\default_button" - self.button.texture = self.button:CreateTexture (nil, "artwork") + if (use_split) then + + --> 4 corners + button.textureTopLeft = button:CreateTexture (nil, "artwork"); button.textureTopLeft:SetSize (8, 8); button.textureTopLeft:SetPoint ("topleft", button) + button.textureTopRight = button:CreateTexture (nil, "artwork"); button.textureTopRight:SetSize (8, 8); button.textureTopRight:SetPoint ("topright", button) + button.textureBottomLeft = button:CreateTexture (nil, "artwork"); button.textureBottomLeft:SetSize (8, 8); button.textureBottomLeft:SetPoint ("bottomleft", button) + button.textureBottomRight = button:CreateTexture (nil, "artwork"); button.textureBottomRight:SetSize (8, 8); button.textureBottomRight:SetPoint ("bottomright", button) + + button.textureLeft = button:CreateTexture (nil, "artwork"); button.textureLeft:SetWidth (4); button.textureLeft:SetPoint ("topleft", button.textureTopLeft, "bottomleft"); button.textureLeft:SetPoint ("bottomleft", button.textureBottomLeft, "topleft") + button.textureRight = button:CreateTexture (nil, "artwork"); button.textureRight:SetWidth (4); button.textureRight:SetPoint ("topright", button.textureTopRight, "bottomright"); button.textureRight:SetPoint ("bottomright", button.textureBottomRight, "topright") + button.textureTop = button:CreateTexture (nil, "artwork"); button.textureTop:SetHeight (4); button.textureTop:SetPoint ("topleft", button.textureTopLeft, "topright"); button.textureTop:SetPoint ("topright", button.textureTopRight, "topleft"); + button.textureBottom = button:CreateTexture (nil, "artwork"); button.textureBottom:SetHeight (4); button.textureBottom:SetPoint ("bottomleft", button.textureBottomLeft, "bottomright"); button.textureBottom:SetPoint ("bottomright", button.textureBottomRight, "bottomleft"); + + button.textureLeft:SetTexCoord (0, 4/128, 9/128, 24/128) + button.textureRight:SetTexCoord (124/128, 1, 9/128, 24/128) + button.textureTop:SetTexCoord (9/128, 120/128, 0, 4/128) + button.textureBottom:SetTexCoord (9/128, 119/128, 28/128, 32/128) + + button.textureTopLeft:SetTexCoord (0, 8/128, 0, 8/128) + button.textureTopRight:SetTexCoord (121/128, 1, 0, 8/128) + button.textureBottomLeft:SetTexCoord (0, 8/128, 24/128, 32/128) + button.textureBottomRight:SetTexCoord (120/128, 1, 24/128, 32/128) + + button.textureTopLeft:SetTexture ([[Interface\AddOns\Details\images\default_button]]) + button.textureTopRight:SetTexture ([[Interface\AddOns\Details\images\default_button]]) + button.textureBottomLeft:SetTexture ([[Interface\AddOns\Details\images\default_button]]) + button.textureBottomRight:SetTexture ([[Interface\AddOns\Details\images\default_button]]) + button.textureLeft:SetTexture ([[Interface\AddOns\Details\images\default_button]]) + button.textureRight:SetTexture ([[Interface\AddOns\Details\images\default_button]]) + button.textureTop:SetTexture ([[Interface\AddOns\Details\images\default_button]]) + button.textureBottom:SetTexture ([[Interface\AddOns\Details\images\default_button]]) - if (not rect) then - self.button.texture:SetAllPoints (self.button) else - self.button.texture:SetPoint ("topleft", self.button, "topleft", rect.x1, rect.y1) - self.button.texture:SetPoint ("bottomright", self.button, "bottomright", rect.x2, rect.y2) + texture = texture or "Interface\\AddOns\\Details\\images\\default_button" + self.button.texture = self.button:CreateTexture (nil, "artwork") + + if (not rect) then + self.button.texture:SetAllPoints (self.button) + else + self.button.texture:SetPoint ("topleft", self.button, "topleft", rect.x1, rect.y1) + self.button.texture:SetPoint ("bottomright", self.button, "bottomright", rect.x2, rect.y2) + end + + if (coords) then + self.button.texture.coords = coords + self.button.texture:SetTexCoord (_unpack (coords.Normal)) + else + self.button.texture:SetTexCoord (0, 1, 0, 0.24609375) + end + + self.button.texture:SetTexture (texture) end - - if (coords) then - self.button.texture.coords = coords - self.button.texture:SetTexCoord (_unpack (coords.Normal)) - else - self.button.texture:SetTexCoord (0, 1, 0, 0.24609375) - end - - self.button.texture:SetTexture (texture) end ------------------------------------------------------------------------------------------------------------ @@ -503,6 +547,18 @@ local ButtonMetaFunctions = {} local OnEnter = function (button) + if (button.textureTopLeft) then + button.textureLeft:SetTexCoord (0, 4/128, 40/128, 56/128) + button.textureRight:SetTexCoord (124/128, 1, 40/128, 56/128) + button.textureTop:SetTexCoord (9/128, 120/128, 33/128, 37/128) + button.textureBottom:SetTexCoord (9/128, 119/128, 60/128, 64/128) + + button.textureTopLeft:SetTexCoord (0, 8/128, 33/128, 40/128) + button.textureTopRight:SetTexCoord (121/128, 1, 33/128, 40/128) + button.textureBottomLeft:SetTexCoord (0, 8/128, 56/128, 64/128) + button.textureBottomRight:SetTexCoord (120/128, 1, 56/128, 64/128) + end + if (button.MyObject.OnEnterHook) then local interrupt = button.MyObject.OnEnterHook (button) if (interrupt) then @@ -511,7 +567,7 @@ local ButtonMetaFunctions = {} end button.MyObject.is_mouse_over = true - + if (button.texture) then if (button.texture.coords) then button.texture:SetTexCoord (_unpack (button.texture.coords.Highlight)) @@ -535,6 +591,19 @@ local ButtonMetaFunctions = {} end local OnLeave = function (button) + + if (button.textureLeft and not button.MyObject.is_mouse_down) then + button.textureLeft:SetTexCoord (0, 4/128, 9/128, 24/128) + button.textureRight:SetTexCoord (124/128, 1, 9/128, 24/128) + button.textureTop:SetTexCoord (9/128, 120/128, 0, 4/128) + button.textureBottom:SetTexCoord (9/128, 119/128, 28/128, 32/128) + + button.textureTopLeft:SetTexCoord (0, 8/128, 0, 8/128) + button.textureTopRight:SetTexCoord (121/128, 1, 0, 8/128) + button.textureBottomLeft:SetTexCoord (0, 8/128, 24/128, 32/128) + button.textureBottomRight:SetTexCoord (120/128, 1, 24/128, 32/128) + end + if (button.MyObject.OnLeaveHook) then local interrupt = button.MyObject.OnLeaveHook (button) if (interrupt) then @@ -551,7 +620,7 @@ local ButtonMetaFunctions = {} button.texture:SetTexCoord (0, 1, 0, 0.24609375) end end - + if (button.MyObject.have_tooltip) then if (GameCooltip:GetText (1) == button.MyObject.have_tooltip) then GameCooltip:Hide() @@ -589,6 +658,18 @@ local ButtonMetaFunctions = {} return end + if (button.textureTopLeft) then + button.textureLeft:SetTexCoord (0, 4/128, 72/128, 88/128) + button.textureRight:SetTexCoord (124/128, 1, 72/128, 88/128) + button.textureTop:SetTexCoord (9/128, 120/128, 65/128, 68/128) + button.textureBottom:SetTexCoord (9/128, 119/128, 92/128, 96/128) + + button.textureTopLeft:SetTexCoord (0, 8/128, 65/128, 71/128) + button.textureTopRight:SetTexCoord (121/128, 1, 65/128, 71/128) + button.textureBottomLeft:SetTexCoord (0, 8/128, 88/128, 96/128) + button.textureBottomRight:SetTexCoord (120/128, 1, 88/128, 96/128) + end + if (button.MyObject.OnMouseDownHook) then local interrupt = button.MyObject.OnMouseDownHook (button, buttontype) if (interrupt) then @@ -652,6 +733,30 @@ local ButtonMetaFunctions = {} return end + if (button.textureLeft) then + if (button.MyObject.is_mouse_over) then + button.textureLeft:SetTexCoord (0, 4/128, 40/128, 56/128) + button.textureRight:SetTexCoord (124/128, 1, 40/128, 56/128) + button.textureTop:SetTexCoord (9/128, 120/128, 33/128, 37/128) + button.textureBottom:SetTexCoord (9/128, 119/128, 60/128, 64/128) + + button.textureTopLeft:SetTexCoord (0, 8/128, 33/128, 40/128) + button.textureTopRight:SetTexCoord (121/128, 1, 33/128, 40/128) + button.textureBottomLeft:SetTexCoord (0, 8/128, 56/128, 64/128) + button.textureBottomRight:SetTexCoord (120/128, 1, 56/128, 64/128) + else + button.textureLeft:SetTexCoord (0, 4/128, 9/128, 24/128) + button.textureRight:SetTexCoord (124/128, 1, 9/128, 24/128) + button.textureTop:SetTexCoord (9/128, 120/128, 0, 4/128) + button.textureBottom:SetTexCoord (9/128, 119/128, 28/128, 32/128) + + button.textureTopLeft:SetTexCoord (0, 8/128, 0, 8/128) + button.textureTopRight:SetTexCoord (121/128, 1, 0, 8/128) + button.textureBottomLeft:SetTexCoord (0, 8/128, 24/128, 32/128) + button.textureBottomRight:SetTexCoord (120/128, 1, 24/128, 32/128) + end + end + if (button.MyObject.OnMouseUpHook) then local interrupt = button.MyObject.OnMouseUpHook (button, buttontype) if (interrupt) then @@ -660,7 +765,7 @@ local ButtonMetaFunctions = {} end button.MyObject.is_mouse_down = false - + if (button.texture) then if (button.texture.coords) then if (button.MyObject.is_mouse_over) then @@ -676,7 +781,7 @@ local ButtonMetaFunctions = {} end end end - + if (button.MyObject.capsule_textalign) then if (button.MyObject.icon) then button.MyObject.icon:SetPoint ("left", button, "left", 4, 0) diff --git a/framework/framework.lua b/framework/framework.lua index 9ad1f20e..40814dab 100644 --- a/framework/framework.lua +++ b/framework/framework.lua @@ -180,6 +180,26 @@ function gump:BuildMenu (parent, menu, x_offset, y_offset, height) slider:SetPoint ("left", label, "right", 2) label:SetPoint (cur_x, cur_y) + local size = label.widget:GetStringWidth() + 60 + 4 + if (size > max_x) then + max_x = size + end + + elseif (widget_table.type == "color" or widget_table.type == "color") then + local colorpick = self:NewColorPickButton (parent, "$parentWidget" .. index, nil, widget_table.set) + colorpick.tooltip = widget_table.desc + + local default_value, g, b, a = widget_table.get() + if (type (default_value) == "table") then + colorpick:SetColor (unpack (default_value)) + else + colorpick:SetColor (default_value, g, b, a) + end + + local label = self:NewLabel (parent, nil, "$parentLabel" .. index, nil, widget_table.name, "GameFontNormal", 12) + colorpick:SetPoint ("left", label, "right", 2) + label:SetPoint (cur_x, cur_y) + local size = label.widget:GetStringWidth() + 60 + 4 if (size > max_x) then max_x = size @@ -194,4 +214,69 @@ function gump:BuildMenu (parent, menu, x_offset, y_offset, height) end +end + +function gump:ShowTutorialAlertFrame (maintext, desctext, clickfunc) + + local TutorialAlertFrame = _G.DetailsTutorialAlertFrame + + if (not TutorialAlertFrame) then + + TutorialAlertFrame = CreateFrame ("ScrollFrame", "DetailsTutorialAlertFrame", UIParent, "WatchFrameAutoQuestPopUpTemplate") + TutorialAlertFrame.isFirst = true + TutorialAlertFrame:SetPoint ("left", UIParent, "left", -20, 100) + + TutorialAlertFrame:SetWidth (290) + TutorialAlertFrame.ScrollChild:SetWidth (256) + + local scrollname = TutorialAlertFrame.ScrollChild:GetName() + _G [scrollname .. "BorderTopLeft"]:SetVertexColor (1, 0.8, 0, 1) + _G [scrollname .. "BorderTopRight"]:SetVertexColor (1, 0.8, 0, 1) + _G [scrollname .. "BorderBotLeft"]:SetVertexColor (1, 0.8, 0, 1) + _G [scrollname .. "BorderBotRight"]:SetVertexColor (1, 0.8, 0, 1) + _G [scrollname .. "BorderLeft"]:SetVertexColor (1, 0.8, 0, 1) + _G [scrollname .. "BorderRight"]:SetVertexColor (1, 0.8, 0, 1) + _G [scrollname .. "BorderBottom"]:SetVertexColor (1, 0.8, 0, 1) + _G [scrollname .. "BorderTop"]:SetVertexColor (1, 0.8, 0, 1) + + local iconbg = _G [scrollname .. "QuestIconBg"] + iconbg:SetTexture ([[Interface\MainMenuBar\UI-MainMenuBar-EndCap-Human]]) + iconbg:SetTexCoord (0, 1, 0, 1) + iconbg:SetSize (100, 100) + iconbg:ClearAllPoints() + iconbg:SetPoint ("bottomleft", TutorialAlertFrame.ScrollChild, "bottomleft") + + _G [scrollname .. "Exclamation"]:SetVertexColor (1, 0.8, 0, 1) + _G [scrollname .. "QuestionMark"]:SetVertexColor (1, 0.8, 0, 1) + + _G [scrollname .. "TopText"]:SetText ("Details!") --string + _G [scrollname .. "QuestName"]:SetText ("") --string + _G [scrollname .. "BottomText"]:SetText ("") --string + + TutorialAlertFrame.ScrollChild.IconShine:SetTexture ([[Interface\MainMenuBar\UI-MainMenuBar-EndCap-Human]]) + + TutorialAlertFrame:SetScript ("OnMouseUp", function (self) + if (self.clickfunc and type (self.clickfunc) == "function") then + self.clickfunc() + end + self:Hide() + end) + TutorialAlertFrame:Hide() + end + + if (type (maintext) == "string") then + TutorialAlertFrame.ScrollChild.QuestName:SetText (maintext) + else + TutorialAlertFrame.ScrollChild.QuestName:SetText ("") + end + + if (type (desctext) == "string") then + TutorialAlertFrame.ScrollChild.BottomText:SetText (desctext) + else + TutorialAlertFrame.ScrollChild.BottomText:SetText ("") + end + + TutorialAlertFrame.clickfunc = clickfunc + TutorialAlertFrame:Show() + WatchFrame_SlideInFrame (TutorialAlertFrame, "AUTOQUEST") end \ No newline at end of file diff --git a/framework/label.lua b/framework/label.lua index 4f9dc161..f1ac9ec2 100644 --- a/framework/label.lua +++ b/framework/label.lua @@ -195,6 +195,15 @@ local LabelMetaFunctions = {} function LabelMetaFunctions:Hide() return self.label:Hide() end + +-- textcolor + function LabelMetaFunctions:SetTextColor (color, arg2, arg3, arg4) + if (arg2) then + return self.label:SetTextColor (color, arg2, arg3, arg4 or 1) + end + local _value1, _value2, _value3, _value4 = gump:ParseColors (color) + return self.label:SetTextColor (_value1, _value2, _value3, _value4) + end -- setpoint function LabelMetaFunctions:SetPoint (v1, v2, v3, v4, v5) diff --git a/functions/profiles.lua b/functions/profiles.lua index 070ea8d2..6a1146ac 100644 --- a/functions/profiles.lua +++ b/functions/profiles.lua @@ -147,14 +147,42 @@ function _detalhes:ResetProfile (profile_name) return false end - --> reset + --> reset all already created instances + for index, instance in _detalhes:ListInstances() do + if (not instance.baseframe) then + instance:AtivarInstancia() + end + instance.skin = "" + instance:ChangeSkin ("Minimalistic") + end + + for index, instance in pairs (_detalhes.unused_instances) do + if (not instance.baseframe) then + instance:AtivarInstancia() + end + instance.skin = "" + instance:ChangeSkin ("Minimalistic") + end - profile.instances = {} - local profile = table_deepcopy (_detalhes.default_profile) - profile.instances = instances + --> reset the profile + table.wipe (profile.instances) + + --> export first instance + local instance = _detalhes:GetInstance (1) + local exported = instance:ExportSkin() + exported.__was_opened = instance:IsEnabled() + exported.__pos = table_deepcopy (instance:GetPosition()) + exported.__locked = instance.isLocked + exported.__snap = {} + exported.__snapH = false + exported.__snapV = false + profile.instances [1] = exported + instance.horizontalSnap = false + instance.verticalSnap = false + instance.snap = {} _detalhes:ApplyProfile (profile_name, true) - + --> end return true end @@ -302,7 +330,6 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) --> load data saved for this character only instance:LoadLocalInstanceConfig() - if (skin.__was_opened) then instance:AtivarInstancia() else @@ -311,7 +338,6 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) --> load data saved again instance:LoadLocalInstanceConfig() - --> check window positioning if (_detalhes.profile_save_pos) then if (skin.__pos) then @@ -335,7 +361,7 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) instance.posicao.normal = {x = 1, y = 1, w = 300, h = 200} end end - + --> open the instance if (instance:IsEnabled()) then if (not instance.baseframe) then @@ -351,6 +377,7 @@ function _detalhes:ApplyProfile (profile_name, nosave, is_copy) end instances_loaded = instances_loaded + 1 + end --> move unused instances for unused container @@ -675,6 +702,7 @@ local default_profile = { max_window_size = {width = 480, height = 450}, new_window_size = {width = 300, height = 95}, window_clamp = {-8, 0, 21, -14}, + disable_window_groups = false, --> segments segments_amount = 12, @@ -833,7 +861,17 @@ local default_global_data = { _detalhes.default_global_data = default_global_data - +function _detalhes:GetTutorialCVar (key, default) + local value = _detalhes.tutorial [key] + if (value == nil and default) then + _detalhes.tutorial [key] = default + value = default + end + return value +end +function _detalhes:SetTutorialCVar (key, value) + _detalhes.tutorial [key] = value +end function _detalhes:SaveProfileSpecial() diff --git a/functions/savedata.lua b/functions/savedata.lua index c24a9726..b9edebc1 100644 --- a/functions/savedata.lua +++ b/functions/savedata.lua @@ -32,7 +32,8 @@ function _detalhes:SaveLocalInstanceConfig() horizontalSnap = instance.horizontalSnap, verticalSnap = instance.verticalSnap, sub_atributo_last = instance.sub_atributo_last, - isLocked = instance.isLocked + isLocked = instance.isLocked, + last_raid_plugin = instance.last_raid_plugin } if (_detalhes.local_instances_config [index].isLocked == nil) then diff --git a/gumps/janela_info.lua b/gumps/janela_info.lua index 59cd0d77..4b8af0ba 100644 --- a/gumps/janela_info.lua +++ b/gumps/janela_info.lua @@ -3104,10 +3104,19 @@ function _detalhes.janela_info:monta_relatorio (botao) local report_lines if (botao == 1) then --> botão da esquerda - report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_REPORTTO"] .. " " .. _detalhes.sub_atributos [atributo].lista [sub_atributo] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] .. " " .. player.nome} + report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_SPELLSOF"] .. " " .. player.nome .. " (" .. _detalhes.sub_atributos [atributo].lista [sub_atributo] .. ")"} for index, barra in _ipairs (info.barras1) do if (barra:IsShown()) then - report_lines [#report_lines+1] = barra.texto_esquerdo:GetText().." -> ".. _detalhes:comma_value (barra.texto_direita:GetText()) + local spellid = barra.show + if (spellid > 10) then + local link = GetSpellLink (spellid) + report_lines [#report_lines+1] = index .. ". " .. link .. ": " .. barra.texto_direita:GetText() + else + local spellname = barra.texto_esquerdo:GetText():gsub ((".*%."), "") + spellname = spellname:gsub ("|c%x%x%x%x%x%x%x%x", "") + spellname = spellname:gsub ("|r", "") + report_lines [#report_lines+1] = index .. ". " .. spellname .. ": " .. barra.texto_direita:GetText() + end end if (index == amt) then break diff --git a/gumps/janela_options.lua b/gumps/janela_options.lua index edb17285..43e48164 100644 --- a/gumps/janela_options.lua +++ b/gumps/janela_options.lua @@ -39,6 +39,11 @@ local slider_backdrop = {edgeFile = "Interface\\Buttons\\UI-SliderBar-Border", e bgFile = [[Interface\ACHIEVEMENTFRAME\UI-GuildAchievement-Parchment-Horizontal-Desaturated]], tile = true, tileSize = 130, insets = {left = 1, right = 1, top = 5, bottom = 5}} local slider_backdrop_color = {1, 1, 1, 1} +local button_color_rgb = {1, 0.93, 0.74} + +local font_select_icon, font_select_texcoord = [[Interface\AddOns\Details\images\icons]], {472/512, 513/512, 186/512, 230/512} +local texture_select_icon, texture_select_texcoord = [[Interface\AddOns\Details\images\icons]], {472/512, 513/512, 186/512, 230/512} + local dropdown_backdrop = {edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", edgeSize = 10, bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", tile = true, tileSize = 16, insets = {left = 1, right = 1, top = 0, bottom = 1}} local dropdown_backdrop_onenter = {0, 0, 0, 1} @@ -1045,10 +1050,13 @@ function window:CreateFrame20() _detalhes.tooltip.fontface = fontName end + --local icon, texcoord = [[Interface\AddOns\Details\images\icons]], {479/512, 506/512, 186/512, 221/512} + local build_tooltip_menu = function() local fonts = {} for name, fontPath in pairs (SharedMedia:HashTable ("font")) do - fonts [#fonts+1] = {value = name, 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."} + + 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 table.sort (fonts, function (t1, t2) return t1.label < t2.label end) return fonts @@ -1177,9 +1185,12 @@ function window:CreateFrame20() local unlock_function = function() DetailsTooltipAnchor:MoveAnchor() end - local unlock_anchor_button = g:NewButton (frame20, nil, "$parentUnlockAnchorButton", "UnlockAnchorButton", 160, 20, unlock_function, nil, nil, nil, Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_TO_CHOOSE"]) + local unlock_anchor_button = g:NewButton (frame20, nil, "$parentUnlockAnchorButton", "UnlockAnchorButton", 160, 20, unlock_function, nil, nil, nil, Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_TO_CHOOSE"], 1) unlock_anchor_button:InstallCustomTexture() - + frame20.UnlockAnchorButton:SetTextColor (button_color_rgb) + + frame20.UnlockAnchorButton:SetIcon ([[Interface\COMMON\UI-ModelControlPanel]], nil, nil, nil, {20/64, 34/64, 38/128, 52/128}, nil, 4) + if (_detalhes.tooltip.anchored_to == 1) then unlock_anchor_button:Disable() else @@ -1187,7 +1198,7 @@ function window:CreateFrame20() end frame20.UnlockAnchorButton:SetPoint ("left", frame20.UnlockAnchorButtonLabel, "right", 0, 0) - window:CreateLineBackground2 (frame20, "UnlockAnchorButton", "UnlockAnchorButtonLabel", Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_TO_CHOOSE_DESC"]) + window:CreateLineBackground2 (frame20, "UnlockAnchorButton", "UnlockAnchorButton", Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_TO_CHOOSE_DESC"], nil, {1, 0.8, 0}, button_color_rgb) --main anchor g:NewLabel (frame20, _, "$parentTooltipAnchorLabel", "TooltipAnchorLabel", Loc ["STRING_OPTIONS_TOOLTIPS_ANCHOR_TO"], "GameFontHighlightLeft") @@ -1817,12 +1828,12 @@ function window:CreateFrame18() instance:InstanceReset() end local totalbar_pickicon = function() - g:IconPick (totalbar_pickicon_callback) + g:IconPick (totalbar_pickicon_callback, true) end g:NewLabel (frame18, _, "$parentTotalBarIconLabel", "totalBarIconLabel", Loc ["STRING_OPTIONS_SHOW_TOTALBAR_ICON"], "GameFontHighlightLeft") g:NewImage (frame18, nil, 20, 20, nil, nil, "totalBarIconTexture", "$parentTotalBarIconTexture") g:NewButton (frame18, _, "$parentTotalBarIconButton", "totalBarIconButton", 20, 20, totalbar_pickicon) - frame18.totalBarIconButton:InstallCustomTexture() + frame18.totalBarIconButton:InstallCustomTexture (nil, nil, nil, true) frame18.totalBarIconButton:SetPoint ("left", frame18.totalBarIconLabel, "right", 2, 0) frame18.totalBarIconTexture:SetPoint ("left", frame18.totalBarIconLabel, "right", 2, 0) @@ -1925,6 +1936,17 @@ function window:CreateFrame18() end) window:CreateLineBackground2 (frame18, "MenuTextSizeSlider", "MenuTextSizeLabel", Loc ["STRING_OPTIONS_MENU_FONT_SIZE_DESC"]) + + --> disable groups + g:NewLabel (frame18, _, "$parentDisableGroupsLabel", "DisableGroupsLabel", Loc ["STRING_OPTIONS_DISABLE_GROUPS"], "GameFontHighlightLeft") + g:NewSwitch (frame18, _, "$parentDisableGroupsSlider", "DisableGroupsSlider", 60, 20, _, _, _detalhes.disable_window_groups) + + frame18.DisableGroupsSlider:SetPoint ("left", frame18.DisableGroupsLabel, "right", 2) + frame18.DisableGroupsSlider.OnSwitch = function (_, _, value) + _detalhes.disable_window_groups = value + end + + window:CreateLineBackground2 (frame18, "DisableGroupsSlider", "DisableGroupsLabel", Loc ["STRING_OPTIONS_DISABLE_GROUPS_DESC"]) --> Report g:NewLabel (frame18, _, "$parentReportHelpfulLinkLabel", "ReportHelpfulLinkLabel", Loc ["STRING_OPTIONS_REPORT_HEALLINKS"], "GameFontHighlightLeft") @@ -1973,14 +1995,13 @@ function window:CreateFrame18() local right_side = { {"instancesMiscLabel", 1, true}, {"deleteInstanceLabel", 2}, - - {"totalBarAnchorLabel", 4, true}, - {"totalBarIconLabel", 5}, - {"totalBarPickColorLabel", 6}, - {"totalBarLabel", 7}, - {"totalBarOnlyInGroupLabel", 8}, - - {"MenuTextSizeLabel", 3} + {"MenuTextSizeLabel", 3}, + {"DisableGroupsLabel", 4}, + {"totalBarAnchorLabel", 5, true}, + {"totalBarIconLabel", 6}, + {"totalBarPickColorLabel", 7}, + {"totalBarLabel", 8}, + {"totalBarOnlyInGroupLabel", 9}, } window:arrange_menu (frame18, right_side, window.right_start_at, -90) @@ -2410,6 +2431,8 @@ function window:CreateFrame16() addbutton:InstallCustomTexture() addbutton:SetPoint ("bottomright", panel, "topright", -30, 0) addbutton:SetIcon ([[Interface\PaperDollInfoFrame\Character-Plus]], 12, 12, nil, nil, nil, 4) + window:CreateLineBackground2 (frame16, "addbutton", "addbutton", nil, nil, {1, 0.8, 0}, button_color_rgb) + addbutton:SetTextColor (button_color_rgb) local left = g:NewImage (frame16, "Interface\\PaperDollInfoFrame\\PaperDollSidebarTabs", 64, 13, "artwork", {0, 1, 0, 0.05078125}) left:SetPoint ("bottomright", addbutton, "bottomleft", 34, 0) @@ -2500,6 +2523,8 @@ function window:CreateFrame16() importbutton:InstallCustomTexture() importbutton:SetPoint ("right", addbutton, "left", -4, 0) importbutton:SetIcon ([[Interface\Buttons\UI-GuildButton-PublicNote-Up]], 14, 14, nil, nil, nil, 4) + window:CreateLineBackground2 (frame16, "importbutton", "importbutton", nil, nil, {1, 0.8, 0}, button_color_rgb) + importbutton:SetTextColor (button_color_rgb) local left = g:NewImage (frame16, "Interface\\PaperDollInfoFrame\\PaperDollSidebarTabs", 64, 13, "artwork", {0, 1, 0, 0.05078125}) left:SetPoint ("bottomright", importbutton, "bottomleft", 34, 0) @@ -2553,6 +2578,7 @@ function window:CreateFrame16() addframe:Hide(); end + local addcapturebutton = g:NewButton (addframe, nil, "$parentAddCaptureButton", "addCapturebutton", 100, 21, addcapture, nil, nil, nil, Loc ["STRING_OPTIONS_CHART_ADD2"]) addcapturebutton:InstallCustomTexture() @@ -2567,6 +2593,12 @@ function window:CreateFrame16() addcapturebutton:SetIcon ([[Interface\Buttons\UI-CheckBox-Check]], 18, 18, nil, nil, nil, 4) closebutton:SetIcon ([[Interface\PetBattles\DeadPetIcon]], 14, 14, nil, nil, nil, 4) + window:CreateLineBackground2 (addframe.widget, closebutton, closebutton, nil, nil, {1, 0.8, 0}, button_color_rgb) + closebutton:SetTextColor (button_color_rgb) + + window:CreateLineBackground2 (addframe.widget, addcapturebutton, addcapturebutton, nil, nil, {1, 0.8, 0}, button_color_rgb) + addcapturebutton:SetTextColor (button_color_rgb) + addcapturebutton:SetPoint ("bottomright", addframe, "bottomright", -5, 5) closebutton:SetPoint ("right", addcapturebutton, "left", -4, 0) @@ -2731,6 +2763,8 @@ function window:CreateFrame15() --> close button local closebutton = g:NewButton (addframe, nil, "$parentAddCloseButton", "addClosebutton", 100, 21, function() addframe:Hide(); table.wipe (all_cached_spells) end, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_CLOSE"]) closebutton:InstallCustomTexture() + local bg = window:CreateLineBackground2 (addframe.widget, closebutton, closebutton, nil, nil, {1, 0.8, 0}, button_color_rgb) + closebutton:SetTextColor (button_color_rgb) --> confirm add spell local addspell = function() @@ -2765,6 +2799,9 @@ function window:CreateFrame15() end local addspellbutton = g:NewButton (addframe, nil, "$parentAddSpellButton", "addSpellbutton", 100, 21, addspell, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_ADD"]) addspellbutton:InstallCustomTexture() + local bg2 = window:CreateLineBackground2 (addframe.widget, addspellbutton, addspellbutton, nil, nil, {1, 0.8, 0}, button_color_rgb) + addspellbutton:SetTextColor (button_color_rgb) + bg:SetFrameLevel (bg2:GetFrameLevel()-1) addspellbutton:SetIcon ([[Interface\Buttons\UI-CheckBox-Check]], 18, 18, nil, nil, nil, 4) closebutton:SetIcon ([[Interface\PetBattles\DeadPetIcon]], 14, 14, nil, nil, nil, 4) @@ -2802,6 +2839,10 @@ function window:CreateFrame15() end local addbutton = g:NewButton (frame15, nil, "$parentAddButton", "addbutton", 100, 21, add, nil, nil, nil, Loc ["STRING_OPTIONS_SPELL_ADDSPELL"]) addbutton:InstallCustomTexture() + + window:CreateLineBackground2 (frame15, "addbutton", "addbutton", nil, nil, {1, 0.8, 0}, button_color_rgb) + addbutton:SetTextColor (button_color_rgb) + addbutton:SetPoint ("bottomright", panel, "topright", -30, 0) addbutton:SetIcon ([[Interface\PaperDollInfoFrame\Character-Plus]], 12, 12, nil, nil, nil, 4) @@ -2876,11 +2917,11 @@ function window:CreateFrame14() local on_select_attribute_font = function (self, instance, fontName) instance:AttributeMenu (nil, nil, nil, fontName) end - + local build_font_menu = function() local fonts = {} for name, fontPath in pairs (SharedMedia:HashTable ("font")) do - fonts [#fonts+1] = {value = name, label = name, 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."} + 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) return fonts @@ -3027,15 +3068,55 @@ function window:CreateFrame1() _G.AvatarPickFrame:Show() end - g:NewButton (frame1, _, "$parentAvatarFrame", "chooseAvatarButton", frame1.nicknameLabel:GetStringWidth() + SLIDER_WIDTH + 2, 18, openAtavarPickFrame, nil, nil, nil, Loc ["STRING_OPTIONS_AVATAR"]) - frame1.chooseAvatarButton:InstallCustomTexture() - - window:CreateLineBackground2 (frame1, "chooseAvatarButton", "chooseAvatarButton", Loc ["STRING_OPTIONS_AVATAR_DESC"]) + --g:NewButton (frame1, _, "$parentAvatarFrame", "chooseAvatarButton", frame1.nicknameLabel:GetStringWidth() + SLIDER_WIDTH + 2, 18, openAtavarPickFrame, nil, nil, nil, Loc ["STRING_OPTIONS_AVATAR"], 1) + g:NewButton (frame1, _, "$parentAvatarFrame", "chooseAvatarButton", 275, 85, openAtavarPickFrame, nil, nil, nil, "", 1) -- + frame1.chooseAvatarButton:InstallCustomTexture (nil, nil, nil, true) + frame1.chooseAvatarButton:SetTextColor (button_color_rgb) + --frame1.chooseAvatarButton:SetIcon ([[Interface\Buttons\UI-Panel-MinimizeButton-Up]], nil, nil, nil, {0.143125, 0.8653125, 0.1446875, 0.8653125}) + g:NewLabel (frame1, _, "$parentChooseAvatarLabel", "ChooseAvatarLabel", Loc ["STRING_OPTIONS_AVATAR"], "GameFontHighlightLeft") + frame1.ChooseAvatarLabel:SetPoint ("topright", frame1.chooseAvatarButton, "topright", -10, -10) + frame1.ChooseAvatarLabel:SetTextColor (button_color_rgb) + --> avatar preview g:NewImage (frame1, nil, 128, 64, nil, nil, "avatarPreview", "$parentAvatarPreviewTexture") g:NewImage (frame1, nil, 275, 60, nil, nil, "avatarPreview2", "$parentAvatarPreviewTexture2") - g:NewLabel (frame1, _, "$parentAvatarNicknameLabel", "avatarNickname", UnitName ("player"), "GameFontHighlightSmall") + g:NewLabel (frame1, _, "$parentAvatarNicknameLabel", "avatarNickname", UnitName ("player"), "GameFontHighlightSmall") + + --> avatar button + frame1.chooseAvatarButton:SetHook ("OnEnter", function() + frame1.ChooseAvatarLabel:SetTextColor (1, 1, 1) + + _detalhes:CooltipPreset (2) + GameCooltip:AddLine (Loc ["STRING_OPTIONS_AVATAR_DESC"]) + GameCooltip:ShowCooltip (frame1.chooseAvatarButton.widget, "tooltip") + --frame1.avatarPreview:SetBlendMode ("ADD") + frame1.avatarPreview2:SetBlendMode ("ADD") + return true + end) + frame1.chooseAvatarButton:SetHook ("OnLeave", function() + frame1.ChooseAvatarLabel:SetTextColor (button_color_rgb) + GameCooltip:Hide() + --frame1.avatarPreview:SetBlendMode ("BLEND") + frame1.avatarPreview2:SetBlendMode ("BLEND") + return true + end) + frame1.chooseAvatarButton:SetHook ("OnMouseDown", function() + local avatar_x_anchor = window.right_start_at + frame1.avatarPreview:SetPoint (avatar_x_anchor+2, -158) + frame1.avatarPreview2:SetPoint (avatar_x_anchor+2, -160) + frame1.avatarNickname:SetPoint (avatar_x_anchor+110, -192) + frame1.ChooseAvatarLabel:SetPoint ("topright", frame1.chooseAvatarButton, "topright", -9, -11) + end) + frame1.chooseAvatarButton:SetHook ("OnMouseUp", function() + local avatar_x_anchor = window.right_start_at + frame1.avatarPreview:SetPoint (avatar_x_anchor+1, -157) + frame1.avatarPreview2:SetPoint (avatar_x_anchor+1, -159) + frame1.avatarNickname:SetPoint (avatar_x_anchor+109, -191) + frame1.ChooseAvatarLabel:SetPoint ("topright", frame1.chooseAvatarButton, "topright", -10, -10) + end) + + --window:CreateLineBackground2 (frame1, "chooseAvatarButton", "chooseAvatarButton", Loc ["STRING_OPTIONS_AVATAR_DESC"], nil, {1, 0.8, 0}, button_color_rgb) _detalhes:SetFontSize (frame1.avatarNickname.widget, 18) @@ -3222,34 +3303,34 @@ function window:CreateFrame1() --lock unlock g:NewButton (frame1, _, "$parentLockButton", "LockButton", buttons_width, 18, _detalhes.lock_instance_function, nil, nil, nil, Loc ["STRING_OPTIONS_WC_LOCK"], 1) frame1.LockButton:InstallCustomTexture() - window:CreateLineBackground2 (frame1, "LockButton", "LockButton", Loc ["STRING_OPTIONS_WC_LOCK_DESC"], nil, {1, 0.8, 0}, {1, 1, 1}) + window:CreateLineBackground2 (frame1, "LockButton", "LockButton", Loc ["STRING_OPTIONS_WC_LOCK_DESC"], nil, {1, 0.8, 0}, button_color_rgb) frame1.LockButton:SetIcon ([[Interface\PetBattles\PetBattle-LockIcon]], nil, nil, nil, {0.0703125, 0.9453125, 0.0546875, 0.9453125}) - frame1.LockButton:SetTextColor (1, 1, 1, 1) + frame1.LockButton:SetTextColor (button_color_rgb) --break snap g:NewButton (frame1, _, "$parentBreakSnapButton", "BreakSnapButton", buttons_width, 18, _G.DetailsOptionsWindow.instance.Desagrupar, -1, nil, nil, Loc ["STRING_OPTIONS_WC_UNSNAP"], 1) frame1.BreakSnapButton:InstallCustomTexture() - window:CreateLineBackground2 (frame1, "BreakSnapButton", "BreakSnapButton", Loc ["STRING_OPTIONS_WC_UNSNAP_DESC"], nil, {1, 0.8, 0}, {1, 1, 1}) + window:CreateLineBackground2 (frame1, "BreakSnapButton", "BreakSnapButton", Loc ["STRING_OPTIONS_WC_UNSNAP_DESC"], nil, {1, 0.8, 0}, button_color_rgb) frame1.BreakSnapButton:SetIcon ([[Interface\AddOns\Details\images\icons]], nil, nil, nil, {160/512, 179/512, 142/512, 162/512}) - frame1.BreakSnapButton:SetTextColor (1, 1, 1, 1) + frame1.BreakSnapButton:SetTextColor (button_color_rgb) --close g:NewButton (frame1, _, "$parentCloseButton", "CloseButton", buttons_width, 18, _detalhes.close_instancia_func, _G.DetailsOptionsWindow.instance, nil, nil, Loc ["STRING_OPTIONS_WC_CLOSE"], 1) frame1.CloseButton:InstallCustomTexture() - window:CreateLineBackground2 (frame1, "CloseButton", "CloseButton", Loc ["STRING_OPTIONS_WC_CLOSE_DESC"], nil, {1, 0.8, 0}, {1, 1, 1}) + window:CreateLineBackground2 (frame1, "CloseButton", "CloseButton", Loc ["STRING_OPTIONS_WC_CLOSE_DESC"], nil, {1, 0.8, 0}, button_color_rgb) frame1.CloseButton:SetIcon ([[Interface\Buttons\UI-Panel-MinimizeButton-Up]], nil, nil, nil, {0.143125, 0.8653125, 0.1446875, 0.8653125}) - frame1.CloseButton:SetTextColor (1, 1, 1, 1) + frame1.CloseButton:SetTextColor (button_color_rgb) --create g:NewButton (frame1, _, "$parentCreateWindowButton", "CreateWindowButton", buttons_width, 18, function() _detalhes.CriarInstancia (nil, nil, true) end, nil, nil, nil, Loc ["STRING_OPTIONS_WC_CREATE"], 1) frame1.CreateWindowButton:InstallCustomTexture() - window:CreateLineBackground2 (frame1, "CreateWindowButton", "CreateWindowButton", Loc ["STRING_OPTIONS_WC_CREATE_DESC"], nil, {1, 0.8, 0}, {1, 1, 1}) + window:CreateLineBackground2 (frame1, "CreateWindowButton", "CreateWindowButton", Loc ["STRING_OPTIONS_WC_CREATE_DESC"], nil, {1, 0.8, 0}, button_color_rgb) frame1.CreateWindowButton:SetIcon ([[Interface\Buttons\UI-AttributeButton-Encourage-Up]]) - frame1.CreateWindowButton:SetTextColor (1, 1, 1, 1) + frame1.CreateWindowButton:SetTextColor (button_color_rgb) --> anchors @@ -3270,9 +3351,9 @@ function window:CreateFrame1() frame1.nicknameLabel:SetPoint (avatar_x_anchor, -115) frame1.chooseAvatarButton:SetPoint (avatar_x_anchor+1, -140) - frame1.avatarPreview:SetPoint (avatar_x_anchor-8, -157) - frame1.avatarPreview2:SetPoint (avatar_x_anchor-8, -159) - frame1.avatarNickname:SetPoint (avatar_x_anchor+100, -191) + frame1.avatarPreview:SetPoint (avatar_x_anchor+1, -157) + frame1.avatarPreview2:SetPoint (avatar_x_anchor+1, -159) + frame1.avatarNickname:SetPoint (avatar_x_anchor+109, -191) frame1.realmNameLabel:SetPoint (avatar_x_anchor, -235) @@ -3781,21 +3862,25 @@ function window:CreateFrame13() --> reset profile + function _detalhes:RefreshOptionsAfterProfileReset() + _detalhes:OpenOptionsWindow (_detalhes:GetInstance(1)) + end + local reset_profile = function() local current_instance = _G.DetailsOptionsWindow.instance _detalhes:ResetProfile (_detalhes:GetCurrentProfileName()) - _detalhes:OpenOptionsWindow (current_instance) + _detalhes:ScheduleTimer ("RefreshOptionsAfterProfileReset", 1) end local profile_reset_button = g:NewButton (frame13, _, "$parentProfileResetButton", "profileResetButton", 128, 19, reset_profile, nil, nil, nil, Loc ["STRING_OPTIONS_PROFILES_RESET"]) profile_reset_button:InstallCustomTexture() + frame13.profileResetButton:SetIcon ([[Interface\Buttons\UI-RefreshButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 4) + frame13.profileResetButton:SetTextColor (button_color_rgb) local hiddenlabel = g:NewLabel (frame13, _, "$parentProfileResetButtonLabel", "profileResetButtonLabel", "", "GameFontHighlightLeft") hiddenlabel:SetPoint ("left", profile_reset_button, "left") - window:CreateLineBackground2 (frame13, profile_reset_button, hiddenlabel, Loc ["STRING_OPTIONS_PROFILES_RESET_DESC"]) - - --profile_reset_button.button.texture:SetVertexColor (1, .8, 0) + window:CreateLineBackground2 (frame13, "profileResetButton", "profileResetButton", Loc ["STRING_OPTIONS_PROFILES_RESET_DESC"], nil, {1, 0.8, 0}, button_color_rgb) --> save window position within profile @@ -3822,12 +3907,13 @@ function window:CreateFrame13() local left_side = { {"ProfileAnchorLabel", 1, true}, {current_profile_label, 2}, - {select_profile_label, 3}, - {profile_name_label, 4}, - {select_profileCopy_label, 5}, - {select_profileErase_label, 6}, - {profile_reset_button, 7}, - {"PosAndSizeLabel", 8, true}, + {"PosAndSizeLabel", 3}, + {select_profile_label, 4, true}, + {profile_name_label, 5, true}, + {select_profileCopy_label, 6}, + {select_profileErase_label, 7}, + {profile_reset_button, 8, true}, + } window:arrange_menu (frame13, left_side, x, window.top_start_at) @@ -3904,11 +3990,6 @@ function window:CreateFrame3() local titulo_skin = g:NewLabel (frame3, _, "$parentTituloSkin", "tituloSkinLabel", Loc ["STRING_OPTIONS_SKIN_A"], "GameFontNormal", 16) local titulo_skin_desc = g:NewLabel (frame3, _, "$parentTituloSkin2", "tituloSkin2Label", Loc ["STRING_OPTIONS_SKIN_A_DESC"], "GameFontNormal", 9, "white") titulo_skin_desc.width = 320 - - --> Save Load - -- local titulo_save = g:NewLabel (frame3, _, "$parentTituloPersona", "tituloBarsLabel", Loc ["STRING_OPTIONS_SAVELOAD"], "GameFontNormal", 16) - -- local titulo_save_desc = g:NewLabel (frame3, _, "$parentTituloPersona2", "tituloBars2Label", Loc ["STRING_OPTIONS_SAVELOAD_DESC"], "GameFontNormal", 9, "white") - -- titulo_save_desc.width = 320 --> create functions and frames first: @@ -3954,9 +4035,6 @@ function window:CreateFrame3() loadStyle (nil, _G.DetailsOptionsWindow.instance, _detalhes.instance_defaults) end - --g:NewButton (frame3, _, "$parentResetToDefaultButton", "resetToDefaults", 160, 16, resetToDefaults, nil, nil, nil, Loc ["STRING_OPTIONS_SAVELOAD_RESET"]) - --frame3.resetToDefaults:InstallCustomTexture() - --> select skin local onSelectSkin = function (_, instance, skin_name) instance:ChangeSkin (skin_name) @@ -4019,6 +4097,7 @@ function window:CreateFrame3() _G.DetailsOptionsWindow3CustomSkinLoadDropdown.MyObject:Refresh() _G.DetailsOptionsWindow3CustomSkinRemoveDropdown.MyObject:Refresh() + _G.DetailsOptionsWindow3CustomSkinExportDropdown.MyObject:Refresh() end @@ -4060,21 +4139,25 @@ function window:CreateFrame3() _detalhes:Msg (Loc ["STRING_OPTIONS_SAVELOAD_STDSAVE"]) end - g:NewButton (frame3, _, "$parentToAllStyleButton", "applyToAll", 160, 18, applyToAll, nil, nil, nil, Loc ["STRING_OPTIONS_SAVELOAD_APPLYTOALL"], 1) - frame3.applyToAll:InstallCustomTexture() - g:NewButton (frame3, _, "$parentMakeDefaultButton", "makeDefault", 160, 18, makeDefault, nil, nil, nil, Loc ["STRING_OPTIONS_SAVELOAD_MAKEDEFAULT"]) - frame3.makeDefault:InstallCustomTexture() - g:NewLabel (frame3, _, "$parentToAllStyleLabel", "toAllStyleLabel", "", "GameFontHighlightLeft") g:NewLabel (frame3, _, "$parentmakeDefaultLabel", "makeDefaultLabel", "", "GameFontHighlightLeft") + g:NewButton (frame3, _, "$parentToAllStyleButton", "applyToAll", 160, 18, applyToAll, nil, nil, nil, Loc ["STRING_OPTIONS_SAVELOAD_APPLYTOALL"], 1) + frame3.applyToAll:InstallCustomTexture() + window:CreateLineBackground2 (frame3, "applyToAll", "applyToAll", Loc ["STRING_OPTIONS_SAVELOAD_APPLYALL_DESC"], nil, {1, 0.8, 0}, button_color_rgb) + + g:NewButton (frame3, _, "$parentMakeDefaultButton", "makeDefault", 160, 18, makeDefault, nil, nil, nil, Loc ["STRING_OPTIONS_SAVELOAD_MAKEDEFAULT"]) + frame3.makeDefault:InstallCustomTexture() + window:CreateLineBackground2 (frame3, "makeDefault", "makeDefault", Loc ["STRING_OPTIONS_SAVELOAD_STD_DESC"], nil, {1, 0.8, 0}, button_color_rgb) + frame3.toAllStyleLabel:SetPoint ("left", frame3.applyToAll, "left") frame3.makeDefaultLabel:SetPoint ("left", frame3.makeDefault, "left") - window:CreateLineBackground2 (frame3, "applyToAll", "toAllStyleLabel", Loc ["STRING_OPTIONS_SAVELOAD_APPLYALL_DESC"]) - - window:CreateLineBackground2 (frame3, "makeDefault", "makeDefaultLabel", Loc ["STRING_OPTIONS_SAVELOAD_STD_DESC"]) - + frame3.makeDefault:SetIcon ([[Interface\Buttons\UI-CheckBox-Check]], 14, 14, nil, {4/32, 28/32, 4/32, 28/32}, "yellow", 4) + frame3.applyToAll:SetIcon ([[Interface\Buttons\UI-HomeButton]], 14, 14, nil, {1/16, 14/16, 0, 1}, nil, 4) + frame3.makeDefault:SetTextColor (button_color_rgb) + frame3.applyToAll:SetTextColor (button_color_rgb) + --> Load Custom Skin g:NewLabel (frame3, _, "$parentLoadCustomSkinLabel", "loadCustomSkinLabel", Loc ["STRING_OPTIONS_SAVELOAD_LOAD"], "GameFontHighlightLeft") -- @@ -4146,6 +4229,7 @@ function window:CreateFrame3() _G.DetailsOptionsWindow3CustomSkinRemoveDropdown.MyObject:Select (false) _G.DetailsOptionsWindow3CustomSkinLoadDropdown.MyObject:Refresh() _G.DetailsOptionsWindow3CustomSkinRemoveDropdown.MyObject:Refresh() + _G.DetailsOptionsWindow3CustomSkinExportDropdown.MyObject:Refresh() _detalhes:Msg (Loc ["STRING_OPTIONS_SKIN_REMOVED"]) end @@ -4242,11 +4326,13 @@ function window:CreateFrame3() g:NewButton (frame3, _, "$parentImportButton", "ImportButton", 160, 18, import_saved, nil, nil, nil, Loc ["STRING_OPTIONS_SAVELOAD_IMPORT"]) frame3.ImportButton:InstallCustomTexture() - + frame3.ImportButton:SetIcon ([[Interface\Buttons\UI-GuildButton-PublicNote-Up]], 14, 14, nil, nil, nil, 4) + frame3.ImportButton:SetTextColor (button_color_rgb) + g:NewLabel (frame3, _, "$parentImportLabel", "ImportLabel", "", "GameFontHighlightLeft") frame3.ImportLabel:SetPoint ("left", frame3.ImportButton, "left") - window:CreateLineBackground2 (frame3, "ImportButton", "ImportLabel", Loc ["STRING_OPTIONS_SAVELOAD_IMPORT_DESC"]) + window:CreateLineBackground2 (frame3, "ImportButton", "ImportButton", Loc ["STRING_OPTIONS_SAVELOAD_IMPORT_DESC"], nil, {1, 0.8, 0}, button_color_rgb) --> extra Options g:NewLabel (frame3, _, "$parentSkinExtraOptionsAnchor", "SkinExtraOptionsAnchor", Loc ["STRING_OPTIONS_SKIN_EXTRA_OPTIONS_ANCHOR"], "GameFontNormal") @@ -4370,6 +4456,12 @@ function window:CreateFrame4() window:CreateLineBackground2 (frame4, "BarSpacementSlider", "BarSpacementLabel", Loc ["STRING_OPTIONS_BAR_SPACING_DESC"]) --> Top Texture + + local texture_icon = [[Interface\TARGETINGFRAME\UI-PhasingIcon]] + local texture_icon = [[Interface\AddOns\Details\images\icons]] + local texture_icon_size = {14, 14} + local texture_texcoord = {469/512, 505/512, 249/512, 284/512} + --anchor g:NewLabel (frame4, _, "$parentRowUpperTextureAnchor", "rowUpperTextureLabel", Loc ["STRING_OPTIONS_TEXT_TEXTUREU_ANCHOR"], "GameFontNormal") @@ -4382,7 +4474,7 @@ function window:CreateFrame4() local textures = SharedMedia:HashTable ("statusbar") local texTable = {} for name, texturePath in pairs (textures) do - texTable[#texTable+1] = {value = name, label = name, statusbar = texturePath, onclick = onSelectTexture} + 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) return texTable @@ -4436,7 +4528,7 @@ function window:CreateFrame4() local textures2 = SharedMedia:HashTable ("statusbar") local texTable2 = {} for name, texturePath in pairs (textures2) do - texTable2[#texTable2+1] = {value = name, label = name, statusbar = texturePath, onclick = onSelectTextureBackground} + 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) return texTable2 @@ -4478,17 +4570,55 @@ function window:CreateFrame4() --> Icons - --anchors + --> anchors g:NewLabel (frame4, _, "$parentIconsAnchor", "rowIconsLabel", Loc ["STRING_OPTIONS_TEXT_ROWICONS_ANCHOR"], "GameFontNormal") - --icon file - g:NewLabel (frame4, _, "$parentIconFileLabel", "iconFileLabel", Loc ["STRING_OPTIONS_BAR_ICONFILE"], "GameFontHighlightLeft") + --> icon file + + --> textbox g:NewTextEntry (frame4, _, "$parentIconFileEntry", "iconFileEntry", 180, 20) - frame4.iconFileEntry:SetPoint ("left", frame4.iconFileLabel, "right", 2, 0) + + g:NewLabel (frame4, _, "$parentIconFileLabel", "iconFileLabel", Loc ["STRING_OPTIONS_BAR_ICONFILE"], "GameFontHighlightLeft") + g:NewLabel (frame4, _, "$parentIconFileLabel2", "iconFileLabel2", "", "GameFontHighlightLeft") + + --> dropdown + local OnSelectIconFile = function (_, _, iconpath) + _G.DetailsOptionsWindow.instance:SetBarSettings (nil, nil, nil, nil, nil, nil, nil, nil, iconpath) + frame4.iconFileEntry:SetText (iconpath) + end + + local iconsize = {16, 16} + local icontexture = [[Interface\WorldStateFrame\ICONS-CLASSES]] + local iconcoords = {0.25, 0.50, 0, 0.25} + local list = { + {value = [[]], label = Loc ["STRING_OPTIONS_BAR_ICONFILE1"], onclick = OnSelectIconFile, icon = icontexture, texcoord = iconcoords, iconsize = iconsize, iconcolor = {1, 1, 1, .3}}, + {value = [[Interface\AddOns\Details\images\classes_small]], label = Loc ["STRING_OPTIONS_BAR_ICONFILE2"], onclick = OnSelectIconFile, icon = icontexture, texcoord = iconcoords, iconsize = iconsize}, + {value = [[Interface\AddOns\Details\images\classes_small_bw]], label = Loc ["STRING_OPTIONS_BAR_ICONFILE3"], onclick = OnSelectIconFile, icon = icontexture, texcoord = iconcoords, iconsize = iconsize}, + {value = [[Interface\AddOns\Details\images\classes_small_alpha]], label = Loc ["STRING_OPTIONS_BAR_ICONFILE4"], onclick = OnSelectIconFile, icon = icontexture, texcoord = iconcoords, iconsize = iconsize}, + {value = [[Interface\AddOns\Details\images\classes]], label = Loc ["STRING_OPTIONS_BAR_ICONFILE5"], onclick = OnSelectIconFile, icon = icontexture, texcoord = iconcoords, iconsize = iconsize}, + } + local BuiltIconList = function() + return list + end + + local d = g:NewDropDown (frame4, _, "$parentIconSelectDropdown", "IconSelectDropdown", DROPDOWN_WIDTH, 20, BuiltIconList, instance.row_info.icon_file) + d.onenter_backdrop = dropdown_backdrop_onenter + d.onleave_backdrop = dropdown_backdrop_onleave + d:SetBackdrop (dropdown_backdrop) + d:SetBackdropColor (unpack (dropdown_backdrop_onleave)) + + d:SetPoint ("left", frame4.iconFileLabel, "right", 2) + window:CreateLineBackground2 (frame4, "IconSelectDropdown", "iconFileLabel", Loc ["STRING_OPTIONS_BAR_ICONFILE_DESC2"]) + -- + + frame4.iconFileEntry:SetPoint ("topleft", frame4.iconFileLabel, "bottomleft", 0, -3) + --frame4.iconFileEntry:SetPoint ("topright", frame4.IconSelectDropdown, "bottomright", 0, 0) frame4.iconFileEntry.tooltip = "- Press escape to restore default value.\n- Leave empty to hide icons." frame4.iconFileEntry:SetHook ("OnEnterPressed", function() _G.DetailsOptionsWindow.instance:SetBarSettings (nil, nil, nil, nil, nil, nil, nil, nil, frame4.iconFileEntry.text) + d:Select (false) + d:Select (frame4.iconFileEntry.text) end) frame4.iconFileEntry:SetHook ("OnEscapePressed", function() frame4.iconFileEntry:SetText ([[Interface\AddOns\Details\images\classes_small]]) @@ -4519,7 +4649,7 @@ function window:CreateFrame4() frame4.noIconButton:GetNormalTexture():SetDesaturated (true) frame4.noIconButton.tooltip = "Clear icon file / Restore default" - --bar start at + --> bar start at g:NewSwitch (frame4, _, "$parentBarStartSlider", "barStartSlider", 60, 20, nil, nil, instance.row_info.start_after_icon) g:NewLabel (frame4, _, "$parentBarStartLabel", "barStartLabel", Loc ["STRING_OPTIONS_BARSTART"], "GameFontHighlightLeft") @@ -4548,11 +4678,12 @@ function window:CreateFrame4() instance:SetBarBackdropSettings (nil, nil, nil, textureName) end + local iconsize = {16, 16} local buildTextureBackdropMenu = function() local textures2 = SharedMedia:HashTable ("border") local texTable2 = {} for name, texturePath in pairs (textures2) do - texTable2 [#texTable2+1] = {value = name, label = name, onclick = onSelectTextureBackdrop} + texTable2 [#texTable2+1] = {value = name, label = name, onclick = onSelectTextureBackdrop, icon = [[Interface\DialogFrame\UI-DialogBox-Corner]], texcoord = {0.09375, 1, 0, 0.78}, iconsize = iconsize} end table.sort (texTable2, function (t1, t2) return t1.label < t2.label end) return texTable2 @@ -4563,7 +4694,7 @@ function window:CreateFrame4() d.onenter_backdrop = dropdown_backdrop_onenter d.onleave_backdrop = dropdown_backdrop_onleave d:SetBackdrop (dropdown_backdrop) - d:SetBackdropColor (unpack (dropdown_backdrop_onleave)) + d:SetBackdropColor (unpack (dropdown_backdrop_onleave)) frame4.BackdropBorderTextureDropdown:SetPoint ("left", frame4.BackdropBorderTextureLabel, "right", 2) window:CreateLineBackground2 (frame4, "BackdropBorderTextureDropdown", "BackdropBorderTextureLabel", Loc ["STRING_OPTIONS_BAR_BACKDROP_TEXTURE_DESC"]) @@ -4608,13 +4739,14 @@ function window:CreateFrame4() --icon {frame4.rowIconsLabel, 6, true}, {frame4.iconFileLabel, 7}, - {frame4.barStartLabel, 8}, + {frame4.iconFileLabel2, 8}, + {frame4.barStartLabel, 9}, --backdrop - {frame4.BackdropAnchorLabel, 9, true}, - {frame4.BackdropEnabledLabel, 10}, - {frame4.BackdropBorderTextureLabel, 11}, - {frame4.BackdropSizeLabel, 12}, - {frame4.BackdropColorLabel, 13}, + {frame4.BackdropAnchorLabel, 10, true}, + {frame4.BackdropEnabledLabel, 11}, + {frame4.BackdropBorderTextureLabel, 12}, + {frame4.BackdropSizeLabel, 13}, + {frame4.BackdropColorLabel, 14}, } local right_side = { @@ -4696,7 +4828,7 @@ function window:CreateFrame5() local fontObjects = SharedMedia:HashTable ("font") local fontTable = {} for name, fontPath in pairs (fontObjects) do - fontTable[#fontTable+1] = {value = name, label = name, onclick = onSelectFont, font = fontPath, descfont = name, desc = Loc ["STRING_MUSIC_DETAILS_ROBERTOCARLOS"]} + 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 @@ -5190,12 +5322,17 @@ function window:CreateFrame6() local onBackdropSelect = function (_, instance, backdropName) instance:SetBackdropTexture (backdropName) end - local backdropObjects = SharedMedia:HashTable ("background") - local backdropTable = {} - for name, backdropPath in pairs (backdropObjects) do - backdropTable[#backdropTable+1] = {value = name, label = name, onclick = onBackdropSelect} + + local backdrop_icon_size = {16, 16} + local backdrop_icon_color = {.6, .6, .6} + + local buildBackdropMenu = function() + local backdropTable = {} + 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 end - local buildBackdropMenu = function() return backdropTable end local d = g:NewDropDown (frame6, _, "$parentBackdropDropdown", "backdropDropdown", DROPDOWN_WIDTH, 20, buildBackdropMenu, nil) d.onenter_backdrop = dropdown_backdrop_onenter @@ -5698,7 +5835,7 @@ function window:CreateFrame8() local fontObjects = SharedMedia:HashTable ("font") local fontTable = {} for name, fontPath in pairs (fontObjects) do - fontTable[#fontTable+1] = {value = name, label = name, onclick = instance_text_color_onselectfont, font = fontPath, descfont = name, desc = "If there's a bustle in your hedgerow, don't be alarmed now\nIt's just a spring clean for the may queen."} + fontTable[#fontTable+1] = {value = name, label = name, icon = font_select_icon, texcoord = font_select_texcoord, onclick = instance_text_color_onselectfont, font = fontPath, descfont = name, desc = "If there's a bustle in your hedgerow, don't be alarmed now\nIt's just a spring clean for the may queen."} end table.sort (fontTable, function (t1, t2) return t1.label < t2.label end) return fontTable @@ -6165,13 +6302,14 @@ function window:CreateFrame9() frame9.anchorDropdown:SetPoint ("left", frame9.anchorLabel, "right", 2) -- frame9.editImage:InstallCustomTexture() - + window:CreateLineBackground2 (frame9, "editImage", "editImage", Loc ["STRING_OPTIONS_WP_EDIT_DESC"], nil, {1, 0.8, 0}, button_color_rgb) + frame9.editImage:SetTextColor (button_color_rgb) + frame9.editImage:SetIcon ([[Interface\AddOns\Details\images\icons]], 14, 14, nil, {469/512, 505/512, 290/512, 322/512}, nil, 4) + window:CreateLineBackground2 (frame9, "useBackgroundSlider", "enablewallpaperLabel", Loc ["STRING_OPTIONS_WP_ENABLE_DESC"]) window:CreateLineBackground2 (frame9, "anchorDropdown", "anchorLabel", Loc ["STRING_OPTIONS_WP_ALIGN_DESC"]) - - window:CreateLineBackground2 (frame9, "editImage", "editImage", Loc ["STRING_OPTIONS_WP_EDIT_DESC"]) - + window:CreateLineBackground2 (frame9, "backgroundDropdown", "wallpapergroupLabel", Loc ["STRING_OPTIONS_WP_GROUP_DESC"]) window:CreateLineBackground2 (frame9, "backgroundDropdown2", "selectwallpaperLabel", Loc ["STRING_OPTIONS_WP_GROUP2_DESC"]) @@ -6401,7 +6539,9 @@ function window:CreateFrame9() g:NewButton (frame9, _, "$parentLoadImage", "LoadImage", 200, 18, load_image, nil, nil, nil, Loc ["STRING_OPTIONS_WALLPAPER_LOAD"]) frame9.LoadImage:InstallCustomTexture() - window:CreateLineBackground2 (frame9, "LoadImage", "LoadImage", Loc ["STRING_OPTIONS_WALLPAPER_LOAD_DESC"]) + window:CreateLineBackground2 (frame9, "LoadImage", "LoadImage", Loc ["STRING_OPTIONS_WALLPAPER_LOAD_DESC"], nil, {1, 0.8, 0}, button_color_rgb) + frame9.LoadImage:SetTextColor (button_color_rgb) + frame9.LoadImage:SetIcon ([[Interface\AddOns\Details\images\icons]], 11, 14, nil, {437/512, 467/512, 191/512, 239/512}, nil, 5) --> Anchors @@ -6952,6 +7092,11 @@ function window:CreateFrame12() g:NewButton (bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 86, 16, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"]) bframe ["OptionsButton"..i]:SetPoint ("topleft", frame4, "topleft", 510, y-2) bframe ["OptionsButton"..i]:InstallCustomTexture() + + window:CreateLineBackground2 (bframe, "OptionsButton"..i, "OptionsButton"..i, nil, nil, {1, 0.8, 0}, button_color_rgb) + bframe ["OptionsButton"..i]:SetTextColor (button_color_rgb) + bframe ["OptionsButton"..i]:SetIcon ([[Interface\Buttons\UI-OptionsButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 3) + end i = i + 1 @@ -7029,6 +7174,10 @@ function window:CreateFrame12() g:NewButton (bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 86, 16, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"]) bframe ["OptionsButton"..i]:SetPoint ("topleft", frame4, "topleft", 510, y-2) bframe ["OptionsButton"..i]:InstallCustomTexture() + + window:CreateLineBackground2 (bframe, "OptionsButton"..i, "OptionsButton"..i, nil, nil, {1, 0.8, 0}, button_color_rgb) + bframe ["OptionsButton"..i]:SetTextColor (button_color_rgb) + bframe ["OptionsButton"..i]:SetIcon ([[Interface\Buttons\UI-OptionsButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 3) end i = i + 1 @@ -7106,6 +7255,10 @@ function window:CreateFrame12() g:NewButton (bframe, nil, "$parentOptionsButton"..i, "OptionsButton"..i, 86, 16, pluginObject.OpenOptionsPanel, nil, nil, nil, Loc ["STRING_OPTIONS_PLUGINS_OPTIONS"]) bframe ["OptionsButton"..i]:SetPoint ("topleft", frame4, "topleft", 510, y-2) bframe ["OptionsButton"..i]:InstallCustomTexture() + + window:CreateLineBackground2 (bframe, "OptionsButton"..i, "OptionsButton"..i, nil, nil, {1, 0.8, 0}, button_color_rgb) + bframe ["OptionsButton"..i]:SetTextColor (button_color_rgb) + bframe ["OptionsButton"..i]:SetIcon ([[Interface\Buttons\UI-OptionsButton]], 14, 14, nil, {0, 1, 0, 1}, nil, 3) end i = i + 1 @@ -7328,6 +7481,10 @@ function window:update_all (editing_instance) _G.DetailsOptionsWindow4BackdropSizeHeight.MyObject:SetValue (editing_instance.row_info.backdrop.size) _G.DetailsOptionsWindow4BackdropColorPick.MyObject:SetColor (unpack (editing_instance.row_info.backdrop.color)) + _G.DetailsOptionsWindow4IconFileEntry:SetText (editing_instance.row_info.icon_file) + _G.DetailsOptionsWindow4IconSelectDropdown.MyObject:Select (false) + _G.DetailsOptionsWindow4IconSelectDropdown.MyObject:Select (editing_instance.row_info.icon_file) + --> window 5 _G.DetailsOptionsWindow5PercentDropdown.MyObject:SetFixedParameter (editing_instance) @@ -7476,6 +7633,8 @@ function window:update_all (editing_instance) --report _G.DetailsOptionsWindow18ReportHelpfulLinkSlider.MyObject:SetValue (_detalhes.report_heal_links) + --disabled groups + _G.DetailsOptionsWindow18DisableGroupsSlider.MyObject:SetValue (_detalhes.disable_window_groups) --auto switch local switch_tank_in_combat = editing_instance.switch_tank_in_combat @@ -7757,7 +7916,7 @@ function window:update_all (editing_instance) GameCooltip:ShowCooltip (_G.DetailsOptionsWindowInstanceSelectDropdown, "tooltip") end - _G.DetailsOptionsWindow4IconFileEntry:SetText (editing_instance.row_info.icon_file) + --profiles _G.DetailsOptionsWindow13CurrentProfileLabel2.MyObject:SetText (_detalhes_database.active_profile) diff --git a/gumps/janela_principal.lua b/gumps/janela_principal.lua index c8490fcb..ceb17267 100644 --- a/gumps/janela_principal.lua +++ b/gumps/janela_principal.lua @@ -486,7 +486,10 @@ local movement_onupdate = function (self, elapsed) local function move_janela (baseframe, iniciando, instancia) instancia_alvo = _detalhes.tabela_instancias [instancia.meu_id-1] - + if (_detalhes.disable_window_groups) then + instancia_alvo = nil + end + if (iniciando) then baseframe.isMoving = true @@ -496,15 +499,8 @@ local function move_janela (baseframe, iniciando, instancia) local _, ClampLeft, ClampRight = instancia:InstanciasHorizontais() local _, ClampBottom, ClampTop = instancia:InstanciasVerticais() - if (ClampTop == 0) then - ClampTop = 0 - end - if (ClampBottom == 0) then - ClampBottom = 0 - end - baseframe:SetClampRectInsets (-ClampLeft, ClampRight, ClampTop, -ClampBottom) - + if (instancia_alvo) then tempo_fades = 1.0 @@ -832,85 +828,43 @@ local function instancias_verticais (instancia, altura, esquerda, direita) end end -function _detalhes:InstanciasVerticais (instancia) - - instancia = self or instancia - - local linha_vertical, baixo, cima = {}, 0, 0 - - local checking = instancia - local first = true - - local check_index_anterior = _detalhes.tabela_instancias [instancia.meu_id-1] - if (check_index_anterior) then --> possiu uma instância antes de mim - if (check_index_anterior.snap[4] and check_index_anterior.snap[4] == instancia.meu_id) then --> o index negativo vai para baixo - for i = instancia.meu_id-1, 1, -1 do - local esta_instancia = _detalhes.tabela_instancias [i] - if (esta_instancia.snap[4] and esta_instancia.snap [4] == checking.meu_id) then - linha_vertical [#linha_vertical+1] = esta_instancia - if (first) then - baixo = baixo + esta_instancia.baseframe:GetHeight()+48 - first = false - else - baixo = baixo + esta_instancia.baseframe:GetHeight()+34 - end - checking = esta_instancia - else - break - end - end - elseif (check_index_anterior.snap[2] and check_index_anterior.snap[2] == instancia.meu_id) then --> o index negativo vai para cima - for i = instancia.meu_id-1, 1, -1 do - local esta_instancia = _detalhes.tabela_instancias [i] - if (esta_instancia.snap[2] and esta_instancia.snap[2] == checking.meu_id) then - linha_vertical [#linha_vertical+1] = esta_instancia - if (first) then - cima = cima + esta_instancia.baseframe:GetHeight() + 64 - first = false - else - cima = cima + esta_instancia.baseframe:GetHeight() + 34 - end - checking = esta_instancia - else - break - end - end - end +local check_snap_side = function (instanceid, snap, id, container) + local instance = _detalhes:GetInstance (instanceid) + if (instance and instance.snap [snap] and instance.snap [snap] == id) then + tinsert (container, instance) + return true end +end + +function _detalhes:InstanciasVerticais (instance) + + instance = self or instance - checking = instancia - first = true + local on_top = {} + local on_bottom = {} + local id = instance:GetId() - local check_index_posterior = _detalhes.tabela_instancias [instancia.meu_id+1] - if (check_index_posterior) then - if (check_index_posterior.snap[4] and check_index_posterior.snap[4] == instancia.meu_id) then --> o index posterior vai para a esquerda - for i = instancia.meu_id+1, #_detalhes.tabela_instancias do - local esta_instancia = _detalhes.tabela_instancias [i] - if (esta_instancia.snap[4] and esta_instancia.snap[4] == checking.meu_id) then - linha_vertical [#linha_vertical+1] = esta_instancia - if (first) then - baixo = baixo + esta_instancia.baseframe:GetHeight()+48 - first = true - else - baixo = baixo + esta_instancia.baseframe:GetHeight()+34 - end - checking = esta_instancia + --lower instances + local this_instance = _detalhes:GetInstance (id-1) + if (this_instance) then + --> top side + if (this_instance.snap [2] and this_instance.snap [2] == id) then + local cid = id + local snapid = 2 + for i = cid-1, 1, -1 do + if (check_snap_side (i, 2, cid, on_top)) then + cid = cid - 1 else break end end - elseif (check_index_posterior.snap[2] and check_index_posterior.snap[2] == instancia.meu_id) then --> o index posterior vai para a direita - for i = instancia.meu_id+1, #_detalhes.tabela_instancias do - local esta_instancia = _detalhes.tabela_instancias [i] - if (esta_instancia.snap[2] and esta_instancia.snap[2] == checking.meu_id) then - linha_vertical [#linha_vertical+1] = esta_instancia - if (first) then - cima = cima + esta_instancia.baseframe:GetHeight() + 64 - first = false - else - cima = cima + esta_instancia.baseframe:GetHeight() + 34 - end - checking = esta_instancia + --> bottom side + elseif (this_instance.snap [4] and this_instance.snap [4] == id) then + local cid = id + local snapid = 4 + for i = cid-1, 1, -1 do + if (check_snap_side (i, 4, cid, on_bottom)) then + cid = cid - 1 else break end @@ -918,10 +872,65 @@ function _detalhes:InstanciasVerticais (instancia) end end + --upper instances + local this_instance = _detalhes:GetInstance (id+1) + if (this_instance) then + --> top side + if (this_instance.snap [2] and this_instance.snap [2] == id) then + local cid = id + local snapid = 2 + for i = cid+1, _detalhes:GetNumInstancesAmount() do + if (check_snap_side (i, 2, cid, on_top)) then + cid = cid + 1 + else + break + end + end + --> bottom side + elseif (this_instance.snap [4] and this_instance.snap [4] == id) then + local cid = id + local snapid = 4 + for i = cid+1, _detalhes:GetNumInstancesAmount() do + if (check_snap_side (i, 4, cid, on_bottom)) then + cid = cid + 1 + else + break + end + end + end + end + --> calc top clamp + local top_clamp = 0 + local bottom_clamp = 0 - return linha_vertical, baixo, cima + if (instance.toolbar_side == 1) then + top_clamp = top_clamp + 20 + elseif (instance.toolbar_side == 2) then + bottom_clamp = bottom_clamp + 20 + end + if (instance.show_statusbar) then + bottom_clamp = bottom_clamp + 14 + end + for cid, this_instance in _ipairs (on_top) do + if (this_instance.show_statusbar) then + top_clamp = top_clamp + 14 + end + top_clamp = top_clamp + 20 + top_clamp = top_clamp + this_instance.baseframe:GetHeight() + end + + for cid, this_instance in _ipairs (on_bottom) do + if (this_instance.show_statusbar) then + bottom_clamp = bottom_clamp + 14 + end + bottom_clamp = bottom_clamp + 20 + bottom_clamp = bottom_clamp + this_instance.baseframe:GetHeight() + tinsert (on_top, this_instance) + end + + return on_top, bottom_clamp, top_clamp end --[[ @@ -4548,7 +4557,7 @@ function _detalhes:ChangeSkin (skin_name) end --> reset all config - self:ResetInstanceConfig() + self:ResetInstanceConfig (true) --> overwrites local overwrite_cprops = this_skin.instance_cprops @@ -5961,7 +5970,7 @@ function gump:CriaCabecalho (baseframe, instancia) baseframe.cabecalho.modo_selecao = gump:NewButton (baseframe, nil, "DetailsModeButton"..instancia.meu_id, nil, 16, 16, _detalhes.empty_function, 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) - + --> Generating Cooltip menu from table template local modeMenuTable = { @@ -6420,180 +6429,44 @@ function gump:CriaCabecalho (baseframe, instancia) --> fim botão reset ---> Botão de Ajuda ---------------------------------------------------------------------------------------------------------------------------------------------------- - --> disabled - if (instancia.meu_id == 1 and _detalhes.tutorial.logons < 0) then - - --> help button - local helpButton = CreateFrame ("button", "DetailsMainWindowHelpButton", baseframe, "MainHelpPlateButton") - helpButton:SetWidth (28) - helpButton:SetHeight (28) - helpButton.I:SetWidth (22) - helpButton.I:SetHeight (22) - helpButton.Ring:SetWidth (28) - helpButton.Ring:SetHeight (28) - helpButton.Ring:SetPoint ("center", 5, -6) - - helpButton:SetPoint ("topright", baseframe, "topleft", 37, 37) - - helpButton:SetFrameLevel (0) - helpButton:SetFrameStrata ("LOW") +--[[ - local mainWindowHelp = { - FramePos = {x = 0, y = 10}, - FrameSize = {width = 300, height = 85}, - - --> modo, segmento e atributo - [1] ={HighLightBox = {x = 25, y = 10, width = 60, height = 20}, - ButtonPos = { x = 32, y = 40}, - ToolTipDir = "right", - ToolTipText = Loc ["STRING_HELP_MENUS"] - }, - --> delete - [2] ={HighLightBox = {x = 195, y = 10, width = 47, height = 20}, - ButtonPos = { x = 197, y = 5}, - ToolTipDir = "left", - ToolTipText = Loc ["STRING_HELP_ERASE"] - }, - --> menu da instancia - [3] ={HighLightBox = {x = 244, y = 10, width = 30, height = 20}, - ButtonPos = { x = 237, y = 5}, - ToolTipDir = "right", - ToolTipText = Loc ["STRING_HELP_INSTANCE"] - }, - --> stretch - [4] ={HighLightBox = {x = 244, y = 30, width = 30, height = 20}, - ButtonPos = { x = 237, y = 57}, - ToolTipDir = "right", - ToolTipText = Loc ["STRING_HELP_STRETCH"] - }, - --> status bar - [5] ={HighLightBox = {x = 0, y = -101, width = 300, height = 20}, - ButtonPos = { x = 126, y = -88}, - ToolTipDir = "left", - ToolTipText = Loc ["STRING_HELP_STATUSBAR"] - }, - --> switch menu - [6] ={HighLightBox = {x = 0, y = -10, width = 300, height = 95}, - ButtonPos = { x = 127, y = -37}, - ToolTipDir = "left", - ToolTipText = Loc ["STRING_HELP_SWITCH"] - }, - --> resizer - [7] ={HighLightBox = {x = 250, y = -81, width = 50, height = 20}, - ButtonPos = { x = 253, y = -52}, - ToolTipDir = "right", - ToolTipText = Loc ["STRING_HELP_RESIZE"] - }, - } - - helpButton:SetScript ("OnClick", function() - if (not HelpPlate_IsShowing (mainWindowHelp)) then - - instancia:SetSize (300, 95) - - HelpPlate_Show (mainWindowHelp, baseframe, helpButton, true) - else - HelpPlate_Hide (true) - end - end) - - end +--> teste com shadows ----------> consolidate frame ---------------------------------------------------------------------------------------------------------------------------------------------------- +--modo + local shadow = baseframe.cabecalho.modo_selecao:CreateTexture ("sombra", "background") + shadow:SetPoint ("center", baseframe.cabecalho.modo_selecao.widget, "center") + shadow:SetTexture ("Interface\\PetBattles\\PetBattle-SelectedPetGlow") + shadow:SetVertexColor (0, 0, 0, 1) + shadow:SetSize (22, 22) +--segmentos + local shadow = baseframe.cabecalho.segmento:CreateTexture ("sombra2", "background") + shadow:SetPoint ("center", baseframe.cabecalho.segmento.widget, "center") + shadow:SetTexture ("Interface\\PetBattles\\PetBattle-SelectedPetGlow") + shadow:SetVertexColor (0, 0, 0, 1) + shadow:SetSize (22, 22) +--atributo + local shadow = baseframe.cabecalho.atributo:CreateTexture ("sombra3", "background") + shadow:SetPoint ("center", baseframe.cabecalho.atributo.widget, "center") + shadow:SetTexture ("Interface\\PetBattles\\PetBattle-SelectedPetGlow") + shadow:SetVertexColor (0, 0, 0, 1) + shadow:SetSize (12, 16) + shadow:SetTexCoord (0.0, 0.0, 0.3, 0.3, 0.7, 0.7, 1, 1) +--report + local shadow = baseframe.cabecalho.report:CreateTexture ("sombra4", "background") + shadow:SetPoint ("center", baseframe.cabecalho.report.widget, "center") + shadow:SetTexture ("Interface\\PetBattles\\PetBattle-SelectedPetGlow") + shadow:SetVertexColor (0, 0, 0, 1) + shadow:SetSize (22, 22) + +--baseToolbar.novo, baseToolbar.fechar, baseToolbar.reset}baseToolbar.modo_selecao, baseToolbar.segmento, baseToolbar.atributo, baseToolbar.report - local consolidateFrame = CreateFrame ("frame", "DetailsConsolidateFrame" .. instancia.meu_id, _detalhes.listener) - consolidateFrame:SetWidth (21) - consolidateFrame:SetHeight (83) - consolidateFrame:SetFrameLevel (baseframe:GetFrameLevel()-1) - --consolidateFrame:SetPoint ("bottomleft", baseframe.cabecalho.ball, "bottomright", 0, 20) - consolidateFrame:SetFrameStrata ("FULLSCREEN") - consolidateFrame:Hide() - instancia.consolidateFrame = consolidateFrame - ----------> consolidate texture - - local frameTexture = consolidateFrame:CreateTexture (nil, "background") - frameTexture:SetTexture ([[Interface\AddOns\Details\images\consolidate_frame]]) - frameTexture:SetPoint ("top", consolidateFrame, "top", .5, 0) - frameTexture:SetWidth (32) - frameTexture:SetHeight (83) - frameTexture:SetTexCoord (0, 1, 0, 0.6484375) - ----------> consolidate button - - local consolidateButton = CreateFrame ("button", "DetailsConsolidateButton" .. instancia.meu_id, baseframe) - consolidateButton:SetWidth (16) - consolidateButton:SetHeight (16) - consolidateButton:SetFrameLevel (baseframe.UPFrame:GetFrameLevel()+1) - consolidateButton:SetPoint ("bottomleft", baseframe.cabecalho.ball, "bottomright", 6, 2) - consolidateFrame:SetPoint ("bottom", consolidateButton, "top", 3, 0) - - local normal_texture = consolidateButton:CreateTexture (nil, "overlay") - normal_texture:SetTexture ([[Interface\GossipFrame\HealerGossipIcon]]) - normal_texture:SetVertexColor (.9, .8, 0) - normal_texture:SetWidth (16) - normal_texture:SetHeight (16) - normal_texture:SetPoint ("center", consolidateButton, "center") - - consolidateButton:Hide() - instancia.consolidateButton = consolidateButton - instancia.consolidateButtonTexture = normal_texture - ----------> consolidate scripts - - consolidateFrame:SetScript ("OnEnter", function (self) - consolidateFrame.mouse_over = true - self:SetScript ("OnUpdate", nil) - end) - - consolidateFrame:SetScript ("OnLeave", function (self) - consolidateFrame.mouse_over = false - local passou = 0 - self:SetScript ("OnUpdate", function (self, elapsed) - passou = passou+elapsed - if (passou > 0.5) then - if (not _G.GameCooltip.active and not baseframe.cabecalho.button_mouse_over) then - consolidateFrame:Hide() - normal_texture:SetBlendMode ("BLEND") - self:SetScript ("OnUpdate", nil) - end - passou = 0 - end - end) - end) - - consolidateButton:SetScript ("OnEnter", function (self) - gump:Fade (baseframe.button_stretch, "alpha", 0.3) - local passou = 0 - consolidateFrame:SetScript ("OnUpdate", nil) - normal_texture:SetBlendMode ("ADD") - self:SetScript ("OnUpdate", function (self, elapsed) - passou = passou+elapsed - if (passou > 0.3) then - consolidateFrame:SetPoint ("bottom", self, "top", 3, 0) - consolidateFrame:Show() - self:SetScript ("OnUpdate", nil) - end - end) - end) - - consolidateButton:SetScript ("OnLeave", function (self) - gump:Fade (baseframe.button_stretch, -1) - local passou = 0 - self:SetScript ("OnUpdate", function (self, elapsed) - passou = passou+elapsed - if (passou > 0.3) then - if (not consolidateFrame.mouse_over and not baseframe.cabecalho.button_mouse_over and not _G.GameCooltip.active) then - consolidateFrame:Hide() - normal_texture:SetBlendMode ("BLEND") - end - self:SetScript ("OnUpdate", nil) - end - end) - end) - - - + local shadow = UIParent:CreateTexture ("SombraTeste", "background") + shadow:SetPoint ("center", UIParent, "center", 200, 0) + shadow:SetTexture ("Interface\\PetBattles\\PetBattle-SelectedPetGlow") + shadow:SetVertexColor (0, 0, 0, 1) + shadow:SetSize (300, 300) + shadow:SetTexCoord (0.0, 0.0, 0.3, 0.3, 0.7, 0.7, 1, 1) + --]] end diff --git a/images/classes_small_bw.tga b/images/classes_small_bw.tga new file mode 100644 index 00000000..e830b0d4 Binary files /dev/null and b/images/classes_small_bw.tga differ diff --git a/images/icons.tga b/images/icons.tga index 86fd9f30..56469fa8 100644 Binary files a/images/icons.tga and b/images/icons.tga differ diff --git a/plugins/Details_TimeAttack/Details_TimeAttack.lua b/plugins/Details_TimeAttack/Details_TimeAttack.lua index 6ec67aa4..e0445aa0 100644 --- a/plugins/Details_TimeAttack/Details_TimeAttack.lua +++ b/plugins/Details_TimeAttack/Details_TimeAttack.lua @@ -15,17 +15,14 @@ local TimeAttack = _detalhes:NewPluginObject ("Details_TimeAttack") --> Main Frame local TimeAttackFrame = TimeAttack.Frame -local function CreatePluginFrames (data) +local function CreatePluginFrames() --> catch Details! main object local _detalhes = _G._detalhes local DetailsFrameWork = _detalhes.gump local instance --> shortcut for details instance wich are holding solo plugins local GameCooltip = GameCooltip - - --> default rank table - TimeAttack.data = data or {time = 180, dps = 0, history = {}} TimeAttack.try = 1 --> OnEvent Table @@ -44,7 +41,9 @@ local function CreatePluginFrames (data) elseif (event == "PLUGIN_DISABLED") then elseif (event == "PLUGIN_ENABLED") then - + + elseif (event == "DETAILS_STARTED") then + TimeAttack:CheckTimeAttackTutorial() end end @@ -111,10 +110,10 @@ local function CreatePluginFrames (data) local TimeDesc = DetailsFrameWork:NewLabel (TimeAttackFrame, TimeAttackFrame, nil, "TimeDesc", Loc ["STRING_TIME_SELECTION"]) TimeDesc:SetPoint ("topleft", TimeAttackFrame, 15, -260) --> slider - local TimeAmount = DetailsFrameWork:NewSlider (TimeAttackFrame, nil, "DetailsTimeAttackTimeSelect", "TimeSelect", 270, 20, 30, 330, 10, TimeAttack.data.time) - --local TimeAmount = DetailsFrameWork:NewSlider2 (TimeAttackFrame, "DetailsTimeAttackTimeSelect", "TimeSelect", 270, 20, 30, 330, 10, TimeAttack.data.time) + + local TimeAmount = DetailsFrameWork:NewSlider (TimeAttackFrame, nil, "DetailsTimeAttackTimeSelect", "TimeSelect", 270, 20, 30, 330, 1, TimeAttack.db.time) TimeAmount:SetPoint ("topleft", TimeAttackFrame, 15, -270) - TimeAmount.OnChangeHook = function (_, _, value) TimeAttack.data.time = value end + TimeAmount.OnChangeHook = function (_, _, value) TimeAttack.db.time = value end --> main time/damage/dps texts local clock = DetailsFrameWork:NewLabel (TimeAttackFrame, TimeAttackFrame, nil, "TIMER", "00:00:00", "GameFontHighlightLarge") @@ -152,7 +151,7 @@ local function CreatePluginFrames (data) NowShowing = 1, --> 1 for recently 2 for saved LabelsCreated = {}, Recently = {}, - Hystory = TimeAttack.data.history + Hystory = TimeAttack.db.history } HistoryPanelObject.__index = HistoryPanelObject @@ -189,7 +188,7 @@ local function CreatePluginFrames (data) if (HistoryPanelObject.NowShowing == 1) then --> recently table.remove (HistoryPanelObject.Recently, index) else --> history - table.remove (TimeAttack.data.history, index) + table.remove (TimeAttack.db.history, index) end HistoryPanelObject:Refresh() end @@ -207,8 +206,8 @@ local function CreatePluginFrames (data) NewSave.Date = ToSaveTimeObject.Date NewSave.note = ToSaveTimeObject.note - table.insert (TimeAttack.data.history, 1, NewSave) - table.remove (TimeAttack.data.history, 25) + table.insert (TimeAttack.db.history, 1, NewSave) + table.remove (TimeAttack.db.history, 25) HistoryPanelObject:AddHistory (NewSave) ToSaveTimeObject.FinishSaved = true HistoryPanelObject:Refresh() @@ -226,8 +225,8 @@ local function CreatePluginFrames (data) NewSave.ItemLevel = TimeAttack.Time.FinishIlevel NewSave.Date = TimeAttack.Time.Date TimeAttack.Time.FinishSaved = true - table.insert (TimeAttack.data.history, 1, NewSave) - table.remove (TimeAttack.data.history, 25) + table.insert (TimeAttack.db.history, 1, NewSave) + table.remove (TimeAttack.db.history, 25) HistoryPanelObject:AddHistory (NewSave) HistoryPanelObject:Refresh() TimeAttackFrame ["SaveButton"]:Disable() @@ -275,9 +274,12 @@ local function CreatePluginFrames (data) function HistoryPanelObject:RefreshLabel (AttemptTable, AlreadySaved, First) self.table = AttemptTable + if (AlreadySaved) then --> showing historic - self.remove:SetPoint ("left", self.background.frame, "left") - self.note:SetPoint ("left", self.remove.button, "right") + + self.remove:SetPoint ("left", self.background.frame, "left", 20, 0) + self.note:SetPoint ("left", self.remove, "right") + if (AttemptTable.note) then self.note:SetNormalTexture ("Interface\\Buttons\\UI-GuildButton-PublicNote-Up") self.note.tooltip = AttemptTable.note @@ -289,9 +291,12 @@ local function CreatePluginFrames (data) local diamesano = string.gsub (AttemptTable.Date, "(.-)%s", "") self.text:SetText (diamesano) + self.rownumber:SetText ("#" .. self.index) + elseif (not AttemptTable.FinishSaved) then --> não foi salvo ainda self.remove:Show() self.save:Show() + self.remove:SetPoint ("left", self.background.frame, "left", 16, 0) self.note:SetPoint ("left", self.save.button, "right") if (AttemptTable.note) then self.note:SetNormalTexture ("Interface\\Buttons\\UI-GuildButton-PublicNote-Up") @@ -301,12 +306,16 @@ local function CreatePluginFrames (data) self.note.tooltip = Loc ["STRING_SETNOTE"] end if (First) then - self.text:SetText ("-".. TimeAttack:ToK (First-AttemptTable.FinishDamage).." (#"..AttemptTable.N..")") + self.text:SetText ("-".. TimeAttack:ToK (First-AttemptTable.FinishDamage)) else - self.text:SetText (TimeAttack:ToK (AttemptTable.FinishDamage).." (#"..AttemptTable.N..")") + self.text:SetText (TimeAttack:ToK (AttemptTable.FinishDamage)) end + self.rownumber:SetText ("#" .. AttemptTable.N) + self.rownumber:SetPoint ("left", self.background.frame) + else --> ta mostrando recentes e ja foi salvo self.remove:Show() + self.remove:SetPoint ("left", self.background.frame, "left", 16, 0) self.note:SetPoint ("left", self.remove.button, "right") if (AttemptTable.note) then self.note:SetNormalTexture ("Interface\\Buttons\\UI-GuildButton-PublicNote-Up") @@ -317,11 +326,14 @@ local function CreatePluginFrames (data) end self.save:Hide() if (First) then - self.text:SetText ("-".. TimeAttack:ToK (First-AttemptTable.FinishDamage).." (#"..AttemptTable.N..")") + self.text:SetText ("-".. TimeAttack:ToK (First-AttemptTable.FinishDamage)) else - self.text:SetText (TimeAttack:ToK (AttemptTable.FinishDamage).." (#"..AttemptTable.N..")") + self.text:SetText (TimeAttack:ToK (AttemptTable.FinishDamage)) end + self.rownumber:SetText ("#" .. AttemptTable.N) + self.rownumber:SetPoint ("left", self.background.frame) end + self.background:Show() end @@ -353,7 +365,7 @@ local function CreatePluginFrames (data) GameCooltip:Reset() - local TimeObject = TimeAttack.data.history [self.index] + local TimeObject = TimeAttack.db.history [self.index] GameCooltip:AddLine (TimeAttack:comma_value (TimeObject.DamageDone)) GameCooltip:AddIcon ("Interface\\TARGETINGFRAME\\PetBadge-Undead") @@ -387,7 +399,7 @@ local function CreatePluginFrames (data) if (HistoryPanelObject.NowShowing == 1) then --> recently HistoryPanelObject.Recently [editbox.editing].note = texto else - TimeAttack.data.history [editbox.editing].note = texto + TimeAttack.db.history [editbox.editing].note = texto end end editbox:SetText ("") @@ -427,8 +439,8 @@ local function CreatePluginFrames (data) if (HistoryPanelObject.NowShowing == 1 and HistoryPanelObject.Recently [index].note) then --> recently NoteInsertField:SetText (HistoryPanelObject.Recently [index].note) - elseif (HistoryPanelObject.NowShowing == 2 and TimeAttack.data.history [index].note) then - NoteInsertField:SetText (TimeAttack.data.history [index].note) + elseif (HistoryPanelObject.NowShowing == 2 and TimeAttack.db.history [index].note) then + NoteInsertField:SetText (TimeAttack.db.history [index].note) else NoteInsertField:SetText ("") end @@ -470,21 +482,26 @@ local function CreatePluginFrames (data) LabelText:SetPoint ("right", LabelBackground.frame, 0, 0) LabelText:SetJustifyH ("right") + local RowNumber = DetailsFrameWork:NewLabel (LabelBackground.frame, LabelBackground.frame, nil, "rownumber", "#1", "GameFontHighlightSmall") + RowNumber:SetPoint ("left", LabelBackground.frame) + RowNumber:SetJustifyH ("left") + --local LabelRemoveButton = DetailsFrameWork:NewDetailsButton (LabelBackground.frame, LabelBackground.frame, _, remove, index, index, 10, 10, "Interface\\PetBattles\\DeadPetIcon") - local LabelRemoveButton = DetailsFrameWork:NewButton (LabelBackground.frame, nil, "DetailsTimeAttackRemoveButton"..index, "RemoveButton"..index, 10, 10, remove, index, index, "Interface\\PetBattles\\DeadPetIcon") - LabelRemoveButton:SetPoint ("left", LabelBackground.frame) + local LabelRemoveButton = DetailsFrameWork:NewButton (LabelBackground.frame, nil, "DetailsTimeAttackRemoveButton"..index, "RemoveButton"..index, 12, 12, remove, index, index, "Interface\\PetBattles\\DeadPetIcon") + LabelRemoveButton:SetPoint ("left", LabelBackground.frame, "left", 16, 0) LabelRemoveButton.tooltip = Loc ["STRING_REMOVERECORD"] --local LabelSaveButton = DetailsFrameWork:NewDetailsButton (LabelBackground.frame, LabelBackground.frame, _, save, index, index, 10, 10, "Interface\\Scenarios\\ScenarioIcon-Check") - local LabelSaveButton = DetailsFrameWork:NewButton (LabelBackground.frame, nil, "DetailsTimeAttackSaveButton"..index, "SaveButton"..index, 10, 10, save, index, index, "Interface\\Scenarios\\ScenarioIcon-Check") - LabelSaveButton:SetPoint ("left", LabelRemoveButton.button, "right", 0, 0) + local LabelSaveButton = DetailsFrameWork:NewButton (LabelBackground.frame, nil, "DetailsTimeAttackSaveButton"..index, "SaveButton"..index, 12, 12, save, index, index, "Interface\\Scenarios\\ScenarioIcon-Check") + LabelSaveButton:SetPoint ("left", LabelRemoveButton.button, "right", -1, 0) LabelSaveButton.tooltip = Loc ["STRING_SAVERECORD"] --local LabelSetnoteButton = DetailsFrameWork:NewDetailsButton (LabelBackground.frame, LabelBackground.frame, _, WriteNoteStart, index, index, 10, 10, "Interface\\Buttons\\UI-GuildButton-PublicNote-Disabled") - local LabelSetnoteButton = DetailsFrameWork:NewButton (LabelBackground.frame, nil, "DetailsTimeAttackSetNoteButton"..index, "SetNoteButton"..index, 10, 10, WriteNoteStart, index, index, "Interface\\Buttons\\UI-GuildButton-PublicNote-Disabled") - LabelSetnoteButton:SetPoint ("left", LabelSaveButton.button, "right", 0, 0) + local LabelSetnoteButton = DetailsFrameWork:NewButton (LabelBackground.frame, nil, "DetailsTimeAttackSetNoteButton"..index, "SetNoteButton"..index, 12, 12, WriteNoteStart, index, index, "Interface\\Buttons\\UI-GuildButton-PublicNote-Disabled") + LabelSetnoteButton:SetPoint ("left", LabelSaveButton.button, "right", -2, 0) LabelSetnoteButton.tooltip = Loc ["STRING_SETNOTE"] + LabelBoxObject.rownumber = RowNumber LabelBoxObject.text = LabelText LabelBoxObject.background = LabelBackground LabelBoxObject.remove = LabelRemoveButton @@ -523,7 +540,7 @@ local function CreatePluginFrames (data) end elseif (self.NowShowing == 2) then - for index, AttemptTable in ipairs (TimeAttack.data.history) do + for index, AttemptTable in ipairs (TimeAttack.db.history) do local thisLabel = self.LabelsCreated [index] if (not thisLabel) then thisLabel = self:CreateNewLabel (index) @@ -531,7 +548,7 @@ local function CreatePluginFrames (data) thisLabel:RefreshLabel (AttemptTable, true) end - for amt = #TimeAttack.data.history+1, #self.LabelsCreated do + for amt = #TimeAttack.db.history+1, #self.LabelsCreated do local thisLabel = self.LabelsCreated [amt] thisLabel.background:Hide() end @@ -660,21 +677,64 @@ local function CreatePluginFrames (data) end +function TimeAttack:CheckTimeAttackTutorial() + --TimeAttack:SetTutorialCVar ("TIME_ATTACK_TUTORIAL1", nil) + if (not TimeAttack:GetTutorialCVar ("TIME_ATTACK_TUTORIAL1")) then + TimeAttackFrame:RegisterEvent ("PLAYER_TARGET_CHANGED") + end +end + +function TimeAttack:CheckTargetForTutorial() + local guid = UnitGUID ("target") + if (guid) then + local mobid = tonumber (guid:sub (6, 10), 16) + if (mobid == 31144 or mobid == 32666 or mobid == 31146 or mobid == 32667 or mobid == 67127 or mobid == 46647) then + TimeAttack:SetTutorialCVar ("TIME_ATTACK_TUTORIAL1", true) + TimeAttackFrame:UnregisterEvent ("PLAYER_TARGET_CHANGED") + TimeAttack:ShowTargetTutorial() + end + end +end + +function TimeAttack:ShowTargetTutorial() + if (TimeAttack:GetFreeInstancesAmount() > 0) then + local func = function() + local newinstance = TimeAttack:CreateInstance (true) --> force create a new one + if (newinstance) then + newinstance:SetMode (DETAILS_MODE_SOLO) + TimeAttack.SoloTables:switch (nil, "DETAILS_PLUGIN_TIME_ATTACK") + end + end + TimeAttack:GetFramework():ShowTutorialAlertFrame ("Open Time Attack", "plugin for measure dps", func) + end +end + function TimeAttack:OnEvent (_, event, ...) - if (event == "ADDON_LOADED") then + if (event == "PLAYER_TARGET_CHANGED") then + TimeAttack:CheckTargetForTutorial() + + elseif (event == "ADDON_LOADED") then local AddonName = select (1, ...) if (AddonName == "Details_TimeAttack") then if (_G._detalhes) then - - --> create widgets - CreatePluginFrames (_detalhes_databaseTimeAttack) local MINIMAL_DETAILS_VERSION_REQUIRED = 1 + local default_settings = { + time = 60, + dps = 0, + history = {}, + } + + if (_detalhes_databaseTimeAttack) then + default_settings.history = _detalhes_databaseTimeAttack.history + _detalhes_databaseTimeAttack = nil + end + --> Install - local install = _G._detalhes:InstallPlugin ("SOLO", Loc ["STRING_PLUGIN_NAME"], "Interface\\Icons\\SPELL_HOLY_BORROWEDTIME", TimeAttack, "DETAILS_PLUGIN_TIME_ATTACK", MINIMAL_DETAILS_VERSION_REQUIRED, "Details! Team", "v1.04") + local install, saveddata = _G._detalhes:InstallPlugin ("SOLO", Loc ["STRING_PLUGIN_NAME"], "Interface\\Icons\\SPELL_HOLY_BORROWEDTIME", TimeAttack, "DETAILS_PLUGIN_TIME_ATTACK", MINIMAL_DETAILS_VERSION_REQUIRED, "Details! Team", "v1.04", default_settings) if (type (install) == "table" and install.error) then print (install.errortext) return @@ -683,10 +743,10 @@ function TimeAttack:OnEvent (_, event, ...) --> Register needed events _G._detalhes:RegisterEvent (TimeAttack, "COMBAT_PLAYER_ENTER") + --> create widgets + CreatePluginFrames() + end end - - elseif (event == "PLAYER_LOGOUT") then - _detalhes_databaseTimeAttack = TimeAttack.data end end diff --git a/plugins/Details_TinyThreat/Details_TinyThreat.lua b/plugins/Details_TinyThreat/Details_TinyThreat.lua index 82ce66ad..da846672 100644 --- a/plugins/Details_TinyThreat/Details_TinyThreat.lua +++ b/plugins/Details_TinyThreat/Details_TinyThreat.lua @@ -378,14 +378,18 @@ local function CreatePluginFrames (data) thisRow:SetRightText (ThreatMeter:ToK2 (threat_actor [6]) .. " (" .. _cstr ("%.1f", pct) .. "%)") thisRow:SetValue (pct) - if (index == 2) then - thisRow:SetColor (pct*0.01, _math_abs (pct-100)*0.01, 0, 1) + if (ThreatMeter.options.useplayercolor and threat_actor [1] == player) then + thisRow:SetColor (_unpack (ThreatMeter.options.playercolor)) else - thisRow:SetColor (pct*0.01, _math_abs (pct-100)*0.01, 0, .3) - if (pct >= 50) then - thisRow:SetColor ( 1, _math_abs (pct - 100)/100, 0, 1) + if (index == 2) then + thisRow:SetColor (pct*0.01, _math_abs (pct-100)*0.01, 0, 1) else - thisRow:SetColor (pct/100, 1, 0, 1) + thisRow:SetColor (pct*0.01, _math_abs (pct-100)*0.01, 0, .3) + if (pct >= 50) then + thisRow:SetColor ( 1, _math_abs (pct - 100)/100, 0, 1) + else + thisRow:SetColor (pct/100, 1, 0, 1) + end end end @@ -412,7 +416,11 @@ local function CreatePluginFrames (data) thisRow._icon:SetTexCoord (_unpack (RoleIconCoord [role])) thisRow:SetRightText (ThreatMeter:ToK2 (threat_actor [6]) .. " (" .. _cstr ("%.1f", threat_actor [2]) .. "%)") thisRow:SetValue (threat_actor [2]) - thisRow:SetColor (threat_actor [2]*0.01, _math_abs (threat_actor [2]-100)*0.01, 0, .3) + if (ThreatMeter.options.useplayercolor) then + thisRow:SetColor (_unpack (ThreatMeter.options.playercolor)) + else + thisRow:SetColor (threat_actor [2]*0.01, _math_abs (threat_actor [2]-100)*0.01, 0, .3) + end end end end @@ -535,6 +543,23 @@ local build_options_panel = function() name = "Update Speed", usedecimals = true, }, + { + type = "toggle", + get = function() return ThreatMeter.saveddata.useplayercolor end, + set = function (self, fixedparam, value) ThreatMeter.saveddata.useplayercolor = value end, + desc = "When enabled, your bar get the following color.", + name = "Player Color Enabled" + }, + { + type = "color", + get = function() return ThreatMeter.saveddata.playercolor end, + set = function (self, r, g, b, a) + local current = ThreatMeter.saveddata.playercolor + current[1], current[2], current[3], current[4] = r, g, b, a + end, + desc = "If Player Color is enabled, your bar have this color.", + name = "Color" + }, } _detalhes.gump:BuildMenu (options_frame, menu, 15, -65, 260) @@ -598,6 +623,8 @@ function ThreatMeter:OnEvent (_, event, ...) ThreatMeter.saveddata.updatespeed = ThreatMeter.saveddata.updatespeed or 1 ThreatMeter.saveddata.animate = ThreatMeter.saveddata.animate or false ThreatMeter.saveddata.showamount = ThreatMeter.saveddata.showamount or false + ThreatMeter.saveddata.useplayercolor = ThreatMeter.saveddata.useplayercolor or false + ThreatMeter.saveddata.playercolor = ThreatMeter.saveddata.playercolor or {1, 1, 1} ThreatMeter.options = ThreatMeter.saveddata @@ -631,17 +658,12 @@ function ThreatMeter:OnEvent (_, event, ...) elseif (command == Loc ["STRING_SLASH_AMOUNT"]) then else - ThreatMeter:Msg (Loc ["STRING_COMMAND_LIST"]) print ("|cffffaeae/tinythreat " .. Loc ["STRING_SLASH_SPEED"] .. "|r: " .. Loc ["STRING_SLASH_SPEED_DESC"]) end - - end - ThreatMeter.initialized = true - end end diff --git a/startup.lua b/startup.lua index a5558bed..1680b51c 100644 --- a/startup.lua +++ b/startup.lua @@ -432,6 +432,6 @@ function _G._detalhes:Start() if (self.is_first_run) then _detalhes:OpenWelcomeWindow() end - + end