Files
coa-details/gumps/janela_info.lua
T
2013-08-09 14:42:33 -03:00

1370 lines
49 KiB
Lua

local _detalhes = _G._detalhes
local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" )
local gump = _detalhes.gump
--lua locals
--local _string_len = string.len
local _math_floor = math.floor
local _ipairs = ipairs
--local _pairs = pairs
local _type = type
--api locals
local _CreateFrame = CreateFrame
local _GetTime = GetTime
local _GetSpellInfo = _detalhes.getspellinfo
local _GetCursorPosition = GetCursorPosition
local _unpack = unpack
local atributos = _detalhes.atributos
local sub_atributos = _detalhes.sub_atributos
local info = _detalhes.janela_info
local classe_icones = _G.CLASS_ICON_TCOORDS
------------------------------------------------------------------------------------------------------------------------------
--self = instancia
--jogador = classe_damage ou classe_heal
function _detalhes:AbreJanelaInfo (jogador)
if (not _detalhes.row_singleclick_overwrite [self.atributo] or not _detalhes.row_singleclick_overwrite [self.atributo][self.sub_atributo]) then
return
elseif (_type (_detalhes.row_singleclick_overwrite [self.atributo][self.sub_atributo]) == "function") then
return _detalhes.row_singleclick_overwrite [self.atributo][self.sub_atributo] (_, jogador, self)
end
if (self.modo == _detalhes._detalhes_props["MODO_RAID"]) then
return
end
--> _detalhes.info_jogador armazena o jogador que esta sendo mostrado na janela de detalhes
if (info.jogador and info.jogador == jogador) then
_detalhes:FechaJanelaInfo() --> se clicou na mesma barra então fecha a janela de detalhes
return
end
--> vamos passar os parâmetros para dentro da tabela da janela...
info.ativo = true --> sinaliza o addon que a janela esta aberta
info.atributo = self.atributo --> instancia.atributo -> grava o atributo (damage, heal, etc)
info.sub_atributo = self.sub_atributo --> instancia.sub_atributo -> grava o sub atributo (damage done, dps, damage taken, etc)
info.jogador = jogador --> de qual jogador (objeto classe_damage)
info.instancia = self --> salva a referência da instância que pediu o info
info.mostrando = nil
local nome = jogador.nome --> nome do jogador
local atributo_nome = sub_atributos[info.atributo].lista [info.sub_atributo] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] --> // nome do atributo // precisa ser o sub atributo correto???
info.nome:SetText (nome)
info.atributo_nome:SetText (atributo_nome)
info.atributo_nome:SetPoint ("CENTER", info.nome, "CENTER", 0, 14)
gump:TrocaBackgroundInfo (info)
gump:HidaAllBarrasInfo()
gump:HidaAllBarrasAlvo()
gump:HidaAllDetalheInfo()
gump:JI_AtualizaContainerBarras (-1)
local classe = jogador.classe
if (not classe) then
classe = "monster"
end
--info.classe_icone:SetTexture ("Interface\\AddOns\\Details\\images\\"..classe:lower()) --> top left
info.classe_icone:SetTexture ("Interface\\AddOns\\Details\\images\\classes") --> top left
if (classe ~= "UNKNOW" and classe ~= "UNGROUPPLAYER") then
info.classe_icone:SetTexCoord (_detalhes.class_coords [classe][1], _detalhes.class_coords [classe][2], _detalhes.class_coords [classe][3], _detalhes.class_coords [classe][4])
if (jogador.enemy) then
--> completa com a borda
--info.classe_iconePlus:SetTexture ("Interface\\AddOns\\Details\\images\\classes_plus")
if (_detalhes.faction_against == "Horde") then
--info.classe_iconePlus:SetTexCoord (0.25, 0.5, 0, 0.25)
info.nome:SetTextColor (1, 91/255, 91/255, 1)
else
--info.classe_iconePlus:SetTexCoord (0, 0.25, 0, 0.25)
info.nome:SetTextColor (151/255, 215/255, 1, 1)
end
else
info.classe_iconePlus:SetTexture()
info.nome:SetTextColor (1, 1, 1, 1)
end
else
if (jogador.enemy) then
if (_detalhes.class_coords [_detalhes.faction_against]) then
info.classe_icone:SetTexCoord (_unpack (_detalhes.class_coords [_detalhes.faction_against]))
if (_detalhes.faction_against == "Horde") then
info.nome:SetTextColor (1, 91/255, 91/255, 1)
else
info.nome:SetTextColor (151/255, 215/255, 1, 1)
end
else
info.nome:SetTextColor (1, 1, 1, 1)
end
else
--info.classe_icone:SetTexture ("Interface\\AddOns\\Details\\images\\monster")
--info.classe_icone:SetTexCoord (0, 1, 0, 1)
info.classe_icone:SetTexCoord (_detalhes.class_coords ["MONSTER"][1], _detalhes.class_coords ["MONSTER"][2], _detalhes.class_coords ["MONSTER"][3], _detalhes.class_coords ["MONSTER"][4])
end
info.classe_iconePlus:SetTexture()
end
gump:Fade (info, 0)
return jogador:MontaInfo()
end
-- for beta todo: info background need a major rewrite
function gump:TrocaBackgroundInfo()
if (info.atributo == 1) then --> DANO
if (info.sub_atributo == 1 or info.sub_atributo == 2) then --> damage done / dps
if (info.tipo ~= 1) then --> janela com as divisorias
info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part1") --> top left
info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part3") --> bottom left
info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part2") --> top right
info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part4") --> bottom right
info.targets:SetText ("Alvos:")
info.tipo = 1
end
elseif (info.sub_atributo == 3) then --> damage taken
if (info.tipo ~= 2) then --> janela com fundo diferente
info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left
info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left
info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right
info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right
info.targets:SetText ("Alvos:")
info.tipo = 2
end
elseif (info.sub_atributo == 4) then --> friendly fire
if (info.tipo ~= 3) then --> janela com fundo diferente
info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left
info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left
info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right
info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right
info.targets:SetText ("Habilidades:")
info.tipo = 3
end
end
elseif (info.atributo == 2) then --> HEALING
if (info.sub_atributo == 1 or info.sub_atributo == 2 or info.sub_atributo == 3) then --> damage done / dps
if (info.tipo ~= 1) then --> janela com as divisorias
info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part1") --> top left
info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part3") --> bottom left
info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part2") --> top right
info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part4") --> bottom right
info.targets:SetText ("Alvos:")
info.tipo = 1
end
elseif (info.sub_atributo == 4) then --> Healing taken
if (info.tipo ~= 2) then --> janela com fundo diferente
info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left
info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left
info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right
info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right
info.targets:SetText ("Alvos:")
info.tipo = 2
end
end
elseif (info.atributo == 3) then --> REGEN
if (info.tipo ~= 2) then --> janela com fundo diferente
info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left
info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left
info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right
info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right
info.targets:SetText ("Vindo de:")
info.tipo = 2
end
elseif (info.atributo == 4) then --> MISC
if (info.tipo ~= 2) then --> janela com fundo diferente
info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left
info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left
info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right
info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right
info.targets:SetText ("Alvos:")
info.tipo = 2
end
end
end
--> self é qualquer coisa que chamar esta função
------------------------------------------------------------------------------------------------------------------------------
-- é chamado pelo click no X e pelo reset do historico
function _detalhes:FechaJanelaInfo (fromEscape)
if (info.ativo) then --> se a janela tiver aberta
--janela_info:Hide()
if (fromEscape) then
gump:Fade (info, "in")
else
gump:Fade (info, 1)
end
info.ativo = false --> sinaliza o addon que a janela esta agora fechada
--_detalhes.info_jogador.detalhes = nil
info.jogador = nil
info.atributo = nil
info.sub_atributo = nil
info.instancia = nil
info.nome:SetText ("")
info.atributo_nome:SetText ("")
gump:JI_AtualizaContainerBarras (-1) --> reseta o frame das barras
end
end
--> esconde todas as barras das skills na janela de info
------------------------------------------------------------------------------------------------------------------------------
function gump:HidaAllBarrasInfo()
local barras = _detalhes.janela_info.barras1
for index = 1, #barras, 1 do
barras [index]:Hide()
barras [index].textura:SetStatusBarColor (1, 1, 1, 1)
barras [index].on_focus = false
end
end
--> esconde todas as barras dos alvos do jogador
------------------------------------------------------------------------------------------------------------------------------
function gump:HidaAllBarrasAlvo()
local barras = _detalhes.janela_info.barras2
for index = 1, #barras, 1 do
barras [index]:Hide()
end
end
--> esconde as 5 barras a direita na janela de info
------------------------------------------------------------------------------------------------------------------------------
function gump:HidaAllDetalheInfo()
for i = 1, 5 do
gump:HidaDetalheInfo (i)
end
for _, barra in _ipairs (info.barras3) do
barra:Hide()
end
_detalhes.janela_info.spell_icone:SetTexture ("")
end
--> seta os scripts da janela de informações
------------------------------------------------------------------------------------------------------------------------------
local function seta_scripts (este_gump)
--> Janela
este_gump:SetScript ("OnMouseDown",
function (self, botao)
if (botao == "LeftButton") then
self:StartMoving()
self.isMoving = true
end
end)
este_gump:SetScript ("OnMouseUp",
function (self)
if (self.isMoving) then
self:StopMovingOrSizing()
self.isMoving = false
end
end)
este_gump.container_barras.gump:SetScript ("OnMouseDown",
function (self, botao)
if (botao == "LeftButton") then
este_gump:StartMoving()
este_gump.isMoving = true
end
end)
este_gump.container_barras.gump:SetScript ("OnMouseUp",
function (self)
if (este_gump.isMoving) then
este_gump:StopMovingOrSizing()
este_gump.isMoving = false
end
end)
este_gump.container_detalhes:SetScript ("OnMouseDown",
function (self, botao)
if (botao == "LeftButton") then
este_gump:StartMoving()
este_gump.isMoving = true
end
end)
este_gump.container_detalhes:SetScript ("OnMouseUp",
function (self)
if (este_gump.isMoving) then
este_gump:StopMovingOrSizing()
este_gump.isMoving = false
end
end)
este_gump.container_alvos.gump:SetScript ("OnMouseDown",
function (self, botao)
if (botao == "LeftButton") then
este_gump:StartMoving()
este_gump.isMoving = true
end
end)
este_gump.container_alvos.gump:SetScript ("OnMouseUp",
function (self)
if (este_gump.isMoving) then
este_gump:StopMovingOrSizing()
este_gump.isMoving = false
end
end)
--> botão fechar
este_gump.fechar:SetScript ("OnClick", function(self)
_detalhes:FechaJanelaInfo()
end)
end
------------------------------------------------------------------------------------------------------------------------------
function gump:HidaDetalheInfo (index)
local info = _detalhes.janela_info.grupos_detalhes [index]
info.nome:SetText ("")
info.nome2:SetText ("")
info.dano:SetText ("")
info.dano_porcento:SetText ("")
info.dano_media:SetText ("")
info.dano_dps:SetText ("")
info.bg:Hide()
end
--> cria a barra de detalhes a direita da janela de informações
------------------------------------------------------------------------------------------------------------------------------
function gump:CriaDetalheInfo (index)
local info = {}
info.nome = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.nome2 = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano_porcento = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano_media = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.dano_dps = _detalhes.janela_info.container_detalhes:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
info.bg = _CreateFrame ("StatusBar", nil, _detalhes.janela_info.container_detalhes)
info.bg:SetStatusBarTexture ("Interface\\AddOns\\Details\\images\\bar_detalhes2")
info.bg:SetMinMaxValues (0, 100)
info.bg:SetValue (100)
info.bg:SetWidth (219)
info.bg:SetHeight (47)
info.bg.overlay = info.bg:CreateTexture (nil, "ARTWORK")
info.bg.overlay:SetTexture ("Interface\\AddOns\\Details\\images\\overlay_detalhes")
info.bg.overlay:SetWidth (241)
info.bg.overlay:SetHeight (61)
info.bg.overlay:SetPoint ("TOPLEFT", info.bg, "TOPLEFT", -7, 6)
gump:Fade (info.bg.overlay, 1)
info.bg.reportar = gump:NewDetailsButton (info.bg, nil, nil, _detalhes.Reportar, _detalhes.janela_info, 10+index, 16, 16,
--_detalhes.icones.report.up, _detalhes.icones.report.down, _detalhes.icones.report.disabled)
"Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON")
info.bg.reportar:SetPoint ("BOTTOMLEFT", info.bg.overlay, "BOTTOMRIGHT", -33, 10)
gump:Fade (info.bg.reportar, 1)
info.bg:SetScript ("OnEnter",
function(self)
gump:Fade (self.overlay, "OUT")
gump:Fade (self.reportar, "OUT")
end)
info.bg:SetScript ("OnLeave",
function(self)
gump:Fade (self.overlay, "IN")
gump:Fade (self.reportar, "IN")
end)
info.bg.reportar:SetScript ("OnEnter",
function(self)
gump:Fade (info.bg.overlay, "OUT")
gump:Fade (self, "OUT")
end)
info.bg.reportar:SetScript ("OnLeave",
function(self)
gump:Fade (info.bg.overlay, "IN")
gump:Fade (self, "IN")
end)
info.bg_end = info.bg:CreateTexture (nil, "BACKGROUND")
info.bg_end:SetHeight (47)
--este_gump.bg4:SetPoint ("BOTTOMRIGHT", este_gump, "BOTTOMRIGHT", 0, 0)
--este_gump.bg4:SetWidth (128)
--este_gump.bg4:SetHeight (256)
info.bg_end:SetTexture ("Interface\\AddOns\\Details\\images\\bar_detalhes2_end")
--info.bg = _detalhes.janela_info.container_detalhes:CreateTexture (nil, "BACKGROUND")
--info.bg:SetWidth (400)
--info.bg:SetHeight (70)
--info.bg:SetTexture ("Interface\\MONEYFRAME\\UI-MoneyFrame2")
_detalhes.janela_info.grupos_detalhes [index] = info
end
--> determina qual a pocisão que a barra de detalhes vai ocupar
------------------------------------------------------------------------------------------------------------------------------
function gump:SetaDetalheInfoAltura (index)
local info = _detalhes.janela_info.grupos_detalhes [index]
local janela = _detalhes.janela_info.container_detalhes
local altura = {-10, -63, -118, -173, -228}
local x1 = 64
local x2 = 160
altura = altura [index]
info.bg:SetPoint ("TOPLEFT", janela, "TOPLEFT", x1-2, altura+2)
info.bg_end:SetPoint ("LEFT", info.bg, "LEFT", info.bg:GetValue()*2.19, 0)
info.bg:Hide()
info.nome:SetPoint ("TOPLEFT", janela, "TOPLEFT", x1, altura)
info.nome2:SetPoint ("TOPLEFT", janela, "TOPLEFT", x2, altura)
info.dano:SetPoint ("TOPLEFT", janela, "TOPLEFT", x1, altura + (-20))
info.dano_porcento:SetPoint ("TOPLEFT", janela, "TOPLEFT", x2, altura + (-20))
info.dano_media:SetPoint ("TOPLEFT", janela, "TOPLEFT", x1, altura + (-30))
info.dano_dps:SetPoint ("TOPLEFT", janela, "TOPLEFT", x2, altura + (-30))
end
--> seta o conteúdo da barra de detalhes
------------------------------------------------------------------------------------------------------------------------------
function gump:SetaDetalheInfoTexto (index, p, arg1, arg2, arg3, arg4, arg5, arg6)
local info = _detalhes.janela_info.grupos_detalhes [index]
if (p) then
if (_type (p) == "table") then
info.bg:SetValue (p.p)
info.bg:SetStatusBarColor (p.c[1], p.c[2], p.c[3])
else
info.bg:SetValue (p)
info.bg:SetStatusBarColor (1, 1, 1)
end
info.bg_end:SetPoint ("LEFT", info.bg, "LEFT", (info.bg:GetValue()*2.19)-6, 0)
info.bg:Show()
end
if (info.IsPet) then
info.bg.PetIcon:Hide()
info.bg.PetText:Hide()
info.bg.PetDps:Hide()
gump:Fade (info.bg.overlay, "IN")
info.IsPet = false
end
if (arg1) then
info.nome:SetText (arg1)
end
if (arg2) then
info.dano:SetText (arg2)
end
if (arg3) then
info.dano_porcento:SetText (arg3)
end
if (arg4) then
info.dano_media:SetText (arg4)
end
if (arg5) then
info.dano_dps:SetText (arg5)
end
if (arg6) then
info.nome2:SetText (arg6)
end
info.nome:Show()
info.dano:Show()
info.dano_porcento:Show()
info.dano_media:Show()
info.dano_dps:Show()
info.nome2:Show()
end
--> cria as 5 caixas de detalhes infos que serão usados
------------------------------------------------------------------------------------------------------------------------------
local function cria_barras_detalhes()
_detalhes.janela_info.grupos_detalhes = {}
gump:CriaDetalheInfo (1)
gump:SetaDetalheInfoAltura (1)
gump:CriaDetalheInfo (2)
gump:SetaDetalheInfoAltura (2)
gump:CriaDetalheInfo (3)
gump:SetaDetalheInfoAltura (3)
gump:CriaDetalheInfo (4)
gump:SetaDetalheInfoAltura (4)
gump:CriaDetalheInfo (5)
gump:SetaDetalheInfoAltura (5)
end
--> cria os textos em geral da janela info
------------------------------------------------------------------------------------------------------------------------------
local function cria_textos (este_gump)
este_gump.nome = este_gump:CreateFontString (nil, "OVERLAY", "QuestFont_Large")
este_gump.nome:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 105, -54)
este_gump.atributo_nome = este_gump:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
este_gump.targets = este_gump:CreateFontString (nil, "OVERLAY", "QuestFont_Large")
este_gump.targets:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 24, -235)
este_gump.targets:SetText ("Alvos:")
end
--> esquerdo superior
local function cria_container_barras (este_gump)
local container_barras_window = _CreateFrame ("ScrollFrame", "Details_Info_ContainerBarrasScroll", este_gump)
local container_barras = _CreateFrame ("Frame", "Details_Info_ContainerBarras", container_barras_window)
container_barras_window:SetBackdrop({
edgeFile = "Interface\\DialogFrame\\UI-DialogBox-gold-Border", tile = true, tileSize = 16, edgeSize = 5,
insets = {left = 1, right = 1, top = 0, bottom = 1},})
container_barras_window:SetBackdropBorderColor (0, 0, 0, 0)
container_barras:SetBackdrop({
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16,
insets = {left = 1, right = 1, top = 0, bottom = 1},})
container_barras:SetBackdropColor (0, 0, 0, 0)
container_barras:SetAllPoints (container_barras_window)
container_barras:SetWidth (300)
container_barras:SetHeight (150)
container_barras:EnableMouse (true)
container_barras:SetResizable (false)
container_barras:SetMovable (true)
container_barras_window:SetWidth (300)
container_barras_window:SetHeight (145)
container_barras_window:SetScrollChild (container_barras)
container_barras_window:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 21, -76)
gump:NewScrollBar (container_barras_window, container_barras, 6, -17)
container_barras_window.slider:Altura (117)
container_barras_window.slider:cimaPoint (0, 1)
container_barras_window.slider:baixoPoint (0, -3)
container_barras_window.ultimo = 0
container_barras_window.gump = container_barras
--container_barras_window.slider = slider_gump
este_gump.container_barras = container_barras_window
end
function gump:JI_AtualizaContainerBarras (amt)
local container = _detalhes.janela_info.container_barras
if (amt >= 9 and container.ultimo ~= amt) then
local tamanho = 17*amt
container.gump:SetHeight (tamanho)
container.slider:Update()
container.ultimo = amt
elseif (amt < 8 and container.slider.ativo) then
container.slider:Update (true)
container.gump:SetHeight (140)
container.scroll_ativo = false
container.ultimo = 0
end
end
function gump:JI_AtualizaContainerAlvos (amt)
local container = _detalhes.janela_info.container_alvos
if (amt >= 6 and container.ultimo ~= amt) then
local tamanho = 17*amt
container.gump:SetHeight (tamanho)
container.slider:Update()
container.ultimo = amt
elseif (amt <= 5 and container.slider.ativo) then
container.slider:Update (true)
container.gump:SetHeight (100)
container.scroll_ativo = false
container.ultimo = 0
end
end
--> container direita
local function cria_container_detalhes (este_gump)
local container_detalhes = _CreateFrame ("Frame", "Details_Info_ContainerDetalhes", este_gump)
container_detalhes:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", -74, -76)
container_detalhes:SetWidth (220)
container_detalhes:SetHeight (270)
container_detalhes:EnableMouse (true)
container_detalhes:SetResizable (false)
container_detalhes:SetMovable (true)
este_gump.container_detalhes = container_detalhes
end
--> esquerdo inferior
local function cria_container_alvos (este_gump)
local container_alvos_window = _CreateFrame ("ScrollFrame", "Details_Info_ContainerAlvosScroll", este_gump)
local container_alvos = _CreateFrame ("Frame", "Details_Info_ContainerAlvos", container_alvos_window)
container_alvos_window:SetBackdrop({
edgeFile = "Interface\\DialogFrame\\UI-DialogBox-gold-Border", tile = true, tileSize = 16, edgeSize = 5,
insets = {left = 1, right = 1, top = 0, bottom = 1},})
container_alvos_window:SetBackdropBorderColor (0,0,0,0)
container_alvos:SetBackdrop({
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16,
insets = {left = 1, right = 1, top = 0, bottom = 1},})
container_alvos:SetBackdropColor (50/255, 50/255, 50/255, 0.6)
container_alvos:SetAllPoints (container_alvos_window)
container_alvos:SetWidth (300)
container_alvos:SetHeight (100)
container_alvos:EnableMouse (true)
container_alvos:SetResizable (false)
container_alvos:SetMovable (true)
container_alvos_window:SetWidth (300)
container_alvos_window:SetHeight (100)
container_alvos_window:SetScrollChild (container_alvos)
container_alvos_window:SetPoint ("BOTTOMLEFT", este_gump, "BOTTOMLEFT", 20, 6) --56 default
gump:NewScrollBar (container_alvos_window, container_alvos, 7, 4)
container_alvos_window.slider:Altura (88)
container_alvos_window.slider:cimaPoint (0, 1)
container_alvos_window.slider:baixoPoint (0, -3)
container_alvos_window.gump = container_alvos
este_gump.container_alvos = container_alvos_window
end
function gump:CriaJanelaInfo()
--> cria a janela em si
local este_gump = info
este_gump:SetFrameStrata ("MEDIUM")
--> fehcar com o esc
tinsert (UISpecialFrames, este_gump:GetName())
--> fix para dar fadein ao apertar esc
este_gump:SetScript ("OnHide", function (self)
if (not este_gump.hidden) then --> significa que foi fechado com ESC
este_gump:Show()
_detalhes:FechaJanelaInfo(1)
end
end)
--> propriedades da janela
este_gump:SetPoint ("CENTER", UIParent)
--este_gump:SetWidth (640)
este_gump:SetWidth (590)
este_gump:SetHeight (354)
este_gump:EnableMouse (true)
este_gump:SetResizable (false)
este_gump:SetMovable (true)
--> joga a janela para a global
_detalhes.janela_info = este_gump
--> começa a montar as texturas <--
--> icone da classe no canto esquerdo superior
este_gump.classe_icone = este_gump:CreateTexture (nil, "BACKGROUND")
este_gump.classe_icone:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 4, 0)
este_gump.classe_icone:SetWidth (64)
este_gump.classe_icone:SetHeight (64)
este_gump.classe_icone:SetDrawLayer ("BACKGROUND", 1)
--> complemento do icone
este_gump.classe_iconePlus = este_gump:CreateTexture (nil, "BACKGROUND")
este_gump.classe_iconePlus:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 4, 0)
este_gump.classe_iconePlus:SetWidth (64)
este_gump.classe_iconePlus:SetHeight (64)
este_gump.classe_iconePlus:SetDrawLayer ("BACKGROUND", 2)
--> cria as 4 partes do fundo da janela
--> top left
este_gump.bg1 = este_gump:CreateTexture (nil, "BORDER")
este_gump.bg1:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 0, 0)
este_gump.bg1:SetWidth (512)
este_gump.bg1:SetHeight (256)
este_gump.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part1")
--> bottom left
este_gump.bg3 = este_gump:CreateTexture (nil, "BORDER")
--este_gump.bg3:SetPoint ("BOTTOMLEFT", este_gump, "BOTTOMLEFT", 0, 0)
este_gump.bg3:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 0, -256)
este_gump.bg3:SetWidth (512)
este_gump.bg3:SetHeight (128)
este_gump.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part3")
--> top right
este_gump.bg2 = este_gump:CreateTexture (nil, "BORDER")
este_gump.bg2:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 512, 0)
este_gump.bg2:SetWidth (128)
este_gump.bg2:SetHeight (128)
este_gump.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part2")
--> bottom right
este_gump.bg4 = este_gump:CreateTexture (nil, "BORDER")
--este_gump.bg4:SetPoint ("BOTTOMRIGHT", este_gump, "BOTTOMRIGHT", 0, 0)
--este_gump.bg4:SetPoint ("BOTTOMLEFT", este_gump, "BOTTOMLEFT", 512, 0)
este_gump.bg4:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 512, -128)
este_gump.bg4:SetWidth (128)
este_gump.bg4:SetHeight (256)
este_gump.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part4")
--> botão de fechar
este_gump.fechar = _CreateFrame ("Button", nil, este_gump, "UIPanelCloseButton")
este_gump.fechar:SetWidth (32)
este_gump.fechar:SetHeight (32)
este_gump.fechar:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", 5, -8)
este_gump.fechar:SetText ("X")
este_gump.fechar:SetFrameLevel (este_gump:GetFrameLevel()+2)
function este_gump:ToFront()
if (_detalhes.bosswindow) then
if (_detalhes.bosswindow:GetFrameLevel() > este_gump:GetFrameLevel()) then
este_gump:SetFrameLevel (este_gump:GetFrameLevel()+3)
_detalhes.bosswindow:SetFrameLevel (_detalhes.bosswindow:GetFrameLevel()-3)
end
end
end
este_gump.grab = gump:NewDetailsButton (este_gump, este_gump, _, este_gump.ToFront, nil, nil, 590, 73, "", "", "", "", {OnGrab = "PassClick"})
este_gump.grab:SetPoint ("topleft",este_gump, "topleft")
este_gump.grab:SetFrameLevel (este_gump:GetFrameLevel()+1)
--> titulo
gump:NewLabel (este_gump, este_gump, nil, "titulo", Loc ["STRING_PLAYER_DETAILS"], "GameFontHighlightLeft", 12, {227/255, 186/255, 4/255})
este_gump.titulo:SetPoint ("center", este_gump, "center")
este_gump.titulo:SetPoint ("top", este_gump, "top", 0, -18)
--> cria os textos da janela
cria_textos (este_gump)
--> cria o frama que vai abrigar as barras das habilidades
cria_container_barras (este_gump)
--> cria o container que vai abrirgar as 5 barras de detalhes
cria_container_detalhes (este_gump)
--> cria o container onde vai abrigar os alvos do jogador
cria_container_alvos (este_gump)
--> cria as 5 barras de detalhes a direita da janela
cria_barras_detalhes()
--> seta os scripts dos frames da janela
seta_scripts (este_gump)
--> vai armazenar os objetos das barras de habilidade
este_gump.barras1 = {}
--> vai armazenar os objetos das barras de alvos
este_gump.barras2 = {}
--> vai armazenar os objetos das barras da caixa especial da direita
este_gump.barras3 = {}
--> botão de reportar da caixa da esquerda, onde fica as barras principais
este_gump.report_esquerda = gump:NewDetailsButton (este_gump, este_gump, nil, _detalhes.Reportar, este_gump, 1, 16, 16,
"Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON")
este_gump.report_esquerda:SetPoint ("BOTTOMLEFT", este_gump.container_barras, "TOPLEFT", 281, 3)
este_gump.report_esquerda:SetFrameLevel (este_gump:GetFrameLevel()+2)
--> botão de reportar da caixa dos alvos
este_gump.report_alvos = gump:NewDetailsButton (este_gump, este_gump, nil, _detalhes.Reportar, este_gump, 3, 16, 16,
"Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON")
este_gump.report_alvos:SetPoint ("BOTTOMRIGHT", este_gump.container_alvos, "TOPRIGHT", -2, -1)
este_gump.report_alvos:SetFrameLevel (3) --> solved inactive problem
--> ícone da magia selecionada para mais detalhes
este_gump.bg_icone_bg = este_gump:CreateTexture (nil, "ARTWORK")
este_gump.bg_icone_bg:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", -15, -12)
este_gump.bg_icone_bg:SetTexture ("Interface\\AddOns\\Details\\images\\icone_bg_fundo")
este_gump.bg_icone_bg:SetDrawLayer ("ARTWORK", -1)
este_gump.bg_icone_bg:Show()
este_gump.bg_icone = este_gump:CreateTexture (nil, "OVERLAY")
este_gump.bg_icone:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", -15, -12)
este_gump.bg_icone:SetTexture ("Interface\\AddOns\\Details\\images\\icone_bg")
este_gump.bg_icone:Show()
--este_gump:Hide()
este_gump.spell_icone = este_gump:CreateTexture (nil, "ARTWORK")
este_gump.spell_icone:SetPoint ("BOTTOMRIGHT", este_gump.bg_icone, "BOTTOMRIGHT", -19, 2)
este_gump.spell_icone:SetWidth (35)
este_gump.spell_icone:SetHeight (34)
este_gump.spell_icone:SetDrawLayer ("ARTWORK", 0)
este_gump.spell_icone:Show()
--> coisinhas do lado do icone
este_gump.apoio_icone_esquerdo = este_gump:CreateTexture (nil, "ARTWORK")
este_gump.apoio_icone_direito = este_gump:CreateTexture (nil, "ARTWORK")
este_gump.apoio_icone_esquerdo:SetTexture ("Interface\\PaperDollInfoFrame\\PaperDollSidebarTabs")
este_gump.apoio_icone_direito:SetTexture ("Interface\\PaperDollInfoFrame\\PaperDollSidebarTabs")
local apoio_altura = 13/256
este_gump.apoio_icone_esquerdo:SetTexCoord (0, 1, 0, apoio_altura)
este_gump.apoio_icone_direito:SetTexCoord (0, 1, apoio_altura+(1/256), apoio_altura+apoio_altura)
este_gump.apoio_icone_esquerdo:SetPoint ("bottomright", este_gump.bg_icone, "bottomleft", 42, 0)
este_gump.apoio_icone_direito:SetPoint ("bottomleft", este_gump.bg_icone, "bottomright", -17, 0)
este_gump.apoio_icone_esquerdo:SetWidth (64)
este_gump.apoio_icone_esquerdo:SetHeight (13)
este_gump.apoio_icone_direito:SetWidth (64)
este_gump.apoio_icone_direito:SetHeight (13)
--> botão de reportar da caixa da direita, onde estão os 5 quadrados
este_gump.report_direita = gump:NewDetailsButton (este_gump, este_gump, nil, _detalhes.Reportar, este_gump, 2, 16, 16,
"Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON", "Interface\\COMMON\\VOICECHAT-ON")
este_gump.report_direita:SetPoint ("TOPRIGHT", este_gump, "TOPRIGHT", -8, -57)
este_gump.report_direita:Hide()
este_gump.tipo = 1 --> tipo da janela // 1 = janela normal
return este_gump
end
function _detalhes.janela_info:monta_relatorio (botao)
local atributo = info.atributo
local sub_atributo = info.sub_atributo
local player = info.jogador
local instancia = info.instancia
local amt = _detalhes.report_lines
local report_lines
if (botao == 1) then --> botão da esquerda
report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_REPORTTO"] .. " " .. _detalhes.sub_atributos [atributo].lista [sub_atributo] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] .. " " .. player.nome}
for index, barra in _ipairs (info.barras1) do
if (barra:IsShown()) then
report_lines [#report_lines+1] = barra.texto_esquerdo:GetText().." -> ".. _detalhes:comma_value (barra.texto_direita:GetText())
end
if (index == amt) then
break
end
end
elseif (botao == 3) then --> botão dos alvos
if (atributo == 1 and sub_atributo == 3) then
print (Loc ["STRING_ACTORFRAME_NOTHING"])
return
end
report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_REPORTTARGETS"] .. " " .. _detalhes.sub_atributos [1].lista [1] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] .. " " .. player.nome}
for index, barra in _ipairs (info.barras2) do
if (barra:IsShown()) then
report_lines [#report_lines+1] = barra.texto_esquerdo:GetText().." -> ".. barra.texto_direita:GetText()
end
if (index == amt) then
break
end
end
elseif (botao == 2) then --> botão da direita
--> diferentes tipos de amostragem na caixa da direita
--dano --damage done --dps --heal
if ((atributo == 1 and (sub_atributo == 1 or sub_atributo == 2)) or (atributo == 2)) then
if (not player.detalhes) then
print (Loc ["STRING_ACTORFRAME_NOTHING"])
return
end
local nome = _GetSpellInfo (player.detalhes)
report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_REPORTTO"] .. " " .. _detalhes.sub_atributos [atributo].lista [sub_atributo] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] .. " " .. player.nome,
Loc ["STRING_ACTORFRAME_SPELLDETAILS"] .. ": " .. nome}
for i = 1, 5 do
--> pega os dados dos quadrados --> Aqui mostra o resumo de todos os quadrados...
local caixa = info.grupos_detalhes [i]
if (caixa.bg:IsShown()) then
local linha = ""
local nome2 = caixa.nome2:GetText() --> golpes
if (nome2 and nome2 ~= "") then
if (i == 1) then
linha = linha..nome2.." / "
else
linha = linha..caixa.nome:GetText().." "..nome2.." / "
end
end
local dano = caixa.dano:GetText() --> dano
if (dano and dano ~= "") then
linha = linha..dano.." / "
end
local media = caixa.dano_media:GetText() --> media
if (media and media ~= "") then
linha = linha..media.." / "
end
local dano_dps = caixa.dano_dps:GetText()
if (dano_dps and dano_dps ~= "") then
linha = linha..dano_dps.." / "
end
local dano_porcento = caixa.dano_porcento:GetText()
if (dano_porcento and dano_porcento ~= "") then
linha = linha..dano_porcento.." "
end
report_lines [#report_lines+1] = linha
end
if (i == amt) then
break
end
end
--dano --damage tanken (mostra as magias que o alvo usou)
elseif ( (atributo == 1 and sub_atributo == 3) or atributo == 3) then
report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_REPORTTO"] .. " " .. _detalhes.sub_atributos [1].lista [1] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] .. " " .. player.detalhes.. " " .. Loc ["STRING_ACTORFRAME_REPORTAT"] .. " " .. player.nome}
for index, barra in _ipairs (info.barras3) do
if (barra:IsShown()) then
report_lines [#report_lines+1] = barra.texto_esquerdo:GetText().." -> ".. barra.texto_direita:GetText()
end
if (index == amt) then
break
end
end
end
elseif (botao >= 11) then --> primeira caixa dos detalhes
botao = botao - 10
local nome
if (_type (spellid) == "string") then
--> is a pet
else
nome = _GetSpellInfo (player.detalhes)
end
if (not nome) then
nome = ""
end
report_lines = {"Details! " .. Loc ["STRING_ACTORFRAME_REPORTTO"] .. " " .. _detalhes.sub_atributos [atributo].lista [sub_atributo].. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] .. " " .. player.nome,
Loc ["STRING_ACTORFRAME_SPELLDETAILS"] .. ": " .. nome}
local caixa = info.grupos_detalhes [botao]
local linha = ""
local nome2 = caixa.nome2:GetText() --> golpes
if (nome2 and nome2 ~= "") then
if (i == 1) then
linha = linha..nome2.." / "
else
linha = linha..caixa.nome:GetText().." "..nome2.." / "
end
end
local dano = caixa.dano:GetText() --> dano
if (dano and dano ~= "") then
linha = linha..dano.." / "
end
local media = caixa.dano_media:GetText() --> media
if (media and media ~= "") then
linha = linha..media.." / "
end
local dano_dps = caixa.dano_dps:GetText()
if (dano_dps and dano_dps ~= "") then
linha = linha..dano_dps.." / "
end
local dano_porcento = caixa.dano_porcento:GetText()
if (dano_porcento and dano_porcento ~= "") then
linha = linha..dano_porcento.." "
end
report_lines [#report_lines+1] = linha
end
--local report_lines = {"Details! Relatorio para ".._detalhes.sub_atributos [self.atributo].lista [self.sub_atributo]}
--> pega o conteúdo da janela da direita
return instancia:envia_relatorio (report_lines)
end
local function SetBarraScripts (esta_barra, instancia, i)
esta_barra:SetScript ("OnEnter", --> MOUSE OVER
function (self)
if (info.fading_in or info.faded) then
return
end
self.mouse_over = true
--> aumenta o tamanho da barra
self:SetHeight (17) --> altura determinada pela instância
--> poe a barra com alfa 1 ao invés de 0.9
self:SetAlpha(1)
--> troca a cor da barra enquanto o mouse estiver em cima dela
self:SetBackdrop({
--bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 16, edgeSize = 10,
insets = {left = 1, right = 1, top = 0, bottom = 1},})
self:SetBackdropBorderColor (0.666, 0.666, 0.666)
self:SetBackdropColor (0.0941, 0.0941, 0.0941)
if (self.isAlvo) then --> monta o tooltip do alvo
--> talvez devesse escurecer a janela no fundo... pois o tooltip é transparente e pode confundir
GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT")
if (not self.minha_tabela or not self.minha_tabela:MontaTooltipAlvos (self, i)) then -- > poderia ser aprimerado para uma tailcall
return
end
GameTooltip:Show()
elseif (self.isMain) then
if (IsShiftKeyDown()) then
if (type (self.show) == "number") then
GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT")
GameTooltip:AddLine (Loc ["ABILITY_ID"] .. ": " .. self.show)
GameTooltip:Show()
end
end
--> da zoom no icone
self.icone:SetWidth (17)
self.icone:SetHeight (17)
--> poe a alfa do icone em 1.0
self.icone:SetAlpha (1)
--> mostrar temporariamente o conteudo da barra nas caixas de detalhes
if (not info.mostrando) then --> não esta mostrando nada na direita
info.mostrando = self --> agora o mostrando é igual a esta barra
info.mostrando_mouse_over = true --> o conteudo da direta esta sendo mostrado pq o mouse esta passando por cima do bagulho e não pq foi clicado
info.showing = i --> diz o index da barra que esta sendo mostrado na direita
--self:SetAlpha (1) -- não precisa isso pq ja tem la em cima
--self.minha_tabela.detalhes = self.show --> minha tabela = jogador = jogador.detales = spellid ou nome que esta sendo mostrado na direita
info.jogador.detalhes = self.show --> minha tabela = jogador = jogador.detales = spellid ou nome que esta sendo mostrado na direita
info.jogador:MontaDetalhes (self.show, self) --> passa a spellid ou nome e a barra
end
end
end)
esta_barra:SetScript ("OnLeave", --> MOUSE OUT
function (self)
if (self.fading_in or self.faded or not self:IsShown() or self.hidden) then
return
end
self.mouse_over = false
--> diminui o tamanho da barra
self:SetHeight (16)
--> volta com o alfa antigo da barra que era de 0.9
self:SetAlpha(0.9)
--> volto o background ao normal
self:SetBackdrop({
bgFile = "", edgeFile = "", tile = true, tileSize = 16, edgeSize = 32,
insets = {left = 1, right = 1, top = 0, bottom = 1},})
self:SetBackdropBorderColor (0, 0, 0, 0)
self:SetBackdropColor (0, 0, 0, 0)
GameTooltip:Hide()
if (self.isMain) then
--> retira o zoom no icone
self.icone:SetWidth (14)
self.icone:SetHeight (14)
--> volta com a alfa antiga da barra
self.icone:SetAlpha (0.8)
--> remover o conteúdo que estava sendo mostrado na direita
if (info.mostrando_mouse_over) then
info.mostrando = nil
info.mostrando_mouse_over = false
info.showing = nil
info.jogador.detalhes = nil
gump:HidaAllDetalheInfo()
end
end
end)
esta_barra:SetScript ("OnMouseDown", function (self)
if (self.fading_in) then
return
end
self.mouse_down = _GetTime()
local x, y = _GetCursorPosition()
self.x = _math_floor (x)
self.y = _math_floor (y)
if ((not info.isLocked) or (info.isLocked == 0)) then
info:StartMoving()
info.isMoving = true
end
end)
esta_barra:SetScript ("OnMouseUp", function (self)
if (self.fading_in) then
return
end
if (info.isMoving) then
info:StopMovingOrSizing()
info.isMoving = false
--instancia:SaveMainWindowPosition() --> precisa fazer algo pra salvar o trem
end
local x, y = _GetCursorPosition()
x = _math_floor (x)
y = _math_floor (y)
if ((self.mouse_down+0.4 > _GetTime() and (x == self.x and y == self.y)) or (x == self.x and y == self.y)) then
--> setar os textos
if (self.isMain) then --> se não for uma barra de alvo
local barra_antiga = info.mostrando --> ??
--> on_focus = quando a barra esta precionada
if (barra_antiga and not info.mostrando_mouse_over) then
barra_antiga.textura:SetStatusBarColor (1, 1, 1, 1) --> volta a textura normal
barra_antiga.on_focus = false --> não esta mais no foco
--> CLICOU NA MESMA BARRA
if (barra_antiga == self) then -->
info.mostrando_mouse_over = true
return
--> CLICOU EM OUTRA BARRA
else --> clicou em outra barra e trocou o foco
barra_antiga:SetAlpha (.9) --> volta a alfa antiga
info.mostrando = self
info.showing = i
info.jogador.detalhes = self.show
info.jogador:MontaDetalhes (self.show, self)
self:SetAlpha (1)
self.textura:SetStatusBarColor (129/255, 125/255, 69/255, 1)
self.on_focus = true
return
end
end
--> NÃO TINHA BARRAS PRECIONADAS
-- info.mostrando = self
info.mostrando_mouse_over = false
self:SetAlpha (1)
self.textura:SetStatusBarColor (129/255, 125/255, 69/255, 1)
self.on_focus = true
end
end
end)
end
local function CriaTexturaBarra (instancia, barra)
barra.textura = _CreateFrame ("StatusBar", nil, barra)
barra.textura:SetAllPoints (barra)
--barra.textura:SetStatusBarTexture (instancia.barrasInfo.textura)
barra.textura:SetStatusBarTexture (_detalhes.default_texture)
barra.textura:SetStatusBarColor(.5, .5, .5, 0)
barra.textura:SetMinMaxValues(0,100)
barra.texto_esquerdo = barra.textura:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
barra.texto_esquerdo:SetPoint ("LEFT", barra.textura, "LEFT", 22, 0)
barra.texto_esquerdo:SetJustifyH ("LEFT")
barra.texto_esquerdo:SetTextColor (1,1,1,1)
barra.texto_direita = barra.textura:CreateFontString (nil, "OVERLAY", "GameFontHighlightSmall")
barra.texto_direita:SetPoint ("RIGHT", barra.textura, "RIGHT", -2)
barra.texto_direita:SetJustifyH ("RIGHT")
barra.texto_direita:SetTextColor (1,1,1,1)
barra.textura:Show()
end
function gump:CriaNovaBarraInfo1 (instancia, index)
if (_detalhes.janela_info.barras1 [index]) then
print ("erro a barra "..index.." ja existe na janela de detalhes...")
return
end
local janela = info.container_barras.gump
local esta_barra = _CreateFrame ("Button", "Details_infobox1_bar_"..index, info.container_barras.gump)
esta_barra:SetWidth (300) --> tamanho da barra de acordo com o tamanho da janela
esta_barra:SetHeight (16) --> altura determinada pela instância
local y = (index-1)*17 --> 17 é a altura da barra
y = y*-1 --> baixo
esta_barra:SetPoint ("LEFT", janela, "LEFT")
esta_barra:SetPoint ("RIGHT", janela, "RIGHT")
esta_barra:SetPoint ("TOP", janela, "TOP", 0, y)
esta_barra:SetFrameLevel (janela:GetFrameLevel() + 1)
esta_barra:EnableMouse (true)
esta_barra:RegisterForClicks ("LeftButtonDown","RightButtonUp")
CriaTexturaBarra (instancia, esta_barra)
--> icone
esta_barra.icone = esta_barra.textura:CreateTexture (nil, "OVERLAY")
esta_barra.icone:SetWidth (14)
esta_barra.icone:SetHeight (14)
esta_barra.icone:SetPoint ("RIGHT", esta_barra.textura, "LEFT", 20, 0)
esta_barra:SetAlpha(0.9)
esta_barra.icone:SetAlpha (0.8)
esta_barra.isMain = true
SetBarraScripts (esta_barra, instancia, index)
info.barras1 [index] = esta_barra --> barra adicionada
esta_barra.textura:SetStatusBarColor (1, 1, 1, 1) --> isso aqui é a parte da seleção e desceleção
esta_barra.on_focus = false --> isso aqui é a parte da seleção e desceleção
return esta_barra
end
function gump:CriaNovaBarraInfo2 (instancia, index)
if (_detalhes.janela_info.barras2 [index]) then
print ("erro a barra "..index.." ja existe na janela de detalhes...")
return
end
local janela = info.container_alvos.gump
local esta_barra = _CreateFrame ("Button", "Details_infobox2_bar_"..index, info.container_alvos.gump)
esta_barra:SetWidth (300) --> tamanho da barra de acordo com o tamanho da janela
esta_barra:SetHeight (16) --> altura determinada pela instância
local y = (index-1)*17 --> 17 é a altura da barra
y = y*-1 --> baixo
esta_barra:SetPoint ("LEFT", janela, "LEFT")
esta_barra:SetPoint ("RIGHT", janela, "RIGHT")
esta_barra:SetPoint ("TOP", janela, "TOP", 0, y)
esta_barra:SetFrameLevel (janela:GetFrameLevel() + 1)
esta_barra:EnableMouse (true)
esta_barra:RegisterForClicks ("LeftButtonDown","RightButtonUp")
CriaTexturaBarra (instancia, esta_barra)
--> icone
esta_barra.icone = esta_barra.textura:CreateTexture (nil, "OVERLAY")
esta_barra.icone:SetWidth (14)
esta_barra.icone:SetHeight (14)
esta_barra.icone:SetPoint ("RIGHT", esta_barra.textura, "LEFT", 0+20, 0)
esta_barra:SetAlpha(0.9)
esta_barra.icone:SetAlpha (0.8)
esta_barra.isAlvo = true
SetBarraScripts (esta_barra, instancia, index)
info.barras2 [index] = esta_barra --> barra adicionada
return esta_barra
end
local x_start = 62
local y_start = -10
function gump:CriaNovaBarraInfo3 (instancia, index)
if (_detalhes.janela_info.barras3 [index]) then
print ("erro a barra "..index.." ja existe na janela de detalhes...")
return
end
local janela = info.container_detalhes
local esta_barra = CreateFrame ("Button", "Details_infobox3_bar_"..index, janela)
esta_barra:SetWidth (220) --> tamanho da barra de acordo com o tamanho da janela
esta_barra:SetHeight (16) --> altura determinada pela instância
local y = (index-1)*17 --> 17 é a altura da barra
y = y*-1 --> baixo
esta_barra:SetPoint ("LEFT", janela, "LEFT", x_start, 0)
esta_barra:SetPoint ("RIGHT", janela, "RIGHT", 59, 0)
esta_barra:SetPoint ("TOP", janela, "TOP", 0, y+y_start)
esta_barra:EnableMouse (true)
CriaTexturaBarra (instancia, esta_barra)
--> icone
esta_barra.icone = esta_barra.textura:CreateTexture (nil, "OVERLAY")
esta_barra.icone:SetWidth (14)
esta_barra.icone:SetHeight (14)
esta_barra.icone:SetPoint ("RIGHT", esta_barra.textura, "LEFT", 0+20, 0)
esta_barra:SetAlpha(0.9)
esta_barra.icone:SetAlpha (0.8)
esta_barra.isDetalhe = true
SetBarraScripts (esta_barra, instancia, index)
info.barras3 [index] = esta_barra --> barra adicionada
return esta_barra
end