From 79f4ba970aa95c12441e45a2f2c2b0ea91218b8a Mon Sep 17 00:00:00 2001 From: tercio Date: Sat, 27 Sep 2014 16:20:45 -0300 Subject: [PATCH] - Minimalistic skin is now the ols minimalistic v2. - Minimalistic v2 got a new texture, little more darker. - Few tweaks to make more easy making groups of windows. - Bookmark now accepts more than two columns. --- Libs/LibGraph-2.0/LibGraph-2.0.lua | 10 +- Libs/NickTag-1.0/NickTag-1.0.lua | 4 +- boot.lua | 25 ++-- functions/profiles.lua | 2 +- functions/skins.lua | 146 ++++++++++----------- functions/slash.lua | 13 ++ gumps/janela_options.lua | 2 +- gumps/janela_principal.lua | 196 +++++++++++++++++++++++++---- gumps/switch.lua | 66 +++++++++- images/icons.tga | Bin 535433 -> 535849 bytes images/skins/classic_skin.tga | Bin 134812 -> 173072 bytes images/skins/classic_skin_v1.tga | Bin 0 -> 134812 bytes 12 files changed, 352 insertions(+), 112 deletions(-) create mode 100644 images/skins/classic_skin_v1.tga diff --git a/Libs/LibGraph-2.0/LibGraph-2.0.lua b/Libs/LibGraph-2.0/LibGraph-2.0.lua index 22f1a8cb..a4ee372f 100644 --- a/Libs/LibGraph-2.0/LibGraph-2.0.lua +++ b/Libs/LibGraph-2.0/LibGraph-2.0.lua @@ -662,7 +662,7 @@ end --Functions for Line Graph Data ------------------------------------------------------------------------------- -function GraphFunctions:AddDataSeries(points, color, n2) +function GraphFunctions:AddDataSeries(points, color, n2, linetexture) local data --Make sure there is data points if not points then @@ -680,7 +680,13 @@ function GraphFunctions:AddDataSeries(points, color, n2) end end - tinsert(self.Data,{Points = data; Color = color}) + if linetexture then + if not linetexture:find ("\\") and not linetexture:find ("//") then + linetexture = TextureDirectory..linetexture + end + end + + tinsert(self.Data,{Points = data; Color = color; LineTexture=linetexture}) self.NeedsUpdate = true end diff --git a/Libs/NickTag-1.0/NickTag-1.0.lua b/Libs/NickTag-1.0/NickTag-1.0.lua index 5db4402c..83c372bc 100644 --- a/Libs/NickTag-1.0/NickTag-1.0.lua +++ b/Libs/NickTag-1.0/NickTag-1.0.lua @@ -933,7 +933,8 @@ end do local avatar_pick_frame = CreateFrame ("frame", "AvatarPickFrame", UIParent) avatar_pick_frame:SetFrameStrata ("DIALOG") - avatar_pick_frame:SetBackdrop ({bgFile = [[Interface\DialogFrame\UI-DialogBox-Background]], edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]], tile = true, tileSize = 32, edgeSize = 32, insets = {left = 11, right = 12, top = 12, bottom = 11}}) + avatar_pick_frame:SetBackdrop ({bgFile = [[Interface\FrameGeneral\UI-Background-Marble]], edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]], tile = true, tileSize = 256, edgeSize = 32, insets = {left = 11, right = 12, top = 12, bottom = 11}}) + avatar_pick_frame:SetBackdropColor (.3, .3, .3, .9) avatar_pick_frame:SetWidth (460) avatar_pick_frame:SetHeight (240) @@ -943,7 +944,6 @@ do avatar_pick_frame.selected_texcoord = {0, 1, 0, 1} avatar_pick_frame:SetPoint ("center", UIParent, "center", 200, 0) - --- local avatar_texture = avatar_pick_frame:CreateTexture ("AvatarPickFrameAvatarPreview", "overlay") avatar_texture:SetPoint ("topleft", avatar_pick_frame, "topleft", 167, -10) diff --git a/boot.lua b/boot.lua index 72e08b8d..dc33bc81 100644 --- a/boot.lua +++ b/boot.lua @@ -3,8 +3,8 @@ _ = nil _detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0") - _detalhes.build_counter = 79 --it's 79 for release - _detalhes.userversion = "v1.26.3" + _detalhes.build_counter = 83 --it's 83 for release + _detalhes.userversion = "v1.27.0" _detalhes.realversion = 28 _detalhes.version = _detalhes.userversion .. " (core " .. _detalhes.realversion .. ")" @@ -18,18 +18,16 @@ do local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" ) --[[ -|cFFFFFF00v1.26.1 (|cFFFFCC00Set 12, 2014|r|cFFFFFF00)|r:\n\n -|cFFFFFF00-|r Added tutorial and a config panel for bookmarks.\n\n -|cFFFFFF00-|r Added option for choose the format type of data broker's text.\n\n -|cFFFFFF00-|r Changed few icons on damage done tooltip.\n\n -|cFFFFFF00-|r Fixed the class color on texts for healing attribute.\n\n -|cFFFFFF00-|r Added options for change the tooltip border's size, color and texture.\n\n -|cFFFFFF00-|r Added buttons for test interrupt and cooldown announcers under raid tools section.\n\n - +|cFFFFFF00v1.27.0 (|cFFFFCC00Set 27, 2014|r|cFFFFFF00)|r:\n\n +|cFFFFFF00-|r Minimalistic skin is now the ols minimalistic v2.\n\n +|cFFFFFF00-|r Minimalistic v2 got a new texture, little more darker.\n\n +|cFFFFFF00-|r Few tweaks to make more easy making groups of windows.\n\n +|cFFFFFF00-|r Bookmark now accepts more than two columns.\n\n +|cFFFFFF00-|r Bookmark now accepts more than two columns.\n\n --]] - Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.26.3 (|cFFFFCC00Set 18, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Changed the way to set the broker text to be more customizable.\n\n|cFFFFFF00-|r Fixed the problem with custom display report.\n\n|cFFFFFF00-|r Added tutorial and a config panel for bookmarks.\n\n|cFFFFFF00-|r Added option for choose the format type of data broker's text.\n\n|cFFFFFF00-|r Changed few icons on damage done tooltip.\n\n|cFFFFFF00-|r Fixed the class color on texts for healing attribute.\n\n|cFFFFFF00-|r Added options for change the tooltip border's size, color and texture.\n\n|cFFFFFF00-|r Added buttons for test interrupt and cooldown announcers under raid tools section.\n\n|cFFFFFF00v1.25.1 (|cFFFFCC00Set 09, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added buttons to edit the total and percentage code for custom displays.\n\n|cFFFFFF00-|r Fixed a problem while report custom displays.\n\n|cFFFFFF00-|r Added Acitivity Time for Damage + Healing, tooltip show the activity separately.\n\n|cFFFFFF00-|r Major changes on Encounter Details Plugin making more easy to use.\n\n|cFFFFFF00-|r Removed Spell Details Plugin.\n\n|cFFFFFF00-|r Added new plugin for Solo Mode: Dps Tuning.\n\n|cFFFFFF00v1.24.5 (|cFFFFCC00Ago 31, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added Raid Tools bracket on Options Panel.\n\n|cFFFFFF00-|r Added interrupt, cooldown and death announcers (raid tools).\n\n|cFFFFFF00-|r Added pre potion recognition, showing after the encounter on the chat only for you (raid tools).\n\n|cFFFFFF00-|r Added a Boss Emotes tab for Encounter Details plugin |cFF999999(thanks Bloodforce-Azralon)|r.\n\n|cFFFFFF00-|r Rework on Activity Time, now it is tuned to closely match warcraftlogs |cFF999999(thanks www.warcraftlogs.com)|r.\n\n|cFFFFFF00-|r Added two new customs: Damage Activity Time and Healing Activity Time.\n\n|cFFFFFF00-|r Time Attack Plugin now have six fixed time amount options for test your dps on training dummies.\n\n|cFFFFFF00-|r Time Attack Plugin can now also share results on your realm, between players with the same class.\n\n|cFFFFFF00v1.23.6 (|cFFFFCC00Ago 24, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added 2 new bar textures and 6 new fonts.\n\n|cFFFFFF00-|r Swapped left and middle button for enemy bars, now left button open damage taken and middle button player detail window.\n\n|cFFFFFF00-|r Added new skin: Minimalistic v2.\n\n|cFFFFFF00-|r Minimalistic v2 is now the default skin.\n\n|cFFFFFF00-|r Few changes on both icon packs with transparency.\n\n|cFFFFFF00-|r Replaced the slash command '/d' with '/de' |cFF999999(thanks @kamuul-mmochampion forum)|r.\n\n|cFFFFFF00-|r Added custom spells for Atonement, Power Word: Solance and Life Bloom |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00v1.22.4 (|cFFFFCC00Ago 15, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added new skin: ElvUI Frame Style (Black White).\n\n|cFFFFFF00-|r Align With Right Chat Window option now check if the window have statusbar enabled.\n\n|cFFFFFF00-|r Few improvements on report for Deaths and Spells over Player Detail Window.\n\n|cFFFFFF00-|r Added option to disable reset button (reset only using its tooltip menu).\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." + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.27.0 (|cFFFFCC00Set 27, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Minimalistic skin is now the old minimalistic v2.\n\n|cFFFFFF00-|r Minimalistic v2 got a new texture, little more darker.\n\n|cFFFFFF00-|r Few tweaks to make more easy making groups of windows.\n\n|cFFFFFF00-|r Bookmark now accepts more than two columns.\n\n|cFFFFFF00v1.26.3 (|cFFFFCC00Set 18, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Changed the way to set the broker text to be more customizable.\n\n|cFFFFFF00-|r Fixed the problem with custom display report.\n\n|cFFFFFF00-|r Added tutorial and a config panel for bookmarks.\n\n|cFFFFFF00-|r Added option for choose the format type of data broker's text.\n\n|cFFFFFF00-|r Changed few icons on damage done tooltip.\n\n|cFFFFFF00-|r Fixed the class color on texts for healing attribute.\n\n|cFFFFFF00-|r Added options for change the tooltip border's size, color and texture.\n\n|cFFFFFF00-|r Added buttons for test interrupt and cooldown announcers under raid tools section.\n\n|cFFFFFF00v1.25.1 (|cFFFFCC00Set 09, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added buttons to edit the total and percentage code for custom displays.\n\n|cFFFFFF00-|r Fixed a problem while report custom displays.\n\n|cFFFFFF00-|r Added Acitivity Time for Damage + Healing, tooltip show the activity separately.\n\n|cFFFFFF00-|r Major changes on Encounter Details Plugin making more easy to use.\n\n|cFFFFFF00-|r Removed Spell Details Plugin.\n\n|cFFFFFF00-|r Added new plugin for Solo Mode: Dps Tuning.\n\n|cFFFFFF00v1.24.5 (|cFFFFCC00Ago 31, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added Raid Tools bracket on Options Panel.\n\n|cFFFFFF00-|r Added interrupt, cooldown and death announcers (raid tools).\n\n|cFFFFFF00-|r Added pre potion recognition, showing after the encounter on the chat only for you (raid tools).\n\n|cFFFFFF00-|r Added a Boss Emotes tab for Encounter Details plugin |cFF999999(thanks Bloodforce-Azralon)|r.\n\n|cFFFFFF00-|r Rework on Activity Time, now it is tuned to closely match warcraftlogs |cFF999999(thanks www.warcraftlogs.com)|r.\n\n|cFFFFFF00-|r Added two new customs: Damage Activity Time and Healing Activity Time.\n\n|cFFFFFF00-|r Time Attack Plugin now have six fixed time amount options for test your dps on training dummies.\n\n|cFFFFFF00-|r Time Attack Plugin can now also share results on your realm, between players with the same class.\n\n|cFFFFFF00v1.23.6 (|cFFFFCC00Ago 24, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added 2 new bar textures and 6 new fonts.\n\n|cFFFFFF00-|r Swapped left and middle button for enemy bars, now left button open damage taken and middle button player detail window.\n\n|cFFFFFF00-|r Added new skin: Minimalistic v2.\n\n|cFFFFFF00-|r Minimalistic v2 is now the default skin.\n\n|cFFFFFF00-|r Few changes on both icon packs with transparency.\n\n|cFFFFFF00-|r Replaced the slash command '/d' with '/de' |cFF999999(thanks @kamuul-mmochampion forum)|r.\n\n|cFFFFFF00-|r Added custom spells for Atonement, Power Word: Solance and Life Bloom |cFF999999(thanks @skmzarn-mmochampion forum)|r.\n\n|cFFFFFF00v1.22.4 (|cFFFFCC00Ago 15, 2014|r|cFFFFFF00)|r:\n\n|cFFFFFF00-|r Added new skin: ElvUI Frame Style (Black White).\n\n|cFFFFFF00-|r Align With Right Chat Window option now check if the window have statusbar enabled.\n\n|cFFFFFF00-|r Few improvements on report for Deaths and Spells over Player Detail Window.\n\n|cFFFFFF00-|r Added option to disable reset button (reset only using its tooltip menu).\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." Loc ["STRING_DETAILS1"] = "|cffffaeaeDetails!:|r " --> startup @@ -256,7 +254,10 @@ do _detalhes.listener:SetFrameStrata ("LOW") _detalhes.listener:SetFrameLevel (9) _detalhes.listener.FrameTime = 0 - + + _detalhes.overlay_frame = _CreateFrame ("Frame", nil, _UIParent) + _detalhes.overlay_frame:SetFrameStrata ("TOOLTIP") + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> functions diff --git a/functions/profiles.lua b/functions/profiles.lua index 2633cbc4..7df8d2cd 100644 --- a/functions/profiles.lua +++ b/functions/profiles.lua @@ -711,7 +711,7 @@ local default_profile = { --> window size max_window_size = {width = 480, height = 450}, - new_window_size = {width = 300, height = 95}, + new_window_size = {width = 320, height = 130}, window_clamp = {-8, 0, 21, -14}, disable_window_groups = false, disable_reset_button = false, diff --git a/functions/skins.lua b/functions/skins.lua index 35ead86f..731c9105 100644 --- a/functions/skins.lua +++ b/functions/skins.lua @@ -52,7 +52,7 @@ local _ author = "Details!", version = "1.0", site = "unknown", - desc = "default skin for Details!", + desc = "This was the first skin made for Details!, inspired in the standart wow intercace", can_change_alpha_head = false, icon_anchor_main = {-1, 1}, @@ -120,76 +120,11 @@ local _ }) _detalhes:InstallSkin ("Minimalistic", { - file = [[Interface\AddOns\Details\images\skins\classic_skin]], + file = [[Interface\AddOns\Details\images\skins\classic_skin_v1]], author = "Details!", version = "1.0", site = "unknown", - desc = "classic skin.", - - micro_frames = {color = {1, 1, 1, 1}, font = "Friz Quadrata TT", size = 10}, - - can_change_alpha_head = true, - icon_anchor_main = {-1, -5}, - icon_anchor_plugins = {-7, -13}, - icon_plugins_size = {19, 18}, - - --anchors: - icon_point_anchor = {-37, 0}, - left_corner_anchor = {-107, 0}, - right_corner_anchor = {96, 0}, - - icon_point_anchor_bottom = {-37, 12}, - left_corner_anchor_bottom = {-107, 0}, - right_corner_anchor_bottom = {96, 0}, - - --overwrites - instance_cprops = { - hide_icon = true, - - menu_anchor = {-60, 0, side = 2}, - menu_anchor_down = {-55, -1}, - menu2_anchor = {32, 3}, - menu2_anchor_down = {32, 2}, - - menu_icons_size = 0.8, - plugins_grow_direction = 1, - - instancebutton_config = {size = {20, 16}, anchor = {5, 0}, textcolor = {.8, .6, .0, 0.8}, textsize = 11, textfont = "Friz Quadrata TT", highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]]}, - resetbutton_config = {size = {13, 13}, anchor = {2, 0}, normal_texture = [[Interface\Addons\Details\Images\reset_button2]], highlight_texture = [[Interface\Addons\Details\Images\reset_button2]]}, - closebutton_config = {size = {19, 19}, alpha = 0.8}, - - show_sidebars = false, - show_statusbar = false, - color = {.3, .3, .3, 0.81}, - bg_alpha = 0.2, - - row_info = { - texture = "Blizzard Character Skills Bar", - font_face = "Arial Narrow", - texture_background_class_color = false, - texture_background = "Details Serenity", - fixed_texture_background_color = {0, 0, 0, 0.3186} - }, - attribute_text = {enabled = true, side = 1, text_size = 11, anchor = {-18, 4}, text_color = {1, 1, 1, 1}, text_face = "Arial Narrow"}, - }, - - callback = function (skin, instance, just_updating) - --none - end, - - skin_options = { - {type = "button", name = Loc ["STRING_OPTIONS_SKIN_RESET_TOOLTIP"], func = reset_tooltip, desc = Loc ["STRING_OPTIONS_SKIN_RESET_TOOLTIP_DESC"]}, - {type = "button", name = Loc ["STRING_OPTIONS_SKIN_ELVUI_BUTTON3"], func = set_tooltip_elvui2, desc = Loc ["STRING_OPTIONS_SKIN_ELVUI_BUTTON3_DESC"]}, - } - - }) - - _detalhes:InstallSkin ("Minimalistic v2", { - file = [[Interface\AddOns\Details\images\skins\classic_skin]], - author = "Details!", - version = "1.0", - site = "unknown", - desc = "classic skin.", + desc = "Simple skin with soft gray color and half transparent frames.", --\n micro_frames = {color = {1, 1, 1, 1}, font = "Friz Quadrata TT", size = 10}, @@ -250,13 +185,80 @@ local _ } }) + + _detalhes:InstallSkin ("Minimalistic v2", { + file = [[Interface\AddOns\Details\images\skins\classic_skin]], + author = "Details!", + version = "1.0", + site = "unknown", + desc = "Same as the first Minimalistic, but this one is more darker and less transparent.", + + micro_frames = {color = {1, 1, 1, 1}, font = "Friz Quadrata TT", size = 10}, + + can_change_alpha_head = true, + icon_anchor_main = {-1, -5}, + icon_anchor_plugins = {-7, -13}, + icon_plugins_size = {19, 18}, + + --anchors: + icon_point_anchor = {-37, 0}, + left_corner_anchor = {-107, 0}, + right_corner_anchor = {96, 0}, + + icon_point_anchor_bottom = {-37, 12}, + left_corner_anchor_bottom = {-107, 0}, + right_corner_anchor_bottom = {96, 0}, + + --overwrites + instance_cprops = { + hide_icon = true, + + menu_anchor = {-60, 1, side = 2}, + menu_anchor_down = {-55, -1}, + menu2_anchor = {32, 4}, + menu2_anchor_down = {32, 2}, + + menu_icons_size = 0.8, + plugins_grow_direction = 1, + + instancebutton_config = {size = {20, 16}, anchor = {5, 0}, textcolor = {.8, .6, .0, 0.8}, textsize = 10, textfont = "Friz Quadrata TT", highlight_texture = [[Interface\Buttons\UI-Panel-MinimizeButton-Highlight]]}, + resetbutton_config = {size = {13, 13}, anchor = {2, 0}, normal_texture = [[Interface\Addons\Details\Images\reset_button2]], highlight_texture = [[Interface\Addons\Details\Images\reset_button2]]}, + closebutton_config = {size = {19, 19}, alpha = 0.8}, + + show_sidebars = false, + show_statusbar = false, + color = {0.3058, 0.3058, 0.3058, 0.8838}, --0.9350 + bg_alpha = 0.3181, --0.4399 + + row_info = { + texture = "BantoBar", --"Details Serenity" + font_face = "Arial Narrow", + texture_background_class_color = false, + texture_background = "Details Serenity", + fixed_texture_background_color = {0, 0, 0, 0.3186}, + icon_file = [[Interface\AddOns\Details\images\classes_small_alpha]], + start_after_icon = false, + }, + attribute_text = {enabled = true, side = 1, text_size = 11, anchor = {-18, 4}, text_color = {1, 1, 1, 1}, text_face = "Arial Narrow"}, + }, + + callback = function (skin, instance, just_updating) + --none + end, + + skin_options = { + {type = "button", name = Loc ["STRING_OPTIONS_SKIN_RESET_TOOLTIP"], func = reset_tooltip, desc = Loc ["STRING_OPTIONS_SKIN_RESET_TOOLTIP_DESC"]}, + {type = "button", name = Loc ["STRING_OPTIONS_SKIN_ELVUI_BUTTON3"], func = set_tooltip_elvui2, desc = Loc ["STRING_OPTIONS_SKIN_ELVUI_BUTTON3_DESC"]}, + } + + }) _detalhes:InstallSkin ("Flat Color", { file = [[Interface\AddOns\Details\images\skins\flat_skin]], author = "Details!", version = "1.0", site = "unknown", - desc = "a simple skin with opaque colors.", + desc = "Pure white with opaque colors makes this skin very different and peculiar.", micro_frames = {color = {1, 1, 1, 1}, font = "Friz Quadrata TT", size = 10, left = "DETAILS_STATUSBAR_PLUGIN_PATTRIBUTE"}, @@ -325,7 +327,7 @@ local _ author = "Details!", version = "1.0", site = "unknown", - desc = "skin with uniform gray color.", + desc = "Similar to minimalistic skin, but, this one have no transparency and also comes with the statusbar enabled.", --general can_change_alpha_head = true, @@ -588,7 +590,7 @@ local _ author = "Details!", version = "1.0", site = "unknown", - desc = "skin based on ElvUI addon.", + desc = "This skin is based on ElvUI's addons, relying with black and transparent frames.", --general can_change_alpha_head = true, @@ -687,7 +689,7 @@ local _ author = "Details!", version = "1.0", site = "unknown", - desc = "skin based on ElvUI addon.", + desc = "This skin is based on ElvUI's addons, with black and white frames and bars.", --general can_change_alpha_head = true, diff --git a/functions/slash.lua b/functions/slash.lua index 1bfcdf41..deae5ca1 100644 --- a/functions/slash.lua +++ b/functions/slash.lua @@ -79,6 +79,19 @@ function SlashCmdList.DETAILS (msg, editbox) -------- debug --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + elseif (msg == "owner2") then + + local tip = CreateFrame('GameTooltip', 'GuardianOwnerTooltip', nil, 'GameTooltipTemplate') + function GetGuardianOwner(guid) + tip:SetOwner(WorldFrame, 'ANCHOR_NONE') + tip:SetHyperlink('unit:' .. guid or '') + local text = GuardianOwnerTooltipTextLeft2 + --return strmatch(text and text:GetText() or '', "^([^%s']+)'") + return text:GetText() + end + + print (GetGuardianOwner(UnitGUID ("target"))) + elseif (msg == "chat") then diff --git a/gumps/janela_options.lua b/gumps/janela_options.lua index e0ebcf1a..348a9888 100644 --- a/gumps/janela_options.lua +++ b/gumps/janela_options.lua @@ -4104,7 +4104,7 @@ function window:CreateFrame3() local buildSkinMenu = function() local skinOptions = {} for skin_name, skin_table in pairs (_detalhes.skins) do - local desc = "Author: |cFFFFFFFF" .. skin_table.author .. "|r\nVersion: |cFFFFFFFF" .. skin_table.version .. "|r\nSite: |cFFFFFFFF" .. skin_table.site .. "|r\nDesc: |cFFFFFFFF" .. skin_table.desc .. "|r" + local desc = "Author: |cFFFFFFFF" .. skin_table.author .. "|r\nVersion: |cFFFFFFFF" .. skin_table.version .. "|r\nSite: |cFFFFFFFF" .. skin_table.site .. "|r\n\nDesc: |cFFFFFFFF" .. skin_table.desc .. "|r" skinOptions [#skinOptions+1] = {value = skin_name, label = skin_name, onclick = onSelectSkin, icon = "Interface\\GossipFrame\\TabardGossipIcon", desc = desc} end return skinOptions diff --git a/gumps/janela_principal.lua b/gumps/janela_principal.lua index dda0e33f..fc3d85bf 100644 --- a/gumps/janela_principal.lua +++ b/gumps/janela_principal.lua @@ -376,7 +376,7 @@ local function VPL (instancia, esta_instancia) --> conferir esquerda if (instancia.ponto4.x < esta_instancia.ponto1.x) then --> a janela esta a esquerda if (instancia.ponto4.x+20 > esta_instancia.ponto1.x) then --> a janela esta a menos de 20 pixels de distância - if (instancia.ponto4.y < esta_instancia.ponto1.y + 20 and instancia.ponto4.y > esta_instancia.ponto1.y - 20) then --> a janela esta a +20 ou -20 pixels de distância na vertical + if (instancia.ponto4.y < esta_instancia.ponto1.y + 100 and instancia.ponto4.y > esta_instancia.ponto1.y - 100) then --> a janela esta a +20 ou -20 pixels de distância na vertical return 1 end end @@ -387,7 +387,7 @@ end local function VPB (instancia, esta_instancia) --> conferir baixo if (instancia.ponto1.y+20 < esta_instancia.ponto2.y-16) then --> a janela esta em baixo - if (instancia.ponto1.x > esta_instancia.ponto2.x-20 and instancia.ponto1.x < esta_instancia.ponto2.x+20) then --> a janela esta a 20 pixels de distância para a esquerda ou para a direita + if (instancia.ponto1.x > esta_instancia.ponto2.x-100 and instancia.ponto1.x < esta_instancia.ponto2.x+100) then --> a janela esta a 20 pixels de distância para a esquerda ou para a direita if (instancia.ponto1.y+20 > esta_instancia.ponto2.y-16-20) then --> esta a 20 pixels de distância return 2 end @@ -400,7 +400,7 @@ local function VPR (instancia, esta_instancia) --> conferir lateral direita if (instancia.ponto2.x > esta_instancia.ponto3.x) then --> a janela esta a direita if (instancia.ponto2.x-20 < esta_instancia.ponto3.x) then --> a janela esta a menos de 20 pixels de distância - if (instancia.ponto2.y < esta_instancia.ponto3.y + 20 and instancia.ponto2.y > esta_instancia.ponto3.y - 20) then --> a janela esta a +20 ou -20 pixels de distância na vertical + if (instancia.ponto2.y < esta_instancia.ponto3.y + 100 and instancia.ponto2.y > esta_instancia.ponto3.y - 100) then --> a janela esta a +20 ou -20 pixels de distância na vertical return 3 end end @@ -411,7 +411,7 @@ end local function VPT (instancia, esta_instancia) --> conferir cima if (instancia.ponto3.y-16 > esta_instancia.ponto4.y+20) then --> a janela esta em cima - if (instancia.ponto3.x > esta_instancia.ponto4.x-20 and instancia.ponto3.x < esta_instancia.ponto4.x+20) then --> a janela esta a 20 pixels de distância para a esquerda ou para a direita + if (instancia.ponto3.x > esta_instancia.ponto4.x-100 and instancia.ponto3.x < esta_instancia.ponto4.x+100) then --> a janela esta a 20 pixels de distância para a esquerda ou para a direita if (esta_instancia.ponto4.y+20+20 > instancia.ponto3.y-16) then return 4 end @@ -420,9 +420,74 @@ local function VPT (instancia, esta_instancia) return nil end -local tempo_movendo, precisa_ativar, instancia_alvo, tempo_fades, nao_anexados, flash_bounce +local color_red = {1, 0.2, 0.2} +local color_green = {0.2, 1, 0.2} + +local update_line = function (self, target_frame) + + --> based on weak auras frame movement code + local selfX, selfY = target_frame:GetCenter() + local anchorX, anchorY = self:GetCenter() + selfX, selfY = selfX or 0, selfY or 0 + anchorX, anchorY = anchorX or 0, anchorY or 0 + + local dX = selfX - anchorX + local dY = selfY - anchorY + local distance = sqrt (dX^2 + dY^2) + + local angle = atan2(dY, dX) + local numInterim = floor(distance/40) + + local guide_balls = _detalhes.guide_balls + if (not guide_balls) then + _detalhes.guide_balls = {} + guide_balls = _detalhes.guide_balls + end + + for index, ball in ipairs (guide_balls) do + ball:Hide() + end + + self.instance:AtualizaPontos() + target_frame.instance:AtualizaPontos() + + local color = color_red + local _R, _T, _L, _B = VPL (self.instance, target_frame.instance), VPB (self.instance, target_frame.instance), VPR (self.instance, target_frame.instance), VPT (self.instance, target_frame.instance) + if (_R or _T or _L or _B) then + color = color_green + end + + for i = 0, numInterim do + local x = (distance - (i * 40)) * cos (angle) + local y = (distance - (i * 40)) * sin (angle) + + local ball = guide_balls [i] + if (not ball) then + ball = _detalhes.overlay_frame:CreateTexture (nil, "Overlay") + ball:SetTexture ([[Interface\AddOns\Details\images\icons]]) + ball:SetSize (16, 16) + ball:SetAlpha (0.3) + ball:SetTexCoord (410/512, 426/512, 2/512, 18/512) + tinsert (guide_balls, ball) + end + + ball:ClearAllPoints() + ball:SetPoint("CENTER", self, "CENTER", x, y) --baseframse center + ball:Show() + ball:SetVertexColor (unpack (color)) + end + +end + +local tempo_movendo, precisa_ativar, instancia_alvo, tempo_fades, nao_anexados, flash_bounce, start_draw_lines local movement_onupdate = function (self, elapsed) + if (start_draw_lines and start_draw_lines > 0.95) then + update_line (self, instancia_alvo.baseframe) + elseif (start_draw_lines) then + start_draw_lines = start_draw_lines + elapsed + end + if (tempo_movendo and tempo_movendo < 0) then if (precisa_ativar) then --> se a instância estiver fechada @@ -444,15 +509,96 @@ local movement_onupdate = function (self, elapsed) for lado, livre in _ipairs (nao_anexados) do if (livre) then if (lado == 1) then + + local texture = instancia_alvo.h_esquerda.texture + texture:ClearAllPoints() + + if (instancia_alvo.toolbar_side == 1) then + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 20) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, -14) + else + texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 20) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, 0) + end + else + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 0) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, -34) + else + texture:SetPoint ("topright", instancia_alvo.baseframe, "topleft", 0, 0) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "bottomleft", 0, -20) + end + end + instancia_alvo.h_esquerda:Flash (1, 1, 2.0, false, 0, 0) tem_livre = true + elseif (lado == 2) then + + local texture = instancia_alvo.h_baixo.texture + texture:ClearAllPoints() + + if (instancia_alvo.toolbar_side == 1) then + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, -14) + texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, -14) + else + texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, 0) + texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, 0) + end + else + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, -34) + texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, -34) + else + texture:SetPoint ("topleft", instancia_alvo.baseframe, "bottomleft", 0, -20) + texture:SetPoint ("topright", instancia_alvo.baseframe, "bottomright", 0, -20) + end + end + instancia_alvo.h_baixo:Flash (1, 1, 2.0, false, 0, 0) tem_livre = true + elseif (lado == 3) then + + local texture = instancia_alvo.h_direita.texture + texture:ClearAllPoints() + + if (instancia_alvo.toolbar_side == 1) then + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 20) + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, -14) + else + texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 20) + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, 0) + end + else + if (instancia_alvo.show_statusbar) then + texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 0) + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, -34) + else + texture:SetPoint ("topleft", instancia_alvo.baseframe, "topright", 0, 0) + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "bottomright", 0, -20) + end + end + instancia_alvo.h_direita:Flash (1, 1, 2.0, false, 0, 0) tem_livre = true + elseif (lado == 4) then + + local texture = instancia_alvo.h_cima.texture + texture:ClearAllPoints() + + if (instancia_alvo.toolbar_side == 1) then + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "topleft", 0, 20) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "topright", 0, 20) + else + texture:SetPoint ("bottomleft", instancia_alvo.baseframe, "topleft", 0, 0) + texture:SetPoint ("bottomright", instancia_alvo.baseframe, "topright", 0, 0) + end + instancia_alvo.h_cima:Flash (1, 1, 2.0, false, 0, 0) tem_livre = true end @@ -507,6 +653,13 @@ local function move_janela (baseframe, iniciando, instancia) nao_anexados = {true, true, true, true} tempo_movendo = 1 flash_bounce = 0 + + start_draw_lines = 0 + for lado, snap_to in _pairs (instancia_alvo.snap) do + if (snap_to == instancia.meu_id) then + start_draw_lines = false + end + end for lado, snap_to in _pairs (instancia_alvo.snap) do if (snap_to) then @@ -553,7 +706,7 @@ local function move_janela (baseframe, iniciando, instancia) need_start = false end - + baseframe:SetScript ("OnUpdate", movement_onupdate) end @@ -563,6 +716,12 @@ local function move_janela (baseframe, iniciando, instancia) baseframe.isMoving = false baseframe:SetScript ("OnUpdate", nil) + if (_detalhes.guide_balls) then + for index, ball in ipairs (_detalhes.guide_balls) do + ball:Hide() + end + end + for _, ins in _detalhes:ListInstances() do if (ins.baseframe) then ins.baseframe:SetUserPlaced (false) @@ -649,8 +808,7 @@ local function move_janela (baseframe, iniciando, instancia) end end end ---# /tar Disassembled Crawler ---# /tar Deactivated Laser Turrets + _detalhes.snap_alert.playing = false _detalhes.snap_alert.animIn:Stop() _detalhes.snap_alert.animOut:Play() @@ -2339,7 +2497,7 @@ do end ---> ~inicio ~janela ~window ~nova +--> ~inicio ~janela ~window ~nova ~start function gump:CriaJanelaPrincipal (ID, instancia, criando) -- main frames ----------------------------------------------------------------------------------------------------------------------------------------------- @@ -2695,8 +2853,6 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) --> top local fcima = CreateFrame ("frame", "DetailsTopSideBarHighlight" .. instancia.meu_id, baseframe.cabecalho.fechar) - fcima:SetPoint ("topleft", baseframe.cabecalho.top_bg, "bottomleft", -10, 37) - fcima:SetPoint ("topright", baseframe.cabecalho.ball_r, "bottomright", -33, 37) gump:CreateFlashAnimation (fcima) fcima:Hide() @@ -2705,12 +2861,12 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) instancia.h_cima:SetTexCoord (0, 1, 0.5, 1) instancia.h_cima:SetPoint ("topleft", baseframe.cabecalho.top_bg, "bottomleft", -10, 37) instancia.h_cima:SetPoint ("topright", baseframe.cabecalho.ball_r, "bottomright", -97, 37) + instancia.h_cima:SetDesaturated (true) + fcima.texture = instancia.h_cima instancia.h_cima = fcima --> bottom local fbaixo = CreateFrame ("frame", "DetailsBottomSideBarHighlight" .. instancia.meu_id, baseframe.cabecalho.fechar) - fbaixo:SetPoint ("topleft", baseframe.rodape.esquerdo, "bottomleft", 16, 17) - fbaixo:SetPoint ("topright", baseframe.rodape.direita, "bottomright", -16, 17) gump:CreateFlashAnimation (fbaixo) fbaixo:Hide() @@ -2719,12 +2875,12 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) instancia.h_baixo:SetTexCoord (0, 1, 0, 0.5) instancia.h_baixo:SetPoint ("topleft", baseframe.rodape.esquerdo, "bottomleft", 16, 17) instancia.h_baixo:SetPoint ("topright", baseframe.rodape.direita, "bottomright", -16, 17) + instancia.h_baixo:SetDesaturated (true) + fbaixo.texture = instancia.h_baixo instancia.h_baixo = fbaixo --> left local fesquerda = CreateFrame ("frame", "DetailsLeftSideBarHighlight" .. instancia.meu_id, baseframe.cabecalho.fechar) - fesquerda:SetPoint ("topleft", baseframe.barra_esquerda, "topleft", -8, 0) - fesquerda:SetPoint ("bottomleft", baseframe.barra_esquerda, "bottomleft", -8, 0) gump:CreateFlashAnimation (fesquerda) fesquerda:Hide() @@ -2733,12 +2889,12 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) instancia.h_esquerda:SetTexCoord (0.5, 1, 0, 1) instancia.h_esquerda:SetPoint ("topleft", baseframe.barra_esquerda, "topleft", 40, 0) instancia.h_esquerda:SetPoint ("bottomleft", baseframe.barra_esquerda, "bottomleft", 40, 0) + instancia.h_esquerda:SetDesaturated (true) + fesquerda.texture = instancia.h_esquerda instancia.h_esquerda = fesquerda --> right local fdireita = CreateFrame ("frame", "DetailsRightSideBarHighlight" .. instancia.meu_id, baseframe.cabecalho.fechar) - fdireita:SetPoint ("topleft", baseframe.barra_direita, "topleft", 8, 18) - fdireita:SetPoint ("bottomleft", baseframe.barra_direita, "bottomleft", 8, 0) gump:CreateFlashAnimation (fdireita) fdireita:Hide() @@ -2747,6 +2903,8 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando) instancia.h_direita:SetTexCoord (0, 0.5, 1, 0) instancia.h_direita:SetPoint ("topleft", baseframe.barra_direita, "topleft", 8, 18) instancia.h_direita:SetPoint ("bottomleft", baseframe.barra_direita, "bottomleft", 8, 0) + instancia.h_direita:SetDesaturated (true) + fdireita.texture = instancia.h_direita instancia.h_direita = fdireita --> done @@ -5897,10 +6055,6 @@ function gump:CriaCabecalho (baseframe, instancia) baseframe.cabecalho.fechar:SetScript ("OnLeave", close_button_onleave) baseframe.cabecalho.fechar:SetScript ("OnClick", close_button_onclick) - - baseframe.cabecalho.fechar:SetScript ("OnShow", function() - --print (debugstack()) - end) --> bola do canto esquedo superior --> primeiro criar a armação para apoiar as texturas baseframe.cabecalho.ball_point = baseframe.cabecalho.fechar:CreateTexture (nil, "overlay") diff --git a/gumps/switch.lua b/gumps/switch.lua index 4bc7394f..13c5daea 100644 --- a/gumps/switch.lua +++ b/gumps/switch.lua @@ -135,13 +135,14 @@ function _detalhes.switch:ShowMe (instancia) if (#_detalhes.switch.buttons < mostrar_quantas) then _detalhes.switch.slots = mostrar_quantas - _detalhes.switch:Update() end _detalhes.switch.mostrar_quantas = mostrar_quantas end _detalhes.switch:Resize() + _detalhes.switch:Update() + _detalhes.switch.frame:Show() if (not _detalhes.tutorial.bookmark_tutorial) then @@ -187,6 +188,7 @@ function _detalhes.switch:ShowMe (instancia) SwitchPanelTutorial.close_label:SetWidth (_detalhes.switch.frame:GetWidth()-30) end + _detalhes.switch:Resize() --instancia:StatusBarAlert (right_click_text, right_click_texture) --icon, color, time end @@ -332,10 +334,70 @@ function _detalhes.switch:Update() end end + end function _detalhes.switch:Resize() + local x = 7 + local y = 5 + + local window_width, window_height = _detalhes.switch.current_instancia:GetSize() + + local horizontal_amt = floor (math.max (window_width / 100, 2)) + local vertical_amt = floor ((window_height - y) / 20) + local size = window_width / horizontal_amt + + local frame = _detalhes.switch.frame + + for index, button in ipairs (_detalhes.switch.buttons) do + button:Hide() + end + + local i = 1 + for vertical = 1, vertical_amt do + x = 7 + for horizontal = 1, horizontal_amt do + local button = _detalhes.switch.buttons [i] + + local options = _detalhes.switch.table [i] + if (not options) then + options = {atributo = nil, sub_atributo = nil} + _detalhes.switch.table [i] = options + end + + if (not button) then + button = _detalhes.switch:NewSwitchButton (frame, i, x, y) + button:SetFrameLevel (frame:GetFrameLevel()+2) + _detalhes.switch.showing = _detalhes.switch.showing + 1 + end + + button:SetPoint ("topleft", frame, "topleft", x, -y) + button.textureNormal:SetPoint ("topleft", frame, "topleft", x, -y) + button.texturePushed:SetPoint ("topleft", frame, "topleft", x, -y) + button.textureH:SetPoint ("topleft", frame, "topleft", x, -y) + button.button2.texto:SetSize (size - 30, 12) + button.button2:SetPoint ("bottomright", button, "bottomright", size - 30, 0) + button.line:SetWidth (size - 15) + button.line2:SetWidth (size - 15) + + button:Show() + + i = i + 1 + x = x + size + if (i > 40) then + break + end + end + y = y + 20 + end + + _detalhes.switch.slots = i-1 + +end + +function _detalhes.switch:Resize2() + local x = 7 local y = 5 local xPlus = (_detalhes.switch.current_instancia:GetSize()/2)-5 @@ -352,6 +414,7 @@ function _detalhes.switch:Resize() button.button2:SetPoint ("bottomright", button, "bottomright", xPlus - 30, 0) button.line:SetWidth (xPlus - 15) button.line2:SetWidth (xPlus - 15) + x = x - xPlus y = y + _detalhes.switch.button_height jump = false @@ -365,6 +428,7 @@ function _detalhes.switch:Resize() button.button2:SetPoint ("bottomright", button, "bottomright", xPlus - 30, 0) button.line:SetWidth (xPlus - 20) button.line2:SetWidth (xPlus - 20) + x = x + xPlus jump = true end diff --git a/images/icons.tga b/images/icons.tga index cebd3a790ec83b8825e873d7935da1476904c051..d96f17874d00af67712e80caf65c9fd5633bc3fd 100644 GIT binary patch delta 569 zcmeCYuCVf!LPHB<3sVbo3rh=Y3tJ2O7LKc2s;&S3|7T$O@Zp2o!-o%huUxruyz%tu z(;t{XERYCD=H~WmTpU{&Rhz+TfBg8N0F>zgD*N1e;>3ynOdu9W1SE5Pdk+uCT1MF> zkXlBN$elZP7I%WwF@jhikz?Df_&C-wiGtNIfOK|)EsDa^5pNffLGq^q|VroZ>-_7E|S7ce=HFCcOt*3s>@k{oU@IiP7DAaWqq z(d{kL98%0sGtuSd%OUikoB2$Eqm>bdTXK{*>KO_6<&84Od`28$(WA-{Pbe(ksBz3C YE^dx*@6zB1Wh5%jPi}vp$+40V0QVYTM*si- delta 158 zcmZ2^OQG|+LPHB<3sVbo3rh=Y3tJ2O7LKc2jL*0K;^NrK2&Av@aI9ryyuN)NAIDlI zAe|t{u>nX=2htMTT}3z+fdv1Eal8Q0KP5TbKy-)ZH|?U0Je@c>i_@% diff --git a/images/skins/classic_skin.tga b/images/skins/classic_skin.tga index 0d9cf51583abd3550d813c902c2f444735340b6d..044696b2155f4d8e4dfcb7ee4e4b515d44186e9e 100644 GIT binary patch literal 173072 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 p|7MQ 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 diff --git a/images/skins/classic_skin_v1.tga b/images/skins/classic_skin_v1.tga new file mode 100644 index 0000000000000000000000000000000000000000..0d9cf51583abd3550d813c902c2f444735340b6d GIT binary patch literal 134812 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 TH!o