08b3f441bc
- fixed issue with some options button text which where out of positioning. - fixed sub menu overlap when near right screen edge. - fixed close button position for default skin. - fixed skin error when selecting solo or right plugins.
651 lines
22 KiB
Lua
651 lines
22 KiB
Lua
--File Revision: 1
|
|
--Last Modification: 27/07/2013
|
|
-- Change Log:
|
|
-- 27/07/2013: Finished alpha version.
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
local _detalhes = _G._detalhes
|
|
local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" )
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
--> local pointers
|
|
|
|
local _math_floor = math.floor --lua local
|
|
local _type = type --lua local
|
|
local _math_abs = math.abs --lua local
|
|
local _ipairs = ipairs --lua local
|
|
|
|
local _GetScreenWidth = GetScreenWidth --wow api local
|
|
local _GetScreenHeight = GetScreenHeight --wow api local
|
|
local _UIParent = UIParent --wow api local
|
|
|
|
local gump = _detalhes.gump --details local
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
--> core
|
|
|
|
|
|
function _detalhes:AnimarSplit (barra, goal)
|
|
barra.inicio = barra.split.barra:GetValue()
|
|
barra.fim = goal
|
|
barra.proximo_update = 0
|
|
barra.tem_animacao = 1
|
|
barra:SetScript ("OnUpdate", self.FazerAnimacaoSplit)
|
|
end
|
|
|
|
function _detalhes:FazerAnimacaoSplit (elapsed)
|
|
|
|
--[[
|
|
local velocidade = 0.1
|
|
local distancia = self.inicio - self.fim
|
|
if (distancia > 40 or distancia < -40) then
|
|
velocidade = 0.8
|
|
elseif (distancia > 20 or distancia < -20) then
|
|
velocidade = 0.4
|
|
end
|
|
--]]
|
|
local velocidade = 0.8
|
|
|
|
if (self.fim > self.inicio) then
|
|
self.inicio = self.inicio+velocidade
|
|
self.split.barra:SetValue (self.inicio)
|
|
|
|
self.split.div:SetPoint ("left", self.split.barra, "left", self.split.barra:GetValue()* (self.split.barra:GetWidth()/100) - 4, 0)
|
|
|
|
if (self.inicio+1 >= self.fim) then
|
|
self.tem_animacao = 0
|
|
self:SetScript ("OnUpdate", nil)
|
|
end
|
|
else
|
|
self.inicio = self.inicio-velocidade
|
|
self.split.barra:SetValue (self.inicio)
|
|
|
|
self.split.div:SetPoint ("left", self.split.barra, "left", self.split.barra:GetValue()* (self.split.barra:GetWidth()/100) - 4, 0)
|
|
|
|
if (self.inicio-1 <= self.fim) then
|
|
self.tem_animacao = 0
|
|
self:SetScript ("OnUpdate", nil)
|
|
end
|
|
end
|
|
self.proximo_update = 0
|
|
end
|
|
|
|
function _detalhes:AnimarBarra (esta_barra, fim)
|
|
esta_barra.inicio = esta_barra.statusbar:GetValue()
|
|
esta_barra.fim = fim
|
|
esta_barra.proximo_update = 0
|
|
esta_barra.tem_animacao = 1
|
|
esta_barra:SetScript ("OnUpdate", self.FazerAnimacao)
|
|
end
|
|
|
|
function _detalhes:FazerAnimacao (elapsed)
|
|
|
|
local velocidade = 0.8
|
|
--[[
|
|
local velocidade = 0.1
|
|
local distancia = self.inicio - self.fim
|
|
if (distancia > 40 or distancia < -40) then
|
|
velocidade = 0.8
|
|
elseif (distancia > 20 or distancia < -20) then
|
|
velocidade = 0.4
|
|
end
|
|
--]]
|
|
if (self.fim > self.inicio) then
|
|
self.inicio = self.inicio+velocidade
|
|
self.statusbar:SetValue (self.inicio)
|
|
if (self.inicio+1 >= self.fim) then
|
|
self.tem_animacao = 0
|
|
self:SetScript ("OnUpdate", nil)
|
|
end
|
|
else
|
|
self.inicio = self.inicio-velocidade
|
|
self.statusbar:SetValue (self.inicio)
|
|
if (self.inicio-1 <= self.fim) then
|
|
self.tem_animacao = 0
|
|
self:SetScript ("OnUpdate", nil)
|
|
end
|
|
end
|
|
self.proximo_update = 0
|
|
end
|
|
|
|
function _detalhes:AtualizaPontos()
|
|
local xOfs, yOfs = self.baseframe:GetCenter()
|
|
|
|
if (not xOfs) then
|
|
return
|
|
end
|
|
|
|
-- credits to ckknight (http://www.curseforge.com/profiles/ckknight/)
|
|
local _scale = self.baseframe:GetEffectiveScale()
|
|
local _UIscale = _UIParent:GetScale()
|
|
xOfs = xOfs*_scale - _GetScreenWidth()*_UIscale/2
|
|
yOfs = yOfs*_scale - _GetScreenHeight()*_UIscale/2
|
|
local _x = xOfs/_UIscale
|
|
local _y = yOfs/_UIscale
|
|
local _w = self.baseframe:GetWidth()
|
|
local _h = self.baseframe:GetHeight()
|
|
|
|
local metade_largura = _w/2
|
|
local metade_altura = _h/2
|
|
|
|
self.ponto1 = {x = _x - metade_largura, y = _y + metade_altura}
|
|
self.ponto2 = {x = _x - metade_largura, y = _y - metade_altura}
|
|
self.ponto3 = {x = _x + metade_largura, y = _y - metade_altura}
|
|
self.ponto4 = {x = _x + metade_largura, y = _y + metade_altura}
|
|
end
|
|
|
|
function _detalhes:SaveMainWindowPosition (instance)
|
|
|
|
if (instance) then
|
|
self = instance
|
|
end
|
|
|
|
local xOfs, yOfs = self.baseframe:GetCenter()
|
|
|
|
if (not xOfs) then
|
|
--> this is a small and unknow bug when resizing all windows throgh crtl key (all) the last window of a horizontal row can't 'GetCenter'.
|
|
--> so, the trick is we start a timer to save pos later.
|
|
return _detalhes:ScheduleTimer ("SaveMainWindowPosition", 1, self)
|
|
end
|
|
|
|
local _scale = self.baseframe:GetEffectiveScale()
|
|
local _UIscale = _UIParent:GetScale()
|
|
local mostrando = self.mostrando
|
|
|
|
xOfs = xOfs*_scale - _GetScreenWidth()*_UIscale/2
|
|
yOfs = yOfs*_scale - _GetScreenHeight()*_UIscale/2
|
|
|
|
local _w = self.baseframe:GetWidth()
|
|
local _h = self.baseframe:GetHeight()
|
|
local _x = xOfs/_UIscale
|
|
local _y = yOfs/_UIscale
|
|
|
|
self.posicao[mostrando].x = _x
|
|
self.posicao[mostrando].y = _y
|
|
self.posicao[mostrando].w = _w
|
|
self.posicao[mostrando].h = _h
|
|
|
|
local metade_largura = _w/2
|
|
local metade_altura = _h/2
|
|
|
|
self.ponto1 = {x = _x - metade_largura, y = _y + metade_altura}
|
|
self.ponto2 = {x = _x - metade_largura, y = _y - metade_altura}
|
|
self.ponto3 = {x = _x + metade_largura, y = _y - metade_altura}
|
|
self.ponto4 = {x = _x + metade_largura, y = _y + metade_altura}
|
|
|
|
self.baseframe.BoxBarrasAltura = self.baseframe:GetHeight()-4 --> isso aqui não sei o que esta fazendo aqui
|
|
|
|
return {altura = self.baseframe:GetHeight(), largura = self.baseframe:GetWidth(), x = xOfs/_UIscale, y = yOfs/_UIscale}
|
|
end
|
|
|
|
function _detalhes:RestoreMainWindowPosition (pre_defined)
|
|
|
|
local _scale = self.baseframe:GetEffectiveScale()
|
|
local _UIscale = _UIParent:GetScale()
|
|
|
|
local novo_x = self.posicao[self.mostrando].x*_UIscale/_scale
|
|
local novo_y = self.posicao[self.mostrando].y*_UIscale/_scale
|
|
|
|
if (pre_defined) then --> overwrite
|
|
novo_x = pre_defined.x*_UIscale/_scale
|
|
novo_y = pre_defined.y*_UIscale/_scale
|
|
self.posicao[self.mostrando].w = pre_defined.largura
|
|
self.posicao[self.mostrando].h = pre_defined.altura
|
|
end
|
|
|
|
self.baseframe:ClearAllPoints()
|
|
self.baseframe:SetPoint ("CENTER", _UIParent, "CENTER", novo_x, novo_y)
|
|
|
|
self.baseframe:SetWidth (self.posicao[self.mostrando].w) --slider frame
|
|
self.baseframe:SetHeight (self.posicao[self.mostrando].h)
|
|
|
|
self.baseframe.BoxBarrasAltura = self.baseframe:GetHeight()-4 --> ?????
|
|
end
|
|
|
|
function _detalhes:RestoreMainWindowPositionNoResize (pre_defined, x, y)
|
|
|
|
x = x or 0
|
|
y = y or 0
|
|
|
|
local _scale = self.baseframe:GetEffectiveScale()
|
|
local _UIscale = _UIParent:GetScale()
|
|
|
|
local novo_x = self.posicao[self.mostrando].x*_UIscale/_scale
|
|
local novo_y = self.posicao[self.mostrando].y*_UIscale/_scale
|
|
|
|
if (pre_defined) then --> overwrite
|
|
novo_x = pre_defined.x*_UIscale/_scale
|
|
novo_y = pre_defined.y*_UIscale/_scale
|
|
self.posicao[self.mostrando].w = pre_defined.largura
|
|
self.posicao[self.mostrando].h = pre_defined.altura
|
|
end
|
|
|
|
self.baseframe:ClearAllPoints()
|
|
self.baseframe:SetPoint ("CENTER", _UIParent, "CENTER", novo_x + x, novo_y + y)
|
|
self.baseframe.BoxBarrasAltura = self.baseframe:GetHeight()-4 --> ?????
|
|
end
|
|
|
|
function _detalhes:ResetaGump (instancia, tipo, segmento)
|
|
if (not instancia or _type (instancia) == "boolean") then
|
|
segmento = tipo
|
|
tipo = instancia
|
|
instancia = self
|
|
end
|
|
|
|
if (tipo and tipo == 0x1) then --> entrando em combate
|
|
if (instancia.segmento == -1) then --> esta mostrando a tabela overall
|
|
return
|
|
end
|
|
end
|
|
|
|
if (segmento and instancia.segmento ~= segmento) then
|
|
return
|
|
end
|
|
|
|
instancia.barraS = {nil, nil} --> zera o iterator
|
|
instancia.rows_showing = 0 --> resetou, então não esta mostranho nenhuma barra
|
|
|
|
for i = 1, instancia.rows_created, 1 do --> limpa a referência do que estava sendo mostrado na barra
|
|
local esta_barra= instancia.barras[i]
|
|
esta_barra.minha_tabela = nil
|
|
end
|
|
|
|
if (instancia.rolagem) then
|
|
instancia:EsconderScrollBar() --> hida a scrollbar
|
|
end
|
|
instancia.need_rolagem = false
|
|
instancia.bar_mod = nil
|
|
|
|
end
|
|
|
|
function _detalhes:ReajustaGump()
|
|
|
|
if (self.mostrando == "normal") then --> somente alterar o tamanho das barras se tiver mostrando o gump normal
|
|
|
|
if (self.meu_id == _detalhes.ResetButtonInstance) then
|
|
if (self.baseframe:GetWidth() < 215 or self.resetbutton_info.always_small) then
|
|
gump:Fade (_detalhes.ResetButton, 1)
|
|
gump:Fade (_detalhes.ResetButton2, 0)
|
|
_detalhes.ResetButtonMode = 2
|
|
else
|
|
gump:Fade (_detalhes.ResetButton, 0)
|
|
gump:Fade (_detalhes.ResetButton2, 1)
|
|
_detalhes.ResetButtonMode = 1
|
|
end
|
|
end
|
|
|
|
if (not self.baseframe.isStretching and self.stretchToo and #self.stretchToo > 0) then
|
|
if (self.eh_horizontal or self.eh_tudo or (self.verticalSnap and not self.eh_vertical)) then
|
|
for _, instancia in _ipairs (self.stretchToo) do
|
|
instancia.baseframe:SetWidth (self.baseframe:GetWidth())
|
|
local mod = (self.baseframe:GetWidth() - instancia.baseframe._place.largura) / 2
|
|
instancia:RestoreMainWindowPositionNoResize (instancia.baseframe._place, mod, nil)
|
|
instancia:BaseFrameSnap()
|
|
end
|
|
end
|
|
if ( (self.eh_vertical or self.eh_tudo or not self.eh_horizontal) and (not self.verticalSnap or self.eh_vertical)) then
|
|
for _, instancia in _ipairs (self.stretchToo) do
|
|
if (instancia.baseframe) then --> esta criada
|
|
instancia.baseframe:SetHeight (self.baseframe:GetHeight())
|
|
local mod
|
|
if (self.eh_vertical) then
|
|
mod = (self.baseframe:GetHeight() - instancia.baseframe._place.altura) / 2
|
|
else
|
|
mod = - (self.baseframe:GetHeight() - instancia.baseframe._place.altura) / 2
|
|
end
|
|
instancia:RestoreMainWindowPositionNoResize (instancia.baseframe._place, nil, mod)
|
|
instancia:BaseFrameSnap()
|
|
end
|
|
end
|
|
end
|
|
elseif (self.baseframe.isStretching and self.stretchToo and #self.stretchToo > 0) then
|
|
for _, instancia in _ipairs (self.stretchToo) do
|
|
instancia.baseframe:SetHeight (self.baseframe:GetHeight())
|
|
local mod = (self.baseframe:GetHeight() - instancia.baseframe._place.altura) / 2
|
|
instancia:RestoreMainWindowPositionNoResize (instancia.baseframe._place, nil, mod)
|
|
end
|
|
end
|
|
|
|
if (_detalhes.lower_instance == self.meu_id or self.consolidate) then
|
|
if (not self.consolidate) then
|
|
if (self.baseframe:GetWidth() < 180) then
|
|
--> consolidate menus
|
|
self:ConsolidateIcons()
|
|
end
|
|
else
|
|
if (self.baseframe:GetWidth() > 180 or _detalhes.lower_instance ~= self.meu_id) then
|
|
--> un consolidade menus
|
|
self:UnConsolidateIcons()
|
|
end
|
|
end
|
|
end
|
|
|
|
if (self.stretch_button_side == 2) then
|
|
self:StretchButtonAnchor (2)
|
|
end
|
|
|
|
if (self.freezed) then
|
|
--> reajusta o freeze
|
|
_detalhes:Freeze (self)
|
|
end
|
|
|
|
-- -4 difere a precisão de quando a barra será adicionada ou apagada da barra
|
|
self.baseframe.BoxBarrasAltura = self.baseframe:GetHeight()-4
|
|
|
|
local T = self.rows_fit_in_window
|
|
if (not T) then --> primeira vez que o gump esta sendo reajustado
|
|
T = _math_floor (self.baseframe.BoxBarrasAltura / self.row_height)
|
|
-- o que mais precisa por aqui?
|
|
end
|
|
|
|
--> reajustar o local do relógio
|
|
local meio = self.baseframe:GetWidth() / 2
|
|
local novo_local = meio - 25
|
|
self.rows_fit_in_window = _math_floor ( self.baseframe.BoxBarrasAltura / self.row_height)
|
|
|
|
--if (not _detalhes.initializing) then
|
|
|
|
if (self.rows_fit_in_window > #self.barras) then--> verifica se precisa criar mais barras
|
|
for i = #self.barras+1, self.rows_fit_in_window, 1 do
|
|
local nova_barra = gump:CriaNovaBarra (self, i, 30) --> cria nova barra
|
|
nova_barra.texto_esquerdo:SetText (Loc ["STRING_NEWROW"]) --seta o texto da esqueda
|
|
nova_barra.statusbar:SetValue (100)
|
|
self.barras [i] = nova_barra
|
|
end
|
|
self.rows_created = #self.barras
|
|
end
|
|
|
|
--> seta a largura das barras
|
|
if (self.bar_mod and self.bar_mod ~= 0) then
|
|
for index = 1, self.rows_fit_in_window do
|
|
self.barras [index]:SetWidth (self.baseframe:GetWidth()+self.bar_mod)
|
|
end
|
|
else
|
|
for index = 1, self.rows_fit_in_window do
|
|
self.barras [index]:SetWidth (self.baseframe:GetWidth()+self.row_info.space.right)
|
|
end
|
|
end
|
|
|
|
--end
|
|
|
|
local A = self.barraS[1]
|
|
if (not A) then --> primeira vez que o resize esta sendo usado, no caso no startup do addon ou ao criar uma nova instância
|
|
--> hida as barras não usadas
|
|
for i = 1, self.rows_created, 1 do
|
|
gump:Fade (self.barras [i], 1)
|
|
self.barras [i].on = false
|
|
end
|
|
return
|
|
end
|
|
|
|
local X = self.rows_showing
|
|
local C = self.rows_fit_in_window
|
|
|
|
--> novo iterator
|
|
local barras_diff = C - T --> aqui pega a quantidade de barras, se aumentou ou diminuiu
|
|
if (barras_diff > 0) then --> ganhou barras_diff novas barras
|
|
local fim_iterator = self.barraS[2] --> posição atual
|
|
fim_iterator = fim_iterator+barras_diff --> nova posição
|
|
local excedeu_iterator = fim_iterator - X --> total que ta sendo mostrado - fim do iterator
|
|
if (excedeu_iterator > 0) then --> extrapolou
|
|
fim_iterator = X --> seta o fim do iterator pra ser na ultima barra
|
|
self.barraS[2] = fim_iterator --> fim do iterator setado
|
|
|
|
local inicio_iterator = self.barraS[1]
|
|
if (inicio_iterator-excedeu_iterator > 0) then --> se as barras que sobraram preenchem o inicio do iterator
|
|
inicio_iterator = inicio_iterator-excedeu_iterator --> pega o novo valor do iterator
|
|
self.barraS[1] = inicio_iterator
|
|
else
|
|
self.barraS[1] = 1 --> se ganhou mais barras pra cima, ignorar elas e mover o iterator para a pocição inicial
|
|
end
|
|
else
|
|
--> se não extrapolou esta okey e esta mostrando a quantidade de barras correta
|
|
self.barraS[2] = fim_iterator
|
|
end
|
|
|
|
for index = T+1, C do
|
|
if (index <= X) then
|
|
gump:Fade (self.barras[index], "out")
|
|
else
|
|
--gump:Fade (self.barras[index], "in")
|
|
if (self.baseframe.isStretching or self.auto_resize) then
|
|
gump:Fade (self.barras[index], 1)
|
|
else
|
|
gump:Fade (self.barras[index], "in", 0.1)
|
|
end
|
|
end
|
|
end
|
|
|
|
elseif (barras_diff < 0) then --> perdeu barras_diff barras
|
|
local fim_iterator = self.barraS[2] --> posição atual
|
|
if (not (fim_iterator == X and fim_iterator < C)) then --> calcula primeiro as barras que foram perdidas são barras que não estavam sendo usadas
|
|
--> perdi X barras, diminui X posições no iterator
|
|
local perdeu = _math_abs (barras_diff)
|
|
|
|
if (fim_iterator == X) then --> se o iterator tiver na ultima posição
|
|
perdeu = perdeu - (C - X)
|
|
end
|
|
|
|
fim_iterator = fim_iterator - perdeu
|
|
|
|
if (fim_iterator < C) then
|
|
fim_iterator = C
|
|
end
|
|
|
|
self.barraS[2] = fim_iterator
|
|
|
|
for index = T, C+1, -1 do
|
|
--gump:Fade (self.barras[index], "in")
|
|
if (self.baseframe.isStretching or self.auto_resize) then
|
|
gump:Fade (self.barras[index], 1)
|
|
else
|
|
gump:Fade (self.barras[index], "in", 0.1)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if (X <= C) then --> desligar a rolagem
|
|
if (self.rolagem and not self.baseframe.isStretching) then
|
|
self:EsconderScrollBar()
|
|
end
|
|
self.need_rolagem = false
|
|
else --> ligar ou atualizar a rolagem
|
|
if (not self.rolagem and not self.baseframe.isStretching) then
|
|
self:MostrarScrollBar()
|
|
end
|
|
self.need_rolagem = true
|
|
end
|
|
|
|
--> verificar o tamanho dos nomes
|
|
local qual_barra = 1
|
|
for i = self.barraS[1], self.barraS[2], 1 do
|
|
local esta_barra = self.barras [qual_barra]
|
|
local tabela = esta_barra.minha_tabela
|
|
|
|
if (tabela) then --> a barra esta mostrando alguma coisa
|
|
|
|
if (tabela._custom) then
|
|
tabela (esta_barra, self)
|
|
elseif (tabela._refresh_window) then
|
|
tabela:_refresh_window (esta_barra, self)
|
|
else
|
|
tabela:RefreshBarra (esta_barra, self, true)
|
|
end
|
|
|
|
end
|
|
|
|
qual_barra = qual_barra+1
|
|
end
|
|
|
|
--> força o próximo refresh
|
|
self.showing[self.atributo].need_refresh = true
|
|
|
|
end
|
|
end
|
|
|
|
--> cria o frame de wait for plugin
|
|
do
|
|
local WaitForPluginFrame = CreateFrame ("frame", "DetailsWaitForPluginFrame", UIParent)
|
|
local WaitTexture = WaitForPluginFrame:CreateTexture (nil, "overlay")
|
|
WaitTexture:SetTexture ("Interface\\UNITPOWERBARALT\\Mechanical_Circular_Frame")
|
|
WaitTexture:SetPoint ("center", WaitForPluginFrame)
|
|
WaitTexture:SetWidth (180)
|
|
WaitTexture:SetHeight (180)
|
|
WaitForPluginFrame.wheel = WaitTexture
|
|
local RotateAnimGroup = WaitForPluginFrame:CreateAnimationGroup()
|
|
local rotate = RotateAnimGroup:CreateAnimation ("Rotation")
|
|
rotate:SetDegrees (360)
|
|
rotate:SetDuration (60)
|
|
RotateAnimGroup:SetLooping ("repeat")
|
|
|
|
local bgpanel = gump:NewPanel (UIParent, UIParent, "DetailsWaitFrameBG", nil, 120, 30, false, false, false)
|
|
bgpanel:SetPoint ("center", WaitForPluginFrame, "center")
|
|
bgpanel:SetBackdrop ({bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background"})
|
|
bgpanel:SetBackdropColor (.2, .2, .2, 1)
|
|
|
|
local label = gump:NewLabel (UIParent, UIParent, nil, nil, Loc ["STRING_WAITPLUGIN"]) --> localize-me
|
|
label.color = "silver"
|
|
label:SetPoint ("center", WaitForPluginFrame, "center")
|
|
label:SetJustifyH ("center")
|
|
label:Hide()
|
|
|
|
WaitForPluginFrame:Hide()
|
|
|
|
function _detalhes:WaitForSoloPlugin (instancia)
|
|
|
|
instancia:ChangeIcon ([[Interface\GossipFrame\ActiveQuestIcon]])
|
|
|
|
if (WaitForPluginFrame:IsShown() and WaitForPluginFrame:GetParent() == instancia.baseframe) then
|
|
return _detalhes:ScheduleTimer ("ExecDelayedPlugin", 5, instancia)
|
|
end
|
|
|
|
WaitForPluginFrame:SetParent (instancia.baseframe)
|
|
WaitForPluginFrame:SetAllPoints (instancia.baseframe)
|
|
local size = math.max (instancia.baseframe:GetHeight()* 0.35, 100)
|
|
WaitForPluginFrame.wheel:SetWidth (size)
|
|
WaitForPluginFrame.wheel:SetHeight (size)
|
|
WaitForPluginFrame:Show()
|
|
label:Show()
|
|
bgpanel:Show()
|
|
RotateAnimGroup:Play()
|
|
|
|
return _detalhes:ScheduleTimer ("ExecDelayedPlugin", 5, instancia)
|
|
end
|
|
|
|
function _detalhes:CancelWaitForPlugin()
|
|
RotateAnimGroup:Stop()
|
|
WaitForPluginFrame:Hide()
|
|
label:Hide()
|
|
bgpanel:Hide()
|
|
end
|
|
|
|
function _detalhes:ExecDelayedPlugin (instancia)
|
|
RotateAnimGroup:Stop()
|
|
WaitForPluginFrame:Hide()
|
|
label:Hide()
|
|
bgpanel:Hide()
|
|
if (instancia.meu_id == _detalhes.solo) then
|
|
_detalhes.SoloTables:switch (nil, _detalhes.SoloTables.Mode)
|
|
elseif (instancia.meu_id == _detalhes.raid) then
|
|
_detalhes.RaidTables:switch (nil, _detalhes.RaidTables.Mode)
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
|
|
--[1] criar nova instancia
|
|
--[2] esticar janela
|
|
--[3] resize e trava
|
|
--[4] shortcut frame
|
|
--[5] micro displays
|
|
--[6] snap windows
|
|
|
|
function _detalhes:run_tutorial()
|
|
|
|
local lower_instance = _detalhes:GetLowerInstanceNumber()
|
|
if (lower_instance) then
|
|
local instance = _detalhes:GetInstance (lower_instance)
|
|
|
|
if (not _detalhes.tutorial.alert_frames [1]) then
|
|
|
|
_detalhes.MicroButtonAlert.Text:SetText (Loc ["STRING_MINITUTORIAL_1"])
|
|
_detalhes.MicroButtonAlert:SetPoint ("bottom", instance.baseframe.cabecalho.novo, "top", 0, 16)
|
|
_detalhes.MicroButtonAlert:SetHeight (200)
|
|
_detalhes.MicroButtonAlert:Show()
|
|
_detalhes.tutorial.alert_frames [1] = true
|
|
|
|
elseif (not _detalhes.tutorial.alert_frames [2]) then
|
|
|
|
_detalhes.MicroButtonAlert.Text:SetText (Loc ["STRING_MINITUTORIAL_2"])
|
|
_detalhes.MicroButtonAlert:SetPoint ("bottom", instance.baseframe.button_stretch, "top", 0, 15)
|
|
instance.baseframe.button_stretch:Show()
|
|
instance.baseframe.button_stretch:SetAlpha (1)
|
|
_detalhes.MicroButtonAlert:Show()
|
|
_detalhes.tutorial.alert_frames [2] = true
|
|
|
|
elseif (not _detalhes.tutorial.alert_frames [3]) then
|
|
_detalhes.MicroButtonAlert.Text:SetText (Loc ["STRING_MINITUTORIAL_3"])
|
|
_detalhes.MicroButtonAlert:SetPoint ("bottom", instance.baseframe.resize_direita, "top", -8, 16)
|
|
|
|
_detalhes.OnEnterMainWindow (instance)
|
|
instance.baseframe.button_stretch:SetAlpha (0)
|
|
|
|
_detalhes.MicroButtonAlert:Show()
|
|
_detalhes.tutorial.alert_frames [3] = true
|
|
|
|
elseif (not _detalhes.tutorial.alert_frames [4]) then
|
|
|
|
_detalhes.MicroButtonAlert.Text:SetText (Loc ["STRING_MINITUTORIAL_4"])
|
|
_detalhes.MicroButtonAlert:SetPoint ("bottom", instance.baseframe, "center", 0, 16)
|
|
_detalhes.MicroButtonAlert:Show()
|
|
_detalhes.tutorial.alert_frames [4] = true
|
|
|
|
elseif (not _detalhes.tutorial.alert_frames [5]) then
|
|
|
|
_detalhes.MicroButtonAlert.Text:SetText (Loc ["STRING_MINITUTORIAL_5"])
|
|
_detalhes.MicroButtonAlert:SetPoint ("bottom", instance.baseframe.rodape.top_bg, "top", 0, 16)
|
|
_detalhes.MicroButtonAlert:Show()
|
|
_detalhes.MicroButtonAlert:SetHeight (220)
|
|
_detalhes.tutorial.alert_frames [5] = true
|
|
|
|
elseif (not _detalhes.tutorial.alert_frames [6]) then
|
|
|
|
_detalhes.MicroButtonAlert.Text:SetText (Loc ["STRING_MINITUTORIAL_6"])
|
|
_detalhes.MicroButtonAlert:SetPoint ("bottom", instance.baseframe.barra_direita, "center", -24, 16)
|
|
_detalhes.MicroButtonAlert:SetHeight (200)
|
|
_detalhes.MicroButtonAlert:Show()
|
|
_detalhes.tutorial.alert_frames [6] = true
|
|
|
|
end
|
|
end
|
|
--
|
|
_detalhes:ScheduleTimer ("delay_tutorial", 60)
|
|
end
|
|
|
|
-- [1] criar nova instancia
|
|
-- [2] esticar janela
|
|
-- [3] resize e trava
|
|
-- [4] shortcut frame
|
|
-- [5] micro displays
|
|
-- [6] snap windows
|
|
|
|
function _detalhes:delay_tutorial()
|
|
if (_detalhes.character_data.logons < 2) then
|
|
_detalhes:run_tutorial()
|
|
end
|
|
end
|
|
|
|
function _detalhes:StartTutorial()
|
|
--
|
|
if (_G ["DetailsWelcomeWindow"] and _G ["DetailsWelcomeWindow"]:IsShown()) then
|
|
return _detalhes:ScheduleTimer ("StartTutorial", 10)
|
|
end
|
|
--
|
|
_detalhes:ScheduleTimer ("delay_tutorial", 20)
|
|
end
|
|
|
|
end
|