iw6-lui/lui/mp_menus/caceditweaponperformanceinfopane.dec.lua
2024-09-12 17:25:45 +02:00

469 lines
13 KiB
Lua

local f0_local0 = module
local f0_local1, f0_local2 = ...
f0_local0( f0_local1, package.seeall )
CoD.PrintModuleLoad( _NAME )
function CacWeaponPerformance( f1_arg0, f1_arg1 )
local f1_local0 = f1_arg0.properties
if f1_arg1 ~= "specialty_null" then
if f1_arg1 == "uav" then
f1_arg1 = "iw6_knifeonly" or f1_arg1
end
if f1_arg1 == "laser_designator" then
f1_arg1 = "iw6_pdw" or f1_arg1
end
local f1_local1 = f1_local0.CacWeaponPerformanceFunc( f1_local0.exclusiveController, Cac.StripSuffix( f1_arg1, "_mp" ) )
if f1_local0.isDecimal then
if f1_local0.isPercent then
f1_arg0:setText( string.format( "%3.2f", f1_local1 ) .. "%" )
else
f1_arg0:setText( string.format( "%3.2f", f1_local1 ) )
end
else
f1_arg0:setText( string.format( "%d", f1_local1 ) )
end
end
end
function CacViewingWeaponPerformance( f2_arg0, f2_arg1 )
if f2_arg1.viewingWeapon then
CacWeaponPerformance( f2_arg0, f2_arg1.viewingWeapon )
end
end
function CacEquippedWeaponPerformance( f3_arg0, f3_arg1 )
local f3_local0 = nil
if f3_arg1.selection_id == "edit_lethal" or f3_arg1.selection_id == "edit_tactical" then
f3_local0 = Cac.GetPerk( f3_arg1.controller, f3_arg1.squadLocation, f3_arg1.squadMemberIndex, f3_arg1.classLocation, f3_arg1.slot, f3_arg1.weaponIndex )
else
f3_local0 = Cac.GetWeapon( f3_arg1.controller, f3_arg1.squadLocation, f3_arg1.squadMemberIndex, f3_arg1.classLocation, f3_arg1.slot, f3_arg1.weaponIndex )
end
if f3_local0 then
CacWeaponPerformance( f3_arg0, f3_local0 )
end
end
function CacPerformanceStatCompare( f4_arg0, f4_arg1 )
local f4_local0 = nil
if f4_arg1.selection_id == "edit_lethal" or f4_arg1.selection_id == "edit_tactical" then
f4_local0 = Cac.GetPerk( f4_arg1.controller, f4_arg1.squadLocation, f4_arg1.squadMemberIndex, f4_arg1.classLocation, f4_arg1.slot, f4_arg1.weaponIndex )
else
f4_local0 = Cac.GetWeapon( f4_arg1.controller, f4_arg1.squadLocation, f4_arg1.squadMemberIndex, f4_arg1.classLocation, f4_arg1.slot, f4_arg1.weaponIndex )
end
if f4_arg1.viewingWeapon and f4_arg1.viewingWeapon ~= f4_local0 and f4_arg1.viewingWeapon ~= "specialty_null" then
f4_arg0:animateToState( "statcompare", 0 )
else
f4_arg0:animateToState( "statview", 0 )
end
end
function cac_weapon_info_pane_performance_stat()
return {
type = "UIElement",
properties = {
statTitle = "Empty",
isPercent = false,
isDecimal = false,
shadeAlpha = 1,
CacWeaponPerformanceFunc = MBh.Property( "CacWeaponPerformanceFunc" )
},
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = false,
left = 0,
right = 0,
top = 0,
bottom = 25,
alpha = 1
},
hidden = {
alpha = 0
}
},
handlers = {
refresh_info_pane = function ( f6_arg0, f6_arg1 )
f6_arg0:dispatchEventToChildren( f6_arg1 )
local f6_local0 = false
local f6_local1 = f6_arg0.properties.CacWeaponPerformanceFunc
local f6_local2 = nil
if f6_arg1.selection_id == "edit_weapon_primary" or f6_arg1.selection_id == "edit_weapon_secondary" then
local f6_local3 = f6_arg1.viewingWeapon
if not f6_local3 then
f6_local3 = Cac.GetWeapon( f6_arg1.controller, f6_arg1.squadLocation, f6_arg1.squadMemberIndex, f6_arg1.classLocation, f6_arg1.slot, f6_arg1.weaponIndex )
end
f6_local2 = Cac.GetWeaponClass( f6_local3 )
for f6_local7, f6_local8 in pairs( Cac.Weapons.weapon_riot ) do
if not f6_local0 then
f6_local0 = f6_local3 == f6_local8
end
end
end
if not (not f6_local0 or f6_local1 ~= Cac.GetPerformanceHeadshots and f6_local1 ~= Cac.GetPerformanceAccuracy) or f6_local2 == "weapon_projectile" and f6_local1 == Cac.GetPerformanceHeadshots then
f6_arg0:animateToState( "hidden" )
else
f6_arg0:animateToState( "default" )
end
end
},
children = {
{
type = "UIImage",
id = "performance_stat_outline",
states = {
default = CoD.ColorizeState( Colors.white, {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 0,
top = 0,
bottom = 0,
material = RegisterMaterial( "white" ),
alpha = MBh.Property( "shadeAlpha" )
} )
}
},
{
type = "UIText",
properties = {
text = MBh.Property( "statTitle" )
},
states = {
default = {
alignment = LUI.Alignment.Left,
leftAnchor = true,
rightAnchor = false,
topAnchor = false,
bottomAnchor = false,
left = 10,
right = 180,
top = -0.5 * CoD.TextSettings.NormalFont.Height,
bottom = 0.5 * CoD.TextSettings.NormalFont.Height,
font = CoD.TextSettings.NormalFont.Font,
red = Colors.window_title_text_color.r,
green = Colors.window_title_text_color.g,
blue = Colors.window_title_text_color.b
}
}
},
{
type = "UIText",
properties = {
text = "100.00",
isDecimal = MBh.Property( "isDecimal" ),
CacWeaponPerformanceFunc = MBh.Property( "CacWeaponPerformanceFunc" ),
isPercent = MBh.Property( "isPercent" )
},
states = {
default = CoD.ColorizeState( Colors.cac_performance_header, {
alignment = LUI.Alignment.Right,
leftAnchor = true,
rightAnchor = true,
topAnchor = false,
bottomAnchor = false,
left = 200,
right = -110,
top = -0.5 * CoD.TextSettings.NormalFont.Height,
bottom = 0.5 * CoD.TextSettings.NormalFont.Height,
font = CoD.TextSettings.NormalFont.Font,
alpha = 0
} ),
statcompare = {
alpha = 1
},
statview = {
alpha = 0
}
},
handlers = {
refresh_info_pane = MBh.DoMultiple( {
CacPerformanceStatCompare,
CacViewingWeaponPerformance
} )
}
},
{
type = "UIText",
properties = {
text = "0",
isDecimal = MBh.Property( "isDecimal" ),
CacWeaponPerformanceFunc = MBh.Property( "CacWeaponPerformanceFunc" ),
isPercent = MBh.Property( "isPercent" )
},
states = {
default = CoD.ColorizeState( Colors.cac_performance_header, {
alignment = LUI.Alignment.Right,
leftAnchor = true,
rightAnchor = true,
topAnchor = false,
bottomAnchor = false,
left = 299,
right = -10,
top = -0.5 * CoD.TextSettings.NormalFont.Height,
bottom = 0.5 * CoD.TextSettings.NormalFont.Height,
font = CoD.TextSettings.NormalFont.Font,
alpha = 0.5
} )
},
handlers = {
refresh_info_pane = CacEquippedWeaponPerformance
}
}
}
}
end
function weapon_performance_stats()
return {
type = "UIVerticalList",
id = "cac_weapon_info_pane_performance_stats",
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 0,
top = 20,
bottom = 0
}
},
children = {
{
type = "cac_weapon_info_pane_performance_stat",
id = "weapon_stats_info_1",
properties = {
shadeAlpha = 0.1,
statTitle = Cac.WeaponPerformanceTypes.KDR.Title,
CacWeaponPerformanceFunc = Cac.GetPerformanceKDR,
isDecimal = true
}
},
{
type = "cac_weapon_info_pane_performance_stat",
id = "weapon_stats_info_2",
properties = {
shadeAlpha = 0,
statTitle = Cac.WeaponPerformanceTypes.Kills.Title,
CacWeaponPerformanceFunc = Cac.GetPerformanceKills
}
},
{
type = "cac_weapon_info_pane_performance_stat",
id = "weapon_stats_info_3",
properties = {
shadeAlpha = 0.1,
statTitle = Cac.WeaponPerformanceTypes.Deaths.Title,
CacWeaponPerformanceFunc = Cac.GetPerformanceDeaths
}
},
{
type = "cac_weapon_info_pane_performance_stat",
id = "weapon_stats_info_4",
properties = {
shadeAlpha = 0,
statTitle = Cac.WeaponPerformanceTypes.Accuracy.Title,
isPercent = true,
isDecimal = true,
CacWeaponPerformanceFunc = Cac.GetPerformanceAccuracy
}
},
{
type = "cac_weapon_info_pane_performance_stat",
id = "weapon_stats_info_5",
properties = {
shadeAlpha = 0.1,
statTitle = Cac.WeaponPerformanceTypes.Headshots.Title,
CacWeaponPerformanceFunc = Cac.GetPerformanceHeadshots
}
}
}
}
end
function lethal_performance_stats()
return {
type = "UIVerticalList",
id = "cac_lethal_info_pane_performance_stats",
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 0,
top = 20,
bottom = 0
}
},
children = {
{
type = "cac_weapon_info_pane_performance_stat",
id = "lethal_stats_info_1",
properties = {
shadeAlpha = 0.1,
statTitle = Cac.WeaponPerformanceTypes.Usage.Title,
CacWeaponPerformanceFunc = Cac.GetPerformanceShots
}
},
{
type = "cac_weapon_info_pane_performance_stat",
id = "lethal_stats_info_2",
properties = {
shadeAlpha = 0,
statTitle = Cac.WeaponPerformanceTypes.Kills.Title,
CacWeaponPerformanceFunc = Cac.GetPerformanceKills
}
},
{
type = "cac_weapon_info_pane_performance_stat",
id = "lethal_stats_info_3",
properties = {
shadeAlpha = 0.1,
statTitle = Cac.WeaponPerformanceTypes.Hits.Title,
CacWeaponPerformanceFunc = Cac.GetPerformanceHits
}
}
}
}
end
function tactical_performance_stats()
return {
type = "UIVerticalList",
id = "cac_tactical_info_pane_performance_stats",
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 0,
top = 20,
bottom = 0
}
},
children = {
{
type = "cac_weapon_info_pane_performance_stat",
id = "tactical_stats_info_1",
properties = {
shadeAlpha = 0,
statTitle = Cac.WeaponPerformanceTypes.Usage.Title,
CacWeaponPerformanceFunc = Cac.GetPerformanceShots
}
},
{
type = "cac_weapon_info_pane_performance_stat",
id = "tactical_stats_info_2",
properties = {
shadeAlpha = 0.1,
statTitle = Cac.WeaponPerformanceTypes.Hits.Title,
CacWeaponPerformanceFunc = Cac.GetPerformanceHits
}
}
}
}
end
function cac_weapon_info_pane_performance_page( f10_arg0 )
return function ()
return {
type = "cac_basic_info_pane_page",
id = "cac_basic_info_pane_page_" .. f10_arg0,
children = {
{
type = "UIImage",
id = "text_header_shade_id",
states = {
default = CoD.ColorizeState( Colors.black, {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = false,
left = 0,
right = 0,
top = 0,
bottom = 20,
material = RegisterMaterial( "white" ),
alpha = 0.2
} )
}
},
{
type = "UIText",
properties = {
text = Engine.Localize( "@LUA_MENU_VIEWING_CAPS" )
},
states = {
default = CoD.ColorizeState( Colors.cac_sub_popup_text, {
alignment = LUI.Alignment.Right,
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = false,
left = 0,
right = -110,
top = 0,
bottom = CoD.TextSettings.SmallFont.Height,
font = CoD.TextSettings.SmallFont.Font,
alpha = 0
} ),
statcompare = {
alpha = 1
},
statview = {
alpha = 0
}
},
handlers = {
refresh_info_pane = CacPerformanceStatCompare
}
},
{
type = "UIText",
properties = {
text = Engine.Localize( "@LUA_MENU_EQUIPPED_CAPS" )
},
states = {
default = CoD.ColorizeState( Colors.cac_sub_popup_text, {
alignment = LUI.Alignment.Right,
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = false,
left = 0,
right = -10,
top = 0,
bottom = CoD.TextSettings.SmallFont.Height,
font = CoD.TextSettings.SmallFont.Font,
alpha = 1
} )
}
},
{
type = f10_arg0
}
}
}
end
end
LUI.MenuBuilder.registerDef( "cac_weapon_info_pane_performance_page", cac_weapon_info_pane_performance_page )
LUI.MenuBuilder.registerDef( "cac_weapon_info_pane_performance_stat", cac_weapon_info_pane_performance_stat )
LUI.MenuBuilder.registerDef( "weapon_performance_stats", weapon_performance_stats )
LUI.MenuBuilder.registerDef( "lethal_performance_stats", lethal_performance_stats )
LUI.MenuBuilder.registerDef( "tactical_performance_stats", tactical_performance_stats )
LUI.MenuBuilder.registerDef( "cac_weapon_info_pane_performance_page_weapon", cac_weapon_info_pane_performance_page( "weapon_performance_stats" ) )
LUI.MenuBuilder.registerDef( "cac_weapon_info_pane_performance_page_lethal", cac_weapon_info_pane_performance_page( "lethal_performance_stats" ) )
LUI.MenuBuilder.registerDef( "cac_weapon_info_pane_performance_page_tactical", cac_weapon_info_pane_performance_page( "tactical_performance_stats" ) )
LockTable( _M )