- Patch 8.0.1
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
## Interface: 70300
|
||||
## Interface: 80000
|
||||
## Title: Details! 3D Model Viewer
|
||||
## Notes: When the 3d models option is enabled, this tool is used to select which model will be used on the window's rows.
|
||||
## DefaultState: Enabled
|
||||
|
||||
@@ -29,7 +29,9 @@ f:SetScript ("OnEvent", function (self, event, addonName)
|
||||
end
|
||||
end
|
||||
|
||||
print ("|cFFFFFF00Details! Storage|r: loaded!")
|
||||
if (_detalhes and _detalhes.debug) then
|
||||
print ("|cFFFFFF00Details! Storage|r: loaded!")
|
||||
end
|
||||
DETAILS_STORAGE_LOADED = true
|
||||
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## Interface: 70300
|
||||
## Interface: 80000
|
||||
## Title: Details Storage
|
||||
## Notes: Stores information for Details!
|
||||
## DefaultState: Enabled
|
||||
|
||||
@@ -1,571 +0,0 @@
|
||||
local AceLocale = LibStub ("AceLocale-3.0")
|
||||
local Loc = AceLocale:GetLocale ("DetailsDmgRank")
|
||||
|
||||
--> Needed locals
|
||||
local _GetTime = GetTime --> wow api local
|
||||
local _UFC = UnitAffectingCombat --> wow api local
|
||||
local _IsInRaid = IsInRaid --> wow api local
|
||||
local _IsInGroup = IsInGroup --> wow api local
|
||||
local _UnitAura = UnitAura --> wow api local
|
||||
local _math_floor = math.floor --> lua library local
|
||||
local _cstr = string.format --> lua library local
|
||||
|
||||
local _
|
||||
|
||||
--> Create the plugin Object
|
||||
local DmgRank = _detalhes:NewPluginObject ("Details_DmgRank")
|
||||
--> Main Frame
|
||||
local DmgRankFrame = DmgRank.Frame
|
||||
|
||||
DmgRank:SetPluginDescription ("A plugin for you have fun with a training dummy testing your damage skill and gear, leveling through many challenges.")
|
||||
|
||||
|
||||
--> this function will run when the plugin receives the Addon_Loaded event, ["data"] = previus saved player rank
|
||||
local function CreatePluginFrames (data)
|
||||
|
||||
--> catch Details! main object
|
||||
local _detalhes = _G._detalhes
|
||||
local DetailsFrameWork = _detalhes.gump
|
||||
--local
|
||||
|
||||
--> default rank table
|
||||
DmgRank.rank = DmgRank.db
|
||||
--DmgRank.rank.level = 20
|
||||
|
||||
--> OnEvent Table
|
||||
function DmgRank:OnDetailsEvent (event, ...)
|
||||
if (event == "HIDE") then --> plugin hidded, disabled
|
||||
DmgRankFrame:SetScript ("OnUpdate", nil)
|
||||
DmgRank:Cancel()
|
||||
|
||||
elseif (event == "SHOW") then
|
||||
|
||||
elseif (event == "REFRESH") then --> requested a refresh window
|
||||
DmgRank:Refresh()
|
||||
|
||||
elseif (event == "COMBAT_PLAYER_ENTER") then --> combat started
|
||||
--print ("recebeu event start")
|
||||
local combat = select (1, ...)
|
||||
DmgRank:Start()
|
||||
|
||||
elseif (event == "PLUGIN_DISABLED") then
|
||||
DmgRankFrame:SetScript ("OnUpdate", nil)
|
||||
DmgRank:Cancel()
|
||||
|
||||
elseif (event == "PLUGIN_ENABLED") then
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
local close_button = DmgRank:CreateSoloCloseButton()
|
||||
close_button:SetPoint ("TOPRIGHT", DmgRankFrame, "TOPRIGHT", 3, 5)
|
||||
close_button:SetSize (24, 24)
|
||||
|
||||
------------- Build Ranking ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--> damage goal table
|
||||
DmgRank.TimeGoal = {
|
||||
|
||||
--> The 30 seconds Trial
|
||||
{time = 30, damage = 3500000, name = Loc ["CHALLENGENAME_1"]}, -- Ready to Raid -- rank 2 --> -- Patrulha --> ~11K DPS required
|
||||
{time = 30, damage = 4200000, name = Loc ["CHALLENGENAME_2"]}, -- Damage Practice --rank 3 --> -- Soldier --> ~14K DPS required
|
||||
{time = 30, damage = 5000000, name = Loc ["CHALLENGENAME_3"]}, -- The Training Continue... -- rank 4 --> -- Corporal --> ~16K DPS required
|
||||
|
||||
--> 90 seconds bracket
|
||||
{time = 90, damage = 16010100, name = Loc ["CHALLENGENAME_4"]}, -- You Just Need a Little More Time -- rank 5 --> -- Sergeant --> ~17K DPS required
|
||||
{time = 90, damage = 16666600, name = Loc ["CHALLENGENAME_5"]}, -- Became a Knight -- rank 6 --> -- Sergeant --> ~18K DPS required
|
||||
|
||||
--> middle bracket
|
||||
{time = 120, damage = 22541200, name = Loc ["CHALLENGENAME_6"]}, -- Two Minutes -- rank 7 --> Iron Knight --> ~18K DPS required
|
||||
{time = 120, damage = 24095000, name = Loc ["CHALLENGENAME_7"]}, --rank 8 --> Steel Knight --> ~20K DPS required
|
||||
{time = 180, damage = 33900000, name = Loc ["CHALLENGENAME_8"]}, --rank 9 --> --> The High Knight --> ~18K DPS required
|
||||
{time = 180, damage = 34990000, name = Loc ["CHALLENGENAME_9"]}, --rank 10 --> Yes Sir! -- Thorium Knight --> ~19K DPS required
|
||||
{time = 180, damage = 37840510, name = Loc ["CHALLENGENAME_10"]}, --rank 11 --> Salute -- Silver Lieutenant --> ~21K DPS required
|
||||
|
||||
--> burst bracket
|
||||
{time = 40, damage = 13511440, name = Loc ["CHALLENGENAME_11"]}, --rank 12 --> In Burst We Trust -- Gold Lieutenant --> ~33K DPS required
|
||||
{time = 40, damage = 14944040, name = Loc ["CHALLENGENAME_12"]}, --rank 13 --> Watch me Explode -- Stone Guardian --> ~37K DPS required
|
||||
{time = 40, damage = 15699000, name = Loc ["CHALLENGENAME_13"]}, --rank 14 --> T.N.T-- Fel Guardian --> ~39K DPS required
|
||||
|
||||
--> long run bracket
|
||||
{time = 300, damage = 62112010, name = Loc ["CHALLENGENAME_14"]}, --rank 15 --> Time is Damage My Friend -- Titan Guardian --> ~20K DPS required
|
||||
{time = 300, damage = 68424590, name = Loc ["CHALLENGENAME_15"]}, --rank 16 - Just a Little Patience --> Bronze Centurion --> ~22K DPS required
|
||||
{time = 300, damage = 75119830, name = Loc ["CHALLENGENAME_16"]}, --rank 17 --> Silver Centurion --> ~25K DPS required
|
||||
|
||||
{time = 120, damage = 40111000, name = Loc ["CHALLENGENAME_17"]}, --rank 18 --> Flame Centurion --> ~33K DPS required
|
||||
{time = 120, damage = 43000000, name = Loc ["CHALLENGENAME_18"]}, --rank 19 --> Lower Vanquisher --> 35K DPS required
|
||||
{time = 60, damage = 26500000, name = Loc ["CHALLENGENAME_19"]}, --rank 20 --> Middle Vanquisher --> 44K DPS required
|
||||
|
||||
--> end
|
||||
{time = nil, damage = nil, name = ""}, --rank 21 --> none
|
||||
}
|
||||
|
||||
--> tiles and badges
|
||||
DmgRank.Titles = {
|
||||
|
||||
Loc ["RANKNAME_1"], --> rank 1 --> -- recruit -- Recruta -- Farmer
|
||||
Loc ["RANKNAME_2"], --> rank 2 --> soldier
|
||||
Loc ["RANKNAME_3"], --> rank 3 --> corporal
|
||||
|
||||
Loc ["RANKNAME_4"], --> rank 4 --> -- Gold Sergeant
|
||||
Loc ["RANKNAME_5"], --> rank 5 --> -- Star Sergeant
|
||||
|
||||
Loc ["RANKNAME_6"], --> rank 6 - Iron Knight
|
||||
Loc ["RANKNAME_7"], --> rank 7 - Steel Knight
|
||||
Loc ["RANKNAME_8"], --> rank 8 - Mithril Knight
|
||||
Loc ["RANKNAME_9"], --> rank 9 - Thorium Knight
|
||||
|
||||
Loc ["RANKNAME_10"], --> rank 10 - Silver Lieutenant
|
||||
Loc ["RANKNAME_11"], --> rank 11 - Gold Lieutenant
|
||||
|
||||
Loc ["RANKNAME_12"], --> rank 12 - Stone Guardian
|
||||
Loc ["RANKNAME_13"], --> rank 13 - Fel Guardian
|
||||
Loc ["RANKNAME_14"], --> rank 14 - Titan Guardian
|
||||
|
||||
Loc ["RANKNAME_15"], --> rank 15 - Bronze Centurion
|
||||
Loc ["RANKNAME_16"], --> rank 16 - Silver Centurion
|
||||
Loc ["RANKNAME_17"], --> rank 17 - Flame Centurion
|
||||
|
||||
Loc ["RANKNAME_18"], --> rank 18 - "Lower Vanquisher"
|
||||
Loc ["RANKNAME_19"], --> rank 19 - "Middle Vanquisher"
|
||||
Loc ["RANKNAME_20"], --> rank 20 - "High Vanquisher"
|
||||
|
||||
--[[
|
||||
legionary
|
||||
Commander
|
||||
General
|
||||
marshal
|
||||
Champion -- campeoao
|
||||
Conqueror -- conquistador
|
||||
--]]
|
||||
|
||||
}
|
||||
DmgRank.Badges = {}
|
||||
DmgRank.Badges.TexCoords = {
|
||||
{0.7734375, 0.89453125, 0.060546875, 0.181640625}, --> rank 1
|
||||
{0.1640625, 0.259765625, 0.083984375, 0.185546875}, --> rank 2 - soldier
|
||||
{0.31640625, 0.412109375, 0.06640625, 0.18359375}, --> rank 3 --> Corporal
|
||||
{0.45703125, 0.55078125, 0.05859375, 0.177734375}, --> rank 4 --> Gold Sergeant
|
||||
{0.607421875, 0.701171875, 0.044921875, 0.177734375}, --> rank 5 --> star Sergeant
|
||||
|
||||
{0.017578125, 0.169921875, 0.236328125, 0.3984375}, --> rank 6 - Iron Knight
|
||||
{0.201171875, 0.357421875, 0.234375, 0.3984375}, --> rank 7 - Steel Knight
|
||||
{0.38671875, 0.541015625, 0.234375, 0.3984375}, --> rank 8 - Mithril Knight
|
||||
{0.572265625, 0.7265625, 0.234375, 0.3984375}, --> rank 9 - Thorium Knight
|
||||
|
||||
{0.16015625, 0.2734375, 0.44921875, 0.583984375}, --> rank 10 - Silver Lieutenant
|
||||
{0.0234375, 0.130859375, 0.44921875, 0.583984375}, --> rank 11 - Gold Lieutenant
|
||||
|
||||
{0.30078125, 0.4375, 0.44140625, 0.5859375}, --> rank 12 - Stone Guardian
|
||||
{0.45703125, 0.59375, 0.44140625, 0.5859375}, --> rank 13 - Fel Guardian
|
||||
{0.61328125, 0.75, 0.44140625, 0.5859375}, --> rank 14 - Titan Guardian
|
||||
|
||||
{0.017578125, 0.173828125, 0.625, 0.78125}, --> rank 15 - Bronze Centurion
|
||||
{0.212890625, 0.369140625, 0.625, 0.78125}, --> rank 16 - Silver Centurion
|
||||
{0.408203125, 0.56640625, 0.625, 0.78125}, --> rank 17 - Flame Centurion
|
||||
|
||||
{0.00390625, 0.208984375, 0.810546875, 0.9765625}, --> rank 18 - Lower Vanquisher
|
||||
{0.21875, 0.42578125, 0.810546875, 0.9765625}, --> rank 19 - Middle Vanquisher
|
||||
{0.43359375, 0.638671875, 0.810546875, 0.9765625}, --> rank 20 - High Vanquisher
|
||||
|
||||
}
|
||||
DmgRank.Badges.Sizes = {
|
||||
{50, 50}, --> rank 1
|
||||
{50, 52}, --> rank 2 - soldier
|
||||
{50, 60}, --> rank 3 - Corporal
|
||||
{49, 59}, --> rank 4 - Gold Sergeant
|
||||
{48, 61}, ---> rank 5 - star Sergeant
|
||||
{56, 63}, --> rank 6 - Iron Knight
|
||||
{56, 63}, -->rank 7 - Steel Knight
|
||||
{56, 63}, --> rank 8 - Mithril Knight
|
||||
{56, 63}, --> rank 9 - Thorium Knight
|
||||
|
||||
{61, 59}, --> rank 10 - Silver Lieutenant
|
||||
{55, 67}, --> rank 11 - Gold Lieutenant
|
||||
|
||||
{70, 74}, --> rank 12 - Stone Guardian
|
||||
{70, 74}, --> rank 13 - Fel Guardian
|
||||
{70, 74}, --> rank 14 - Titan Guardian
|
||||
|
||||
{70, 70}, --> rank 15 - Bronze Centurion
|
||||
{70, 70}, --> rank 16 - Silver Centurion
|
||||
{70, 70}, --> rank 17 - Flame Centurion
|
||||
|
||||
{80, 65}, --> rank 18 - Lower Vanquisher
|
||||
{80, 65}, --> rank 19 - Middle Vanquisher
|
||||
{80, 65}, --> rank 20 - High Vanquisher
|
||||
}
|
||||
DmgRank.Badges.SetPointMod = {
|
||||
{0, 6}, --> rank 1
|
||||
{0, 5}, --> rank 2 - soldier
|
||||
{0, 10}, --> rank 3 - Corporal
|
||||
{0, 10}, --> rank 4 - Gold Sergeant
|
||||
{0, 16}, --> rank 5 - star Sergeant
|
||||
{0, 12}, --> rank 6 - Iron Knight
|
||||
{0, 12}, --> rank 7 - Steel Knight
|
||||
{0, 12}, --> rank 8 - Mithril Knight
|
||||
{0, 12}, --> rank 9 - Thorium Knight
|
||||
|
||||
{0, 12}, --> rank 10 - Silver Lieutenant
|
||||
{0, 17}, --> rank 11 - Gold Lieutenant
|
||||
|
||||
{0, 20}, --> rank 12 - Stone Guardian
|
||||
{0, 20}, --> rank 13 - Fel Guardian
|
||||
{0, 20}, --> rank 14 - Titan Guardian
|
||||
|
||||
{0, 20}, --> rank 15 - Bronze Centurion
|
||||
{0, 20}, --> rank 16 - Silver Centurion
|
||||
{0, 20}, --> rank 17 - Flame Centurion
|
||||
|
||||
{-3, 16}, --> rank 18 - Lower Vanquisher
|
||||
{-3, 16}, --> rank 19 - Middle Vanquisher
|
||||
{-3, 16}, --> rank 20 - High Vanquisher
|
||||
|
||||
}
|
||||
|
||||
--> main frame and background texture
|
||||
|
||||
DmgRankFrame:SetPoint ("topleft", UIParent)
|
||||
DmgRankFrame:SetResizable (false) --> cant resize, this is a fixed size
|
||||
DmgRankFrame:SetWidth (300) --> need to be 300x300 to fit details window
|
||||
DmgRankFrame:SetHeight (300) --> need to be 300x300 to fit details window
|
||||
DmgRank.Frame = DmgRankFrame
|
||||
DmgRankFrame:Hide()
|
||||
|
||||
--> default background picture
|
||||
local background = DmgRankFrame:CreateTexture (nil, "background")
|
||||
background:SetTexture ("Interface\\ACHIEVEMENTFRAME\\UI-Achievement-StatsBackground")
|
||||
background:SetPoint ("topleft", DmgRankFrame, "topleft", 2, 0)
|
||||
background:SetPoint ("bottomright", DmgRankFrame, "bottomright", -2, 0)
|
||||
background:SetVertexColor (.7, .7, .7, 1)
|
||||
background:SetDrawLayer ("background", 1)
|
||||
DmgRank.BackgroundTex = background
|
||||
|
||||
--> next rank at display
|
||||
local challengeName = DetailsFrameWork:NewLabel (DmgRankFrame, DmgRankFrame, nil, "challengeName", "", "QuestFont_Shadow_Huge")
|
||||
challengeName:SetPoint ("center", DmgRankFrame, "center")
|
||||
challengeName:SetPoint ("top", DmgRankFrame, "top", 0, -98)
|
||||
DmgRank.challengeName = challengeName
|
||||
|
||||
local challengeGoal = DetailsFrameWork:NewLabel (DmgRankFrame, DmgRankFrame, nil, "challengeGoal", "", "GameFontHighlightSmall")
|
||||
challengeGoal:SetPoint ("center", DmgRankFrame, "center")
|
||||
challengeGoal:SetPoint ("top", DmgRankFrame, "top", 0, -118)
|
||||
DmgRank.challengeGoal = challengeGoal
|
||||
|
||||
--> main time display
|
||||
local showTimeMinutes = DetailsFrameWork:NewLabel (DmgRankFrame, DmgRankFrame, nil, "showTimeMinutes", "00:", "GameFontHighlightLarge")
|
||||
showTimeMinutes:SetPoint ("center", DmgRankFrame, "center")
|
||||
showTimeMinutes:SetPoint ("top", DmgRankFrame, "top", -25, -150)
|
||||
showTimeMinutes:SetJustifyH ("RIGHT")
|
||||
DmgRank.TimeMinutes = showTimeMinutes
|
||||
|
||||
local showTimeSeconds = DetailsFrameWork:NewLabel (DmgRankFrame, DmgRankFrame, nil, "showTimeSeconds", "00:", "GameFontHighlightLarge")
|
||||
showTimeSeconds:SetPoint ("center", DmgRankFrame, "center")
|
||||
showTimeSeconds:SetPoint ("top", DmgRankFrame, "top", 0, -150)
|
||||
DmgRank.TimeSeconds = showTimeSeconds
|
||||
|
||||
local showTimeMiliSeconds = DetailsFrameWork:NewLabel (DmgRankFrame, DmgRankFrame, nil, "showTimeMiliSeconds", "00", "GameFontHighlightLarge")
|
||||
showTimeMiliSeconds:SetPoint ("center", DmgRankFrame, "center")
|
||||
showTimeMiliSeconds:SetPoint ("top", DmgRankFrame, "top", 23, -150)
|
||||
DmgRank.TimeMiliSeconds = showTimeMiliSeconds
|
||||
|
||||
--> main damage display
|
||||
local damage = DetailsFrameWork:NewLabel (DmgRankFrame, DmgRankFrame, "showdamage", nil, "00.000.000", "GameFontHighlightLarge")
|
||||
damage:SetPoint ("center", DmgRankFrame, "center")
|
||||
damage:SetPoint ("top", DmgRankFrame, "top", 0, -170)
|
||||
DmgRank.MainDamageDisplay = damage
|
||||
|
||||
--> background da badge e titulo
|
||||
local bg1 = DetailsFrameWork:NewPanel (DmgRankFrame, _, "DetailsDmgRankBadgeBackground", _, 280, 75)
|
||||
bg1:SetPoint ("topleft", DmgRankFrame, 10, -10)
|
||||
|
||||
local GlowFrame = CreateFrame ("frame", "DetailsRankUpGlowFrame", bg1.widget, "DetailsAlertRankUpTemplate")
|
||||
GlowFrame:SetPoint ("topleft", bg1.widget)
|
||||
GlowFrame:SetWidth (280)
|
||||
GlowFrame:SetHeight (60)
|
||||
GlowFrame:Hide()
|
||||
|
||||
--> badge icon display
|
||||
local titleIcon = bg1:CreateTexture (nil, "overlay")
|
||||
titleIcon:SetTexture ("Interface\\AddOns\\Details_DmgRank\\images\\badges")
|
||||
titleIcon:SetTexCoord (unpack (DmgRank.Badges.TexCoords [DmgRank.rank.level]))
|
||||
titleIcon:SetWidth (DmgRank.Badges.Sizes [DmgRank.rank.level] [1]*1.33)
|
||||
titleIcon:SetHeight (DmgRank.Badges.Sizes [DmgRank.rank.level] [2]*1.33)
|
||||
titleIcon:SetPoint ("topleft", DmgRankFrame, "topleft", 20, -20)
|
||||
DmgRank.TitleIcon = titleIcon
|
||||
|
||||
--> title
|
||||
local pretitle = DetailsFrameWork:NewLabel (bg1, bg1, nil, "pretitle", Loc ["STRING_CURRENTRANK"], "GameFontHighlightSmall")
|
||||
pretitle:SetPoint ("left", titleIcon, "right", 20, 9)
|
||||
DmgRank.PreTitle = pretitle
|
||||
|
||||
local title = DetailsFrameWork:NewLabel (bg1, bg1, nil, "title", DmgRank.Titles [DmgRank.rank.level], "GameFontHighlightLarge")
|
||||
title:SetPoint ("left", titleIcon, "right", 20, -9)
|
||||
DmgRank.Title = title
|
||||
|
||||
--> help button
|
||||
--> after 10 logins on the character this help button will not be show any more
|
||||
if (_detalhes.tutorial.main_help_button < 10) then
|
||||
local help = DetailsFrameWork:NewHelp (DmgRankFrame, 280, 280, 0, -20, 40, 40)
|
||||
help:SetPoint ("topright", DmgRankFrame, "topright", 8, 9)
|
||||
help:AddHelp (300, 300, 0, 0, 138, -138, Loc ["STRING_HELP"])
|
||||
help:SetFrameLevel (DmgRankFrame:GetFrameLevel()+2)
|
||||
end
|
||||
|
||||
--> announce switch
|
||||
local announce = DetailsFrameWork:NewSwitch (bg1, _, "DetailsDmgRankAnnouce", "announceSwitch", 60, 20, _, _, DmgRank.rank.annouce)
|
||||
bg1.announceSwitch:SetPoint ("topleft", DmgRankFrame, 12, -184)
|
||||
bg1.announceSwitch.OnSwitch = function (self, _, value)
|
||||
DmgRank.rank.annouce = value
|
||||
end
|
||||
DetailsFrameWork:NewLabel (bg1, _, nil, "announceLabel", Loc ["STRING_ANNOUNCE"], "GameFontHighlightSmall")
|
||||
bg1.announceLabel:SetPoint ("bottom", bg1.announceSwitch, "top", -5, -2)
|
||||
|
||||
--> background dos tempos das ultimas tries
|
||||
local lasttrylabel = DetailsFrameWork:NewLabel (bg1, bg1, nil, "lasttrylabel", Loc ["STRING_LASTTRIES"], "GameFontHighlightSmall") -->
|
||||
lasttrylabel:SetPoint ("topleft", DmgRankFrame, 12, -204)
|
||||
local lastranklabel = DetailsFrameWork:NewLabel (bg1, bg1, nil, "lastranklabel", Loc ["STRING_LASTRANKS"], "GameFontHighlightSmall") -->
|
||||
lastranklabel:SetPoint ("topleft", DmgRankFrame, 162, -204)
|
||||
|
||||
local bg_esq = DetailsFrameWork:NewPanel (DmgRankFrame, _, "DetailsDmgRankLeftBackground", _, 130, 85, _, {.9, .9, .9, .7})
|
||||
bg_esq:SetPoint ("topleft", DmgRankFrame, 10, -215)
|
||||
local bg_dir = DetailsFrameWork:NewPanel (DmgRankFrame, _, "DetailsDmgRankRightBackground", _, 130, 85, _, {.9, .9, .9, .7})
|
||||
bg_dir:SetPoint ("topleft", DmgRankFrame, 160, -215)
|
||||
|
||||
--> try dps dos 5 ultimos ranks
|
||||
DmgRank.Try = {}
|
||||
for i = 1, 5 do
|
||||
DetailsFrameWork:NewLabel (bg_esq, bg_esq, nil, "try"..i, "0", "GameFontHighlightSmall")
|
||||
bg_esq ["try"..i]:SetPoint ("bottomleft", DmgRankFrame, "bottomleft", 20, math.abs (i*15-83))
|
||||
DmgRank.Try [i] = bg_esq ["try"..i]
|
||||
end
|
||||
|
||||
--> dps dos 5 ultimos ranks
|
||||
DmgRank.Dps = {}
|
||||
for i = 1, 5 do
|
||||
DetailsFrameWork:NewLabel (bg_dir, bg_dir, nil, "dps"..i, "0", "GameFontHighlightSmall")
|
||||
bg_dir ["dps"..i]:SetPoint ("bottomleft", DmgRankFrame, "bottomleft", 170, math.abs (i*15-83))
|
||||
DmgRank.Dps [i] = bg_dir ["dps"..i]
|
||||
end
|
||||
|
||||
--> refresh all window components
|
||||
function DmgRank:Refresh()
|
||||
--> update badge icon and text
|
||||
|
||||
if (not self) then
|
||||
self = DmgRank
|
||||
end
|
||||
|
||||
self.challengeName:SetText (self.TimeGoal[DmgRank.rank.level].name)
|
||||
if (self.TimeGoal[DmgRank.rank.level].damage) then
|
||||
self.challengeGoal:SetText (_detalhes:comma_value (self.TimeGoal[DmgRank.rank.level].damage) .. " ".. Loc ["STRING_DAMAGEIN"] .." " .. self.TimeGoal[DmgRank.rank.level].time .. " " ..Loc ["STRING_SECONDS"])
|
||||
else
|
||||
self.challengeGoal:SetText ("")
|
||||
end
|
||||
self.Title:SetText (self.Titles [DmgRank.rank.level])
|
||||
|
||||
self.TitleIcon:SetTexCoord (unpack (self.Badges.TexCoords [DmgRank.rank.level]))
|
||||
self.TitleIcon:SetWidth (self.Badges.Sizes [DmgRank.rank.level] [1]*1.33)
|
||||
self.TitleIcon:SetHeight (self.Badges.Sizes [DmgRank.rank.level] [2]*1.33)
|
||||
self.TitleIcon:SetPoint ("topleft", DmgRankFrame, 20+self.Badges.SetPointMod[DmgRank.rank.level][1], -20+self.Badges.SetPointMod[DmgRank.rank.level][2])
|
||||
|
||||
--> update last try atempts
|
||||
for i = 1, 5 do
|
||||
if (DmgRank.rank.lasttry [i]) then
|
||||
self.Try [i]:SetText ("#"..i..": ".. _detalhes:comma_value (DmgRank.rank.lasttry [i]))
|
||||
else
|
||||
self.Try [i]:SetText ("-")
|
||||
end
|
||||
end
|
||||
|
||||
--> update last levels ups
|
||||
for i = 1, 5 do
|
||||
if (DmgRank.rank.dpshistory [i]) then
|
||||
self.Dps [i]:SetText (Loc ["STRING_RANK"] .. " ".. DmgRank.rank.dpshistory [i])
|
||||
else
|
||||
self.Dps [i]:SetText ("-")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--> Refresh on Addon Load
|
||||
DmgRank:Refresh()
|
||||
|
||||
local update = 0
|
||||
local player --> short cut for Player Actor Object
|
||||
|
||||
--> Cancel function
|
||||
function DmgRank:Cancel()
|
||||
if (DmgRank.Time and DmgRank.Time.Working) then
|
||||
print (Loc ["STRING_CANCELLED"])
|
||||
DmgRank.Time.Working = false
|
||||
DmgRank.Time.Done = true
|
||||
DmgRank.Frame:SetScript ("OnUpdate", nil)
|
||||
end
|
||||
end
|
||||
|
||||
--> Exec function
|
||||
local DoDmgRank = function (self, elapsed)
|
||||
|
||||
DmgRank.Time.Elapsed = DmgRank.Time.Elapsed + elapsed
|
||||
update = update + elapsed
|
||||
|
||||
if (_GetTime() > DmgRank.Time.EndTime) then --> reached the end time
|
||||
if (DmgRank.Time.Working and not DmgRank.Time.Done) then
|
||||
DmgRank:Finish()
|
||||
else
|
||||
DmgRank.Time.Working = false
|
||||
DmgRank.Time.Done = true
|
||||
DmgRank.Frame:SetScript ("OnUpdate", nil)
|
||||
end
|
||||
else
|
||||
|
||||
DmgRank.Time.Tick = DmgRank.Time.Tick + elapsed
|
||||
|
||||
if (DmgRank.Time.Tick > 1) then
|
||||
DmgRank.Time.Tick = 0
|
||||
if (not _UFC ("player")) then --> isn't in combat
|
||||
DmgRank:Finish()
|
||||
end
|
||||
else
|
||||
if (not player) then
|
||||
player = _detalhes:GetActor()
|
||||
end
|
||||
|
||||
if (player) then
|
||||
local minutos, segundos = _math_floor (DmgRank.Time.Elapsed/60), _math_floor (DmgRank.Time.Elapsed%60)
|
||||
if (segundos < 10) then
|
||||
segundos = "0"..segundos
|
||||
end
|
||||
|
||||
local mili = _cstr ("%.2f", DmgRank.Time.Elapsed - _math_floor (DmgRank.Time.Elapsed))*100
|
||||
if (mili < 10) then
|
||||
mili = "0"..mili
|
||||
end
|
||||
|
||||
DmgRank.TimeMinutes:SetText ("0".. minutos .. ":")
|
||||
DmgRank.TimeSeconds:SetText (segundos ..":")
|
||||
DmgRank.TimeMiliSeconds:SetText (mili)
|
||||
|
||||
local DamageGoal = DmgRank.TimeGoal [DmgRank.rank.level].damage
|
||||
if (player.total > DamageGoal) then --> yeah, you didit
|
||||
DmgRank.MainDamageDisplay:SetTextColor (0.3, 1, 0.1)
|
||||
else
|
||||
DmgRank.MainDamageDisplay:SetTextColor (1, 1, 1)
|
||||
end
|
||||
|
||||
DmgRank.MainDamageDisplay:SetText (_detalhes:comma_value (player.total))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--> add failed attempt to falied records
|
||||
function DmgRank:FailedLevelUpRank()
|
||||
table.insert (DmgRank.rank.lasttry, 1, player.total)
|
||||
table.remove (DmgRank.rank.lasttry, 6)
|
||||
DmgRank:Refresh()
|
||||
end
|
||||
|
||||
--> Levelup
|
||||
function DmgRank:LevelUpRank()
|
||||
_detalhes:PlayGlow (GlowFrame)
|
||||
DmgRank.rank.level = DmgRank.rank.level + 1
|
||||
|
||||
if (DmgRank.rank.annouce) then
|
||||
SendChatMessage (UnitName ("player") .. " " .. Loc ["STRING_ANNOUNCE_STRING"] .. " " .. DmgRank.rank.level .. " (" .. self.Titles [DmgRank.rank.level] .. ") " .. Loc ["STRING_ANNOUNCE_ON"] .. " Details!: " .. Loc ["STRING_PLUGIN_NAME"] .. ".", "GUILD")
|
||||
end
|
||||
|
||||
DmgRank.rank.dps = player.total
|
||||
table.insert (DmgRank.rank.dpshistory, 1, DmgRank.rank.level..": ".._detalhes:comma_value (player.total))
|
||||
table.remove (DmgRank.rank.dpshistory, 6)
|
||||
DmgRank:Refresh()
|
||||
end
|
||||
|
||||
--> When the time is gone
|
||||
function DmgRank:Finish()
|
||||
DmgRank.Frame:SetScript ("OnUpdate", nil)
|
||||
|
||||
if (player) then
|
||||
local DamageGoal = DmgRank.TimeGoal [DmgRank.rank.level].damage --> damage
|
||||
if (player.total > DamageGoal) then --> yeah, you didit
|
||||
DmgRank:LevelUpRank()
|
||||
else
|
||||
DmgRank:FailedLevelUpRank()
|
||||
end
|
||||
end
|
||||
|
||||
DmgRank.Time.Working = false
|
||||
DmgRank.Time.Done = true
|
||||
end
|
||||
|
||||
--> When a new combat is received by the PlugIn
|
||||
function DmgRank:Start()
|
||||
|
||||
if (DmgRank.Time and DmgRank.Time.Working) then
|
||||
DmgRank:Msg ("Plugin already in use.")
|
||||
return
|
||||
end
|
||||
|
||||
if (not DmgRank.TimeGoal[DmgRank.rank.level].damage) then
|
||||
DmgRank:Msg ("There is no goal for this level.")
|
||||
return
|
||||
end
|
||||
|
||||
--> reset
|
||||
DmgRank.TimeMinutes:SetText ("00:")
|
||||
DmgRank.TimeSeconds:SetText ("00:")
|
||||
DmgRank.TimeMiliSeconds:SetText ("00")
|
||||
DmgRank.MainDamageDisplay:SetText ("00.000.000")
|
||||
|
||||
DmgRank.Time = {}
|
||||
DmgRank.Time.StartTime = _GetTime()
|
||||
DmgRank.Time.EndTime = DmgRank.Time.StartTime + DmgRank.TimeGoal [DmgRank.rank.level].time
|
||||
DmgRank.Time.Elapsed = 3
|
||||
DmgRank.Time.Done = nil
|
||||
DmgRank.Time.Working = true
|
||||
DmgRank.Time.Tick = 0
|
||||
player = _detalhes:GetActor() --> param 1 = combat | param 2 = attribute | param 3 = player name
|
||||
update = 0
|
||||
|
||||
DmgRank.starting = DmgRank:ScheduleTimer ("StartUpdate", 3)
|
||||
end
|
||||
|
||||
function DmgRank:StartUpdate()
|
||||
player = _detalhes:GetActor()
|
||||
DmgRank.Frame:SetScript ("OnUpdate", DoDmgRank)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function DmgRank:OnEvent (_, event, ...)
|
||||
|
||||
if (event == "ADDON_LOADED") then
|
||||
local AddonName = select (1, ...)
|
||||
if (AddonName == "Details_DmgRank") then
|
||||
|
||||
if (_G._detalhes) then
|
||||
|
||||
local MINIMAL_DETAILS_VERSION_REQUIRED = 50
|
||||
|
||||
local default_config = {level = 1, dps = 0, dpshistory = {}, lasttry = {}, annouce = true}
|
||||
|
||||
--> Install plugin inside details
|
||||
local install, saveddata = _G._detalhes:InstallPlugin ("SOLO", Loc ["STRING_PLUGIN_NAME"], "Interface\\Icons\\ACHIEVEMENT_GUILDPERK_HONORABLEMENTION_RANK2", DmgRank, "DETAILS_PLUGIN_DAMAGE_RANK", MINIMAL_DETAILS_VERSION_REQUIRED, "Details! Team", "v1.2.0", default_config)
|
||||
if (type (install) == "table" and install.error) then
|
||||
print (install.error)
|
||||
end
|
||||
|
||||
--> create widgets
|
||||
CreatePluginFrames()
|
||||
|
||||
--> Register needed events
|
||||
_G._detalhes:RegisterEvent (DmgRank, "COMBAT_PLAYER_ENTER")
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,4 @@
|
||||
## Interface: 70300
|
||||
## Interface: 80000
|
||||
## Title: Details Damage, the Game! (plugin)
|
||||
## Notes: Plugin for Details
|
||||
## RequiredDeps: Details
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
## Interface: 70300
|
||||
## Interface: 80000
|
||||
## Title: Details Dps Tuning (plugin)
|
||||
## Notes: Plugin for Details
|
||||
## RequiredDeps: Details
|
||||
|
||||
@@ -517,7 +517,87 @@ local function CreatePluginFrames (data)
|
||||
return true
|
||||
end
|
||||
|
||||
EncounterDetails.ToolbarButton = _detalhes.ToolBar:NewPluginToolbarButton (EncounterDetails.OpenWindow, "Interface\\AddOns\\Details_EncounterDetails\\images\\icon", Loc ["STRING_PLUGIN_NAME"], Loc ["STRING_TOOLTIP"], 16, 16, "ENCOUNTERDETAILS_BUTTON") --"Interface\\COMMON\\help-i"
|
||||
local cooltip_menu = function()
|
||||
|
||||
local CoolTip = GameCooltip2
|
||||
|
||||
CoolTip:Reset()
|
||||
CoolTip:SetType ("menu")
|
||||
|
||||
CoolTip:SetOption ("TextSize", Details.font_sizes.menus)
|
||||
CoolTip:SetOption ("TextFont", Details.font_faces.menus)
|
||||
|
||||
CoolTip:SetOption ("ButtonHeightModSub", -2)
|
||||
CoolTip:SetOption ("ButtonHeightMod", -5)
|
||||
|
||||
CoolTip:SetOption ("ButtonsYModSub", -3)
|
||||
CoolTip:SetOption ("ButtonsYMod", -6)
|
||||
|
||||
CoolTip:SetOption ("YSpacingModSub", -3)
|
||||
CoolTip:SetOption ("YSpacingMod", 1)
|
||||
|
||||
CoolTip:SetOption ("HeighMod", 3)
|
||||
CoolTip:SetOption ("SubFollowButton", true)
|
||||
|
||||
Details:SetTooltipMinWidth()
|
||||
|
||||
--build the header
|
||||
|
||||
-- CoolTip:AddLine (Loc ["STRING_PLUGIN_NAME"])
|
||||
-- CoolTip:AddIcon (ENCOUNTERDETAILS_BUTTON.__icon, 1, 1, 20, 20)
|
||||
-- CoolTip:AddMenu (1, EncounterDetails.Frame.switch, "main")
|
||||
|
||||
-- GameCooltip:AddLine ("$div")
|
||||
|
||||
--build the menu options
|
||||
|
||||
--summary
|
||||
CoolTip:AddLine ("Encounter Summary")
|
||||
CoolTip:AddMenu (1, EncounterDetails.Frame.switch, "main")
|
||||
CoolTip:AddIcon ("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 1, 1, 20, 22, 0, 0.1015625, 0, 0.505625)
|
||||
|
||||
--chart
|
||||
CoolTip:AddLine ("Damage Graphic")
|
||||
CoolTip:AddMenu (1, EncounterDetails.Frame.switch, "graph")
|
||||
CoolTip:AddIcon ("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 1, 1, 20, 22, 0.1271875, 0.21875, 0, 0.505625)
|
||||
|
||||
--emotes
|
||||
CoolTip:AddLine ("Boss Emotes")
|
||||
CoolTip:AddMenu (1, EncounterDetails.Frame.switch, "emotes")
|
||||
CoolTip:AddIcon ("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 1, 1, 20, 22, 91/256, 116/256, 0, 0.505625)
|
||||
|
||||
--weakauras
|
||||
CoolTip:AddLine ("Create Encounter Weakauras")
|
||||
CoolTip:AddMenu (1, EncounterDetails.Frame.switch, "spellsauras")
|
||||
|
||||
if (_G.WeakAuras) then
|
||||
CoolTip:AddIcon ([[Interface\AddOns\WeakAuras\Media\Textures\icon]], 1, 1, 20, 20)
|
||||
else
|
||||
CoolTip:AddIcon ("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 1, 1, 20, 22, 121/256, 146/256, 0, 0.505625)
|
||||
end
|
||||
|
||||
--phases
|
||||
CoolTip:AddLine ("Damage by Boss Phase")
|
||||
CoolTip:AddMenu (1, EncounterDetails.Frame.switch, "phases")
|
||||
CoolTip:AddIcon ("Interface\\AddOns\\Details_EncounterDetails\\images\\boss_frame_buttons", 1, 1, 20, 22, 151/256, 176/256, 0, 0.505625)
|
||||
|
||||
--
|
||||
|
||||
local textPoint = {"left", "left", 4, 0}
|
||||
|
||||
local SharedMedia = LibStub:GetLibrary("LibSharedMedia-3.0")
|
||||
|
||||
--CoolTip:SetBannerImage (1, [[]], 200, 22, avatarPoint, avatarTexCoord, nil) --> overlay [2] avatar path
|
||||
--CoolTip:SetBannerText (1, Loc ["STRING_PLUGIN_NAME"], textPoint, {1, 1, 1}, 14, SharedMedia:Fetch ("font", _detalhes.tooltip.fontface)) --> text [1] nickname
|
||||
|
||||
--apply the backdrop settings to the menu
|
||||
Details:FormatCooltipBackdrop()
|
||||
CoolTip:SetOwner (ENCOUNTERDETAILS_BUTTON, "bottom", "top", 0, 0)
|
||||
CoolTip:ShowCooltip()
|
||||
|
||||
end
|
||||
|
||||
EncounterDetails.ToolbarButton = _detalhes.ToolBar:NewPluginToolbarButton (EncounterDetails.OpenWindow, "Interface\\AddOns\\Details_EncounterDetails\\images\\icon", Loc ["STRING_PLUGIN_NAME"], Loc ["STRING_TOOLTIP"], 16, 16, "ENCOUNTERDETAILS_BUTTON", cooltip_menu) --"Interface\\COMMON\\help-i"
|
||||
EncounterDetails.ToolbarButton.shadow = true --> loads icon_shadow.tga when the instance is showing icons with shadows
|
||||
|
||||
--> setpoint anchors mod if needed
|
||||
@@ -1987,7 +2067,10 @@ local events_to_track = {
|
||||
}
|
||||
|
||||
local enemy_spell_pool
|
||||
local CLEvents = function (self, event, time, token, hidding, who_serial, who_name, who_flags, who_flags2, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, school, aura_type)
|
||||
local CLEvents = function (self, event)
|
||||
|
||||
local time, token, hidding, who_serial, who_name, who_flags, who_flags2, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, school, aura_type = CombatLogGetCurrentEventInfo()
|
||||
|
||||
if (events_to_track [token] and _bit_band (who_flags or 0x0, 0x00000060) ~= 0) then
|
||||
local t = enemy_spell_pool [spellid]
|
||||
if (not t) then
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## Interface: 70300
|
||||
## Interface: 80000
|
||||
## Title: Details Encounter (plugin)
|
||||
## Notes: Plugin for Details
|
||||
## RequiredDeps: Details
|
||||
|
||||
@@ -1196,6 +1196,10 @@ _detalhes.EncounterDetailsTempWindow = function (EncounterDetails)
|
||||
button:SetTemplate (DetailsFrameWork:GetTemplate ("button", "DETAILS_PLUGIN_BUTTON_TEMPLATE"))
|
||||
end
|
||||
|
||||
if (not BossFrame:IsShown()) then
|
||||
Details:OpenPlugin ("DETAILS_PLUGIN_ENCOUNTER_DETAILS")
|
||||
end
|
||||
|
||||
BossFrame.DBMBars:Hide()
|
||||
BossFrame.BigWigsBars:Hide()
|
||||
BossFrame.label_dbm_bars:Hide()
|
||||
@@ -2027,10 +2031,11 @@ _detalhes.EncounterDetailsTempWindow = function (EncounterDetails)
|
||||
npc_id2:Hide()
|
||||
|
||||
--
|
||||
local label_dbm_bars = DetailsFrameWork:CreateLabel (BossFrame, "DBM Bars:", 11, nil, "GameFontHighlightSmall")
|
||||
label_dbm_bars:SetPoint ("topleft", BossFrame, "topleft", 10, -160)
|
||||
local label_bw_bars = DetailsFrameWork:CreateLabel (BossFrame, "Big Wigs Bars:", 11, nil, "GameFontHighlightSmall")
|
||||
label_bw_bars:SetPoint ("topleft", BossFrame, "topleft", 10, -205)
|
||||
local label_dbm_bars = DetailsFrameWork:CreateLabel (BossFrame, "Create Big Timer Announcer (DBM):", 11, nil, "GameFontHighlightSmall")
|
||||
label_dbm_bars:SetPoint ("topleft", BossFrame, "topleft", 10, -200)
|
||||
|
||||
local label_bw_bars = DetailsFrameWork:CreateLabel (BossFrame, "Create Big Timer Announcer (BW):", 11, nil, "GameFontHighlightSmall")
|
||||
label_bw_bars:SetPoint ("topleft", BossFrame, "topleft", 10, -250)
|
||||
|
||||
BossFrame.label_dbm_bars = label_dbm_bars
|
||||
BossFrame.label_bw_bars = label_bw_bars
|
||||
@@ -2112,9 +2117,15 @@ _detalhes.EncounterDetailsTempWindow = function (EncounterDetails)
|
||||
|
||||
local dropdown_dbm_bars = DetailsFrameWork:NewDropDown (BossFrame, _, "$parentDBMBarsDropdown", "DBMBars", 160, 20, build_dbm_bars, 1)
|
||||
dropdown_dbm_bars:SetPoint ("topleft", label_dbm_bars, "bottomleft", -1, -2)
|
||||
dropdown_dbm_bars:SetTemplate (DetailsFrameWork:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
|
||||
dropdown_dbm_bars:SetWidth (200)
|
||||
dropdown_dbm_bars.tooltip = "Create a weakaura to show a big countdown when a boss ability is coming"
|
||||
|
||||
local dropdown_bw_bars = DetailsFrameWork:NewDropDown (BossFrame, _, "$parentBigWigsBarsDropdown", "BigWigsBars", 160, 20, build_bigwigs_bars, 1)
|
||||
dropdown_bw_bars:SetPoint ("topleft", label_bw_bars, "bottomleft", -1, -2)
|
||||
dropdown_bw_bars:SetTemplate (DetailsFrameWork:GetTemplate ("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
|
||||
dropdown_bw_bars:SetWidth (200)
|
||||
dropdown_bw_bars.tooltip = "Create a weakaura to show a big countdown when a boss ability is coming"
|
||||
|
||||
dropdown_dbm_bars:Hide()
|
||||
dropdown_bw_bars:Hide()
|
||||
|
||||
@@ -6,6 +6,17 @@ local _UnitName = UnitName
|
||||
local _UnitGroupRolesAssigned = UnitGroupRolesAssigned
|
||||
local CLASS_ICON_TCOORDS = CLASS_ICON_TCOORDS
|
||||
|
||||
--BFA TODO LIST:
|
||||
|
||||
--[=[
|
||||
|
||||
flask
|
||||
food
|
||||
runes
|
||||
feats
|
||||
|
||||
--]=]
|
||||
|
||||
local flask_list = {
|
||||
[188033] = true, --Flask of the Seventh Demon
|
||||
[188031] = true, --Flask of the Whispered Pact
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## Interface: 70300
|
||||
## Interface: 80000
|
||||
## Title: Details Raid Check (plugin)
|
||||
## Notes: Show a icon on Details title bar showing flask, food, pre-pots.
|
||||
## RequiredDeps: Details
|
||||
|
||||
@@ -145,7 +145,7 @@ local function CreatePluginFrames()
|
||||
titlebar:SetBackdropColor (.1, .1, .1, .9)
|
||||
titlebar.text = titlebar:CreateFontString (nil, "overlay", "GameFontNormal")
|
||||
titlebar.text:SetPoint ("center", titlebar, "center")
|
||||
titlebar.text:SetText ("Details!: Streamer")
|
||||
titlebar.text:SetText ("Details! Streamer: Action Tracker")
|
||||
titlebar:SetScript ("OnEnter", function (self)
|
||||
GameTooltip:SetOwner (self)
|
||||
GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT")
|
||||
@@ -305,8 +305,8 @@ local function CreatePluginFrames()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--> scroll frame
|
||||
local autoscroll = CreateFrame ("scrollframe", "Details_StreamOverlayScrollFrame", SOF, "FauxScrollFrameTemplate")
|
||||
autoscroll:SetScript ("OnVerticalScroll", function (self, offset) FauxScrollFrame_OnVerticalScroll (self, offset, 20, StreamOverlay.UpdateLines) end)
|
||||
@@ -461,8 +461,10 @@ local function CreatePluginFrames()
|
||||
f:SetPoint ("topleft", SOF, "topleft", 0, h)
|
||||
f:SetPoint ("topright", SOF, "topright", 0, h)
|
||||
|
||||
--backdrop color not editable
|
||||
f:SetBackdrop ({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}})
|
||||
f:SetBackdropBorderColor (0, 0, 0, 0)
|
||||
--f:SetBackdropColor (0, 0, 0, 0)
|
||||
|
||||
local icon1 = statusbar:CreateTexture (nil, "overlay")
|
||||
local icon2 = statusbar:CreateTexture (nil, "overlay")
|
||||
@@ -834,7 +836,7 @@ function StreamOverlay:CastFinished (castid)
|
||||
local target = CastsTable [castid].Target
|
||||
local caststart = CastsTable [castid].CastStart
|
||||
local hascasttime = CastsTable [castid].HasCastTime
|
||||
|
||||
|
||||
if (ban_spells [spellid]) then
|
||||
return
|
||||
end
|
||||
@@ -896,7 +898,7 @@ listener.track_spell_cast = function()
|
||||
|
||||
elseif (castinfo.IsChanneled) then
|
||||
--> casting a channeled spell
|
||||
local name, subText, text, texture, startTime, endTime, isTradeSkill, notInterruptible = UnitChannelInfo ("player")
|
||||
local name, text, texture, startTime, endTime, isTradeSkill, notInterruptible = UnitChannelInfo ("player")
|
||||
|
||||
if (name) then
|
||||
startTime = startTime / 1000
|
||||
@@ -920,7 +922,7 @@ listener.track_spell_cast = function()
|
||||
|
||||
else
|
||||
--> still casting
|
||||
local spell, rank, displayName, icon, startTime, endTime, isTradeSkill, castID, interrupt = UnitCastingInfo ("player")
|
||||
local spell, displayName, icon, startTime, endTime, isTradeSkill, castID, interrupt = UnitCastingInfo ("player")
|
||||
if (spell) then
|
||||
startTime = startTime / 1000
|
||||
endTime = endTime / 1000
|
||||
@@ -1042,53 +1044,71 @@ end
|
||||
--print (self, event, ...)
|
||||
|
||||
if (event == "UNIT_SPELLCAST_SENT") then
|
||||
local unitID, spell, rank, target, id = ...
|
||||
|
||||
local unitID, target, castGUID, spellID = ...
|
||||
--local unitID, spell, rank, target, id = ...
|
||||
spell = GetSpellInfo (spellID)
|
||||
|
||||
--print (spell, ...)
|
||||
|
||||
if (unitID == "player") then
|
||||
CastsTable [id] = {Target = target, Id = id, CastStart = GetTime()}
|
||||
lastChannelSpell = id
|
||||
CastsTable [castGUID] = {Target = target or "", Id = castGUID, CastStart = GetTime()}
|
||||
lastChannelSpell = castGUID
|
||||
lastspell = spell
|
||||
lastcastid = id
|
||||
lastspellID = spellID
|
||||
lastcastid = castGUID
|
||||
end
|
||||
|
||||
elseif (event == "UNIT_SPELLCAST_START") then
|
||||
local unitID, spell, rank, id, spellID = ...
|
||||
if (unitID == "player" and CastsTable [id]) then
|
||||
CastsTable [id].SpellId = spellID
|
||||
CastsTable [id].HasCastTime = true
|
||||
StreamOverlay:CastStart (id)
|
||||
--print ("UNIT_SPELLCAST_START", ...)
|
||||
|
||||
--spell, rank, id,
|
||||
local unitID, castGUID, spellID = ...
|
||||
|
||||
if (unitID == "player" and CastsTable [castGUID]) then
|
||||
CastsTable [castGUID].SpellId = spellID
|
||||
CastsTable [castGUID].HasCastTime = true
|
||||
StreamOverlay:CastStart (castGUID)
|
||||
end
|
||||
|
||||
elseif (event == "UNIT_SPELLCAST_INTERRUPTED") then
|
||||
local unitID, spell, rank, id, spellID = ...
|
||||
--local unitID, spell, rank, id, spellID = ...
|
||||
local unitID, castGUID, spellID = ...
|
||||
--print ("UNIT_SPELLCAST_INTERRUPTED", ...)
|
||||
|
||||
if (unitID == "player" and CastsTable [id]) then
|
||||
CastsTable [id].Interrupted = true
|
||||
if (unitID == "player" and CastsTable [castGUID]) then
|
||||
CastsTable [castGUID].Interrupted = true
|
||||
end
|
||||
|
||||
--> channels isn't passing the CastID / cast id for channels is always Zero.
|
||||
elseif (event == "UNIT_SPELLCAST_CHANNEL_STOP") then
|
||||
local unitID, spell, rank, id, spellID = ...
|
||||
--local unitID, spell, rank, id, spellID = ...
|
||||
local unitID, castGUID, spellID = ...
|
||||
|
||||
if (unitID == "player") then
|
||||
id = lastchannelid
|
||||
castGUID = lastchannelid
|
||||
|
||||
if (not CastsTable [id]) then
|
||||
if (not CastsTable [castGUID]) then
|
||||
--print ("not", " - ", id, " - ", lastChannelSpell)
|
||||
id = lastChannelSpell
|
||||
if (not id or not CastsTable [id]) then
|
||||
castGUID = lastChannelSpell
|
||||
if (not castGUID or not CastsTable [castGUID]) then
|
||||
return
|
||||
end
|
||||
end
|
||||
CastsTable [id].Interrupted = true
|
||||
CastsTable [castGUID].Interrupted = true
|
||||
ischanneling = false
|
||||
lastchannelid = nil
|
||||
end
|
||||
|
||||
elseif (event == "UNIT_SPELLCAST_CHANNEL_START") then
|
||||
local unitID, spell, rank, id, spellID = ...
|
||||
if (unitID == "player" and (CastsTable [id] or spell == lastspell)) then
|
||||
if (id == 0) then
|
||||
id = lastcastid
|
||||
--local unitID, spell, rank, id, spellID = ...
|
||||
--print ("UNIT_SPELLCAST_CHANNEL_START", ...)
|
||||
|
||||
local unitID, castGUID, spellID = ...
|
||||
|
||||
if (unitID == "player" and (CastsTable [castGUID] or spellID == lastspellID)) then
|
||||
if (castGUID == "" or not castGUID) then
|
||||
castGUID = lastcastid
|
||||
end
|
||||
|
||||
if (ischanneling) then
|
||||
@@ -1096,36 +1116,41 @@ end
|
||||
CastsTable [lastchannelid].Interrupted = true
|
||||
end
|
||||
|
||||
if (not CastsTable [id]) then
|
||||
if (not CastsTable [castGUID]) then
|
||||
--print ("not", " - ", id, " - ", lastChannelSpell)
|
||||
id = lastChannelSpell
|
||||
castGUID = lastChannelSpell
|
||||
end
|
||||
|
||||
CastsTable [id].HasCastTime = true
|
||||
CastsTable [id].IsChanneled = true
|
||||
CastsTable [id].SpellId = spellID
|
||||
lastchannelid = id
|
||||
CastsTable [castGUID].HasCastTime = true
|
||||
CastsTable [castGUID].IsChanneled = true
|
||||
CastsTable [castGUID].SpellId = spellID
|
||||
lastchannelid = castGUID
|
||||
ischanneling = true
|
||||
|
||||
local spell = GetSpellInfo (spellID)
|
||||
channelspells [spell] = true
|
||||
|
||||
StreamOverlay:CastStart (id)
|
||||
StreamOverlay:CastStart (castGUID)
|
||||
end
|
||||
|
||||
elseif (event == "UNIT_SPELLCAST_SUCCEEDED") then
|
||||
local unitID, spell, rank, id, spellID = ...
|
||||
--local unitID, spell, rank, id, spellID = ...
|
||||
local unitID, castGUID, spellID = ...
|
||||
local spell = GetSpellInfo (spellID)
|
||||
|
||||
if (unitID == "player" and CastsTable[id] and not channelspells [spell]) then
|
||||
if (CastsTable[id].HasCastTime and not CastsTable[id].IsChanneled) then
|
||||
--print (spell, ...)
|
||||
|
||||
if (unitID == "player" and CastsTable[castGUID] and not channelspells [spell]) then
|
||||
if (CastsTable[castGUID].HasCastTime and not CastsTable[castGUID].IsChanneled) then
|
||||
--> a cast (non channeled) just successful finished
|
||||
CastsTable [id].Success = true
|
||||
StreamOverlay:CastFinished (id)
|
||||
CastsTable [castGUID].Success = true
|
||||
StreamOverlay:CastFinished (castGUID)
|
||||
|
||||
elseif (not CastsTable[id].HasCastTime) then
|
||||
elseif (not CastsTable[castGUID].HasCastTime) then
|
||||
--> instant cast finished
|
||||
CastsTable [id].SpellId = spellID
|
||||
CastsTable [id].Success = true
|
||||
StreamOverlay:CastFinished (id)
|
||||
CastsTable [castGUID].SpellId = spellID
|
||||
CastsTable [castGUID].Success = true
|
||||
StreamOverlay:CastFinished (castGUID)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1354,7 +1379,7 @@ end
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function StreamOverlay.OpenOptionsPanel()
|
||||
function StreamOverlay.OpenOptionsPanel (from_options_panel)
|
||||
|
||||
if (not StreamOverlayOptionsPanel) then
|
||||
|
||||
@@ -1366,7 +1391,7 @@ function StreamOverlay.OpenOptionsPanel()
|
||||
local options_slider_template = fw:GetTemplate ("slider", "OPTIONS_SLIDER_TEMPLATE")
|
||||
local options_button_template = fw:GetTemplate ("button", "OPTIONS_BUTTON_TEMPLATE")
|
||||
|
||||
local options_frame = StreamOverlay:CreatePluginOptionsFrame ("StreamOverlayOptionsPanel", "Details!: Streamer", 1)
|
||||
local options_frame = StreamOverlay:CreatePluginOptionsFrame ("StreamOverlayOptionsPanel", "Details! Streamer: Action Tracker", 1)
|
||||
options_frame:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
|
||||
options_frame:SetBackdropColor (0, 0, 0, 0.5)
|
||||
options_frame:SetBackdropBorderColor (0, 0, 0, 1)
|
||||
@@ -1837,10 +1862,27 @@ function StreamOverlay.OpenOptionsPanel()
|
||||
|
||||
end
|
||||
|
||||
options_frame:SetScript ("OnHide", function()
|
||||
if (StreamOverlay.FromOptionsPanel) then
|
||||
--> reopen the options panel
|
||||
C_Timer.After (0.2, function()
|
||||
Details:OpenOptionsWindow(Details:GetInstance(1))
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
end
|
||||
|
||||
StreamOverlayOptionsPanel:Show()
|
||||
|
||||
StreamOverlay.FromOptionsPanel = from_options_panel
|
||||
if (from_options_panel) then
|
||||
if (DetailsOptionsWindow) then
|
||||
C_Timer.After (0.2, function()
|
||||
DetailsOptionsWindow:Hide()
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
@@ -1909,7 +1951,7 @@ function StreamOverlay:OnEvent (_, event, ...)
|
||||
|
||||
StreamOverlay:SetPluginDescription ("Show in real time the spells you are casting.\n\nThe viewer can now follow what you are doing, what spells you are casting, learn your rotation.\n\nAlso tells who is the target and its class/spec on raiding or role if you are in arena.\n\nWhen you die, the panel is filled with your death log.")
|
||||
|
||||
if (StreamOverlay.db.is_first_run) then
|
||||
if (StreamOverlay.db.is_first_run) then --problem with setting the plugin as disabled
|
||||
if (Details:GetTutorialCVar ("STREAMER_PLUGIN_FIRSTRUN")) then
|
||||
Details:DisablePlugin ("DETAILS_PLUGIN_STREAM_OVERLAY")
|
||||
StreamOverlay.db.is_first_run = false
|
||||
@@ -1919,10 +1961,10 @@ function StreamOverlay:OnEvent (_, event, ...)
|
||||
end
|
||||
|
||||
if (StreamOverlay.db.is_first_run and not Details:GetTutorialCVar ("STREAMER_PLUGIN_FIRSTRUN")) then
|
||||
|
||||
|
||||
local show_frame = function()
|
||||
|
||||
if ((DetailsWelcomeWindow and DetailsWelcomeWindow:IsShown()) or not Details:GetTutorialCVar ("MEMORY_USAGE_ALERT1") or not StreamOverlay.db.is_first_run) then
|
||||
if ((DetailsWelcomeWindow and DetailsWelcomeWindow:IsShown()) or not StreamOverlay.db.is_first_run) then
|
||||
return
|
||||
end
|
||||
|
||||
@@ -1983,6 +2025,8 @@ function StreamOverlay:OnEvent (_, event, ...)
|
||||
|
||||
Details_StreamerDB.profiles [ Details_StreamerDB.characters [pname] ] = ptable
|
||||
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## Interface: 70300
|
||||
## Interface: 80000
|
||||
## Title: Details!: Streamer (plugin)
|
||||
## Notes: Show which spells you are casting, viewers can see what are you doing and follow your steps.
|
||||
## RequiredDeps: Details
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
## Interface: 70300
|
||||
## Interface: 80000
|
||||
## Title: Details TimeAttack (plugin)
|
||||
## Notes: Plugin for Details
|
||||
## SavedVariablesPerCharacter: _detalhes_databaseTimeAttack
|
||||
|
||||
@@ -376,7 +376,7 @@ local function CreatePluginFrames (data)
|
||||
local aggro = topThreat [6] * (CheckInteractDistance ("target", 3) and 1.1 or 1.3)
|
||||
|
||||
pullRow:SetLeftText ("Pull Aggro At")
|
||||
local realPercent = _math_floor (aggro / topThreat [6] * 100)
|
||||
local realPercent = _math_floor (aggro / max (topThreat [6], 0.01) * 100)
|
||||
pullRow:SetRightText ("+" .. ThreatMeter:ToK2 (aggro - myThreat) .. " (" .. _math_floor (_math_abs ((myThreat / aggro * 100) - realPercent)) .. "%)") --
|
||||
pullRow:SetValue (100)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## Interface: 70300
|
||||
## Interface: 80000
|
||||
## Title: Details Tiny Threat (plugin)
|
||||
## Notes: Plugin for Details
|
||||
## RequiredDeps: Details
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## Interface: 70300
|
||||
## Interface: 80000
|
||||
## Title: Details Vanguard (plugin)
|
||||
## Notes: Plugin for Details
|
||||
## SavedVariablesPerCharacter: _detalhes_databaseVanguard
|
||||
|
||||
Reference in New Issue
Block a user