Added support to Profiles, now you can share the same config between two or more characters

Added support for BattleTag friends over report window.
Added pet threat to Tiny Threat plugin when out of a party or raid group.
Fixed a issue with close button where it disappear without close the window when toolbar is in bottom side.
Also fixed a issue where swapping toolbar positioning was sometimes making close button disappear.
Fixed a problem opening options panel through minimap when there is no window opened.
This commit is contained in:
tercio
2014-04-09 18:44:12 -03:00
parent 96cbeba581
commit 6ac6d7fd71
24 changed files with 1975 additions and 338 deletions
+3
View File
@@ -14,6 +14,7 @@ locales\Details-enUS.lua
boot.lua
core\util.lua
functions\profiles.lua
functions\hooks.lua
functions\skins.lua
functions\boss.lua
@@ -96,4 +97,6 @@ core\network.lua
core\parser.lua
functions\loaddata.lua
startup.lua
+9 -4
View File
@@ -8,7 +8,7 @@
_ = nil
_detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0")
_detalhes.userversion = "v1.11.10"
_detalhes.userversion = "v1.12.00"
_detalhes.version = "Alpha 016"
_detalhes.realversion = 16
@@ -25,6 +25,7 @@ do
_detalhes.__index = _detalhes
_detalhes._tempo = time()
_detalhes.debug = false
_detalhes.opened_windows = 0
--> containers
--> armazenas as funções do parser - All parse functions
@@ -76,7 +77,7 @@ do
_detalhes.RaidTables.Plugins = {}
--> name to plugin object
_detalhes.RaidTables.NameTable = {}
--> solo -------------------------------------------------------------------
--> general functions for solo mode plugins
_detalhes.SoloTables = {}
@@ -245,8 +246,12 @@ do
--> print messages
function _detalhes:Msg (_string, arg1, arg2, arg3, arg4)
print (Loc ["STRING_DETAILS1"] .. _string, arg1 or "", arg2 or "", arg3 or "", arg4 or "")
if (self.__name) then
--> yes, we have a name!
print ("|cffffaeae" .. self.__name .. "|r |cffcc7c7c(plugin)|r: " .. _string, arg1 or "", arg2 or "", arg3 or "", arg4 or "")
else
print (Loc ["STRING_DETAILS1"] .. _string, arg1 or "", arg2 or "", arg3 or "", arg4 or "")
end
end
end
+124 -27
View File
@@ -36,6 +36,10 @@ local sub_atributos = _detalhes.sub_atributos
local segmentos = _detalhes.segmentos
--> STARTUP reativa as instancias e regenera as tabelas das mesmas
function _detalhes:RestartInstances()
return _detalhes:ReativarInstancias()
end
function _detalhes:ReativarInstancias()
_detalhes.opened_windows = 0
for index = #_detalhes.tabela_instancias, 1, -1 do
@@ -152,6 +156,10 @@ end
------------------------------------------------------------------------------------------------------------------------
function _detalhes:ShutDown()
return self:DesativarInstancia()
end
--> desativando a instância ela fica em stand by e apenas hida a janela
function _detalhes:DesativarInstancia()
@@ -320,16 +328,22 @@ end
------------------------------------------------------------------------------------------------------------------------
--> cria uma nova instância e a joga para o container de instâncias
function _detalhes:CreateInstance (id)
return _detalhes:CriarInstancia (_, id)
end
function _detalhes:CriarInstancia (_, id)
if (id and _type (id) == "boolean") then
if (#_detalhes.tabela_instancias >= _detalhes.instances_amount) then
return _detalhes:Msg (Loc ["STRING_INSTANCE_LIMIT"])
_detalhes:Msg (Loc ["STRING_INSTANCE_LIMIT"])
return false
end
local new_instance = _detalhes:NovaInstancia (#_detalhes.tabela_instancias+1)
_detalhes.tabela_instancias [#_detalhes.tabela_instancias+1] = new_instance
return new_instance
elseif (id) then
@@ -353,7 +367,6 @@ end
end
local new_instance = _detalhes:NovaInstancia (#_detalhes.tabela_instancias+1)
_detalhes.tabela_instancias [#_detalhes.tabela_instancias+1] = new_instance
if (not _detalhes.initializing) then
_detalhes:SendEvent ("DETAILS_INSTANCE_OPEN", nil, new_instance)
@@ -700,7 +713,8 @@ end
local new_instance = {}
_setmetatable (new_instance, _detalhes)
_detalhes.tabela_instancias [#_detalhes.tabela_instancias+1] = new_instance
--> instance number
new_instance.meu_id = ID
@@ -788,6 +802,8 @@ end
new_instance:ShowSideBars()
--local skin = fazer aqui o esquema de resgatar a skin salva no profile.
--> apply standard skin if have one saved
if (_detalhes.standard_skin) then
@@ -818,7 +834,7 @@ end
------------------------------------------------------------------------------------------------------------------------
--> ao reiniciar o addon esta função é rodada para recriar a janela da instância
--> search key: ~restaura ~inicio
--> search key: ~restaura ~inicio ~start
function _detalhes:RestauraJanela (index, temp)
--> load
@@ -845,13 +861,26 @@ function _detalhes:RestauraJanela (index, temp)
self.row_height = self.row_info.height + self.row_info.space.between
--> create frames
local _baseframe, _bgframe, _bgframe_display, _scrollframe = gump:CriaJanelaPrincipal (self.meu_id, self)
self.baseframe = _baseframe
self.bgframe = _bgframe
self.bgdisplay = _bgframe_display
self.scroll = _scrollframe
_baseframe:EnableMouseWheel (false)
self.alturaAntiga = _baseframe:GetHeight()
local instance_baseframe = _G ["DetailsBaseFrame" .. self.meu_id]
if (instance_baseframe) then
local _baseframe, _bgframe, _bgframe_display, _scrollframe = instance_baseframe, _G ["Details_WindowFrame" .. self.meu_id], _G ["Details_GumpFrame" .. self.meu_id], _G ["Details_ScrollBar" .. self.meu_id]
self.baseframe = _baseframe
self.bgframe = _bgframe
self.bgdisplay = _bgframe_display
self.scroll = _scrollframe
_baseframe:EnableMouseWheel (false)
self.alturaAntiga = _baseframe:GetHeight()
else
local _baseframe, _bgframe, _bgframe_display, _scrollframe = gump:CriaJanelaPrincipal (self.meu_id, self)
self.baseframe = _baseframe
self.bgframe = _bgframe
self.bgdisplay = _bgframe_display
self.scroll = _scrollframe
_baseframe:EnableMouseWheel (false)
self.alturaAntiga = _baseframe:GetHeight()
end
--> change the attribute
_detalhes:TrocaTabela (self, self.segmento, self.atributo, self.sub_atributo, true) --> passando true no 5º valor para a função ignorar a checagem de valores iguais
@@ -931,6 +960,52 @@ function _detalhes:RestauraJanela (index, temp)
end
function _detalhes:ExportSkin()
local exported = {
version = _detalhes.preset_version --skin version
}
for key, value in pairs (self) do
if (_detalhes.instance_defaults [key]) then
if (type (value) == "table") then
exported [key] = table_deepcopy (value)
else
exported [key] = value
end
end
end
return exported
end
function _detalhes:ApplySavedSkin (style)
if (not style.version or _detalhes.preset_version > style.version) then
return _detalhes:Msg (Loc ["STRING_OPTIONS_PRESETTOOLD"])
end
--> set skin preset
local skin = style.skin
self.skin = ""
self:ChangeSkin (skin)
--> overwrite all instance parameters with saved ones
for key, value in pairs (style) do
if (key ~= "skin") then
if (type (value) == "table") then
self [key] = table_deepcopy (value)
else
self [key] = value
end
end
end
--> apply all changed attributes
self:ChangeSkin()
end
------------------------------------------------------------------------------------------------------------------------
function _detalhes:InstanceReset (instance)
@@ -1502,15 +1577,17 @@ function _detalhes:ChangeIcon (icon)
if (self.atributo == 5) then
--> custom
local icon = _detalhes.custom [self.sub_atributo].icon
self.baseframe.cabecalho.atributo_icon:SetTexture (icon)
self.baseframe.cabecalho.atributo_icon:SetTexCoord (5/64, 60/64, 3/64, 62/64)
local icon_size = skin.icon_plugins_size
self.baseframe.cabecalho.atributo_icon:SetWidth (icon_size[1])
self.baseframe.cabecalho.atributo_icon:SetHeight (icon_size[2])
local icon_anchor = skin.icon_anchor_plugins
self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", icon_anchor[1], icon_anchor[2])
if (_detalhes.custom [self.sub_atributo]) then
local icon = _detalhes.custom [self.sub_atributo].icon
self.baseframe.cabecalho.atributo_icon:SetTexture (icon)
self.baseframe.cabecalho.atributo_icon:SetTexCoord (5/64, 60/64, 3/64, 62/64)
local icon_size = skin.icon_plugins_size
self.baseframe.cabecalho.atributo_icon:SetWidth (icon_size[1])
self.baseframe.cabecalho.atributo_icon:SetHeight (icon_size[2])
local icon_anchor = skin.icon_anchor_plugins
self.baseframe.cabecalho.atributo_icon:SetPoint ("TOPRIGHT", self.baseframe.cabecalho.ball_point, "TOPRIGHT", icon_anchor[1], icon_anchor[2])
end
else
--> normal
local half = 0.00048828125
@@ -1786,11 +1863,18 @@ function _detalhes:monta_relatorio (este_relatorio, custom)
total, keyName, first = _detalhes.atributo_misc:RefreshWindow (self, self.showing, true, true)
end
elseif (atributo == 5) then --> custom
total, keyName, first = _detalhes.atributo_custom:RefreshWindow (self, self.showing, true, {key = "custom"})
total = self.showing.totals [self.customName]
atributo = _detalhes.custom [self.sub_atributo].attribute
container = self.showing [atributo]._ActorTable
if (_detalhes.custom [self.sub_atributo]) then
total, keyName, first = _detalhes.atributo_custom:RefreshWindow (self, self.showing, true, {key = "custom"})
total = self.showing.totals [self.customName]
atributo = _detalhes.custom [self.sub_atributo].attribute
container = self.showing [atributo]._ActorTable
else
total, keyName, first = _detalhes.atributo_damage:RefreshWindow (self, self.showing, true, true)
total = 1
atributo = 1
container = self.showing [atributo]._ActorTable
end
--print (total, keyName, first, atributo)
end
@@ -2058,7 +2142,9 @@ function _detalhes:envia_relatorio (linhas, custom)
end
local to_who = _detalhes.report_where
local channel = to_who:find ("|")
local channel = to_who:find ("CHANNEL")
local is_btag = to_who:find ("REALID")
if (channel) then
@@ -2069,6 +2155,17 @@ function _detalhes:envia_relatorio (linhas, custom)
end
return
elseif (is_btag) then
local id = to_who:gsub ((".*|"), "")
local presenceID = tonumber (id)
for i = 1, #linhas do
BNSendWhisper (presenceID, linhas[i])
end
return
elseif (to_who == "WHISPER") then --> whisper
+1 -1
View File
@@ -61,7 +61,7 @@ _detalhes.instance_defaults = {
--sort direction is the direction of results on bars (1 = top to bottom 2 = bottom to top)
bars_sort_direction = 1,
--reset button info
resetbutton_info = {text_color = {1, 0.82, 0, 1}, text_face = "Friz Quadrata TT", text_size = 12, color_overlay = {1, 1, 1, 1}, always_small = false},
resetbutton_info = {text_color = {1, 0.82, 0, 1}, text_color_small = {1, 0.82, 0, 1}, text_face = "Friz Quadrata TT", text_size = 12, color_overlay = {1, 1, 1, 1}, always_small = false},
--instance button info
instancebutton_info = {text_color = {1, 0.82, 0, 1}, text_face = "Friz Quadrata TT", text_size = 12, color_overlay = {1, 1, 1, 1}},
--close button info
+44
View File
@@ -560,6 +560,50 @@
end
end
function _detalhes:ClearInstances()
for _, esta_instancia in _ipairs (_detalhes.tabela_instancias) do
--> detona a janela do Solo Mode
if (esta_instancia.StatusBar.left) then
esta_instancia.StatusBarSaved = {
["left"] = esta_instancia.StatusBar.left.real_name or "NONE",
["center"] = esta_instancia.StatusBar.center.real_name or "NONE",
["right"] = esta_instancia.StatusBar.right.real_name or "NONE",
["options"] = esta_instancia.StatusBar.options
}
end
--> erase all widgets frames
esta_instancia.scroll = nil
esta_instancia.baseframe = nil
esta_instancia.bgframe = nil
esta_instancia.bgdisplay = nil
esta_instancia.freeze_icon = nil
esta_instancia.freeze_texto = nil
esta_instancia.barras = nil
esta_instancia.showing = nil
esta_instancia.agrupada_a = nil
esta_instancia.grupada_pos = nil
esta_instancia.agrupado = nil
esta_instancia._version = nil
esta_instancia.h_baixo = nil
esta_instancia.h_esquerda = nil
esta_instancia.h_direita = nil
esta_instancia.h_cima = nil
esta_instancia.botao_separar = nil
esta_instancia.alert = nil
esta_instancia.StatusBar = nil
esta_instancia.consolidateFrame = nil
esta_instancia.consolidateButtonTexture = nil
esta_instancia.consolidateButton = nil
esta_instancia.lastIcon = nil
end
end
function _detalhes:reset_window (instancia)
if (instancia.segmento == -1) then
+39 -3
View File
@@ -2566,7 +2566,7 @@
-- PARSER
--serach key: ~parser ~event
--serach key: ~parser ~event ~start ~inicio
function _detalhes:OnEvent (evento, ...)
@@ -2783,14 +2783,50 @@
_detalhes.can_panic_mode = true
end
return _detalhes:SaveData()
--if (UnitName ("player") == "Tiranaa" or UnitName ("player") == "Triciclo") then
_detalhes:SaveConfig()
_detalhes:SaveProfile()
--_detalhes_global = nil
--_detalhes_database = nil
--else
-- return _detalhes:SaveData()
--end
elseif (evento == "ADDON_LOADED") then
local addon_name = _select (1, ...)
if (addon_name == "Details") then
_detalhes:LoadData()
--> cooltip
if (not _G.GameCooltip) then
_detalhes.popup = DetailsCreateCoolTip()
else
_detalhes.popup = _G.GameCooltip
end
--> write into details object all basic keys
_detalhes:ApplyBasicKeys()
--if (_detalhes_global and _detalhes_global.profile_pool and _detalhes_global.profile_pool [UnitGUID ("player")]) then
--> apply basic startup
_detalhes:ApplyBasicKeys()
--> check if is first run
_detalhes:IsFirstRun()
--> load all the saved combats
_detalhes:LoadCombatTables()
--> load the profiles
_detalhes:LoadConfig()
--else
--> load the addon
-- _detalhes:LoadData()
--end
_detalhes:UpdateParserGears()
_detalhes:Start()
end
+7
View File
@@ -293,6 +293,7 @@ function DropDownMetaFunctions:Select (optionName, byOptionNumber)
local menu = self.func()
if (byOptionNumber and type (optionName) == "number") then
--print ("selected", optionName)
return self:Selected (menu [optionName])
end
@@ -489,6 +490,12 @@ function DetailsDropDownOnMouseDown (button)
_this_row.label:SetPoint ("left", _this_row.statusbar, "left", 2, 0)
end
if (_table.iconsize) then
_this_row.icon:SetSize (_table.iconsize[1], _table.iconsize[2])
else
_this_row.icon:SetSize (20, 20)
end
if (_table.font) then
_this_row.label:SetFont (_table.font, 10.5)
else
+2
View File
@@ -246,6 +246,8 @@ function gump:NewLabel (parent, container, name, member, text, font, size, color
LabelObject.label = parent:CreateFontString (name, "OVERLAY", font)
LabelObject.widget = LabelObject.label
LabelObject.label.MyObject = LabelObject
if (not APILabelFunctions) then
APILabelFunctions = true
local idx = getmetatable (LabelObject.label).__index
+310
View File
@@ -0,0 +1,310 @@
--File Revision: 1
--Last Modification: 07/04/2014
-- Change Log:
-- 07/04/2014: File Created.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
local _detalhes = _G._detalhes
local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" )
local _
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> On Details! Load:
--> load default keys into the main object
function _detalhes:ApplyBasicKeys()
--> we are not in debug mode
self.debug = false
--> who is
self.playername = UnitName ("player")
self.playerserial = UnitGUID ("player")
--> player faction and enemy faction
self.faction = UnitFactionGroup ("player")
if (self.faction == PLAYER_FACTION_GROUP[0]) then --> player is horde
self.faction_against = PLAYER_FACTION_GROUP[1] --> ally
elseif (self.faction == PLAYER_FACTION_GROUP[1]) then --> player is alliance
self.faction_against = PLAYER_FACTION_GROUP[0] --> horde
end
self.zone_type = nil
_detalhes.temp_table1 = {}
--> combat
self.encounter = {}
self.in_combat = false
self.combat_id = 0
--> instances (windows)
self.solo = self.solo or nil
self.raid = self.raid or nil
self.opened_windows = 0
self.default_texture = [[Interface\AddOns\Details\images\bar4]]
self.default_texture_name = "Details D'ictum"
self.tooltip_max_targets = 3
self.tooltip_max_abilities = 3
self.tooltip_max_pets = 1
self.class_coords_version = 1
self.class_colors_version = 1
self.school_colors = {
[1] = {1.00, 1.00, 0.00},
[2] = {1.00, 0.90, 0.50},
[4] = {1.00, 0.50, 0.00},
[8] = {0.30, 1.00, 0.30},
[16] = {0.50, 1.00, 1.00},
[32] = {0.50, 0.50, 1.00},
[64] = {1.00, 0.50, 1.00},
["unknown"] = {0.5, 0.75, 0.75, 1}
}
--> load default profile keys
for key, value in pairs (_detalhes.default_profile) do
if (type (value) == "table") then
local ctable = table_deepcopy (value)
self [key] = ctable
else
self [key] = value
end
end
--> end
return true
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> On Details! Load:
--> check if this is a first run, reset, or else.
function _detalhes:IsFirstRun()
--> check and build the default container for character database
if (not _detalhes_database) then
_detalhes_database = table_deepcopy (_detalhes.default_player_data)
end
if (_detalhes_global and not _detalhes_global.profile_pool) then
_detalhes_global.profile_pool = {}
end
for key, value in pairs (_detalhes.default_player_data) do
if (_detalhes_database [key] == nil) then
if (type (value) == "table") then
_detalhes_database [key] = table_deepcopy (_detalhes.default_player_data [key])
else
_detalhes_database [key] = value
end
end
if (type (value) == "table") then
_detalhes [key] = table_deepcopy (_detalhes_database [key])
else
_detalhes [key] = value
end
end
--> check and build the default container for account database
if (not _detalhes_global) then
_detalhes_global = table_deepcopy (_detalhes.default_global_data)
end
for key, value in pairs (_detalhes.default_global_data) do
if (_detalhes_global [key] == nil) then
if (type (value) == "table") then
_detalhes_global [key] = table_deepcopy (_detalhes.default_global_data [key])
else
_detalhes_global [key] = value
end
end
if (type (value) == "table") then
_detalhes [key] = table_deepcopy (_detalhes_global [key])
else
_detalhes [key] = value
end
end
--> end
return true
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> On Details! Load:
--> load previous saved combat data
function _detalhes:LoadCombatTables()
--> if isn't nothing saved, build a new one
if (not _detalhes_database.tabela_historico) then
_detalhes.tabela_historico = _detalhes.historico:NovoHistorico()
_detalhes.tabela_pets = _detalhes.container_pets:NovoContainer()
_detalhes.tabela_overall = _detalhes.combate:NovaTabela()
_detalhes.tabela_vigente = _detalhes.combate:NovaTabela (_, _detalhes.tabela_overall)
else
--> build basic containers
-- segments
_detalhes.tabela_historico = _detalhes_database.tabela_historico or _detalhes.historico:NovoHistorico()
-- overall
_detalhes.tabela_overall = _detalhes.combate:NovaTabela()
-- pets
_detalhes.tabela_pets = _detalhes_database.tabela_pets or _detalhes.container_pets:NovoContainer()
--> if the core revision was incremented, reset all combat data
if (_detalhes.last_realversion < _detalhes.realversion) then
--> details was been hard upgraded
_detalhes.tabela_historico = _detalhes.historico:NovoHistorico()
_detalhes.tabela_pets = _detalhes.container_pets:NovoContainer()
_detalhes.tabela_overall = _detalhes.combate:NovaTabela()
_detalhes.tabela_vigente = _detalhes.combate:NovaTabela (_, _detalhes.tabela_overall)
end
--> re-build all indexes and metatables
_detalhes:RestauraMetaTables()
--> get last combat table
local historico_UM = _detalhes.tabela_historico.tabelas[1]
if (historico_UM) then
_detalhes.tabela_vigente = historico_UM --> significa que elas eram a mesma tabela, então aqui elas se tornam a mesma tabela
else
_detalhes.tabela_vigente = _detalhes.combate:NovaTabela (_, _detalhes.tabela_overall)
end
--> need refresh for all containers
for _, container in ipairs (_detalhes.tabela_overall) do
container.need_refresh = true
end
for _, container in ipairs (_detalhes.tabela_vigente) do
container.need_refresh = true
end
--> erase combat data from the database
_detalhes_database.tabela_vigente = nil
_detalhes_database.tabela_historico = nil
_detalhes_database.tabela_pets = nil
end
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> On Details! Load:
--> load the saved config on the addon
function _detalhes:LoadConfig()
--> profile
--> instances
_detalhes.tabela_instancias = _detalhes_database.tabela_instancias or {}
--> plugins data
_detalhes.plugin_database = _detalhes_database.plugin_database or {}
_detalhes:ReativarInstancias()
--> fix for the 500
if (_detalhes_database.active_profile == "") then
--> é a primeira vez que este character usa profiles, precisa copiar as keys existentes
local current_profile_name = _detalhes:GetCurrentProfileName()
_detalhes:GetProfile (current_profile_name, true)
_detalhes:SaveProfileSpecial()
end
--> load profile and active instances
local current_profile_name = _detalhes:GetCurrentProfileName()
_detalhes:GetProfile (current_profile_name, true)
_detalhes:ApplyProfile (current_profile_name, true)
--> startup
--> set the nicktag cache host
_detalhes:NickTagSetCache (_detalhes_database.nick_tag_cache)
--> count data
_detalhes:CountDataOnLoad()
--> solo e raid plugin
if (_detalhes_database.SoloTablesSaved) then
if (_detalhes_database.SoloTablesSaved.Mode) then
_detalhes.SoloTables.Mode = _detalhes_database.SoloTablesSaved.Mode
_detalhes.SoloTables.LastSelected = _detalhes_database.SoloTablesSaved.LastSelected
else
_detalhes.SoloTables.Mode = 1
end
end
if (_detalhes_database.RaidTablesSaved) then
if (_detalhes_database.RaidTablesSaved.Mode) then
_detalhes.RaidTables.Mode = _detalhes_database.RaidTablesSaved.Mode
_detalhes.RaidTables.LastSelected = _detalhes_database.RaidTablesSaved.LastSelected
else
_detalhes.RaidTables.Mode = 1
end
end
--> switch tables
_detalhes.switch.slots = _detalhes_database.switchSaved.slots
_detalhes.switch.table = _detalhes_database.switchSaved.table
--> buffs
_detalhes.savedbuffs = _detalhes_database.savedbuffs
_detalhes.Buffs:BuildTables()
--> custom
_detalhes.custom = _detalhes_global.custom
--> parser
_detalhes.capture_current = {}
for captureType, captureValue in pairs (_detalhes.capture_real) do
_detalhes.capture_current [captureType] = captureValue
end
--> spells overwrite
_detalhes.SpellOverwriteUser = _detalhes_global.SpellOverwriteUser or _detalhes.SpellOverwriteUser
--> version first run
if (not _detalhes_database.last_version or _detalhes_database.last_version ~= _detalhes.userversion) then
_detalhes.is_version_first_run = true
end
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> On Details! Load:
--> count logons, tutorials, etc
function _detalhes:CountDataOnLoad()
--> basic
if (not _detalhes_global.got_first_run) then
_detalhes.is_first_run = true
end
--> tutorial
self.tutorial = self.tutorial or {}
self.tutorial.logons = self.tutorial.logons or 0
self.tutorial.logons = self.tutorial.logons + 1
self.tutorial.unlock_button = self.tutorial.unlock_button or 0
self.tutorial.version_announce = self.tutorial.version_announce or 0
self.tutorial.main_help_button = self.tutorial.main_help_button or 0
self.tutorial.alert_frames = self.tutorial.alert_frames or {false, false, false, false, false, false}
self.tutorial.main_help_button = self.tutorial.main_help_button + 1
self.character_data = self.character_data or {logons = 0}
self.character_data.logons = self.character_data.logons + 1
end
+644
View File
@@ -0,0 +1,644 @@
--File Revision: 1
--Last Modification: 07/04/2014
-- Change Log:
-- 07/04/2014: File Created.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
local _detalhes = _G._detalhes
local Loc = LibStub ("AceLocale-3.0"):GetLocale ( "Details" )
local _
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> Profiles:
--> return the current profile name
function _detalhes:GetCurrentProfileName()
--> check is have a profile name
if (_detalhes_database.active_profile == "") then
local character_key = UnitName ("player") .. "-" .. GetRealmName()
_detalhes_database.active_profile = character_key
end
--> end
return _detalhes_database.active_profile
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> Profiles:
--> create a new profile
function _detalhes:CreateProfile (name)
if (not name or type (name) ~= "string" or name == "") then
return false
end
--> check if already exists
if (_detalhes_global.__profiles [name]) then
return false
end
--> copy the default table
local new_profile = table_deepcopy (_detalhes.default_profile)
new_profile.instances = {}
--> add to global container
_detalhes_global.__profiles [name] = new_profile
--> end
return new_profile
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> Profiles:
--> return the list os all profiles
function _detalhes:GetProfileList()
--> build the table
local t = {}
for name, profile in pairs (_detalhes_global.__profiles) do
t [#t + 1] = name
end
--> end
return t
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> Profiles:
--> delete a profile
function _detalhes:EraseProfile (profile_name)
--> erase profile table
_detalhes_global.__profiles [profile_name] = nil
if (_detalhes_database.active_profile == profile_name) then
local character_key = UnitName ("player") .. "-" .. GetRealmName()
local my_profile = _detalhes:GetProfile (character_key)
if (my_profile) then
_detalhes:ApplyProfile (character_key, true)
else
local profile = _detalhes:CreateProfile (character_key)
_detalhes:ApplyProfile (character_key, true)
end
end
--> end
return true
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> Profiles:
--> return the profile table requested
function _detalhes:GetProfile (name, create)
--> get the profile, create and return
local profile = _detalhes_global.__profiles [name]
if (not profile and not create) then
return false
elseif (not profile and create) then
profile = _detalhes:CreateProfile (name)
end
--> end
return profile
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> Profiles:
--> reset the profile
function _detalhes:ResetProfile (profile_name)
--> get the profile
local profile = _detalhes:GetProfile (profile_name, true)
if (not profile) then
return false
end
--> reset
local instances = profile.instances
for index, instance in ipairs (instances) do
for key, value in pairs (_detalhes.instance_defaults) do
if (type (value) == "table") then
instance [key] = table_deepcopy (value)
else
instance [key] = value
end
end
end
local profile = table_deepcopy (_detalhes.default_profile)
profile.instances = instances
_detalhes:ApplyProfile (profile_name, true)
--> end
return true
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> Profiles:
--> return the profile table requested
function _detalhes:ApplyProfile (profile_name, nosave, is_copy)
--> get the profile
local profile = _detalhes:GetProfile (profile_name, true)
--> if the profile doesn't exist, just quit
if (not profile) then
_detalhes:Msg ("Profile Not Found.")
return false
end
--> always save the previous profile, except if nosave flag is up
if (not nosave) then
--> salva o profile ativo no momento
_detalhes:SaveProfile()
end
--> update profile keys before go
for key, value in pairs (_detalhes.default_profile) do
if (profile [key] == nil) then
if (type (value) == "table") then
profile [key] = table_deepcopy (_detalhes.default_profile [key])
else
profile [key] = value
end
elseif (type (value) == "table") then
for key2, value2 in pairs (value) do
if (profile [key] [key2] == nil) then
if (type (value2) == "table") then
profile [key] [key2] = table_deepcopy (_detalhes.default_profile [key] [key2])
else
profile [key] [key2] = value2
end
end
end
end
end
--> apply the profile values
for key, _ in pairs (_detalhes.default_profile) do
local value = profile [key]
if (type (value) == "table") then
local ctable = table_deepcopy (value)
_detalhes [key] = ctable
else
_detalhes [key] = value
end
end
--> apply the skin
local saved_skins = profile.instances
--> we need to create instances if the profile have more saved skins then the current amount of instances
if (#_detalhes.tabela_instancias < #saved_skins) then
for i = #_detalhes.tabela_instancias+1, #saved_skins do
--> esse inicio precisa ser em silêncio
local new_instance = _detalhes:CreateInstance (true)
if (not new_instance) then
break
end
new_instance:ShutDown()
end
end
for index, instance in ipairs (_detalhes.tabela_instancias) do
local this_skin = saved_skins [index]
if (this_skin) then
if (not instance.iniciada and not _detalhes.initializing) then
instance:RestauraJanela()
instance:ApplySavedSkin (this_skin)
instance:DesativarInstancia()
elseif (instance.iniciada) then
instance:ApplySavedSkin (this_skin)
end
end
end
--> end
if (not is_copy) then
_detalhes.active_profile = profile_name
_detalhes_database.active_profile = profile_name
--_detalhes:SaveProfile()
end
return true
end
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> Profiles:
--> return the profile table requested
function _detalhes:SaveProfile (saveas)
--> get the current profile
local profile_name
if (saveas) then
profile_name = saveas
else
profile_name = _detalhes:GetCurrentProfileName()
end
local profile = _detalhes:GetProfile (profile_name, true)
--> save default keys
for key, _ in pairs (_detalhes.default_profile) do
local current_value = _detalhes [key]
if (type (current_value) == "table") then
local ctable = table_deepcopy (current_value)
profile [key] = ctable
else
profile [key] = current_value
end
end
--> save skins
table.wipe (profile.instances)
for index, instance in ipairs (_detalhes.tabela_instancias) do
local exported = instance:ExportSkin()
profile.instances [index] = exported
end
--> end
return profile
end
local default_profile = {
--> class icons and colors
class_icons_small = [[Interface\AddOns\Details\images\classes_small]],
class_coords = {
["HUNTER"] = {
0, -- [1]
0.25, -- [2]
0.25, -- [3]
0.5, -- [4]
},
["WARRIOR"] = {
0, -- [1]
0.25, -- [2]
0, -- [3]
0.25, -- [4]
},
["ROGUE"] = {
0.49609375, -- [1]
0.7421875, -- [2]
0, -- [3]
0.25, -- [4]
},
["MAGE"] = {
0.25, -- [1]
0.49609375, -- [2]
0, -- [3]
0.25, -- [4]
},
["PET"] = {
0.25, -- [1]
0.49609375, -- [2]
0.75, -- [3]
1, -- [4]
},
["DRUID"] = {
0.7421875, -- [1]
0.98828125, -- [2]
0, -- [3]
0.25, -- [4]
},
["MONK"] = {
0.5, -- [1]
0.73828125, -- [2]
0.5, -- [3]
0.75, -- [4]
},
["DEATHKNIGHT"] = {
0.25, -- [1]
0.5, -- [2]
0.5, -- [3]
0.75, -- [4]
},
["UNKNOW"] = {
0.5, -- [1]
0.75, -- [2]
0.75, -- [3]
1, -- [4]
},
["PRIEST"] = {
0.49609375, -- [1]
0.7421875, -- [2]
0.25, -- [3]
0.5, -- [4]
},
["UNGROUPPLAYER"] = {
0.5, -- [1]
0.75, -- [2]
0.75, -- [3]
1, -- [4]
},
["Alliance"] = {
0.49609375, -- [1]
0.7421875, -- [2]
0.75, -- [3]
1, -- [4]
},
["WARLOCK"] = {
0.7421875, -- [1]
0.98828125, -- [2]
0.25, -- [3]
0.5, -- [4]
},
["ENEMY"] = {
0, -- [1]
0.25, -- [2]
0.75, -- [3]
1, -- [4]
},
["Horde"] = {
0.7421875, -- [1]
0.98828125, -- [2]
0.75, -- [3]
1, -- [4]
},
["PALADIN"] = {
0, -- [1]
0.25, -- [2]
0.5, -- [3]
0.75, -- [4]
},
["MONSTER"] = {
0, -- [1]
0.25, -- [2]
0.75, -- [3]
1, -- [4]
},
["SHAMAN"] = {
0.25, -- [1]
0.49609375, -- [2]
0.25, -- [3]
0.5, -- [4]
},
},
class_colors = {
["HUNTER"] = {
0.67, -- [1]
0.83, -- [2]
0.45, -- [3]
},
["WARRIOR"] = {
0.78, -- [1]
0.61, -- [2]
0.43, -- [3]
},
["PALADIN"] = {
0.96, -- [1]
0.55, -- [2]
0.73, -- [3]
},
["SHAMAN"] = {
0, -- [1]
0.44, -- [2]
0.87, -- [3]
},
["MAGE"] = {
0.41, -- [1]
0.8, -- [2]
0.94, -- [3]
},
["ROGUE"] = {
1, -- [1]
0.96, -- [2]
0.41, -- [3]
},
["UNKNOW"] = {
0.2, -- [1]
0.2, -- [2]
0.2, -- [3]
},
["PRIEST"] = {
1, -- [1]
1, -- [2]
1, -- [3]
},
["WARLOCK"] = {
0.58, -- [1]
0.51, -- [2]
0.79, -- [3]
},
["UNGROUPPLAYER"] = {
0.4, -- [1]
0.4, -- [2]
0.4, -- [3]
},
["ENEMY"] = {
0.94117, -- [1]
0, -- [2]
0.0196, -- [3]
1, -- [4]
},
["version"] = 1,
["PET"] = {
0.3, -- [1]
0.4, -- [2]
0.5, -- [3]
},
["DRUID"] = {
1, -- [1]
0.49, -- [2]
0.04, -- [3]
},
["MONK"] = {
0, -- [1]
1, -- [2]
0.59, -- [3]
},
["DEATHKNIGHT"] = {
0.77, -- [1]
0.12, -- [2]
0.23, -- [3]
},
},
--> minimap
minimap = {hide = false, radius = 160, minimapPos = 220},
--> PvP
only_pvp_frags = false,
--> window size
max_window_size = {width = 480, height = 450},
new_window_size = {width = 300, height = 95},
window_clamp = {-8, 0, 21, -14},
--> segments
segments_amount = 12,
segments_amount_to_save = 5,
segments_panic_mode = true,
--> max instances
instances_amount = 12,
--> if clear ungroup characters when logout
clear_ungrouped = true,
--> if clear graphic data when logout
clear_graphic = true,
--> text sizes
font_sizes = {menus = 10},
ps_abbreviation = 3,
--> performance
use_row_animations = false,
animate_scroll = false,
use_scroll = false,
update_speed = 1,
time_type = 2,
memory_threshold = 3,
memory_ram = 64,
remove_realm_from_name = true,
trash_concatenate = false,
trash_auto_remove = true,
--> death log
deadlog_limit = 12,
--> report
report_lines = 5,
report_to_who = "",
--> colors
default_bg_color = 0.0941,
default_bg_alpha = 0.5,
--> fades
row_fade_in = {"in", 0.2},
windows_fade_in = {"in", 0.2},
row_fade_out = {"out", 0.2},
windows_fade_out = {"out", 0.2},
--> captures
capture_real = {
["damage"] = true,
["heal"] = true,
["energy"] = false,
["miscdata"] = true,
["aura"] = true,
["spellcast"] = true,
},
--> cloud capture
cloud_capture = true,
--> combat time mim
minimum_combat_time = 5,
--> skins
standard_skin = false, --?
skin = "Default Skin", --?
--> modes
--> switch
}
_detalhes.default_profile = default_profile
-- aqui fica as propriedades do jogador que não serão armazenadas no profile
local default_player_data = {
--> current combat number
combat_id = 0,
--> nicktag cache
nick_tag_cache = {},
--> plugin data
plugin_database = {},
--> information about this character
character_data = {logons = 0},
--> version
last_realversion = _detalhes.realversion,
last_version = "v1.0.0",
--> profile
active_profile = "",
--> plugins tables
SoloTablesSaved = {},
RaidTablesSaved = {},
--> switch tables
switchSaved = {slots = 6, table = {}},
--> saved skins
savedStyles = {},
}
_detalhes.default_player_data = default_player_data
local default_global_data = {
--> profile pool
__profiles = {},
custom = {},
savedStyles = {},
tutorial = {logons = 0, unlock_button = 0, version_announce = 0, main_help_button = 0, alert_frames = {false, false, false, false, false, false}, },
}
_detalhes.default_global_data = default_global_data
function _detalhes:SaveProfileSpecial()
--> get the current profile
local profile_name = _detalhes:GetCurrentProfileName()
local profile = _detalhes:GetProfile (profile_name, true)
--> save default keys
for key, _ in pairs (_detalhes.default_profile) do
local current_value = _detalhes_database [key] or _detalhes_global [key] or _detalhes.default_player_data [key] or _detalhes.default_global_data [key]
if (type (current_value) == "table") then
local ctable = table_deepcopy (current_value)
profile [key] = ctable
else
profile [key] = current_value
end
end
--> save skins
table.wipe (profile.instances)
for index, instance in ipairs (_detalhes.tabela_instancias) do
local exported = instance:ExportSkin()
profile.instances [index] = exported
end
--> end
return profile
end
+87 -125
View File
@@ -119,6 +119,11 @@ end
-- On Account
_detalhes_global = _detalhes_global or {}
--> profiles
_detalhes_global.__profiiles = _detalhes.__profiiles
--> skins
_detalhes_global.savedStyles = _detalhes.savedStyles
_detalhes_global.standard_skin = _detalhes.standard_skin
_detalhes_global.got_first_run = true
@@ -146,11 +151,15 @@ end
--tutorial
_detalhes_global.tutorial = _detalhes.tutorial
--profiles
_detalhes_global.__profiiles = _detalhes.__profiiles
return true
end
local force_reset = function()
print ("Check Point: Force reset.")
_detalhes.tabela_instancias = {}
_detalhes.tabela_historico = _detalhes.historico:NovoHistorico()
_detalhes.tabela_pets = _detalhes.container_pets:NovoContainer()
@@ -171,20 +180,20 @@ end --]]
if (_detalhes_database) then
----------------------------------------------------------------------------------------
--> fora dos profiles
----------------------------------------------------------------------------------------
--> nicktag cache
_detalhes.nick_tag_cache = _detalhes_database.nick_tag_cache or {}
_detalhes:NickTagSetCache (_detalhes.nick_tag_cache)
_detalhes.only_pvp_frags = _detalhes_database.only_pvp_frags
--> minimap
_detalhes.minimap = _detalhes_database.minimap
--> plugin data
_detalhes.plugin_database = _detalhes_database.plugin_database
--> character info
_detalhes.character_data = _detalhes_database.character_data
--> build basic containers
_detalhes.tabela_historico = _detalhes_database.tabela_historico or _detalhes.historico:NovoHistorico() -- segments
_detalhes.tabela_overall = _detalhes.combate:NovaTabela() -- overall
@@ -205,16 +214,10 @@ end --]]
if (_detalhes.last_version ~= _detalhes.userversion) then
_detalhes.is_version_first_run = true
end
--> re-build all indexes and metatables
_detalhes:RestauraMetaTables()
--> instances (windows)
_detalhes.tabela_instancias = _detalhes_database.tabela_instancias or {}
_detalhes.class_icons_small = _detalhes_database.class_icons_small
_detalhes.class_coords = _detalhes_database.class_coords
_detalhes.class_colors = _detalhes_database.class_colors
--> get last combat table
local historico_UM = _detalhes.tabela_historico.tabelas[1]
@@ -225,6 +228,22 @@ end --]]
end
_detalhes.combat_id = _detalhes_database.combat_id
----------------------------------------------------------------------------------------
--> estão nos profiles
----------------------------------------------------------------------------------------
--> minimap
_detalhes.minimap = _detalhes_database.minimap
--> PvP
_detalhes.only_pvp_frags = _detalhes_database.only_pvp_frags
--> instances (windows)
_detalhes.tabela_instancias = _detalhes_database.tabela_instancias or {}
_detalhes.class_icons_small = _detalhes_database.class_icons_small
_detalhes.class_coords = _detalhes_database.class_coords
_detalhes.class_colors = _detalhes_database.class_colors
if (_detalhes_database.SoloTables) then
if (_detalhes_database.SoloTables.Mode) then
@@ -303,12 +322,12 @@ end --]]
_detalhes_database.tabela_pets = nil
else
_detalhes.tabela_instancias = {}
_detalhes.tabela_historico = _detalhes.historico:NovoHistorico()
_detalhes.tabela_pets = _detalhes.container_pets:NovoContainer()
_detalhes.tabela_overall = _detalhes.combate:NovaTabela()
_detalhes.tabela_vigente = _detalhes.combate:NovaTabela (_, _detalhes.tabela_overall)
_detalhes_database = {}
_detalhes.tabela_instancias = {}
_detalhes.tabela_historico = _detalhes.historico:NovoHistorico()
_detalhes.tabela_pets = _detalhes.container_pets:NovoContainer()
_detalhes.tabela_overall = _detalhes.combate:NovaTabela()
_detalhes.tabela_vigente = _detalhes.combate:NovaTabela (_, _detalhes.tabela_overall)
_detalhes_database = {}
end
-- capture
@@ -333,7 +352,6 @@ end --]]
_detalhes.cloud_capture = _detalhes_database.cloud_capture
_detalhes.minimum_combat_time = _detalhes_database.minimum_combat_time
-- On Account
local _detalhes_global = _G._detalhes_global
@@ -342,6 +360,8 @@ end --]]
--saved styles
--vardump (_detalhes_global.savedStyles)
_detalhes.__profiiles = _detalhes_global.__profiiles
_detalhes.savedStyles = _detalhes_global.savedStyles or _detalhes.savedStyles
_detalhes.standard_skin = _detalhes_global.standard_skin
@@ -371,6 +391,10 @@ end --]]
--tutorial
_detalhes.tutorial = _detalhes_global.tutorial
--profiles
_detalhes.__profiiles = _detalhes_global.__profiiles
else
_detalhes.is_first_run = true
end
@@ -391,115 +415,53 @@ function _detalhes:WipeConfig()
end
function _detalhes:ApplyConfigDataOnLoad()
--> basic
self.instances_amount = self.instances_amount or 12
self.segments_amount = self.segments_amount or 12
self.segments_amount_to_save = self.segments_amount_to_save or 5
self.memory_threshold = self.memory_threshold or 3
self.memory_ram = self.memory_ram or 64
self.deadlog_limit = self.deadlog_limit or 12
self.minimum_combat_time = self.minimum_combat_time or 5
self.update_speed = self.update_speed or 1
self.time_type = self.time_type or 2
self.row_fade_in = self.row_fade_in or {"in", 0.2}
self.row_fade_out = self.row_fade_out or {"out", 0.2}
self.windows_fade_in = self.windows_fade_in or {"in", 0.2}
self.windows_fade_out = self.windows_fade_out or {"out", 0.2}
self.default_bg_color = self.default_bg_color or 0.0941
self.default_bg_alpha = self.default_bg_alpha or 0.7
self.new_window_size = self.new_window_size or {width = 300, height = 95}
self.max_window_size = self.max_window_size or {width = 480, height = 450}
self.window_clamp = self.window_clamp or {-8, 0, 21, -14}
self.window_clamp = {-8, 0, 21, -14}
self.report_lines = self.report_lines or 5
self.report_to_who = self.report_to_who or ""
self.animate_scroll = self.animate_scroll or false
self.use_scroll = self.use_scroll or false
self.font_sizes = self.font_sizes or {menus = 10}
self.minimap = self.minimap or {hide = false, radius = 160, minimapPos = 220}
function _detalhes:SaveConfig()
self.ps_abbreviation = self.ps_abbreviation or 3
--> cleanup
_detalhes:PrepareTablesForSave()
_detalhes_database.tabela_instancias = _detalhes.tabela_instancias
--> buffs
_detalhes.Buffs:SaveBuffs()
self.plugin_database = self.plugin_database or {}
--> tutorial
self.tutorial = self.tutorial or {}
self.tutorial.logons = self.tutorial.logons or 0
self.tutorial.unlock_button = self.tutorial.unlock_button or 0
self.tutorial.version_announce = self.tutorial.version_announce or 0
self.tutorial.main_help_button = self.tutorial.main_help_button or 0
self.tutorial.alert_frames = self.tutorial.alert_frames or {false, false, false, false, false, false}
self.tutorial.logons = self.tutorial.logons + 1
self.tutorial.main_help_button = self.tutorial.main_help_button + 1
self.character_data = self.character_data or {logons = 0}
self.character_data.logons = self.character_data.logons + 1
--> class colors
if (not self.class_colors or not self.class_colors.version or self.class_colors.version < self.class_colors_version) then
self.class_colors = {version = 1}
for classe, tabela_cor in pairs ( RAID_CLASS_COLORS ) do
self.class_colors [classe] = {tabela_cor.r, tabela_cor.g, tabela_cor.b}
--> salva o container do personagem
for key, value in pairs (_detalhes.default_player_data) do
_detalhes_database [key] = _detalhes [key]
end
self.class_colors ["UNKNOW"] = {0.2, 0.2, 0.2}
self.class_colors ["UNGROUPPLAYER"] = {0.4, 0.4, 0.4}
self.class_colors ["PET"] = {0.3, 0.4, 0.5}
self.class_colors ["ENEMY"] = {0.94117, 0, 0.01960, 1}
end
self.class_icons_small = self.class_icons_small or [[Interface\AddOns\Details\images\classes_small]]
--> class coords
if (not self.class_coords or not self.class_coords.version or self.class_coords.version < self.class_coords_version) then
self.class_coords = {}
for class, tcoord in pairs (_G.CLASS_ICON_TCOORDS) do
self.class_coords [class] = tcoord
--> salva o container das globais
for key, value in pairs (_detalhes.default_global_data) do
if (key ~= "__profiles") then
_detalhes_global [key] = _detalhes [key]
end
end
self.class_coords ["Alliance"] = {0.49609375, 0.7421875, 0.75, 1}
self.class_coords ["Horde"] = {0.7421875, 0.98828125, 0.75, 1}
self.class_coords ["PET"] = {0.25, 0.49609375, 0.75, 1}
self.class_coords ["MONSTER"] = {0, 0.25, 0.75, 1}
self.class_coords ["ENEMY"] = {0, 0.25, 0.75, 1}
self.class_coords ["UNKNOW"] = {0.5, 0.75, 0.75, 1}
self.class_coords ["UNGROUPPLAYER"] = {0.5, 0.75, 0.75, 1}
end
--> solo e raid mode
if (_detalhes.SoloTables.Mode) then
_detalhes_database.SoloTablesSaved = {}
_detalhes_database.SoloTablesSaved.Mode = _detalhes.SoloTables.Mode
if (_detalhes.SoloTables.Plugins [_detalhes.SoloTables.Mode]) then
_detalhes_database.SoloTablesSaved.LastSelected = _detalhes.SoloTables.Plugins [_detalhes.SoloTables.Mode].real_name
end
end
if (_detalhes.RaidTables.Mode) then
_detalhes_database.RaidTablesSaved = {}
_detalhes_database.RaidTablesSaved.Mode = _detalhes.RaidTables.Mode
if (_detalhes.RaidTables.Plugins [_detalhes.RaidTables.Mode]) then
_detalhes_database.RaidTablesSaved.LastSelected = _detalhes.RaidTables.Plugins [_detalhes.RaidTables.Mode].real_name
end
end
--> salva switch tables
_detalhes_database.switchSaved.slots = _detalhes.switch.slots
_detalhes_database.switchSaved.table = _detalhes.switch.table
--> last versions
_detalhes_database.last_realversion = _detalhes.realversion --> core number
_detalhes_database.last_version = _detalhes.userversion --> version
_detalhes_global.got_first_run = true
--> booleans
if (type (self.trash_concatenate) ~= "boolean") then
self.trash_concatenate = false
end
if (type (self.trash_auto_remove) ~= "boolean") then
self.trash_auto_remove = true
end
--> overwrite spells
_detalhes_global.SpellOverwriteUser = _detalhes.SpellOverwriteUser
if (type (self.only_pvp_frags) ~= "boolean") then
self.only_pvp_frags = false
end
if (type (self.remove_realm_from_name) ~= "boolean") then
self.remove_realm_from_name = true
end
if (type (self.cloud_capture) ~= "boolean") then
self.cloud_capture = true
end
if (type (self.segments_panic_mode) ~= "boolean") then
self.segments_panic_mode = true
end
if (type (self.clear_graphic) ~= "boolean") then
self.clear_graphic = self.clear_graphic or true
end
if (type (self.clear_ungrouped) ~= "boolean") then
self.clear_ungrouped = self.clear_ungrouped or true
end
if (type (self.use_row_animations) ~= "boolean") then
self.use_row_animations = self.use_row_animations or false
end
end
end
+2 -2
View File
@@ -97,7 +97,7 @@ local _
menu_anchor = {-18, 1},
instance_button_anchor = {-12, 3},
instancebutton_info = {text_color = {.8, .6, .0, 0.8}, text_face = "Friz Quadrata TT", text_size = 10, color_overlay = {1, 1, 1, 1}},
resetbutton_info = {text_color = {.8, .8, .8, 0.8}, text_face = "Friz Quadrata TT", text_size = 12, color_overlay = {1, 1, 1, 1}, always_small = true},
resetbutton_info = {text_color = {.8, .8, .8, 0.8}, text_color_small = {0, 0, 0, 0}, text_face = "Friz Quadrata TT", text_size = 12, color_overlay = {1, 1, 1, 1}, always_small = true},
show_sidebars = false,
show_statusbar = false,
color = {.3, .3, .3, 1},
@@ -381,7 +381,7 @@ local _
--[[ when a skin is selected, all customized properties of the window is reseted and then the overwrites are applied]]
--[[ for the complete cprop list see the file classe_instancia_include.lua]]
instance_cprops = {
resetbutton_info = {text_color = {0.7, 0.7, 0.7, 1}, text_face = "Friz Quadrata TT", text_size = 12, color_overlay = {1, 1, 1, 1}},
resetbutton_info = {text_color = {0.7, 0.7, 0.7, 1}, text_color_small = {0, 0, 0, 0}, text_face = "Friz Quadrata TT", text_size = 12, color_overlay = {1, 1, 1, 1}},
instancebutton_info = {text_color = {.7, .7, .7, 1}, text_face = "Friz Quadrata TT", text_size = 12, color_overlay = {1, 1, 1, 1}},
menu_anchor = {-18, 1},
instance_button_anchor = {-27, 3},
+16 -2
View File
@@ -69,8 +69,14 @@ function SlashCmdList.DETAILS (msg, editbox)
end
else
local lower_instance = _detalhes:GetLowerInstanceNumber()
print (_detalhes:GetInstance (lower_instance))
_detalhes:OpenOptionsWindow (_detalhes:GetInstance (lower_instance))
if (not lower_instance) then
local instance = _detalhes:GetInstance (1)
_detalhes.CriarInstancia (_, _, 1)
_detalhes:OpenOptionsWindow (instance)
else
_detalhes:OpenOptionsWindow (_detalhes:GetInstance (lower_instance))
end
end
elseif (command == Loc ["STRING_SLASH_WORLDBOSS"]) then
@@ -418,6 +424,14 @@ function SlashCmdList.DETAILS (msg, editbox)
end
end
end
elseif (command == "profile") then
local profile = rest:match("^(%S*)%s*(.-)$")
print ("Force apply profile: ", profile)
_detalhes:ApplyProfile (profile, false)
elseif (msg == "users") then
_detalhes.users = {}
+327 -62
View File
@@ -9,6 +9,7 @@ local LDBIcon = LDB and LibStub ("LibDBIcon-1.0", true)
local g = _detalhes.gump
local _
local preset_version = 3
_detalhes.preset_version = preset_version
function _detalhes:OpenOptionsWindow (instance)
@@ -128,7 +129,12 @@ function _detalhes:OpenOptionsWindow (instance)
if (atributo == 5) then --> custom
local CustomObject = _detalhes.custom [sub_atributo]
InstanceList [#InstanceList+1] = {value = index, label = _detalhes.atributos.lista [atributo] .. " - " .. CustomObject.name, onclick = onSelectInstance, icon = CustomObject.icon}
if (CustomObject) then
InstanceList [#InstanceList+1] = {value = index, label = _detalhes.atributos.lista [atributo] .. " - " .. CustomObject.name, onclick = onSelectInstance, icon = CustomObject.icon}
else
InstanceList [#InstanceList+1] = {value = index, label = "unknown" .. " - " .. " invalid custom", onclick = onSelectInstance, icon = [[Interface\COMMON\VOICECHAT-MUTED]]}
end
else
local modo = _this_instance.modo
@@ -159,6 +165,9 @@ function _detalhes:OpenOptionsWindow (instance)
return InstanceList
end
--local profile_string = g:NewLabel (window, nil, nil, "instancetext", "Current Profile:", "GameFontNormal", 12)
--profile_string:SetPoint ("bottomleft", window, "bottomleft", 27, 11)
local instances = g:NewDropDown (window, _, "$parentInstanceSelectDropdown", "instanceDropdown", 200, 18, buildInstanceMenu, nil)
instances:SetPoint ("bottomright", window, "bottomright", -17, 09)
@@ -169,13 +178,44 @@ function _detalhes:OpenOptionsWindow (instance)
--instances_string:Hide()
--> left panel buttons
local select_options = function (options_type)
local menu_indexes = {
[1] = "General Settings",
[2] = "General Settings",
[13] = "General Settings",
[3] = "Appearance",
[4] = "Appearance",
[5] = "Appearance",
[6] = "Appearance",
[7] = "Appearance",
[8] = "Appearance",
[9] = "Appearance",
[10] = "Performance",
[11] = "Performance",
[12] = "Skins",
}
local menus = {
{"Display", "Combat", "Profiles"},
{"Skin Selection", "Row Settings", "Row Texts", "Window Settings", "Menu Bar", "Reset/Instance/Close", "Wallpaper"},
{"Performance Tweaks", "Data Collector"},
{"Plugins Management"}
}
local menus2 = {
"Display", "Combat",
"Skin Selection", "Row Settings", "Row Texts", "Window Settings", "Menu Bar", "Reset/Instance/Close", "Wallpaper",
"Performance Tweaks", "Data Collector",
"Plugins Management", "Profiles"
}
local select_options = function (options_type, true_index)
window:hide_all_options()
window:un_hide_options (options_type)
editing.text = editing.options [options_type]
editing.text = menus2 [options_type]
-- ~altura
if (options_type == 12) then
@@ -234,13 +274,8 @@ function _detalhes:OpenOptionsWindow (instance)
local g_performance_texture = g:NewImage (window, _, "$parentPluginsSettingsTexture", "PluginsSettingsTexture", 160, 33, [[Interface\AddOns\Details\images\options_window]])
g_performance_texture:SetTexCoord (0, 0.15625, 0.78515625, 0.8173828125)
g_performance_texture:SetPoint ("topleft", g_plugin, "topleft", 0, 0)
local menus = {
{"Display", "Combat"},
{"Skin", "Row", "Row Texts", "Window Settings", "Top Menu Bar", "Reset/Instance/Close", "Wallpaper"},
{"Performance Tweaks", "Data Collector"},
{"Plugins Management"}
}
local menus_settings = {1, 2, 13, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
--> create menus
local anchors = {g_settings, g_appearance, g_performance, g_plugin}
@@ -274,7 +309,7 @@ function _detalhes:OpenOptionsWindow (instance)
texture:SetPoint (38, y-2)
texture:SetVertexColor (1, 1, 1, .5)
local button = g:NewButton (window, _, "$parentButton_" .. index .. "_" .. i, nil, 150, 18, select_options, true_index, nil, "", menus [index] [i])
local button = g:NewButton (window, _, "$parentButton_" .. index .. "_" .. i, nil, 150, 18, select_options, menus_settings [true_index], true_index, "", menus [index] [i])
button:SetPoint (40, y)
button.textalign = "<"
button.textcolor = textcolor
@@ -306,6 +341,7 @@ function _detalhes:OpenOptionsWindow (instance)
[10] = {},
[11] = {},
[12] = {},
[13] = {}, --profiles
} --> vai armazenar os frames das opções
@@ -327,7 +363,7 @@ function _detalhes:OpenOptionsWindow (instance)
container:SetBackdrop({
edgeFile = "Interface\\DialogFrame\\UI-DialogBox-gold-Border", tile = true, tileSize = 16, edgeSize = 5,
insets = {left = 1, right = 1, top = 0, bottom = 1},})
insets = {left = 1, right = 1, top = 0, bottom = 1},})
container:SetBackdropBorderColor (0, 0, 0, 0)
container:SetBackdropColor (0, 0, 0, 0)
@@ -415,6 +451,7 @@ function _detalhes:OpenOptionsWindow (instance)
table.insert (window.options [10], window:create_box_no_scroll (10))
table.insert (window.options [11], window:create_box_no_scroll (11))
table.insert (window.options [12], window:create_box (12))
table.insert (window.options [13], window:create_box_no_scroll (13))
function window:hide_all_options()
for _, frame in ipairs (window.options) do
@@ -436,6 +473,10 @@ function _detalhes:OpenOptionsWindow (instance)
end
end
--local yellow_point = window:CreateTexture (nil, "overlay")
--yellow_point:SetSize (16, 16)
--yellow_point:SetTexture ([[Interface\QUESTFRAME\UI-Quest-BulletPoint]])
local background_on_enter = function (self)
if (self.background_frame) then
self = self.background_frame
@@ -445,6 +486,14 @@ function _detalhes:OpenOptionsWindow (instance)
info_text.active = true
info_text.text = self.parent.info
end
self.label:SetTextColor (1, .8, 0)
--self:SetBackdrop ({edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 16, edgeSize = 8,
--insets = {left = 1, right = 1, top = 0, bottom = 1},})
--yellow_point:Show()
--yellow_point:SetPoint ("right", self, "left", 5, -1)
end
local background_on_leave = function (self)
if (self.background_frame) then
@@ -455,6 +504,13 @@ function _detalhes:OpenOptionsWindow (instance)
info_text.active = false
--info_text.text = ""
end
self.label:SetTextColor (1, 1, 1)
--self:SetBackdrop (nil)
--yellow_point:ClearAllPoints()
--yellow_point:Hide()
end
function window:create_line_background (frameX, label, parent)
@@ -466,6 +522,7 @@ function _detalhes:OpenOptionsWindow (instance)
f:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 16, insets = {left = 0, right = 0, top = 0, bottom = 0}})
f:SetBackdropColor (0, 0, 0, 0)
f.parent = parent
f.label = label
if (parent.widget) then
parent.widget.background_frame = f
else
@@ -684,15 +741,65 @@ function _detalhes:OpenOptionsWindow (instance)
frame1.avatarPreview2.texcoord = cords
frame1.avatarPreview2:SetVertexColor (unpack (color))
--> animate bars
g:NewLabel (frame1, _, "$parentAnimateLabel", "animateLabel", Loc ["STRING_OPTIONS_ANIMATEBARS"], "GameFontHighlightLeft")
g:NewSwitch (frame1, _, "$parentAnimateSlider", "animateSlider", 60, 20, _, _, _detalhes.use_row_animations) -- ltext, rtext, defaultv
frame1.animateSlider:SetPoint ("left",frame1.animateLabel, "right", 2, 0)
frame1.animateSlider.info = Loc ["STRING_OPTIONS_ANIMATEBARS_DESC"]
frame1.animateSlider.OnSwitch = function (self, _, value) --> slider, fixedValue, sliderValue (false, true)
_detalhes.use_row_animations = value
end
window:create_line_background (frame1, frame1.animateLabel, frame1.animateSlider)
frame1.animateSlider:SetHook ("OnEnter", background_on_enter)
frame1.animateSlider:SetHook ("OnLeave", background_on_leave)
--> update speed
g:NewSlider (frame1, _, "$parentSliderUpdateSpeed", "updatespeedSlider", SLIDER_WIDTH, 20, 0.3, 3, 0.1, _detalhes.update_speed, true)
g:NewLabel (frame1, _, "$parentUpdateSpeedLabel", "updatespeedLabel", Loc ["STRING_OPTIONS_WINDOWSPEED"], "GameFontHighlightLeft")
--
frame1.updatespeedSlider:SetPoint ("left", frame1.updatespeedLabel, "right", 2, 0)
frame1.updatespeedSlider:SetThumbSize (50)
frame1.updatespeedSlider.useDecimals = true
local updateColor = function (slider, value)
if (value < 1) then
slider.amt:SetTextColor (1, value, 0)
elseif (value > 1) then
slider.amt:SetTextColor (-(value-3), 1, 0)
else
slider.amt:SetTextColor (1, 1, 0)
end
end
frame1.updatespeedSlider:SetHook ("OnValueChange", function (self, _, amount)
_detalhes:CancelTimer (_detalhes.atualizador)
_detalhes.update_speed = amount
_detalhes.atualizador = _detalhes:ScheduleRepeatingTimer ("AtualizaGumpPrincipal", _detalhes.update_speed, -1)
updateColor (self, amount)
end)
updateColor (frame1.updatespeedSlider, _detalhes.update_speed)
frame1.updatespeedSlider.info = Loc ["STRING_OPTIONS_WINDOWSPEED_DESC"]
window:create_line_background (frame1, frame1.updatespeedLabel, frame1.updatespeedSlider)
frame1.updatespeedSlider:SetHook ("OnEnter", background_on_enter)
frame1.updatespeedSlider:SetHook ("OnLeave", background_on_leave)
--> anchors
titulo_display:SetPoint (10, -200)
titulo_display_desc:SetPoint (10, -220)
frame1.segmentsLabel:SetPoint (10, -260)
frame1.scrollLabel:SetPoint (10, -285)
frame1.maxInstancesLabel:SetPoint (10, -310)
frame1.minimapLabel:SetPoint (10, -335)
frame1.dpsAbbreviateLabel:SetPoint (10, -360)
frame1.realmNameLabel:SetPoint (10, -385)
frame1.animateLabel:SetPoint (10, -260)
frame1.updatespeedLabel:SetPoint (10, -285)
frame1.segmentsLabel:SetPoint (10, -310)
frame1.scrollLabel:SetPoint (10, -335)
frame1.maxInstancesLabel:SetPoint (10, -360)
frame1.minimapLabel:SetPoint (10, -385)
frame1.dpsAbbreviateLabel:SetPoint (10, -410)
frame1.realmNameLabel:SetPoint (10, -435)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -853,7 +960,165 @@ function _detalhes:OpenOptionsWindow (instance)
frame2.hideOnCombatAlphaLabel:SetPoint (10, -160)
frame2.autoSwitchLabel:SetPoint (10, -195)
frame2.autoCurrentLabel:SetPoint (10, -220) --auto current
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- General Settings - Profiles
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
local frame13 = window.options [13][1]
--> profiles title
local titulo_profiles = g:NewLabel (frame13, _, "$parentTituloProfiles", "tituloProfilesLabel", Loc ["STRING_OPTIONS_PROFILES_TITLE"], "GameFontNormal", 16)
local titulo_profiles_desc = g:NewLabel (frame13, _, "$parentTituloProfiles2", "tituloProfiles2Label", Loc ["STRING_OPTIONS_PROFILES_TITLE_DESC"], "GameFontNormal", 9, "white")
titulo_profiles_desc.width = 320
--> current profile
local current_profile_label = g:NewLabel (frame13, _, "$parentCurrentProfileLabel1", "currentProfileLabel1", Loc ["STRING_OPTIONS_PROFILES_CURRENT"], "GameFontHighlightLeft")
local current_profile_label2 = g:NewLabel (frame13, _, "$parentCurrentProfileLabel2", "currentProfileLabel2", "", "GameFontNormal")
current_profile_label2:SetPoint ("left", current_profile_label, "right", 3, 0)
local info_holder_frame = CreateFrame ("frame", nil, frame13.widget or frame13)
info_holder_frame:SetPoint ("topleft", current_profile_label.widget, "topleft")
info_holder_frame:SetPoint ("bottomright", current_profile_label2.widget, "bottomright")
info_holder_frame.info = Loc ["STRING_OPTIONS_PROFILES_CURRENT_DESC"]
window:create_line_background (frame13, current_profile_label.widget, info_holder_frame)
info_holder_frame:SetScript ("OnEnter", background_on_enter)
info_holder_frame:SetScript ("OnLeave", background_on_leave)
--> select profile
local profile_selected = function (_, instance, profile_name)
_detalhes:ApplyProfile (profile_name)
_detalhes:Msg ("Profile loaded:", profile_name)
_detalhes:OpenOptionsWindow (instance)
end
local build_profile_menu = function()
local menu = {}
for index, profile_name in ipairs (_detalhes:GetProfileList()) do
menu [#menu+1] = {value = profile_name, label = profile_name, onclick = profile_selected, icon = "Interface\\MINIMAP\\Vehicle-HammerGold-3"}
end
return menu
end
local select_profile_dropdown = g:NewDropDown (frame13, _, "$parentSelectProfileDropdown", "selectProfileDropdown", 160, 20, build_profile_menu, 1)
local select_profile_label = g:NewLabel (frame13, _, "$parentSelectProfileLabel", "selectProfileLabel", Loc ["STRING_OPTIONS_PROFILES_SELECT"], "GameFontHighlightLeft")
select_profile_dropdown:SetPoint ("left", select_profile_label, "right", 2, 0)
select_profile_dropdown.info = Loc ["STRING_OPTIONS_PROFILES_SELECT_DESC"]
window:create_line_background (frame13, select_profile_label, select_profile_dropdown)
select_profile_dropdown:SetHook ("OnEnter", background_on_enter)
select_profile_dropdown:SetHook ("OnLeave", background_on_leave)
--> new profile
local profile_name = g:NewTextEntry (frame13, _, "$parentProfileNameEntry", "profileNameEntry", 120, 20)
local profile_name_label = g:NewLabel (frame13, _, "$parentProfileNameLabel", "profileNameLabel", Loc ["STRING_OPTIONS_PROFILES_CREATE"], "GameFontHighlightLeft")
profile_name:SetPoint ("left", profile_name_label, "right", 2, 0)
local create_profile = function()
local text = profile_name:GetText()
if (text == "") then
return _detalhes:Msg ("Name field is empty.")
end
local new_profile = _detalhes:CreateProfile (text)
if (new_profile) then
_detalhes:ApplyProfile (text)
_detalhes:OpenOptionsWindow (window.instance)
else
return _detalhes:Msg ("Profile not created.")
end
end
local profile_create_button = g:NewButton (frame13, _, "$parentProfileCreateButton", "profileCreateButton", 50, 19, create_profile, nil, nil, nil, Loc ["STRING_OPTIONS_SAVELOAD_SAVE"])
profile_create_button:InstallCustomTexture()
profile_create_button:SetPoint ("left", profile_name, "right", 2, 0)
profile_name.info = Loc ["STRING_OPTIONS_PROFILES_CREATE_DESC"]
window:create_line_background (frame13, profile_name_label, profile_name)
profile_name:SetHook ("OnEnter", background_on_enter)
profile_name:SetHook ("OnLeave", background_on_leave)
--> copy profile
local profile_selectedCopy = function (_, instance, profile_name)
--copiar o profile
local current_instance = window.instance
_detalhes:ApplyProfile (profile_name, nil, true)
_detalhes:OpenOptionsWindow (current_instance)
end
local build_copy_menu = function()
local menu = {}
for index, profile_name in ipairs (_detalhes:GetProfileList()) do
menu [#menu+1] = {value = profile_name, label = profile_name, onclick = profile_selectedCopy, icon = "Interface\\MINIMAP\\Vehicle-HammerGold-2"}
end
return menu
end
local select_profileCopy_dropdown = g:NewDropDown (frame13, _, "$parentSelectProfileCopyDropdown", "selectProfileCopyDropdown", 160, 20, build_copy_menu, 1)
local select_profileCopy_label = g:NewLabel (frame13, _, "$parentSelectProfileCopyLabel", "selectProfileCopyLabel", Loc ["STRING_OPTIONS_PROFILES_COPY"], "GameFontHighlightLeft")
select_profileCopy_dropdown:SetPoint ("left", select_profileCopy_label, "right", 2, 0)
select_profileCopy_dropdown.info = Loc ["STRING_OPTIONS_PROFILES_COPY_DESC"]
window:create_line_background (frame13, select_profileCopy_label, select_profileCopy_dropdown)
select_profileCopy_dropdown:SetHook ("OnEnter", background_on_enter)
select_profileCopy_dropdown:SetHook ("OnLeave", background_on_leave)
--> erase profile
local profile_selectedErase = function (_, instance, profile_name)
local current_instance = window.instance
_detalhes:EraseProfile (profile_name)
_detalhes:OpenOptionsWindow (current_instance)
end
local build_erase_menu = function()
local menu = {}
for index, profile_name in ipairs (_detalhes:GetProfileList()) do
menu [#menu+1] = {value = profile_name, label = profile_name, onclick = profile_selectedErase, icon = "Interface\\MINIMAP\\Vehicle-HammerGold-1", color = {1, 1, 1}, iconcolor = {1, .90, .90}}
end
return menu
end
local select_profileErase_dropdown = g:NewDropDown (frame13, _, "$parentSelectProfileEraseDropdown", "selectProfileEraseDropdown", 160, 20, build_erase_menu, 1)
local select_profileErase_label = g:NewLabel (frame13, _, "$parentSelectProfileEraseLabel", "selectProfileLabel", Loc ["STRING_OPTIONS_PROFILES_ERASE"], "GameFontHighlightLeft")
select_profileErase_dropdown:SetPoint ("left", select_profileErase_label, "right", 2, 0)
select_profileErase_dropdown.info = Loc ["STRING_OPTIONS_PROFILES_ERASE_DESC"]
window:create_line_background (frame13, select_profileErase_label, select_profileErase_dropdown)
select_profileErase_dropdown:SetHook ("OnEnter", background_on_enter)
select_profileErase_dropdown:SetHook ("OnLeave", background_on_leave)
--> reset profile
local reset_profile = function()
local current_instance = window.instance
_detalhes:ResetProfile (_detalhes:GetCurrentProfileName())
_detalhes:OpenOptionsWindow (current_instance)
end
local profile_reset_button = g:NewButton (frame13, _, "$parentProfileResetButton", "profileResetButton", 128, 19, reset_profile, nil, nil, nil, Loc ["STRING_OPTIONS_PROFILES_RESET"])
profile_reset_button:InstallCustomTexture()
local hiddenlabel = g:NewLabel (frame13, _, "$parentProfileResetButtonLabel", "profileResetButtonLabel", "", "GameFontHighlightLeft")
hiddenlabel:SetPoint ("left", profile_reset_button, "left")
profile_reset_button.info = Loc ["STRING_OPTIONS_PROFILES_RESET_DESC"]
window:create_line_background (frame13, hiddenlabel, profile_reset_button)
profile_reset_button:SetHook ("OnEnter", background_on_enter)
profile_reset_button:SetHook ("OnLeave", background_on_leave)
profile_reset_button.button.texture:SetVertexColor (1, .8, 0)
--> anchors
titulo_profiles:SetPoint (10, -10)
titulo_profiles_desc:SetPoint (10, -30)
current_profile_label:SetPoint (10, -90)
select_profile_label:SetPoint (10, -125)
profile_name_label:SetPoint (10, -150)
select_profileCopy_label:SetPoint (10, -185)
select_profileErase_label:SetPoint (10, -210)
profile_reset_button:SetPoint (10, -245)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Appearance - Skin
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -2477,8 +2742,7 @@ function _detalhes:OpenOptionsWindow (instance)
--------------- Memory
g:NewSlider (frame10, _, "$parentSliderSegmentsSave", "segmentsSliderToSave", SLIDER_WIDTH, 20, 1, 5, 1, _detalhes.segments_amount_to_save)
g:NewSlider (frame10, _, "$parentSliderUpdateSpeed", "updatespeedSlider", SLIDER_WIDTH, 20, 0.3, 3, 0.1, _detalhes.update_speed, true)
g:NewLabel (frame10, _, "$parentLabelMemory", "memoryLabel", Loc ["STRING_OPTIONS_MEMORYT"], "GameFontHighlightLeft")
g:NewSlider (frame10, _, "$parentSliderMemory", "memorySlider", SLIDER_WIDTH, 20, 1, 4, 1, _detalhes.memory_threshold)
@@ -2551,18 +2815,7 @@ function _detalhes:OpenOptionsWindow (instance)
frame10.panicModeSlider:SetHook ("OnLeave", background_on_leave)
--------------- Animate Rows
g:NewLabel (frame10, _, "$parentAnimateLabel", "animateLabel", Loc ["STRING_OPTIONS_ANIMATEBARS"], "GameFontHighlightLeft")
g:NewSwitch (frame10, _, "$parentAnimateSlider", "animateSlider", 60, 20, _, _, _detalhes.use_row_animations) -- ltext, rtext, defaultv
frame10.animateSlider:SetPoint ("left",frame10.animateLabel, "right", 2, 0)
frame10.animateSlider.info = Loc ["STRING_OPTIONS_ANIMATEBARS_DESC"]
frame10.animateSlider.OnSwitch = function (self, _, value) --> slider, fixedValue, sliderValue (false, true)
_detalhes.use_row_animations = value
end
window:create_line_background (frame10, frame10.animateLabel, frame10.animateSlider)
frame10.animateSlider:SetHook ("OnEnter", background_on_enter)
frame10.animateSlider:SetHook ("OnLeave", background_on_leave)
--------------- Animate scroll bar
g:NewLabel (frame10, _, "$parentAnimateScrollLabel", "animatescrollLabel", Loc ["STRING_OPTIONS_ANIMATESCROLL"], "GameFontHighlightLeft")
@@ -2580,34 +2833,7 @@ function _detalhes:OpenOptionsWindow (instance)
frame10.animatescrollSlider:SetHook ("OnLeave", background_on_leave)
--------------- Update Speed
g:NewLabel (frame10, _, "$parentUpdateSpeedLabel", "updatespeedLabel", Loc ["STRING_OPTIONS_WINDOWSPEED"], "GameFontHighlightLeft")
--
frame10.updatespeedSlider:SetPoint ("left", frame10.updatespeedLabel, "right", 2, 0)
frame10.updatespeedSlider:SetThumbSize (50)
frame10.updatespeedSlider.useDecimals = true
local updateColor = function (slider, value)
if (value < 1) then
slider.amt:SetTextColor (1, value, 0)
elseif (value > 1) then
slider.amt:SetTextColor (-(value-3), 1, 0)
else
slider.amt:SetTextColor (1, 1, 0)
end
end
frame10.updatespeedSlider:SetHook ("OnValueChange", function (self, _, amount)
_detalhes:CancelTimer (_detalhes.atualizador)
_detalhes.update_speed = amount
_detalhes.atualizador = _detalhes:ScheduleRepeatingTimer ("AtualizaGumpPrincipal", _detalhes.update_speed, -1)
updateColor (self, amount)
end)
updateColor (frame10.updatespeedSlider, _detalhes.update_speed)
frame10.updatespeedSlider.info = Loc ["STRING_OPTIONS_WINDOWSPEED_DESC"]
window:create_line_background (frame10, frame10.updatespeedLabel, frame10.updatespeedSlider)
frame10.updatespeedSlider:SetHook ("OnEnter", background_on_enter)
frame10.updatespeedSlider:SetHook ("OnLeave", background_on_leave)
--------------- Erase Trash
g:NewLabel (frame10, _, "$parentEraseTrash", "eraseTrashLabel", Loc ["STRING_OPTIONS_CLEANUP"], "GameFontHighlightLeft")
@@ -2629,10 +2855,10 @@ function _detalhes:OpenOptionsWindow (instance)
frame10.memoryLabel:SetPoint (10, -70)
frame10.segmentsSaveLabel:SetPoint (10, -95)
frame10.panicModeLabel:SetPoint (10, -120)
frame10.animateLabel:SetPoint (10, -145)
--frame10.animateLabel:SetPoint (10, -145)
--frame10.animatescrollLabel:SetPoint (10, -170)
frame10.updatespeedLabel:SetPoint (10, -170)
frame10.eraseTrashLabel:SetPoint (10, -195)
--frame10.updatespeedLabel:SetPoint (10, -170)
frame10.eraseTrashLabel:SetPoint (10, -145)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Performance - Captures
@@ -3006,6 +3232,41 @@ end
----------------------------------------------------------------------------------------
--> Show
--> window 1
_G.DetailsOptionsWindow1RealmNameSlider.MyObject:SetValue (_detalhes.remove_realm_from_name)
_G.DetailsOptionsWindow1Slider.MyObject:SetValue (_detalhes.segments_amount) --segments
_G.DetailsOptionsWindow1UseScrollSlider.MyObject:SetValue (_detalhes.use_scroll)
_G.DetailsOptionsWindow1SliderMaxInstances.MyObject:SetValue (_detalhes.instances_amount)
_G.DetailsOptionsWindow1MinimapSlider.MyObject:SetValue (not _detalhes.minimap.hide)
_G.DetailsOptionsWindow1AbbreviateDropdown.MyObject:Select (_detalhes.ps_abbreviation)
_G.DetailsOptionsWindow1SliderUpdateSpeed.MyObject:SetValue (_detalhes.update_speed)
_G.DetailsOptionsWindow1AnimateSlider.MyObject:SetValue (_detalhes.use_row_animations)
--> window 2
_G.DetailsOptionsWindow2FragsPvpSlider.MyObject:SetValue (_detalhes.only_pvp_frags)
_G.DetailsOptionsWindow2TTDropdown.MyObject:Select (_detalhes.time_type)
--> window 13
_G.DetailsOptionsWindow13SelectProfileDropdown.MyObject:Select (_detalhes:GetCurrentProfileName())
_G.DetailsOptionsWindow13SelectProfileDropdown.MyObject:SetFixedParameter (instance)
--> window 10
_G.DetailsOptionsWindow10SliderMemory.MyObject:SetValue (_detalhes.memory_threshold)
_G.DetailsOptionsWindow10PanicModeSlider.MyObject:SetValue (_detalhes.segments_panic_mode)
_G.DetailsOptionsWindow10ClearAnimateScrollSlider.MyObject:SetValue (_detalhes.animate_scroll)
_G.DetailsOptionsWindow10SliderSegmentsSave.MyObject:SetValue (_detalhes.segments_amount_to_save)
--> window 11
_G.DetailsOptionsWindow11CaptureDamageSlider.MyObject:SetValue (_detalhes.capture_real ["damage"])
_G.DetailsOptionsWindow11CaptureHealSlider.MyObject:SetValue (_detalhes.capture_real ["heal"])
_G.DetailsOptionsWindow11CaptureEnergySlider.MyObject:SetValue (_detalhes.capture_real ["energy"])
_G.DetailsOptionsWindow11CaptureMiscSlider.MyObject:SetValue (_detalhes.capture_real ["miscdata"])
_G.DetailsOptionsWindow11CaptureAuraSlider.MyObject:SetValue (_detalhes.capture_real ["aura"])
_G.DetailsOptionsWindow11CloudAuraSlider.MyObject:SetValue (_detalhes.cloud_capture)
----------
_G.DetailsOptionsWindow8ResetTextColorPick.MyObject:SetColor (unpack (instance.resetbutton_info.text_color))
_G.DetailsOptionsWindow8ResetTextSizeSlider.MyObject:SetValue (instance.resetbutton_info.text_size)
_G.DetailsOptionsWindow8ResetTextFontDropdown.MyObject:Select (instance.resetbutton_info.text_face)
@@ -3176,6 +3437,10 @@ end
_G.DetailsOptionsWindow4IconFileEntry:SetText (instance.row_info.icon_file)
--profiles
_G.DetailsOptionsWindow13CurrentProfileLabel2.MyObject:SetText (_detalhes_database.active_profile)
window:Show()
local avatar = NickTag:GetNicknameAvatar (UnitGUID ("player"), NICKTAG_DEFAULT_AVATAR, true)
+90 -17
View File
@@ -1989,12 +1989,14 @@ function gump:CriaJanelaPrincipal (ID, instancia, criando)
--> details version
instancia._version = baseframe:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
instancia._version:SetPoint ("left", backgrounddisplay, "left", 20, 0)
--instancia._version:SetPoint ("left", backgrounddisplay, "left", 20, 0)
instancia._version:SetTextColor (1, 1, 1)
instancia._version:SetText ("this is a alpha version of Details\nyou can help us sending bug reports\nuse the blue button.")
if (not _detalhes.initializing) then
instancia._version:Hide()
end
instancia._version:Hide()
--> wallpaper
baseframe.wallpaper = backgrounddisplay:CreateTexture (nil, "overlay")
@@ -2822,7 +2824,6 @@ function _detalhes:StatusBarAlert (text, icon, color, time)
end
function _detalhes:SetCloseButtonSettings (overlaycolor)
if (overlaycolor == "reset") then
overlaycolor = {1, 1, 1, 1}
end
@@ -2849,7 +2850,7 @@ function _detalhes:SetInstanceButtonSettings (textfont, textsize, textcolor, ove
textcolor = {1, 0.81, 0, 1}
overlaycolor = {1, 1, 1, 1}
end
--> text color
if (textcolor) then
local r, g, b, a = gump:ParseColors (textcolor)
@@ -2891,7 +2892,7 @@ function _detalhes:SetInstanceButtonSettings (textfont, textsize, textcolor, ove
self.baseframe.cabecalho.novo.Right:SetVertexColor (r, g, b, a)
end
function _detalhes:SetDeleteButtonSettings (textfont, textsize, textcolor, overlaycolor, alwaysminimized)
function _detalhes:SetDeleteButtonSettings (textfont, textsize, textcolor, overlaycolor, alwaysminimized, smalltextcolor)
if (textfont == "reset") then
--print ("text color:", _G.DetailsResetButton1Text:GetTextColor())
@@ -2901,10 +2902,11 @@ function _detalhes:SetDeleteButtonSettings (textfont, textsize, textcolor, overl
textfont = "Friz Quadrata TT"
textsize = 12
textcolor = {1, 0.81, 0, 1}
smalltextcolor = {1, 0.81, 0, 1}
overlaycolor = {1, 1, 1, 1}
alwaysminimized = false
end
--> text color
if (textcolor) then
local r, g, b, a = gump:ParseColors (textcolor)
@@ -2914,9 +2916,21 @@ function _detalhes:SetDeleteButtonSettings (textfont, textsize, textcolor, overl
self.resetbutton_info.text_color [4] = a
end
if (smalltextcolor) then
local r, g, b, a = gump:ParseColors (smalltextcolor)
self.resetbutton_info.text_color_small [1] = r
self.resetbutton_info.text_color_small [2] = g
self.resetbutton_info.text_color_small [3] = b
self.resetbutton_info.text_color_small [4] = a
end
if (not self.resetbutton_info.text_color_small) then
self.resetbutton_info.text_color_small = {1, 0.81, 0, 1}
end
if (_detalhes.ResetButtonInstance == self.meu_id) then
_G.DetailsResetButton1Text:SetTextColor (unpack (self.resetbutton_info.text_color))
_G.DetailsResetButton2Text2:SetTextColor (unpack (self.resetbutton_info.text_color))
_G.DetailsResetButton2Text2:SetTextColor (unpack (self.resetbutton_info.text_color_small))
end
--> text font
@@ -3561,6 +3575,60 @@ local botao_fechar_on_leave = function (self)
OnLeaveMainWindow (self.instancia, self, 3)
end
function SetCloseButtonAnchors (self, this_skin)
if (self.toolbar_side == 1) then --top
self.baseframe.cabecalho.fechar:SetScript ("OnMouseDown", function()
self.baseframe.cabecalho.fechar:ClearAllPoints()
self.baseframe.cabecalho.fechar:SetPoint ("bottomright", self.baseframe, "topright", this_skin.close_button_anchor[1]+1, this_skin.close_button_anchor[2]-1)
end)
self.baseframe.cabecalho.fechar:SetScript ("OnMouseUp", function()
self.baseframe.cabecalho.fechar:ClearAllPoints()
self.baseframe.cabecalho.fechar:SetPoint ("bottomright", self.baseframe, "topright", this_skin.close_button_anchor[1], this_skin.close_button_anchor[2])
self.baseframe.cabecalho.fechar:Disable()
self:DesativarInstancia()
if (_detalhes.opened_windows == 0) then
print (Loc ["STRING_CLOSEALL"])
end
end)
elseif (self.toolbar_side == 2) then --bottom
self.baseframe.cabecalho.fechar:SetScript ("OnMouseDown", function()
local y = 0
if (self.show_statusbar) then
y = -14
end
local _x, _y = unpack (this_skin.close_button_anchor_bottom)
self.baseframe.cabecalho.fechar:ClearAllPoints()
self.baseframe.cabecalho.fechar:SetPoint ("topright", self.baseframe, "bottomright", _x + 1, _y + y - 1)
end)
self.baseframe.cabecalho.fechar:SetScript ("OnMouseUp", function()
local y = 0
if (self.show_statusbar) then
y = -14
end
local _x, _y = unpack (this_skin.close_button_anchor_bottom)
self.baseframe.cabecalho.fechar:ClearAllPoints()
self.baseframe.cabecalho.fechar:SetPoint ("topright", self.baseframe, "bottomright", _x, _y + y)
self.baseframe.cabecalho.fechar:Disable()
self:DesativarInstancia()
if (_detalhes.opened_windows == 0) then
print (Loc ["STRING_CLOSEALL"])
end
end)
end
end
-- ~skin
function _detalhes:ChangeSkin (skin_name)
@@ -3598,10 +3666,10 @@ function _detalhes:ChangeSkin (skin_name)
if (_detalhes.ResetButtonInstance == self.meu_id) then
self:SetDeleteButtonSettings ("reset")
end
DetailsResetButton2Text2:SetText ("-")
--> reset close button
self:SetCloseButtonSettings ("reset")
DetailsResetButton2Text2:SetText ("-")
--> overwrites
local overwrite_cprops = this_skin.instance_cprops
@@ -3686,8 +3754,10 @@ function _detalhes:ChangeSkin (skin_name)
_detalhes:DisableUIPanelButton (_detalhes.ResetButton2)
end
else
_detalhes:RestoreUIPanelButton (_detalhes.ResetButton)
_detalhes:RestoreUIPanelButton (_detalhes.ResetButton2)
if (_detalhes.ResetButtonInstance == self.meu_id) then
_detalhes:RestoreUIPanelButton (_detalhes.ResetButton)
_detalhes:RestoreUIPanelButton (_detalhes.ResetButton2)
end
end
----------> custom instance button
@@ -3731,12 +3801,7 @@ function _detalhes:ChangeSkin (skin_name)
self.baseframe.cabecalho.fechar:SetSize (18, 18)
end
self.baseframe.cabecalho.fechar:SetScript ("OnMouseDown", function()
self.baseframe.cabecalho.fechar:SetPoint ("bottomright", self.baseframe, "topright", this_skin.close_button_anchor[1]+1, this_skin.close_button_anchor[2]-1)
end)
self.baseframe.cabecalho.fechar:SetScript ("OnMouseUp", function()
self.baseframe.cabecalho.fechar:SetPoint ("bottomright", self.baseframe, "topright", this_skin.close_button_anchor[1], this_skin.close_button_anchor[2])
end)
SetCloseButtonAnchors (self, this_skin)
else
self.baseframe.cabecalho.fechar:SetDisabledTexture ([[Interface\Buttons\UI-Panel-MinimizeButton-Disabled]])
@@ -3868,6 +3933,7 @@ function _detalhes:ChangeSkin (skin_name)
--> refresh options panel if opened
if (_G.DetailsOptionsWindow and _G.DetailsOptionsWindow:IsShown()) then
--print (self.meu_id)
_detalhes:OpenOptionsWindow (self)
end
@@ -3911,6 +3977,9 @@ function _detalhes:ToolbarSide (side)
--> botão fechar
self.baseframe.cabecalho.fechar:ClearAllPoints()
self.baseframe.cabecalho.fechar:SetPoint ("bottomright", self.baseframe, "topright", unpack (skin.close_button_anchor))
if (skin.close_button_coords) then
SetCloseButtonAnchors (self, skin)
end
--> ball r
self.baseframe.cabecalho.ball_r:SetTexCoord (unpack (COORDS_RIGHT_BALL))
self.baseframe.cabecalho.ball_r:ClearAllPoints()
@@ -3948,6 +4017,9 @@ function _detalhes:ToolbarSide (side)
self.baseframe.cabecalho.fechar:ClearAllPoints()
local _x, _y = unpack (skin.close_button_anchor_bottom)
self.baseframe.cabecalho.fechar:SetPoint ("topright", self.baseframe, "bottomright", _x, _y + y)
if (skin.close_button_coords) then
SetCloseButtonAnchors (self, skin)
end
--> ball r
self.baseframe.cabecalho.ball_r:ClearAllPoints()
local _x, _y = unpack (skin.right_corner_anchor_bottom)
@@ -4893,7 +4965,8 @@ function gump:CriaCabecalho (baseframe, instancia)
--> Botão de Ajuda ----------------------------------------------------------------------------------------------------------------------------------------------------
if (instancia.meu_id == 1 and _detalhes.tutorial.logons < 3) then
--> disabled
if (instancia.meu_id == 1 and _detalhes.tutorial.logons < 0) then
--> help button
local helpButton = CreateFrame ("button", "DetailsMainWindowHelpButton", baseframe, "MainHelpPlateButton")
+94 -25
View File
@@ -202,28 +202,86 @@ local _UISpecialFrames = UISpecialFrames --> wow api locals
--> dropdown menus
local function cria_drop_down (este_gump)
local function cria_drop_down (este_gump)
local selecionar = _CreateFrame ("Button", "Details_Report_DropDown", este_gump, "UIDropDownMenuTemplate")
este_gump.select = selecionar
selecionar:SetPoint ("topleft", este_gump, "topleft", 93, -53)
--local selecionar = _CreateFrame ("Button", "Details_Report_DropDown", este_gump, "UIDropDownMenuTemplate")
--este_gump.select = selecionar
--selecionar:SetPoint ("topleft", este_gump, "topleft", 93, -53)
local function OnClick (self)
_UIDropDownMenu_SetSelectedID (selecionar, self:GetID())
_detalhes.report_where = self.value
--local function OnClick (self)
-- _UIDropDownMenu_SetSelectedID (selecionar, self:GetID())
-- _detalhes.report_where = self.value
--end
--[[
Emote: 255 251 255
Yell: 255 63 64
Guild Chat: 64 251 64
Officer Chat: 64 189 64
Achievement: 255 251 0
Whisper: 255 126 255
RealID: 0 251 246
Party: 170 167 255
Party Lead: 118 197 255
Raid: 255 125 0
Raid Warning: 255 71 0
Raid Lead: 255 71 9
BG Leader: 255 216 183
General/Trade: 255 189 192
--]]
local iconsize = {16, 16}
local lista = {
{Loc ["STRING_REPORTFRAME_PARTY"], "PARTY", function() return GetNumSubgroupMembers() > 0 end, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.53125, 0.7265625, 0.078125, 0.40625}, color = {0.66, 0.65, 1}}},
{Loc ["STRING_REPORTFRAME_RAID"], "RAID", _IsInRaid, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.53125, 0.7265625, 0.078125, 0.40625}, color = {1, 0.49, 0}}},
{Loc ["STRING_REPORTFRAME_GUILD"], "GUILD", _IsInGuild, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.8046875, 0.96875, 0.125, 0.390625}, color = {0.25, 0.98, 0.25}}},
{Loc ["STRING_REPORTFRAME_OFFICERS"], "OFFICER", _IsInGuild, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.8046875, 0.96875, 0.125, 0.390625}, color = {0.25, 0.74, 0.25}}},
{Loc ["STRING_REPORTFRAME_WHISPER"], "WHISPER", nil, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.0546875, 0.1953125, 0.625, 0.890625}, color = {1, 0.49, 1}}},
{Loc ["STRING_REPORTFRAME_WHISPERTARGET"], "WHISPER2", nil, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.0546875, 0.1953125, 0.625, 0.890625}, color = {1, 0.49, 1}}},
{Loc ["STRING_REPORTFRAME_SAY"], "SAY", nil, {iconsize = iconsize, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], coords = {0.0390625, 0.203125, 0.09375, 0.375}, color = {1, 1, 1}}},
{Loc ["STRING_REPORTFRAME_COPY"], "COPY", nil, {iconsize = iconsize, icon = [[Interface\Buttons\UI-GuildButton-PublicNote-Disabled]], coords = {0, 1, 0, 1}, color = {1, 1, 1}}},
}
local on_click = function (self, fixedParam, selectedOutput)
_detalhes.report_where = selectedOutput
end
local build_list = function()
local output_array = {}
for index, case in ipairs (lista) do
if (not case [3] or case [3]()) then
output_array [#output_array + 1] = {iconsize = case [4].iconsize, value = case [2], label = case [1], onclick = on_click, icon = case [4].icon, texcoord = case [4].coords, iconcolor = case [4].color}
end
end
local channels = {_GetChannelList()} --> coloca o resultado em uma tabela .. {id1, canal1, id2, canal2}
for i = 1, #channels, 2 do --> total de canais
output_array [#output_array + 1] = {iconsize = iconsize, value = "CHANNEL|"..channels [i+1], label = channels [i]..". "..channels [i+1], onclick = on_click, icon = [[Interface\FriendsFrame\UI-Toast-ToastIcons]], texcoord = {0.3046875, 0.4453125, 0.109375, 0.390625}, iconcolor = {149/255, 112/255, 112/255}}
--lista [#lista+1] = {channels [i]..". "..channels [i+1], "CHANNEL|"..channels [i+1]}
end
local bnet_friends = {}
local BnetFriends = BNGetNumFriends()
for i = 1, BnetFriends do
local presenceID, presenceName, battleTag, isBattleTagPresence, toonName, toonID, client, isOnline, lastOnline, isAFK, isDND, messageText, noteText, isRIDFriend, broadcastTime, canSoR = BNGetFriendInfo (i)
if (isOnline) then
output_array [#output_array + 1] = {iconsize = iconsize, value = "REALID|" .. presenceID, label = presenceName, onclick = on_click, icon = [[Interface\FriendsFrame\Battlenet-Battleneticon]], texcoord = {0.125, 0.875, 0.125, 0.875}, iconcolor = {1, 1, 1}}
end
end
return output_array
end
local select_output = gump:NewDropDown (este_gump, _, "$parentOutputDropdown", "select", 185, 20, build_list, 1)
select_output:SetPoint ("topleft", este_gump, "topleft", 107, -55)
este_gump.select = select_output.widget
local lista = {
{Loc ["STRING_REPORTFRAME_PARTY"], "PARTY", function() return GetNumSubgroupMembers() > 0 end},
{Loc ["STRING_REPORTFRAME_RAID"], "RAID", _IsInRaid},
{Loc ["STRING_REPORTFRAME_GUILD"], "GUILD", _IsInGuild},
{Loc ["STRING_REPORTFRAME_OFFICERS"], "OFFICER", _IsInGuild},
{Loc ["STRING_REPORTFRAME_WHISPER"], "WHISPER"},
{Loc ["STRING_REPORTFRAME_WHISPERTARGET"], "WHISPER2"},
{Loc ["STRING_REPORTFRAME_SAY"], "SAY"},
{Loc ["STRING_REPORTFRAME_COPY"], "COPY"},
}
local function initialize (self, level)
local info = _UIDropDownMenu_CreateInfo()
@@ -236,6 +294,16 @@ local _UISpecialFrames = UISpecialFrames --> wow api locals
for i = 1, #channels, 2 do --> total de canais
lista [#lista+1] = {channels [i]..". "..channels [i+1], "CHANNEL|"..channels [i+1]}
end
local BnetFriends = BNGetNumFriends()
for i = 1, BnetFriends do
local presenceID, presenceName, battleTag, isBattleTagPresence, toonName, toonID, client, isOnline, lastOnline, isAFK, isDND, messageText, noteText, isRIDFriend, broadcastTime, canSoR = BNGetFriendInfo (i)
if (isOnline) then
lista [#lista+1] = {presenceName, "REALID|" .. presenceID, nil, [[Interface\FriendsFrame\Battlenet-Battleneticon]]}
end
end
--BNSendWhisper
for index, v in _pairs (lista) do
@@ -243,18 +311,19 @@ local _UISpecialFrames = UISpecialFrames --> wow api locals
info = _UIDropDownMenu_CreateInfo()
info.text = v[1]
info.value = v[2]
if (v[4]) then
info.icon = v[4]
end
info.func = OnClick
_UIDropDownMenu_AddButton (info, level)
end
end
end
_UIDropDownMenu_Initialize (selecionar, initialize)
_UIDropDownMenu_SetWidth (selecionar, 165)
_UIDropDownMenu_SetButtonWidth (selecionar, 120)
_UIDropDownMenu_SetSelectedValue (selecionar, "WHISPER")
_detalhes.report_where = "WHISPER"
_UIDropDownMenu_JustifyText (selecionar, "LEFT")
end
--> slider
@@ -331,7 +400,7 @@ local _UISpecialFrames = UISpecialFrames --> wow api locals
este_gump.wisp_who:SetText (Loc ["STRING_REPORTFRAME_WHISPER"] .. ":")
este_gump.wisp_who:SetTextColor (1, 1, 1, 1)
este_gump.wisp_who:SetPoint ("topleft", este_gump.select, "topleft", 28, -30)
este_gump.wisp_who:SetPoint ("topleft", este_gump.select, "topleft", 14, -30)
_detalhes:SetFontSize (este_gump.wisp_who, 10)
@@ -342,7 +411,7 @@ local _UISpecialFrames = UISpecialFrames --> wow api locals
editbox:SetAutoFocus (false)
editbox:SetFontObject ("GameFontHighlightSmall")
editbox:SetPoint ("TOPLEFT", este_gump.select, "TOPLEFT", 78, -28)
editbox:SetPoint ("TOPLEFT", este_gump.select, "TOPLEFT", 64, -28)
editbox:SetHeight (14)
editbox:SetWidth (120)
+3 -1
View File
@@ -319,7 +319,7 @@ function _detalhes:OpenWelcomeWindow ()
if (_detalhes.time_type == 1) then --> chronometer
chronometer:SetChecked (true)
continuous:SetChecked (false)
elseif (_detalhes.time_type == 1) then --> continuous
elseif (_detalhes.time_type == 2) then --> continuous
chronometer:SetChecked (false)
continuous:SetChecked (true)
end
@@ -701,6 +701,8 @@ function _detalhes:OpenWelcomeWindow ()
skin_dropdown:SetPoint ("left", skin_label, "right", 2)
skin_label:SetPoint ("topleft", window, "topleft", 30, -140)
skin_dropdown:Select ("Default Skin")
--wallpapper
--> agora cria os 2 dropdown da categoria e wallpaper
+22 -1
View File
@@ -3,7 +3,7 @@ if not Loc then return end
--------------------------------------------------------------------------------------------------------------------------------------------
Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.11.10|r\n\n|cFFFFFF00-|r Accuracy with warcraftlogs.com now is very high and okey with worldoflogs.com. Make sure the option |cFFFFDD00Time Measure|r under General Settings -> Combat is set to |cFFFFDD00Effective Time|r.\n\n|cFFFFFF00-|r Options Window has been revamped, again.\n\n|cFFFFFF00-|r Added a option for change the class icons.\n\n|cFFFFFF00-|r Added options for show Total Bar and configure it.\n\n|cFFFFFF00-|r Added a option for save a Standard Skin, new windows opened use this skin.\n\n|cFFFFFF00-|r Added a new skin: ElvUI Frame Style.\n\n|cFFFFFF00-|r When hover a spell icon under Player Details Window, the spell description is shown.\n\n|cFFFFFF00-|r Pressing Shift key on a spell bar over the Encounter Details Window, shows up the spell description.\n\n|cFFFFFF00v1.11.6|r\n\n|cFFFFFF00-|r Added new skin: Minimalistic, a very clean one.\n\n|cFFFFFF00-|r Added a new tab called avoidance on Player Details window for tanks.\n\n|cFFFFFF00-|r Added Copy & Paste option on report window. Now you can share your dps on twitter and facebook!\n\n|cFFFFFF00-|r Added a new option for auto switch what a window shows when you enter in a combat.\n\n|cFFFFFF00-|r Fixed issue with window background alpha which was changing the value everytime the options window is opened.\n\n|cFFFFFF00-|r Fixed the gap between the bar and the window background when disabling borders.\n\n|cFFFFFF00-|r Make some improvements on Tiny Threat plugin.\n\n|cFFFFFF00v1.11.3|r\n\n|cFFFFFF00-|r Fixed more known issues with skins.\n\n|cFFFFFF00-|r Fixed an issue where plugin icons wasn't hiding after close all windows.\n\n|cFFFFFF00v1.11.2|r\n\n|cFFFFFF00-|r Fixed bugs where Details! stop working if no plugin is actived on Wow addon panel.\n\n|cFFFFFF00v1.11.0|r\n\n|cFFFFFF00-|r Added an option for abbreviate Dps and Hps.\n\n|cFFFFFF00-|r Fixed issue where the window icon fade away when reopening the window.\n\n|cFFFFFF00-|r Improvements in class recognition.\n\n|cFFFFFF00-|r Added follow spells as defensive cooldowns:\nHealing Tide Totem, Spirit Link Totem, Demoralizing Banner, Mass Spell Reflection and Shield Block.\n\n|cFFFFFF00-|r More improvements done in Encounter Details plugin.\n\n|cFFFFFF00-|r Improvements made in the downloadable plugins: Timeline and Advanced Death Logs.\n\n|cFFFFFF00v1.10.0|r\n\n|cFFFFFF00-|r Fixed a issue with overall data Dps when have only one segment.\n\n|cFFFFFF00-|r Changed colors and added some backgrounds for menus.\n\n|cFFFFFF00-|r Options panel has his height size increased.\n\n|cFFFFFF00-|r Added options for hide the window or change the transparency when in combat.\n\n|cFFFFFF00-|r Added a control panel for plugins, where you can enable or disable then.\n\n|cFFFFFF00v1.9.5|r\n\n|cFFFFFF00-|r More fixes on Skins support and new tools for plugins.|r\n\n|cFFFFFF00v1.9.4|r\n\n|cFFFFFF00-|r Minor bug fixes and improvements on Welcome Screen.\n\n|cFFFFFF00v1.9.3|r\n\n|cFFFFFF00-|r The bar now starts after the icon instead of left window border.\n\n|cFFFFFF00-|r Welcome window now is localizated to others languages\n\n|cFFFFFF00-|r Fixed issue with Damage Rank Plugin.\n\n|cFFFFFF00v1.9.1|r\n\n|cFFFFFF00-|r fixed issue with main window icon when no plugin installed. \n\n|cFFFFFF00-|r fixed issue with some options button text which where out of positioning."
Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.12.0|r\n\n|cFFFFFF00-|r Added support to Profiles, now you can share the same config between two or more characters.\n\n|cFFFFFF00-|r Added support for BattleTag friends over report window.\n\n|cFFFFFF00-|r Added pet threat to Tiny Threat plugin when out of a party or raid group.\n\n|cFFFFFF00-|r Fixed a issue with close button where it disappear without close the window when toolbar is in bottom side.\n\n|cFFFFFF00-|r Also fixed a issue where swapping toolbar positioning was sometimes making close button disappear.\n\n|cFFFFFF00-|r Fixed a problem opening options panel through minimap when there is no window opened.\n\n|cFFFFFF00v1.11.10|r\n\n|cFFFFFF00-|r Accuracy with warcraftlogs.com now is very high and okey with worldoflogs.com. Make sure the option |cFFFFDD00Time Measure|r under General Settings -> Combat is set to |cFFFFDD00Effective Time|r.\n\n|cFFFFFF00-|r Options Window has been revamped, again.\n\n|cFFFFFF00-|r Added a option for change the class icons.\n\n|cFFFFFF00-|r Added options for show Total Bar and configure it.\n\n|cFFFFFF00-|r Added a option for save a Standard Skin, new windows opened use this skin.\n\n|cFFFFFF00-|r Added a new skin: ElvUI Frame Style.\n\n|cFFFFFF00-|r When hover a spell icon under Player Details Window, the spell description is shown.\n\n|cFFFFFF00-|r Pressing Shift key on a spell bar over the Encounter Details Window, shows up the spell description.\n\n|cFFFFFF00v1.11.6|r\n\n|cFFFFFF00-|r Added new skin: Minimalistic, a very clean one.\n\n|cFFFFFF00-|r Added a new tab called avoidance on Player Details window for tanks.\n\n|cFFFFFF00-|r Added Copy & Paste option on report window. Now you can share your dps on twitter and facebook!\n\n|cFFFFFF00-|r Added a new option for auto switch what a window shows when you enter in a combat.\n\n|cFFFFFF00-|r Fixed issue with window background alpha which was changing the value everytime the options window is opened.\n\n|cFFFFFF00-|r Fixed the gap between the bar and the window background when disabling borders.\n\n|cFFFFFF00-|r Make some improvements on Tiny Threat plugin.\n\n|cFFFFFF00v1.11.3|r\n\n|cFFFFFF00-|r Fixed more known issues with skins.\n\n|cFFFFFF00-|r Fixed an issue where plugin icons wasn't hiding after close all windows.\n\n|cFFFFFF00v1.11.2|r\n\n|cFFFFFF00-|r Fixed bugs where Details! stop working if no plugin is actived on Wow addon panel.\n\n|cFFFFFF00v1.11.0|r\n\n|cFFFFFF00-|r Added an option for abbreviate Dps and Hps.\n\n|cFFFFFF00-|r Fixed issue where the window icon fade away when reopening the window.\n\n|cFFFFFF00-|r Improvements in class recognition.\n\n|cFFFFFF00-|r Added follow spells as defensive cooldowns:\nHealing Tide Totem, Spirit Link Totem, Demoralizing Banner, Mass Spell Reflection and Shield Block.\n\n|cFFFFFF00-|r More improvements done in Encounter Details plugin.\n\n|cFFFFFF00-|r Improvements made in the downloadable plugins: Timeline and Advanced Death Logs.\n\n|cFFFFFF00v1.10.0|r\n\n|cFFFFFF00-|r Fixed a issue with overall data Dps when have only one segment.\n\n|cFFFFFF00-|r Changed colors and added some backgrounds for menus.\n\n|cFFFFFF00-|r Options panel has his height size increased.\n\n|cFFFFFF00-|r Added options for hide the window or change the transparency when in combat.\n\n|cFFFFFF00-|r Added a control panel for plugins, where you can enable or disable then.\n\n|cFFFFFF00v1.9.5|r\n\n|cFFFFFF00-|r More fixes on Skins support and new tools for plugins.|r\n\n|cFFFFFF00v1.9.4|r\n\n|cFFFFFF00-|r Minor bug fixes and improvements on Welcome Screen."
Loc ["STRING_DETAILS1"] = "|cffffaeaeDetails:|r " --> color and details name
@@ -638,6 +638,27 @@ Loc ["STRING_OPTIONS_BARGROW_DIRECTION_DESC"] = "Change the bars grow method.."
Loc ["STRING_OPTIONS_BARSORT_DIRECTION"] = "Sort Direction"
Loc ["STRING_OPTIONS_BARSORT_DIRECTION_DESC"] = "Change the order which characters are shown within the bars."
Loc ["STRING_OPTIONS_PROFILES_TITLE"] = "Profiles"
Loc ["STRING_OPTIONS_PROFILES_TITLE_DESC"] = "This options allow you share the same settings between different characters."
Loc ["STRING_OPTIONS_PROFILES_CURRENT"] = "Current Profile:"
Loc ["STRING_OPTIONS_PROFILES_CURRENT_DESC"] = "This is the current actived profile name."
Loc ["STRING_OPTIONS_PROFILES_SELECT"] = "Select Profile"
Loc ["STRING_OPTIONS_PROFILES_SELECT_DESC"] = "Allows you change the current profile overwriting all your current settings.\n\nProfiles are useful if you desire shared settings between more then one character."
Loc ["STRING_OPTIONS_PROFILES_CREATE"] = "Create Profile"
Loc ["STRING_OPTIONS_PROFILES_CREATE_DESC"] = "Create a new empty profile."
Loc ["STRING_OPTIONS_PROFILES_COPY"] = "Copy Profile From"
Loc ["STRING_OPTIONS_PROFILES_COPY_DESC"] = "Copy all settings from the selected profile to current profile overwriting all values."
Loc ["STRING_OPTIONS_PROFILES_ERASE"] = "Remove Profile"
Loc ["STRING_OPTIONS_PROFILES_ERASE_DESC"] = "Remove the selected profile."
Loc ["STRING_OPTIONS_PROFILES_RESET"] = "Reset Current Profile"
Loc ["STRING_OPTIONS_PROFILES_RESET_DESC"] = "Reset all settings."
Loc ["STRING_OPTIONS_WP"] = "Wallpaper Settings"
Loc ["STRING_OPTIONS_WP_DESC"] = "This options control the wallpaper of instance."
+1 -1
View File
@@ -3,7 +3,7 @@ if not Loc then return end
--------------------------------------------------------------------------------------------------------------------------------------------
Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.11.10|r\n\n|cFFFFFF00-|r Accuracy with warcraftlogs.com now is very high and okey with worldoflogs.com. Make sure the option |cFFFFDD00Time Measure|r under General Settings -> Combat is set to |cFFFFDD00Effective Time|r.\n\n|cFFFFFF00-|r Options Window has been revamped, again.\n\n|cFFFFFF00-|r Added a option for change the class icons.\n\n|cFFFFFF00-|r Added options for show Total Bar and configure it.\n\n|cFFFFFF00-|r Added a option for save a Standard Skin, new windows opened use this skin.\n\n|cFFFFFF00-|r Added a new skin: ElvUI Frame Style.\n\n|cFFFFFF00-|r When hover a spell icon under Player Details Window, the spell description is shown.\n\n|cFFFFFF00-|r Pressing Shift key on a spell bar over the Encounter Details Window, shows up the spell description.\n\n|cFFFFFF00v1.11.6|r\n\n|cFFFFFF00-|r Adicionado nova skin: Minimalistic.\n\n|cFFFFFF00-|r Adicionado nova aba chamada avoidance no painel de detalhes do jogador apenas para tanques.\n\n|cFFFFFF00-|r Adicionado opcao de Copiar e Coloar na janela de criar relatorios. Agora voce pode dizer seu dps aos seus amigos no twitter e facebook!\n\n|cFFFFFF00-|r Adicionada nova opcao de troca o que uma janela esta mostrando quando voce entrar em combate.\n\n|cFFFFFF00-|r Corrigido problema com a transparencia da janela onde ela mudava sozinha sempre que a janela de opcoes eta aberta.\n\n|cFFFFFF00-|r Corrigido o vao em branco que ficava entre o inicio de uma barra e o fundo da janela quando as bordas eram desligadas.\n\n|cFFFFFF00-|r Feito algumas melhorias no plugin Tiny Threat.\n\n|cFFFFFF00v1.11.3|r\n\n|cFFFFFF00-|r Corrigido mais problemas conhecidos com as Skins.\n\n|cFFFFFF00-|r Corrigido problema onde os icones dos plugins nao eram escondidos apos fechar todas as janelas.\n\n|cFFFFFF00v1.11.2|r\n\n|cFFFFFF00-|r Corrigido problemas onde o Details! parava de funcionar se nenhum plugin estiver ligado no painel de addons do Wow.|cFFFFFF00v1.11.0|r\n\n|cFFFFFF00-|r Adicionado opcao para abreviar o Dps e o Hps.\n\n|cFFFFFF00-|r Corrigido um problema onde o icone da janela desaparecia ao reabri-la.\n\n|cFFFFFF00-|r Melhorias no reconhecimento das classes.\n\n|cFFFFFF00-|r As seguintes magias foram adicionadas como cooldowns: Healing Tide Totem, Spirit Link Totem, Demoralizing Banner, Mass Spell Reflection and Shield Block.\n\n|cFFFFFF00-|r Mais melhorias feitas no plugin Encounter Details.\n\n|cFFFFFF00-|r Melhorias feitas nos plugins disponiveis para download: Timeline e Advanced Death Logs.\n\n|cFFFFFF00v1.10.0|r\n\n|cFFFFFF00-|r Corrigido um problema no Dps no segmento total quando existia apenas 1 segmento.\n\n|cFFFFFF00-|r Cores e imagem de fundo dos menus foram alterados.\n\n|cFFFFFF00-|r A altura do painel de opcoes foi aumentada.\n\n|cFFFFFF00-|r Adicionada opcao para esconder ou alterar a transparencia da janela quando estiver em combate.\n\n|cFFFFFF00-|r Adicionado um painel de controle de plugins para ativar ou desativa-los.\n\n|cFFFFFF00v1.9.5|r\n\n|cFFFFFF00-|rMais correcoes para as Skins e suporte a novos plugins.|r\n\n|cFFFFFF00v1.9.4|r\n\n|cFFFFFF00-|r Pequenas correcoes e melhorias na tela de boas vindas.\n\n|cFFFFFF00v1.9.3|r\n\n|cFFFFFF00-|r A barra agora comeca apos o icone e nao mais na borda esquerda da janela.\n\n|cFFFFFF00-|r Janela de boas vindas agora esta traduzida para outros idiomas.\n\n|cFFFFFF00-|r Corrigido o problema que estava afetando o plugin de Rank de Dano.\n\n|cFFFFFF00v1.9.1|r\n\n|cFFFFFF00-|r corrigido problema do icone na janela principal quando nao havia nenhum plugin instalado. \n\n|cFFFFFF00-|r corrigido problema com alguns botoes no painel de opcoes onde o texto estava fora do lugar.\n\n|cFFFFFF00-|r corrigido a posicao dos sub menus quando proximos a borda direita do monitor.\n\n|cFFFFFF00-|r corrigida a posicao do botao de fechar do skin padrao.\n\n|cFFFFFF00-|r corrigido um erro nas skins ao selecionar um plugin de raide ou solo.|cFFFFFF00v1.9.0|r\n\n|cFFFFFF00-|r Corrigido o problema de nao movimentar o botao no minimapa.\n\n|cFFFFFF00-|r Suporte a skins foi reescrito e agora ficou mais flexivel.\n\n|cFFFFFF00-|r Adicionadas mais de 20 opcoes de customizacao no painel de opcoes.\n\n|cFFFFFF00v1.8.4|r\n\n|cFFFFFF00-|r Adicionado comando 'details reinstalar' no qual limpa a configuracao do Details! em caso de erros.\n\n|cFFFFFF00v1.8.3|r\n\n|cFFFFFF00-|r Adicionada nova skin: Simple Gray.\n\n|cFFFFFF00-|r Adicionado botoes para o Details! no minimapa e menu de addons no painel de intercace.\n\n|cFFFFFF00-|r Adicionados novas bolhas de tutoriais para aspectos basicos das janelas do Details!.\n\n|cFFFFFF00-|r Corrigido o Modo Panico aonde as vezes ele nao era disparado."
Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.12.0|r\n\n|cFFFFFF00-|r Added support to Profiles, now you can share the same config between two or more characters.\n\n|cFFFFFF00-|r Added support for BattleTag friends over report window.\n\n|cFFFFFF00-|r Added pet threat to Tiny Threat plugin when out of a party or raid group.\n\n|cFFFFFF00-|r Fixed a issue with close button where it disappear without close the window when toolbar is in bottom side.\n\n|cFFFFFF00-|r Also fixed a issue where swapping toolbar positioning was sometimes making close button disappear.\n\n|cFFFFFF00-|r Fixed a problem opening options panel through minimap when there is no window opened.\n\n|cFFFFFF00v1.11.10|r\n\n|cFFFFFF00-|r Accuracy with warcraftlogs.com now is very high and okey with worldoflogs.com. Make sure the option |cFFFFDD00Time Measure|r under General Settings -> Combat is set to |cFFFFDD00Effective Time|r.\n\n|cFFFFFF00-|r Options Window has been revamped, again.\n\n|cFFFFFF00-|r Added a option for change the class icons.\n\n|cFFFFFF00-|r Added options for show Total Bar and configure it.\n\n|cFFFFFF00-|r Added a option for save a Standard Skin, new windows opened use this skin.\n\n|cFFFFFF00-|r Added a new skin: ElvUI Frame Style.\n\n|cFFFFFF00-|r When hover a spell icon under Player Details Window, the spell description is shown.\n\n|cFFFFFF00-|r Pressing Shift key on a spell bar over the Encounter Details Window, shows up the spell description.\n\n|cFFFFFF00v1.11.6|r\n\n|cFFFFFF00-|r Adicionado nova skin: Minimalistic.\n\n|cFFFFFF00-|r Adicionado nova aba chamada avoidance no painel de detalhes do jogador apenas para tanques.\n\n|cFFFFFF00-|r Adicionado opcao de Copiar e Coloar na janela de criar relatorios. Agora voce pode dizer seu dps aos seus amigos no twitter e facebook!\n\n|cFFFFFF00-|r Adicionada nova opcao de troca o que uma janela esta mostrando quando voce entrar em combate.\n\n|cFFFFFF00-|r Corrigido problema com a transparencia da janela onde ela mudava sozinha sempre que a janela de opcoes eta aberta.\n\n|cFFFFFF00-|r Corrigido o vao em branco que ficava entre o inicio de uma barra e o fundo da janela quando as bordas eram desligadas.\n\n|cFFFFFF00-|r Feito algumas melhorias no plugin Tiny Threat.\n\n|cFFFFFF00v1.11.3|r\n\n|cFFFFFF00-|r Corrigido mais problemas conhecidos com as Skins.\n\n|cFFFFFF00-|r Corrigido problema onde os icones dos plugins nao eram escondidos apos fechar todas as janelas.\n\n|cFFFFFF00v1.11.2|r\n\n|cFFFFFF00-|r Corrigido problemas onde o Details! parava de funcionar se nenhum plugin estiver ligado no painel de addons do Wow.|cFFFFFF00v1.11.0|r\n\n|cFFFFFF00-|r Adicionado opcao para abreviar o Dps e o Hps.\n\n|cFFFFFF00-|r Corrigido um problema onde o icone da janela desaparecia ao reabri-la.\n\n|cFFFFFF00-|r Melhorias no reconhecimento das classes.\n\n|cFFFFFF00-|r As seguintes magias foram adicionadas como cooldowns: Healing Tide Totem, Spirit Link Totem, Demoralizing Banner, Mass Spell Reflection and Shield Block.\n\n|cFFFFFF00-|r Mais melhorias feitas no plugin Encounter Details.\n\n|cFFFFFF00-|r Melhorias feitas nos plugins disponiveis para download: Timeline e Advanced Death Logs.\n\n|cFFFFFF00v1.10.0|r\n\n|cFFFFFF00-|r Corrigido um problema no Dps no segmento total quando existia apenas 1 segmento.\n\n|cFFFFFF00-|r Cores e imagem de fundo dos menus foram alterados.\n\n|cFFFFFF00-|r A altura do painel de opcoes foi aumentada.\n\n|cFFFFFF00-|r Adicionada opcao para esconder ou alterar a transparencia da janela quando estiver em combate.\n\n|cFFFFFF00-|r Adicionado um painel de controle de plugins para ativar ou desativa-los.\n\n|cFFFFFF00v1.9.5|r\n\n|cFFFFFF00-|rMais correcoes para as Skins e suporte a novos plugins.|r\n\n|cFFFFFF00v1.9.4|r\n\n|cFFFFFF00-|r Pequenas correcoes e melhorias na tela de boas vindas.\n\n|cFFFFFF00v1.9.3|r\n\n|cFFFFFF00-|r A barra agora comeca apos o icone e nao mais na borda esquerda da janela.\n\n|cFFFFFF00-|r Janela de boas vindas agora esta traduzida para outros idiomas.\n\n|cFFFFFF00-|r Corrigido o problema que estava afetando o plugin de Rank de Dano.\n\n|cFFFFFF00v1.9.1|r\n\n|cFFFFFF00-|r corrigido problema do icone na janela principal quando nao havia nenhum plugin instalado. \n\n|cFFFFFF00-|r corrigido problema com alguns botoes no painel de opcoes onde o texto estava fora do lugar.\n\n|cFFFFFF00-|r corrigido a posicao dos sub menus quando proximos a borda direita do monitor.\n\n|cFFFFFF00-|r corrigida a posicao do botao de fechar do skin padrao.\n\n|cFFFFFF00-|r corrigido um erro nas skins ao selecionar um plugin de raide ou solo.|cFFFFFF00v1.9.0|r\n\n|cFFFFFF00-|r Corrigido o problema de nao movimentar o botao no minimapa.\n\n|cFFFFFF00-|r Suporte a skins foi reescrito e agora ficou mais flexivel.\n\n|cFFFFFF00-|r Adicionadas mais de 20 opcoes de customizacao no painel de opcoes."
Loc ["STRING_DETAILS1"] = "|cffffaeaeDetalhes:|r " --> color and details name
@@ -385,7 +385,7 @@ local siege_of_orgrimmar = {
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Norushen]],
--combat_end = {1, 72276},
encounter_start = {delay = 25},
encounter_start = {delay = 0},
equalize = true,
spell_mechanics = {
@@ -288,6 +288,8 @@ local function CreatePluginFrames (data)
end
else
--> player
local thisplayer_name = GetUnitName ("player", true)
local threat_table_index = ThreatMeter.player_list_hash [thisplayer_name]
local threat_table = ThreatMeter.player_list_indexes [threat_table_index]
@@ -300,6 +302,24 @@ local function CreatePluginFrames (data)
threat_table [2] = 0
threat_table [3] = false
end
--> pet
if (UnitExists ("pet")) then
local thisplayer_name = GetUnitName ("pet", true) .. " *PET*"
local threat_table_index = ThreatMeter.player_list_hash [thisplayer_name]
local threat_table = ThreatMeter.player_list_indexes [threat_table_index]
if (threat_table) then
local isTanking, status, threatpct, rawthreatpct, threatvalue = _UnitDetailedThreatSituation ("pet", "target")
if (status) then
threat_table [2] = threatpct
threat_table [3] = isTanking
else
threat_table [2] = 0
threat_table [3] = false
end
end
end
end
--> sort
@@ -314,10 +334,6 @@ local function CreatePluginFrames (data)
return
end
--and ThreatMeter.player_list_indexes [1] [2] > 0
-- ThreatMeter.player_list_indexes = {}
-- ThreatMeter.player_list_hash = {}
local lastIndex = 0
local shownMe = false
@@ -447,9 +463,16 @@ local function CreatePluginFrames (data)
ThreatMeter.player_list_indexes [#ThreatMeter.player_list_indexes+1] = t
ThreatMeter.player_list_hash [thisplayer_name] = #ThreatMeter.player_list_indexes
if (UnitExists ("pet")) then
local thispet_name = GetUnitName ("pet", true) .. " *PET*"
local role = "DAMAGER"
local t = {thispet_name, 0, false, role, class}
ThreatMeter.player_list_indexes [#ThreatMeter.player_list_indexes+1] = t
ThreatMeter.player_list_hash [thispet_name] = #ThreatMeter.player_list_indexes
end
end
local job_thread = ThreatMeter:ScheduleRepeatingTimer ("Tick", 1)
local job_thread = ThreatMeter:ScheduleRepeatingTimer ("Tick", ThreatMeter.options.updatespeed)
ThreatMeter.job_thread = job_thread
end
end
@@ -500,7 +523,7 @@ function ThreatMeter:OnEvent (_, event, ...)
local MINIMAL_DETAILS_VERSION_REQUIRED = 1
--> Install
local install = _G._detalhes:InstallPlugin ("TANK", Loc ["STRING_PLUGIN_NAME"], "Interface\\Icons\\Ability_Paladin_ShieldofVengeance", ThreatMeter, "DETAILS_PLUGIN_TINY_THREAT", MINIMAL_DETAILS_VERSION_REQUIRED, "Details! Team", "v1.02")
local install, saveddata = _G._detalhes:InstallPlugin ("TANK", Loc ["STRING_PLUGIN_NAME"], "Interface\\Icons\\Ability_Paladin_ShieldofVengeance", ThreatMeter, "DETAILS_PLUGIN_TINY_THREAT", MINIMAL_DETAILS_VERSION_REQUIRED, "Details! Team", "v1.04")
if (type (install) == "table" and install.error) then
print (install.error)
end
@@ -516,12 +539,57 @@ function ThreatMeter:OnEvent (_, event, ...)
ThreatMeterFrame:RegisterEvent ("PLAYER_TARGET_CHANGED")
ThreatMeterFrame:RegisterEvent ("PLAYER_REGEN_DISABLED")
ThreatMeterFrame:RegisterEvent ("PLAYER_REGEN_ENABLED")
--> Saved data
ThreatMeter.saveddata = saveddata or {}
ThreatMeter.saveddata.updatespeed = ThreatMeter.saveddata.updatespeed or 1
ThreatMeter.saveddata.animate = ThreatMeter.saveddata.animate or false
ThreatMeter.saveddata.showamount = ThreatMeter.saveddata.showamount or false
ThreatMeter.options = ThreatMeter.saveddata
--> Register slash commands
SLASH_DETAILS_TINYTHREAT1, SLASH_DETAILS_TINYTHREAT2 = "/tinythreat", "/tt"
function SlashCmdList.DETAILS_TINYTHREAT (msg, editbox)
local command, rest = msg:match("^(%S*)%s*(.-)$")
if (command == Loc ["STRING_SLASH_ANIMATE"]) then
elseif (command == Loc ["STRING_SLASH_SPEED"]) then
if (rest) then
local speed = tonumber (rest)
if (speed) then
if (speed > 3) then
speed = 3
elseif (speed < 0.3) then
speed = 0.3
end
ThreatMeter.saveddata.updatespeed = speed
ThreatMeter:Msg (Loc ["STRING_SLASH_SPEED_CHANGED"] .. speed)
else
ThreatMeter:Msg (Loc ["STRING_SLASH_SPEED_CURRENT"] .. ThreatMeter.saveddata.updatespeed)
end
end
elseif (command == Loc ["STRING_SLASH_AMOUNT"]) then
else
ThreatMeter:Msg (Loc ["STRING_COMMAND_LIST"])
print ("|cffffaeae/tinythreat " .. Loc ["STRING_SLASH_SPEED"] .. "|r: " .. Loc ["STRING_SLASH_SPEED_DESC"])
end
end
end
end
elseif (event == "PLAYER_LOGOUT") then
_detalhes_databaseThreat = ThreatMeter.data
end
end
@@ -1,7 +1,6 @@
## Interface: 50400
## Title: Details Tiny Threat (plugin)
## Notes: Plugin for Details
## SavedVariablesPerCharacter: _detalhes_databaseThreat
## RequiredDeps: Details
## OptionalDeps: Ace3
+10 -1
View File
@@ -4,4 +4,13 @@ if (not Loc) then
return
end
Loc ["STRING_PLUGIN_NAME"] = "Tiny Threat"
Loc ["STRING_PLUGIN_NAME"] = "Tiny Threat"
Loc ["STRING_SLASH_ANIMATE"] = "animate"
Loc ["STRING_SLASH_SPEED"] = "speed"
Loc ["STRING_SLASH_AMOUNT"] = "amount"
Loc ["STRING_COMMAND_LIST"] = "Available Commands:"
Loc ["STRING_SLASH_SPEED_DESC"] = "Changes the frequency (in seconds) which the window is updated, allow values between 0.1 and 3.0"
Loc ["STRING_SLASH_SPEED_CHANGED"] = "Update Speed changed to "
Loc ["STRING_SLASH_SPEED_CURRENT"] = "Update Speed current value is "
+62 -55
View File
@@ -11,56 +11,9 @@ function _G._detalhes:Start()
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> details defaults
_detalhes.debug = false
local _
--> who is
self.playername = UnitName ("player")
self.playerserial = UnitGUID ("player")
--> player faction and enemy faction
self.faction = UnitFactionGroup ("player")
if (self.faction == PLAYER_FACTION_GROUP[0]) then --> player is horde
self.faction_against = PLAYER_FACTION_GROUP[1] --> ally
elseif (self.faction == PLAYER_FACTION_GROUP[1]) then --> player is alliance
self.faction_against = PLAYER_FACTION_GROUP[0] --> horde
end
self.zone_type = nil
_detalhes.temp_table1 = {}
--> combat
self.encounter = {}
self.in_combat = false
self.combat_id = self.combat_id or 0
--> instances (windows)
self.solo = self.solo or nil
self.raid = self.raid or nil
self.opened_windows = 0
self.default_texture = [[Interface\AddOns\Details\images\bar4]]
self.default_texture_name = "Details D'ictum"
self.tooltip_max_targets = 3
self.tooltip_max_abilities = 3
self.tooltip_max_pets = 1
self.class_coords_version = 1
self.class_colors_version = 1
self.school_colors = {
[1] = {1.00, 1.00, 0.00},
[2] = {1.00, 0.90, 0.50},
[4] = {1.00, 0.50, 0.00},
[8] = {0.30, 1.00, 0.30},
[16] = {0.50, 1.00, 1.00},
[32] = {0.50, 0.50, 1.00},
[64] = {1.00, 0.50, 1.00},
["unknown"] = {0.5, 0.75, 0.75, 1}
}
--> parse all config
_detalhes:ApplyConfigDataOnLoad()
--_detalhes:CountDataOnLoad()
--> single click row function replace
--damage, dps, damage taken, friendly fire
@@ -76,8 +29,7 @@ function _G._detalhes:Start()
--> initialize
--> build frames
--> cooltip
self.popup = DetailsCreateCoolTip()
--> fast switch
if (self.switch.InitSwitch) then
self.switch:InitSwitch()
@@ -123,7 +75,7 @@ function _G._detalhes:Start()
if (self:QuantasInstancias() == 0) then
self:CriarInstancia()
else
self:ReativarInstancias()
--self:ReativarInstancias()
end
self:GetLowerInstanceNumber()
self:CheckConsolidates()
@@ -242,15 +194,17 @@ function _G._detalhes:Start()
function self:AnnounceVersion()
for index, instancia in ipairs (self.tabela_instancias) do
if (instancia.ativa) then
self.gump:Fade (instancia._version, "in", 5)
self.gump:Fade (instancia._version, "in", 0.1)
end
end
end
--[[
if (self.tutorial.version_announce < 4) then
self:ScheduleTimer ("AnnounceVersion", 20)
self.tutorial.version_announce = self.tutorial.version_announce + 1
else
for index, instancia in ipairs (self.tabela_instancias) do
if (instancia.ativa) then
self.gump:Fade (instancia._version, 0)
@@ -264,6 +218,7 @@ function _G._detalhes:Start()
end
end
end
--]]
if (self.is_first_run) then
@@ -296,13 +251,16 @@ function _G._detalhes:Start()
--_detalhes:OpenWelcomeWindow()
--desligado por preocaução
if (self.tutorial.logons < 2) then
self:StartTutorial()
--self:StartTutorial()
end
--> feedback trhead
if (self.tutorial.logons > 100) then -- and self.tutorial.logons < 104
if (self.tutorial.logons > 100 and false) then -- and self.tutorial.logons < 104
--desligado por preocaução
if (not self.tutorial.feedback_window1) then
self.tutorial.feedback_window1 = true
@@ -407,6 +365,7 @@ function _G._detalhes:Start()
local LDBIcon = LDB and LibStub ("LibDBIcon-1.0", true)
if LDB then
local minimapIcon = LDB:NewDataObject ("Details!", {
type = "data source",
icon = [[Interface\AddOns\Details\images\minimap]],
@@ -414,8 +373,15 @@ function _G._detalhes:Start()
OnClick = function (self, button)
if (button == "LeftButton") then
local lower_instance = _detalhes:GetLowerInstanceNumber()
_detalhes:OpenOptionsWindow (_detalhes:GetInstance (lower_instance))
if (not lower_instance) then
local instance = _detalhes:GetInstance (1)
_detalhes.CriarInstancia (_, _, 1)
_detalhes:OpenOptionsWindow (instance)
else
_detalhes:OpenOptionsWindow (_detalhes:GetInstance (lower_instance))
end
elseif (button == "RightButton") then
@@ -484,6 +450,7 @@ function _G._detalhes:Start()
if (minimapIcon and not LDBIcon:IsRegistered ("Details!")) then
LDBIcon:Register ("Details!", minimapIcon, self.minimap)
end
end
@@ -670,6 +637,46 @@ function _G._detalhes:Start()
f:Hide()
local lower = _detalhes:GetLowerInstanceNumber()
if (lower) then
local instance = _detalhes:GetInstance (lower)
if (instance) then
--in development
local dev_icon = instance.bgdisplay:CreateTexture (nil, "overlay")
dev_icon:SetWidth (40)
dev_icon:SetHeight (40)
dev_icon:SetPoint ("bottomleft", instance.baseframe, "bottomleft", 4, 8)
dev_icon:SetTexture ([[Interface\DialogFrame\UI-Dialog-Icon-AlertOther]])
dev_icon:SetAlpha (.3)
local dev_text = instance.bgdisplay:CreateFontString (nil, "overlay", "GameFontHighlightSmall")
dev_text:SetHeight (64)
dev_text:SetPoint ("left", dev_icon, "right", 5, 0)
dev_text:SetTextColor (1, 1, 1)
dev_text:SetText ("Details is Under\nDevelopment")
dev_text:SetAlpha (.3)
--version
self.gump:Fade (instance._version, 0)
instance._version:SetText ("Details! Alpha " .. _detalhes.userversion .. " (core: " .. self.realversion .. ")")
instance._version:SetPoint ("bottomleft", instance.baseframe, "bottomleft", 5, 1)
if (instance.auto_switch_to_old) then
instance:SwitchBack()
end
function _detalhes:FadeStartVersion()
_detalhes.gump:Fade (dev_icon, "in", 2)
_detalhes.gump:Fade (dev_text, "in", 2)
self.gump:Fade (instance._version, "in", 2)
end
_detalhes:ScheduleTimer ("FadeStartVersion", 7)
end
end
end