local Details = _G.Details
local DF = _G.DetailsFramework
function Details : InitializePlaterIntegrationWindow ( )
local DetailsPlaterIntegrationPanel = DF : CreateSimplePanel ( UIParent , 700 , 480 , " Details! Plater Nameplates Integration " , " DetailsPlaterIntegrationPanel " )
DetailsPlaterIntegrationPanel.Frame = DetailsPlaterIntegrationPanel
DetailsPlaterIntegrationPanel.__name = " Plater Nameplates "
DetailsPlaterIntegrationPanel.real_name = " DETAILS_PLATERWINDOW "
DetailsPlaterIntegrationPanel.__icon = [[Interface\AddOns\Details\images\plater_icon]]
DetailsPlaterIntegrationPanel.__iconcoords = { 0 , 1 , 0 , 1 }
DetailsPlaterIntegrationPanel.__iconcolor = " white "
DetailsPluginContainerWindow.EmbedPlugin ( DetailsPlaterIntegrationPanel , DetailsPlaterIntegrationPanel , true )
function DetailsPlaterIntegrationPanel . RefreshWindow ( )
Details.OpenPlaterIntegrationWindow ( )
end
DetailsPlaterIntegrationPanel : Hide ( )
end
function Details . OpenPlaterIntegrationWindow ( )
if ( not DetailsPlaterIntegrationPanel or not DetailsPlaterIntegrationPanel.Initialized ) then
DetailsPlaterIntegrationPanel.Initialized = true
local f = DetailsPlaterIntegrationPanel or DF : CreateSimplePanel ( UIParent , 700 , 480 , " Details! Plater Nameplates Integration " , " DetailsPlaterIntegrationPanel " )
--background
f.bg1 = f : CreateTexture ( nil , " background " )
f.bg1 : SetTexture ( [[Interface\AddOns\Details\images\background]] , true )
f.bg1 : SetAlpha ( 0.8 )
f.bg1 : SetVertexColor ( 0.27 , 0.27 , 0.27 )
f.bg1 : SetVertTile ( true )
f.bg1 : SetHorizTile ( true )
f.bg1 : SetSize ( 790 , 454 )
f.bg1 : SetAllPoints ( )
f : SetBackdrop ( { edgeFile = [[Interface\Buttons\WHITE8X8]] , edgeSize = 1 , bgFile = [[Interface\AddOns\Details\images\background]] , tileSize = 64 , tile = true } )
f : SetBackdropColor ( .5 , .5 , .5 , .7 )
f : SetBackdropBorderColor ( 0 , 0 , 0 , 1 )
--anchor text function
local anchor_names = { " Top Left " , " Left " , " Bottom Left " , " Bottom " , " Bottom Right " , " Right " , " Top Right " , " Top " , " Center " , " Inner Left " , " Inner Right " , " Inner Top " , " Inner Bottom " }
local build_anchor_side_table = function ( member )
local t = { }
for i = 1 , 13 do
table.insert ( t , {
label = anchor_names [ i ] ,
value = i ,
onclick = function ( _ , _ , value )
Details.plater [ member ] . side = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end
} )
end
return t
end
local menu_table = {
{ type = " label " , get = function ( ) return " Add Real Time DPS Info in the Nameplate: " end , text_template = DF : GetTemplate ( " font " , " ORANGE_FONT_TEMPLATE " ) } ,
--real time dps from all sources
{
type = " toggle " ,
get = function ( ) return Details.plater . realtime_dps_enabled end ,
set = function ( self , fixedparam , value )
Details.plater . realtime_dps_enabled = value
Details : RefreshPlaterIntegration ( )
if ( not value ) then
Details : Msg ( " a /reload might be needed to disable this setting. " )
else
if ( Plater ) then
Plater.RefreshDBUpvalues ( )
end
end
end ,
name = " Show Real Time Dps " ,
desc = " Show Real Time DPS on the nameplate. \n \n Real time DPS is how much damage has been inflicted to the unit in the last 5 seconds. " ,
} ,
--text size
{
type = " range " ,
get = function ( ) return Details.plater . realtime_dps_size end ,
set = function ( self , fixedparam , value )
Details.plater . realtime_dps_size = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
min = 6 ,
max = 32 ,
step = 1 ,
name = " Text Size " ,
desc = " Text Size " ,
} ,
--text color
{
type = " color " ,
get = function ( )
local color = Details.plater . realtime_dps_color
return { color [ 1 ] , color [ 2 ] , color [ 3 ] , color [ 4 ] }
end ,
set = function ( self , r , g , b , a )
local color = Details.plater . realtime_dps_color
color [ 1 ] , color [ 2 ] , color [ 3 ] , color [ 4 ] = r , g , b , a
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
desc = " Text Color " ,
name = " Text Color " ,
text_template = options_text_template ,
} ,
--text shadow
{
type = " toggle " ,
get = function ( ) return Details.plater . realtime_dps_shadow end ,
set = function ( self , fixedparam , value )
Details.plater . realtime_dps_shadow = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
name = " Text Shadow " ,
desc = " Text Shadow " ,
} ,
--text anchor
--anchor location
{
type = " select " ,
get = function ( ) return Details.plater . realtime_dps_anchor.side end ,
values = function ( ) return build_anchor_side_table ( " realtime_dps_anchor " ) end ,
name = " Anchor Point " ,
desc = " Which side of the nameplate the text is attach to. " ,
} ,
--anchor x offset
{
type = " range " ,
get = function ( ) return Details.plater . realtime_dps_anchor.x end ,
set = function ( self , fixedparam , value )
Details.plater . realtime_dps_anchor.x = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
min = - 20 ,
max = 20 ,
step = 1 ,
name = " Anchor X Offset " ,
desc = " Slightly move the text horizontally. " ,
} ,
--anchor x offset
{
type = " range " ,
get = function ( ) return Details.plater . realtime_dps_anchor.y end ,
set = function ( self , fixedparam , value )
Details.plater . realtime_dps_anchor.y = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
min = - 20 ,
max = 20 ,
step = 1 ,
name = " Anchor Y Offset " ,
desc = " Slightly move the text vertically. " ,
} ,
{ type = " breakline " } ,
{ type = " label " , get = function ( ) return " Add Real Time DPS Info Only From You in the Nameplate: " end , text_template = DF : GetTemplate ( " font " , " ORANGE_FONT_TEMPLATE " ) } ,
--real time dps from the player only
{
type = " toggle " ,
get = function ( ) return Details.plater . realtime_dps_player_enabled end ,
set = function ( self , fixedparam , value )
Details.plater . realtime_dps_player_enabled = value
Details : RefreshPlaterIntegration ( )
if ( not value ) then
Details : Msg ( " a /reload might be needed to disable this setting. " )
else
if ( Plater ) then
Plater.RefreshDBUpvalues ( )
end
end
end ,
name = " Show Real Time Dps (From You) " ,
desc = " Show Real Time DPS you are currently applying in the unit. \n \n Real time DPS is how much damage has been inflicted to the unit in the last 5 seconds. " ,
} ,
--text size
{
type = " range " ,
get = function ( ) return Details.plater . realtime_dps_player_size end ,
set = function ( self , fixedparam , value )
Details.plater . realtime_dps_player_size = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
min = 6 ,
max = 32 ,
step = 1 ,
name = " Text Size " ,
desc = " Text Size " ,
} ,
--text color
{
type = " color " ,
get = function ( )
local color = Details.plater . realtime_dps_player_color
return { color [ 1 ] , color [ 2 ] , color [ 3 ] , color [ 4 ] }
end ,
set = function ( self , r , g , b , a )
local color = Details.plater . realtime_dps_player_color
color [ 1 ] , color [ 2 ] , color [ 3 ] , color [ 4 ] = r , g , b , a
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
desc = " Text Color " ,
name = " Text Color " ,
text_template = options_text_template ,
} ,
--text shadow
{
type = " toggle " ,
get = function ( ) return Details.plater . realtime_dps_player_shadow end ,
set = function ( self , fixedparam , value )
Details.plater . realtime_dps_player_shadow = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
name = " Text Shadow " ,
desc = " Text Shadow " ,
} ,
--text anchor
--anchor location
{
type = " select " ,
get = function ( ) return Details.plater . realtime_dps_player_anchor.side end ,
values = function ( ) return build_anchor_side_table ( " realtime_dps_player_anchor " ) end ,
name = " Anchor Point " ,
desc = " Which side of the nameplate the text is attach to. " ,
} ,
--anchor x offset
{
type = " range " ,
get = function ( ) return Details.plater . realtime_dps_player_anchor.x end ,
set = function ( self , fixedparam , value )
Details.plater . realtime_dps_player_anchor.x = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
min = - 20 ,
max = 20 ,
step = 1 ,
name = " Anchor X Offset " ,
desc = " Slightly move the text horizontally. " ,
} ,
--anchor x offset
{
type = " range " ,
get = function ( ) return Details.plater . realtime_dps_player_anchor.y end ,
set = function ( self , fixedparam , value )
Details.plater . realtime_dps_player_anchor.y = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
min = - 20 ,
max = 20 ,
step = 1 ,
name = " Anchor Y Offset " ,
desc = " Slightly move the text vertically. " ,
} ,
{ type = " breakline " } ,
{ type = " label " , get = function ( ) return " Add Total Damage Taken in the Nameplate: " end , text_template = DF : GetTemplate ( " font " , " ORANGE_FONT_TEMPLATE " ) } ,
--total damage taken from all sources
{
type = " toggle " ,
get = function ( ) return Details.plater . damage_taken_enabled end ,
set = function ( self , fixedparam , value )
Details.plater . damage_taken_enabled = value
Details : RefreshPlaterIntegration ( )
if ( not value ) then
Details : Msg ( " a /reload might be needed to disable this setting. " )
else
if ( Plater ) then
Plater.RefreshDBUpvalues ( )
end
end
end ,
name = " Show Total Damage Taken " ,
desc = " Show the total damage taken by the unit " ,
} ,
--text size
{
type = " range " ,
get = function ( ) return Details.plater . damage_taken_size end ,
set = function ( self , fixedparam , value )
Details.plater . damage_taken_size = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
min = 6 ,
max = 32 ,
step = 1 ,
name = " Text Size " ,
desc = " Text Size " ,
} ,
--text color
{
type = " color " ,
get = function ( )
local color = Details.plater . damage_taken_color
return { color [ 1 ] , color [ 2 ] , color [ 3 ] , color [ 4 ] }
end ,
set = function ( self , r , g , b , a )
local color = Details.plater . damage_taken_color
color [ 1 ] , color [ 2 ] , color [ 3 ] , color [ 4 ] = r , g , b , a
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
desc = " Text Color " ,
name = " Text Color " ,
text_template = options_text_template ,
} ,
--text shadow
{
type = " toggle " ,
get = function ( ) return Details.plater . damage_taken_shadow end ,
set = function ( self , fixedparam , value )
Details.plater . damage_taken_shadow = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
name = " Text Shadow " ,
desc = " Text Shadow " ,
} ,
--text anchor
--anchor location
{
type = " select " ,
get = function ( ) return Details.plater . damage_taken_anchor.side end ,
values = function ( ) return build_anchor_side_table ( " damage_taken_anchor " ) end ,
name = " Anchor Point " ,
desc = " Which side of the nameplate the text is attach to. " ,
} ,
--anchor x offset
{
type = " range " ,
get = function ( ) return Details.plater . damage_taken_anchor.x end ,
set = function ( self , fixedparam , value )
Details.plater . damage_taken_anchor.x = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
min = - 20 ,
max = 20 ,
step = 1 ,
name = " Anchor X Offset " ,
desc = " Slightly move the text horizontally. " ,
} ,
--anchor x offset
{
type = " range " ,
get = function ( ) return Details.plater . damage_taken_anchor.y end ,
set = function ( self , fixedparam , value )
Details.plater . damage_taken_anchor.y = value
if ( Plater ) then
Plater.UpdateAllPlates ( )
end
end ,
min = - 20 ,
max = 20 ,
step = 1 ,
name = " Anchor Y Offset " ,
desc = " Slightly move the text vertically. " ,
} ,
}
local options_text_template = DF : GetTemplate ( " font " , " OPTIONS_FONT_TEMPLATE " )
local options_dropdown_template = DF : GetTemplate ( " dropdown " , " OPTIONS_DROPDOWN_TEMPLATE " )
local options_switch_template = DF : GetTemplate ( " switch " , " OPTIONS_CHECKBOX_TEMPLATE " )
local options_slider_template = DF : GetTemplate ( " slider " , " OPTIONS_SLIDER_TEMPLATE " )
local options_button_template = DF : GetTemplate ( " button " , " OPTIONS_BUTTON_TEMPLATE " )
local titleBackground = CreateFrame ( " frame " , nil , f , " BackdropTemplate " )
titleBackground : SetPoint ( " topleft " , f , " topleft " , 10 , - 30 )
titleBackground : SetPoint ( " topright " , f , " topright " , - 10 , - 30 )
titleBackground : SetHeight ( 80 )
--background
titleBackground.bg1 = titleBackground : CreateTexture ( nil , " background " )
titleBackground.bg1 : SetTexture ( [[Interface\AddOns\Details\images\background]] )
titleBackground.bg1 : SetAlpha ( 0.8 )
titleBackground.bg1 : SetVertexColor ( 0.27 , 0.27 , 0.27 )
titleBackground.bg1 : SetVertTile ( true )
titleBackground.bg1 : SetHorizTile ( true )
titleBackground.bg1 : SetSize ( 790 , 454 )
titleBackground.bg1 : SetAllPoints ( )
titleBackground : SetBackdrop ( { edgeFile = [[Interface\Buttons\WHITE8X8]] , edgeSize = 1 , bgFile = [[Interface\AddOns\Details\images\background]] , tileSize = 64 , tile = true } )
titleBackground : SetBackdropColor ( .5 , .5 , .5 , .7 )
titleBackground : SetBackdropBorderColor ( 0 , 0 , 0 , 1 )
local platerTitle = DF : CreateLabel ( titleBackground , " Plater Nameplates Integration " , 16 , " white " )
local platerDesc1 = DF : CreateLabel ( titleBackground , " Add DPS and Damage information directly into the nameplate " , 11 , " silver " )
local platerDesc2 = DF : CreateLabel ( titleBackground , " See how much damage the enemy is taking in real time! " , 11 , " silver " )
local platerImage = DF : CreateImage ( titleBackground , " Interface \\ AddOns \\ Details \\ images \\ plater_image " )
platerImage : SetSize ( 256 , 64 )
platerImage : SetPoint ( " topright " , f , " topright " , - 150 , - 35 )
platerTitle : SetPoint ( 10 , - 15 )
platerDesc1 : SetPoint ( 10 , - 35 )
platerDesc2 : SetPoint ( 10 , - 47 )
DF : BuildMenu ( f , menu_table , 10 , - 140 , 460 , true , options_text_template , options_dropdown_template , options_switch_template , true , options_slider_template , options_button_template )
if ( not Plater ) then
for _ , widget in ipairs ( f.widget_list ) do
if ( widget.Disable ) then
widget : Disable ( )
end
end
local PlaterDisabled1 = DF : CreateLabel ( f , " Plater isn't installed! you may download it from the Curseforge app. " , 16 , " red " )
PlaterDisabled1 : SetPoint ( 10 , - 330 )
end
end
DetailsPluginContainerWindow.OpenPlugin ( DetailsPlaterIntegrationPanel )
end