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

1389 lines
38 KiB
Lua

local f0_local0 = module
local f0_local1, f0_local2 = ...
f0_local0( f0_local1, package.seeall )
CoD.PrintModuleLoad( _NAME )
function MatchSummaryCreate( f1_arg0, f1_arg1 )
local f1_local0 = LUI.mp_menus.Aliens
local f1_local1 = f1_arg0.properties.controller
local f1_local2 = f1_arg0:getChildById( "aar_summary_playercard" )
if f1_local2 then
local f1_local3 = {}
if Engine.IsAliensMode() then
local f1_local4 = Cac.GetSquadLoc()
local f1_local5 = 0
f1_local3.gamertag = Engine.GetUsernameByController( f1_local1 )
f1_local3.clantag = Engine.GetCustomClanTag( f1_local1 ) or ""
f1_local3.rank = Lobby.GetAlienRankForXP( f1_local0.getAliensExperience( f1_local1 ) )
f1_local3.prestige = f1_local0.getAliensPrestigeLevel( f1_local1 )
f1_local3.background = Engine.GetPlayerDataEx( f1_local1, CoD.StatsGroup.Coop, f1_local4, f1_local5, "background" )
f1_local3.patchEmblem = Engine.GetPlayerDataEx( f1_local1, CoD.StatsGroup.Coop, f1_local4, f1_local5, "patch" )
f1_local3.patchShape = Engine.GetPlayerDataEx( f1_local1, CoD.StatsGroup.Coop, f1_local4, f1_local5, "patchbacking" )
else
local f1_local4 = Cac.GetSquadLoc()
local f1_local5 = AAR.GetRoundSquadMember( f1_local1 )
local f1_local6 = ""
local f1_local7 = Cac.GetSquadMemberName( f1_local1, f1_local4, f1_local5 )
if Engine.GetUsernameByController then
f1_local6 = Engine.Localize( "@LUA_MENU_TAG_AND_MEMBER", Engine.MarkLocalized( Engine.GetUsernameByController( f1_local1 ) ), Engine.MarkLocalized( f1_local7 ) )
end
local f1_local8 = Lobby.GetRankForXP( AAR.GetCareerExperienceForSquadMember( f1_local1, f1_local5 ) )
f1_local3.gamertag = f1_local6
f1_local3.clantag = Engine.GetCustomClanTag( f1_local1 ) or ""
f1_local3.rank = f1_local8
f1_local3.prestige = Cac.GetPrestigeLevel( f1_local1, f1_local4 )
f1_local3.background = Cac.GetBackgroundIndex( f1_local1, f1_local4, f1_local5 )
f1_local3.patchEmblem = Cac.GetPatchIndex( f1_local1, f1_local4, f1_local5 )
f1_local3.patchShape = Cac.GetPatchbackingIndex( f1_local1, f1_local4, f1_local5 )
end
f1_local3.name = "update_playercard"
f1_local2:processEvent( f1_local3 )
end
local f1_local3 = Engine.GetPlayerDataEx( f1_local1, CoD.StatsGroup.Common, "round", "gameMode" )
if Engine.IsAliensMode() then
f1_arg0:processEvent( {
name = "aar_set_subtitle_text",
new_text = Engine.Localize( AAR.AreChaosStats( f1_local3 ) and "@ALIENS_CHAOS_MODE_CAPS" or "@LUA_MENU_ALIENS" )
} )
else
local f1_local4 = Engine.TableLookup( GameTypesTable.File, GameTypesTable.Cols.Ref, f1_local3, GameTypesTable.Cols.Name )
local f1_local5 = Engine.GetPlayerDataEx( f1_local1, CoD.StatsGroup.Common, "round", "map" )
local f1_local6 = Squad.GetRealBaseNameFromLoadName( f1_local5 )
if f1_local5 ~= "" then
f1_arg0:processEvent( {
name = "aar_set_subtitle_text",
new_text = Engine.Localize( "LUA_MENU_MODE_AND_MAP_FORMAT", f1_local4, Engine.MarkLocalized( f1_local6 ) ),
dispatchChildren = true
} )
end
end
end
function aar_match_summary_main()
return {
type = "UIElement",
id = "aar_match_summary_main_container",
states = {
default = {
leftAnchor = false,
rightAnchor = false,
topAnchor = false,
bottomAnchor = false,
width = AAR.Layout.Width,
height = AAR.Layout.Height
}
},
properties = {
page_idx = 1,
num_pages = 3,
controller = Engine.GetFirstActiveController()
},
handlers = {
menu_create = MatchSummaryCreate,
element_refresh = MatchSummaryCreate
},
children = {
{
type = "generic_drop_shadow",
id = "description_drop_shadow1",
properties = {
offset_shadow = 0
},
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 0,
top = 0,
bottom = 0,
alpha = 0.35
}
}
},
{
type = "generic_menu_background",
id = "aar_match_summary_main_bkg",
properties = {
fill_alpha = 1
}
},
{
type = "aar_title_bar",
id = "aar_title_bar_id",
properties = {
title_bar_text = Engine.Localize( "@LUA_MENU_GAME_SUMMARY" ),
subtitle_text = "",
subtitle_banner_width = 300
}
},
{
type = "aar_dots",
id = "AARSummaryDotsID",
properties = {
num_dots = MBh.Property( "num_pages" ),
curr_dot = MBh.Property( "page_idx" )
}
},
{
type = "aar_xp_info_widget",
properties = {
controller = MBh.Property( "controller" ),
animate_progress = false
}
},
{
type = "aar_stats_list",
id = "aar_stats_list_id"
},
{
type = "playercard",
id = "aar_summary_playercard",
properties = {},
states = {
default = {
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
left = 157,
right = 0,
top = 90,
bottom = 0
}
}
},
{
type = "aar_footer_bar",
id = "oink_4"
},
{
type = "aar_token_balance"
}
}
}
end
function AARStatsListFeederAliens( f3_arg0 )
local f3_local0 = {}
local f3_local1 = LUI.FlowManager.GetMenuScopedDataByMenuName( "aar_summary_main" )
local f3_local2 = f3_local1.controller
local f3_local3 = LUI.mp_menus.Aliens.GetSessionXP( f3_local2 )
local f3_local4 = LUI.mp_menus.Aliens.GetSessionTokens( f3_local2 )
if LUI.mp_menus.AliensPurchasables.UsingExtinctionTokens() and f3_local4 and f3_local4 > 0 then
f3_local0[#f3_local0 + 1] = {
type = "aar_stats_spacer",
id = "aar_stats_widget_spacer_0"
}
local f3_local5
if f3_local4 == 1 then
f3_local5 = Engine.Localize( "@ALIENS_TOKEN" )
if not f3_local5 then
else
f3_local0[#f3_local0 + 1] = {
type = "aar_stats_widget",
id = "aar_stats_widget_0",
properties = {
label_text = Engine.Localize( "@ALIENS_TOKENS" ),
stat_text = tostring( f3_local4 ) .. " " .. f3_local5
}
}
end
end
f3_local5 = Engine.Localize( "@ALIENS_TOKENS" )
end
f3_local0[#f3_local0 + 1] = {
type = "aar_stats_spacer",
id = "aar_stats_widget_spacer_1"
}
f3_local0[#f3_local0 + 1] = {
type = "aar_stats_widget",
id = "aar_stats_widget_5",
properties = {
label_text = Engine.Localize( "@LUA_MENU_TOTAL_EARNED" ),
stat_text = f3_local3 .. " " .. Engine.Localize( "@LUA_MENU_XP" ),
stat_text_r = Colors.alien_frontend_hilite.r,
stat_text_g = Colors.alien_frontend_hilite.g,
stat_text_b = Colors.alien_frontend_hilite.b,
label_text_r = AAR.Swatch.title.r,
label_text_g = AAR.Swatch.title.g,
label_text_b = AAR.Swatch.title.b
}
}
return f3_local0
end
function AARStatsListFeeder( f4_arg0 )
local f4_local0 = {}
local f4_local1 = LUI.FlowManager.GetMenuScopedDataByMenuName( "aar_summary_main" )
local f4_local2 = f4_local1.controller
local f4_local3 = AAR.GetRoundDoubleXP( f4_local2 )
local f4_local4 = AAR.GetRoundClanXP( f4_local2 )
local f4_local5 = AAR.GetRoundMatchXP( f4_local2 )
local f4_local6 = AAR.GetRoundMiscXP( f4_local2 )
local f4_local7 = AAR.GetRoundScoreXP( f4_local2 )
local f4_local8 = AAR.GetRoundChallengeXP( f4_local2 )
local f4_local9 = AAR.GetRoundOperationsXP( f4_local2 )
local f4_local10 = AAR.GetRoundTotalXP( f4_local2 )
local f4_local11 = f4_local8 + f4_local7 + f4_local6
local f4_local12 = AAR.GetTotalUnlockPoints( f4_local2 )
f4_local0[#f4_local0 + 1] = {
type = "aar_stats_widget",
id = "aar_stats_widget_1",
properties = {
label_text = Engine.Localize( "@LUA_MENU_XP" ),
stat_text = f4_local11 .. " " .. Engine.Localize( "@LUA_MENU_XP" )
}
}
f4_local0[#f4_local0 + 1] = {
type = "aar_stats_spacer",
id = "aar_stats_widget_spacer_1"
}
if f4_local3 > 0 then
f4_local0[#f4_local0 + 1] = {
type = "aar_stats_widget",
id = "aar_stats_widget_2",
properties = {
label_text = Engine.Localize( "@LUA_MENU_DOUBLE_XP" ),
stat_text = f4_local3 .. " " .. Engine.Localize( "@LUA_MENU_XP" )
}
}
f4_local0[#f4_local0 + 1] = {
type = "aar_stats_spacer",
id = "aar_stats_widget_spacer_2"
}
end
if f4_arg0 and f4_arg0.squadMode == 0 then
f4_local0[#f4_local0 + 1] = {
type = "aar_stats_widget",
id = "aar_stats_widget_3",
properties = {
label_text = Engine.Localize( "@LUA_MENU_OPERATIONS" ),
stat_text = f4_local9 .. " " .. Engine.Localize( "@LUA_MENU_XP" )
}
}
f4_local0[#f4_local0 + 1] = {
type = "aar_stats_spacer",
id = "aar_stats_widget_spacer_3"
}
end
f4_local0[#f4_local0 + 1] = {
type = "aar_stats_widget",
id = "aar_stats_widget_4",
properties = {
label_text = Engine.Localize( "@LUA_MENU_MATCH_BONUS" ),
stat_text = f4_local5 .. " " .. Engine.Localize( "@LUA_MENU_XP" )
}
}
f4_local0[#f4_local0 + 1] = {
type = "aar_stats_spacer",
id = "aar_stats_widget_spacer_4"
}
if f4_local4 > 0 then
f4_local0[#f4_local0 + 1] = {
type = "aar_stats_widget",
id = "aar_stats_widget_5",
properties = {
label_text = Engine.Localize( "@LUA_MENU_CLAN_WARS_BONUS" ),
stat_text = f4_local4 .. " " .. Engine.Localize( "@LUA_MENU_XP" )
}
}
f4_local0[#f4_local0 + 1] = {
type = "aar_stats_spacer",
id = "aar_stats_widget_spacer_5"
}
end
f4_local0[#f4_local0 + 1] = {
type = "aar_stats_widget",
id = "aar_stats_widget_6",
properties = {
label_text = Engine.Localize( "@LUA_MENU_TOTAL_EARNED" ),
stat_text = f4_local10 .. " " .. Engine.Localize( "@LUA_MENU_XP" ),
stat_text_r = AAR.Swatch.colorpop.r,
stat_text_g = AAR.Swatch.colorpop.g,
stat_text_b = AAR.Swatch.colorpop.b,
label_text_r = AAR.Swatch.title.r,
label_text_g = AAR.Swatch.title.g,
label_text_b = AAR.Swatch.title.b
}
}
return f4_local0
end
function aar_stats_list()
local f5_local0 = 408
return {
type = "UIVerticalList",
states = {
default = {
leftAnchor = false,
rightAnchor = false,
topAnchor = true,
bottomAnchor = true,
left = -f5_local0 / 2,
right = f5_local0 / 2,
top = 270,
bottom = 0
}
},
properties = {
squadMode = MBh.Property( "squadMode" )
},
childrenFeeder = Engine.IsAliensMode() and AARStatsListFeederAliens or AARStatsListFeeder
}
end
function aar_stats_spacer()
return {
type = "UIImage",
id = "spacer_id",
states = {
default = {
material = RegisterMaterial( "white" ),
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = false,
left = 0,
right = 0,
top = 0,
bottom = 3,
red = AAR.Swatch.background_2.r,
green = AAR.Swatch.background_2.g,
blue = AAR.Swatch.background_2.b,
alpha = 0
}
}
}
end
function aar_stats_widget()
return {
type = "UIElement",
properties = {
height = 24,
label_text = "Label Text",
stat_text = "Stat Text",
stat_text_r = AAR.Swatch.title_2.r,
stat_text_g = AAR.Swatch.title_2.g,
stat_text_b = AAR.Swatch.title_2.b,
label_text_r = AAR.Swatch.title_2.r,
label_text_g = AAR.Swatch.title_2.g,
label_text_b = AAR.Swatch.title_2.b,
stat_text_indent = 275
},
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = false,
left = 0,
right = 0,
top = 0,
bottom = MBh.Property( "height" )
}
},
children = {
{
type = "UIImage",
id = "stats_widget_bgk2_id",
states = {
default = CoD.ColorizeState( Colors.white, {
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 200,
top = 0,
bottom = 0,
material = RegisterMaterial( "white" ),
alpha = 0.05
} )
}
},
{
type = "UIImage",
id = "stats_widget_diagnol_bgk2_id",
states = {
default = CoD.ColorizeState( Colors.white, {
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = true,
left = 200,
right = 220,
top = 0,
bottom = 0,
material = RegisterMaterial( "box_stat_cap" ),
alpha = 0.05,
zRot = 180
} )
}
},
{
type = "UIImage",
id = "stats_widget_diagnol_bgk_id",
states = {
default = CoD.ColorizeState( Colors.black, {
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = true,
left = 200,
right = 220,
top = 0,
bottom = 0,
material = RegisterMaterial( "box_stat_cap" ),
alpha = 0.15
} )
}
},
{
type = "UIImage",
id = "stats_widget_bgk_id",
states = {
default = CoD.ColorizeState( Colors.black, {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 220,
right = 0,
top = 0,
bottom = 0,
material = RegisterMaterial( "white" ),
alpha = 0.15
} )
}
},
{
type = "UIText",
id = "stats_widget_label_text_id",
properties = {
text = MBh.Property( "label_text" ),
textStyle = CoD.TextStyle.Shadowed,
label_text_indent = 15,
label_text_r = MBh.Property( "label_text_r" ),
label_text_g = MBh.Property( "label_text_g" ),
label_text_b = MBh.Property( "label_text_b" )
},
states = {
default = {
font = CoD.TextSettings.SmallFont.Font,
alignment = LUI.Alignment.Left,
leftAnchor = true,
rightAnchor = true,
topAnchor = false,
bottomAnchor = false,
left = MBh.Property( "label_text_indent" ),
right = 0,
height = CoD.TextSettings.SmallFont.Height,
red = MBh.Property( "label_text_r" ),
green = MBh.Property( "label_text_g" ),
blue = MBh.Property( "label_text_b" )
}
}
},
{
type = "UIText",
id = "stats_widget_stat_text_id",
properties = {
text = MBh.Property( "stat_text" ),
textStyle = CoD.TextStyle.Shadowed,
stat_text_indent = MBh.Property( "stat_text_indent" ),
stat_text_r = MBh.Property( "stat_text_r" ),
stat_text_g = MBh.Property( "stat_text_g" ),
stat_text_b = MBh.Property( "stat_text_b" )
},
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = false,
bottomAnchor = false,
left = MBh.Property( "stat_text_indent" ),
right = 0,
height = CoD.TextSettings.SmallFont.Height,
font = CoD.TextSettings.SmallFont.Font,
alignment = LUI.Alignment.Left,
red = MBh.Property( "stat_text_r" ),
blue = MBh.Property( "stat_text_b" ),
green = MBh.Property( "stat_text_g" )
}
},
handlers = {
update_stat_text = function ( f8_arg0, f8_arg1 )
f8_arg0:setText( f8_arg1.newStatText )
end
}
}
}
}
end
function xpWidgetOnCreate( f9_arg0, f9_arg1 )
local f9_local0 = f9_arg0.properties.controller
local f9_local1 = f9_arg0.properties.animate_progress
local f9_local2 = LUI.mp_menus.Aliens
local f9_local3, f9_local4, f9_local5, f9_local6, f9_local7, f9_local8, f9_local9, f9_local10, f9_local11, f9_local12, f9_local13, f9_local14, f9_local15, f9_local16 = nil
local f9_local17 = 0
local f9_local18 = false
local f9_local19 = false
if Engine.IsAliensMode() then
f9_local3 = f9_local2.GetAliensMaxRank()
f9_local4 = f9_local2.getAliensExperience( f9_local0 )
f9_local5 = f9_local2.GetSessionXP( f9_local0 )
f9_local6 = f9_local4 - f9_local5
if f9_local6 < 0 then
f9_local6 = 0
end
f9_local8 = Lobby.GetAlienRankForXP( f9_local4 )
f9_local7 = Lobby.GetAlienRankForXP( f9_local6 )
f9_local9 = tonumber( Engine.TableLookup( f9_local2.AlienRanks.File, f9_local2.AlienRanks.Cols.Idx, f9_local8, f9_local2.AlienRanks.Cols.MinXP ) )
f9_local10 = f9_local9 + tonumber( Engine.TableLookup( f9_local2.AlienRanks.File, f9_local2.AlienRanks.Cols.Idx, f9_local8, f9_local2.AlienRanks.Cols.XPToNext ) )
f9_local11 = f9_local7 < f9_local8
f9_local12 = f9_local8
if f9_local8 < f9_local3 then
f9_local12 = f9_local12 + 1
end
f9_local13 = tonumber( Engine.TableLookup( f9_local2.AlienRanks.File, f9_local2.AlienRanks.Cols.Idx, f9_local12, f9_local2.AlienRanks.Cols.MinXP ) ) - f9_local4
f9_local14 = f9_local2.getAliensPrestigeLevel( f9_local0 )
if f9_local12 == f9_local3 and f9_local14 < f9_local2.AlienRanks.MaxPrestige then
f9_local12 = 0
f9_local19 = true
end
if f9_local3 <= f9_local8 then
f9_local18 = true
end
f9_local17 = f9_local14
else
f9_local3 = Rank.GetMaxRank()
local f9_local20 = Cac.GetSquadLoc()
local f9_local21 = AAR.GetRoundSquadMember( f9_local0 )
f9_local4 = AAR.GetCareerExperienceForSquadMember( f9_local0, f9_local21 )
f9_local5 = AAR.GetRoundTotalXP( f9_local0 )
f9_local6 = f9_local4 - f9_local5
if f9_local6 >= 0 then
f9_local7 = Lobby.GetRankForXP( f9_local6 )
f9_local8 = Lobby.GetRankForXP( f9_local4 )
f9_local9 = tonumber( Rank.GetRankMinXP( tostring( f9_local8 ) ) )
f9_local10 = f9_local9 + Rank.GetRankXPToNext( tostring( f9_local8 ) )
f9_local11 = f9_local7 < f9_local8
f9_local12 = f9_local8
if f9_local8 < f9_local3 then
f9_local12 = f9_local12 + 1
end
f9_local13 = Rank.GetRankMaxXP( tostring( f9_local8 ) )
f9_local17 = Cac.GetPrestigeLevel( f9_local0, f9_local20 )
if Cac.HasSquadMemberPrestiged( f9_local0, f9_local20, f9_local21 ) then
f9_local18 = true
end
else
f9_local6 = 0
f9_local4 = 0
f9_local7 = 0
f9_local8 = 0
f9_local9 = 0
f9_local10 = 1
f9_local11 = false
f9_local12 = 1
f9_local13 = 1
end
end
local f9_local20 = 0
local f9_local21 = 0
local f9_local22 = 0
local f9_local23 = Engine.IsAliensMode() and CoD.PlayMode.Aliens or CoD.PlayMode.Core
if f9_local18 then
f9_local21 = 1
f9_local22 = 1
f9_local20 = 0
elseif f9_local11 == false then
local f9_local24 = assert
local f9_local25
if f9_local9 <= f9_local6 then
if f9_local6 > f9_local10 then
f9_local25 = Engine.IsAliensMode()
else
f9_local25 = true
end
else
f9_local25 = false
end
f9_local24( f9_local25 )
f9_local21 = (f9_local6 - f9_local9) / Rank.GetRankXPToNext( tostring( f9_local8 ), f9_local23 )
f9_local22 = (f9_local4 - f9_local9) / Rank.GetRankXPToNext( tostring( f9_local8 ), f9_local23 )
if Engine.IsAliensMode() then
f9_local20 = f9_local13
else
f9_local20 = Rank.GetRankMaxXP( tostring( f9_local8 ), f9_local23 ) - f9_local4
end
else
f9_local21 = 0
f9_local22 = (f9_local4 - f9_local9) / Rank.GetRankXPToNext( tostring( f9_local8 ), f9_local23 )
f9_local20 = f9_local9 + Rank.GetRankXPToNext( tostring( f9_local8 ), f9_local23 ) - f9_local4
end
local f9_local24 = Lobby.GetMaxPrestigeLevel()
local f9_local25 = false
if not (Engine.IsAliensMode() or f9_local8 ~= f9_local12 or f9_local18 or f9_local17 >= f9_local24) or f9_local19 then
f9_local25 = true
end
local f9_local26 = Rank.GetRankDisplay( tostring( f9_local8 ), f9_local23 )
local f9_local27 = Rank.GetRankDisplay( tostring( f9_local12 ), f9_local23 )
f9_arg0.properties.curr_rank = f9_local26
f9_arg0.properties.next_rank = f9_local27
f9_arg0.properties.curr_xp = tostring( f9_local6 )
f9_arg0.properties.next_xp = tostring( f9_local20 )
f9_arg0.properties.earned_xp = tostring( f9_local5 )
local f9_local28 = Engine.IsAliensMode() and CoD.PlayMode.Aliens or CoD.PlayMode.Core
local f9_local29 = RegisterMaterial( Rank.GetRankIcon( f9_local8, f9_local17, f9_local28 ) )
local f9_local30 = RegisterMaterial
local f9_local31 = Rank.GetRankIcon
local f9_local32 = f9_local12
local f9_local33
if f9_local25 then
f9_local33 = f9_local17 + 1
if not f9_local33 then
else
f9_arg0:dispatchEventToChildren( {
name = "xp_widget_update_progression_info",
newCurrentRankText = f9_local26,
newCurrentRankIcon = f9_local29,
newNextRankText = f9_local27,
newNextRankIcon = f9_local30( f9_local31( f9_local32, f9_local33, f9_local28 ) ),
immediate = true
} )
f9_arg0:dispatchEventToRoot( {
name = "xp_widget_update_curr_xp",
newVal = f9_arg0.properties.curr_xp,
immediate = true
} )
f9_arg0:dispatchEventToRoot( {
name = "xp_widget_update_next_xp",
newVal = f9_arg0.properties.next_xp,
immediate = true
} )
f9_arg0:dispatchEventToRoot( {
name = "xp_widget_update_earned_xp",
newVal = f9_arg0.properties.earned_xp,
immediate = true
} )
if Engine.IsAliensMode() then
f9_arg0:processEvent( {
name = "set_aliens_rank_text",
text = f9_arg0.properties.next_rank
} )
end
f9_arg0:dispatchEventToRoot( {
name = "update_xp_fill_meter",
prevPercent = f9_local21,
currPercent = f9_local22,
animate_progress = f9_local1,
immediate = true
} )
end
end
f9_local33 = f9_local17
end
function UpdateXPFillMeter( f10_arg0, f10_arg1 )
assert( f10_arg1.prevPercent )
assert( f10_arg1.currPercent )
local f10_local0 = 205
if f10_arg1.prevPercent > 1 then
f10_arg1.prevPercent = 1
end
if f10_arg1.currPercent > 1 then
f10_arg1.prevPercent = 1
end
local f10_local1 = {
material = RegisterMaterial( "btn_cas_fill_f" ),
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = f10_arg1.prevPercent * f10_local0,
top = 1,
bottom = -1,
red = Engine.IsAliensMode() and Colors.alien_frontend_hilite.r or AAR.Swatch.colorpop.r + 0.1,
green = Engine.IsAliensMode() and Colors.alien_frontend_hilite.g or AAR.Swatch.colorpop.g + 0.1,
blue = Engine.IsAliensMode() and Colors.alien_frontend_hilite.b or AAR.Swatch.colorpop.b + 0.1
}
local f10_local2 = {
material = RegisterMaterial( "btn_cas_fill_f" ),
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = f10_arg1.currPercent * f10_local0,
top = 1,
bottom = -1,
red = Engine.IsAliensMode() and Colors.alien_frontend_hilite.r or AAR.Swatch.colorpop.r + 0.1,
green = Engine.IsAliensMode() and Colors.alien_frontend_hilite.g or AAR.Swatch.colorpop.g + 0.1,
blue = Engine.IsAliensMode() and Colors.alien_frontend_hilite.b or AAR.Swatch.colorpop.b + 0.1
}
local f10_local3 = f10_arg0:getChildById( "xp_meter_curr_fill" )
f10_local3:registerAnimationState( "prev_state", f10_local1 )
f10_local3:registerAnimationState( "curr_state", f10_local2 )
if f10_arg1.animate_progress then
local f10_local4 = MBh.AnimateSequence( {
{
"prev_state",
0
},
{
"prev_state",
675
},
{
"curr_state",
1250
}
} )
f10_local4( f10_local3 )
if f10_arg1.prevPercent < f10_arg1.currPercent then
f10_local3:registerEventHandler( "play_anim_sound", function ( element, event )
Engine.PlaySound( CoD.SFX.XPTick )
end )
f10_local3:addElement( LUI.UITimer.new( 800, "play_anim_sound", nil, true, nil, false, false ) )
end
else
f10_local3:animateToState( "curr_state", 0 )
end
local f10_local4 = {
material = RegisterMaterial( "btn_cas_fill_f" ),
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = f10_arg1.prevPercent * f10_local0,
top = 1,
bottom = -1,
red = Colors.white.r,
green = Colors.white.g,
blue = Colors.white.b
}
local f10_local5 = f10_arg0:getChildById( "xp_meter_prev_fill" )
f10_local5:registerAnimationState( "prev_state_alt", f10_local4 )
f10_local5:animateToState( "prev_state_alt", 0 )
end
function aar_xp_info_widget()
local f12_local0 = 80
local f12_local1 = 408
return {
type = "UIElement",
id = "mainWidgetContainerID",
properties = {
curr_rank = 1,
next_rank = 2,
curr_xp = 0,
next_xp = 0,
earned_xp = 0,
controller = Engine.GetFirstActiveController(),
animate_progress = false
},
states = {
default = {
material = RegisterMaterial( "white" ),
leftAnchor = false,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
left = -f12_local1 / 2,
right = f12_local1 / 2,
top = 200,
height = 67
}
},
handlers = {
menu_create = xpWidgetOnCreate,
element_refresh = xpWidgetOnCreate
},
children = {
{
type = "UIElement",
id = "RightContainerID",
states = {
default = {
topAnchor = true,
bottomAnchor = true,
leftAnchor = false,
rightAnchor = true,
top = 0,
bottom = 0,
left = -f12_local0,
right = 0
}
},
children = {
{
type = "UIImage",
states = {
default = CoD.ColorizeState( Colors.white, {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = 0,
bottom = 0,
left = 0,
right = 0,
material = RegisterMaterial( "white" ),
alpha = 0.05
} )
}
},
{
type = "UIImage",
id = "lockImage",
states = {
default = {
material = RegisterMaterial( "icon_unlock_token_64" ),
topAnchor = false,
bottomAnchor = false,
leftAnchor = false,
rightAnchor = false,
width = 64,
height = 64,
alpha = Engine.IsAliensMode() and 0 or 1
}
},
children = {
{
type = "UIText",
id = "UnlockPointsTextID",
properties = {
text = "2",
curr_rank = MBh.Property( "curr_rank" )
},
states = {
default = {
topAnchor = false,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = true,
left = 0,
right = 0,
height = CoD.TextSettings.ExtraBigFont.Height,
font = CoD.TextSettings.ExtraBigFont.Font,
alignment = LUI.Alignment.Center,
red = AAR.Swatch.background_2.r,
green = AAR.Swatch.background_2.g,
blue = AAR.Swatch.background_2.b
}
},
handlers = {
menu_create = function ( f13_arg0, f13_arg1 )
f13_arg0:setText( "2" )
end
}
}
}
}
}
},
{
type = "UIText",
id = "AliensRank",
properties = {
text = ""
},
states = {
default = {
topAnchor = false,
bottomAnchor = false,
leftAnchor = false,
rightAnchor = true,
right = 0,
left = -f12_local0,
top = -CoD.TextSettings.BigFont.Height,
bottom = CoD.TextSettings.BigFont.Height,
font = CoD.TextSettings.BigFont.Font,
alpha = Engine.IsAliensMode() and 1 or 0,
alignment = LUI.Alignment.Center
}
},
handlers = {
set_aliens_rank_text = function ( f14_arg0, f14_arg1 )
f14_arg0:setText( f14_arg1.text )
end
}
},
{
type = "UIElement",
id = "LeftContainerID",
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = -f12_local0,
top = 0,
bottom = 0
}
},
children = {
{
type = "UIImage",
states = {
default = CoD.ColorizeState( Colors.white, {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = 0,
bottom = 0,
left = 0,
right = 0,
material = RegisterMaterial( "white" ),
alpha = 0.05
} )
}
},
{
type = "UIElement",
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 15,
right = 0,
top = 2,
bottom = 0
}
},
children = {
{
type = "UIText",
id = "aar_summary_current_rank_text_id",
properties = {
text = "",
textStyle = CoD.TextStyle.Shadowed
},
states = {
default = CoD.ColorizeState( Colors.md_grey, {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = 5,
left = 0,
width = 26,
height = CoD.TextSettings.NormalFont.Height,
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Left
} )
},
handlers = {
xp_widget_update_progression_info = function ( f15_arg0, f15_arg1 )
f15_arg0:setText( f15_arg1.newCurrentRankText )
end
}
},
{
type = "UIImage",
id = "aar_summary_current_rank_icon_id",
states = {
default = CoD.ColorizeState( Colors.md_grey, {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = 2,
left = 24,
width = 24,
height = 24
} )
},
handlers = {
xp_widget_update_progression_info = function ( f16_arg0, f16_arg1 )
f16_arg0:setImage( f16_arg1.newCurrentRankIcon )
end
}
},
{
type = "UIText",
id = "aar_summary_next_rank_text_id",
properties = {
text = "",
textStyle = CoD.TextStyle.Shadowed
},
states = {
default = CoD.ColorizeState( Colors.md_grey, {
topAnchor = true,
bottomAnchor = false,
leftAnchor = false,
rightAnchor = true,
top = 5,
right = 0,
width = 26,
height = CoD.TextSettings.NormalFont.Height,
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Right
} )
},
handlers = {
xp_widget_update_progression_info = function ( f17_arg0, f17_arg1 )
f17_arg0:setText( f17_arg1.newNextRankText )
end
}
},
{
type = "UIImage",
id = "aar_summary_next_rank_icon_id",
states = {
default = CoD.ColorizeState( Colors.md_grey, {
topAnchor = true,
bottomAnchor = false,
leftAnchor = false,
rightAnchor = true,
top = 2,
right = -24,
width = 24,
height = 24
} )
},
handlers = {
xp_widget_update_progression_info = function ( f18_arg0, f18_arg1 )
f18_arg0:setImage( f18_arg1.newNextRankIcon )
end
}
},
{
type = "UIElement",
states = {
default = {
leftAnchor = false,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
top = 7,
width = 205,
height = 15,
red = 0,
green = 0,
blue = 0
}
},
handlers = {
update_xp_fill_meter = UpdateXPFillMeter
},
children = {
{
type = "UIImage",
id = "xp_fill_meter_id",
states = {
default = {
leftAnchor = true,
rightAnchor = true,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 0,
top = 0,
bottom = 0,
material = RegisterMaterial( "white" ),
red = 0,
green = 0,
blue = 0,
alpha = 0.5
}
}
},
{
type = "UIImage",
id = "xp_meter_curr_fill",
states = {
default = CoD.ColorizeState( Colors.white, {
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 0,
top = 0,
bottom = 0,
material = RegisterMaterial( "btn_cas_fill_f" )
} )
}
},
{
type = "UIImage",
id = "xp_meter_prev_fill",
states = {
default = CoD.ColorizeState( Colors.primary_text_color, {
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = true,
left = 0,
right = 0,
top = 0,
bottom = 0,
material = RegisterMaterial( "btn_cas_fill_f" )
} )
}
}
}
},
{
type = "UIText",
id = "earned_xp_lable",
properties = {
text = Engine.Localize( "@LUA_MENU_XP_EARNED" ),
textStyle = CoD.TextStyle.Shadowed
},
states = {
default = CoD.ColorizeState( Colors.secondary_text_color, {
leftAnchor = true,
rightAnchor = true,
topAnchor = false,
bottomAnchor = true,
left = 0,
right = 0,
bottom = -17,
height = CoD.TextSettings.NormalFont.Height,
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Left
} )
}
},
{
type = "UIText",
id = "earned_xp_value",
properties = {
text = MBh.Property( "earned_xp" ),
textStyle = CoD.TextStyle.Shadowed
},
states = {
default = CoD.ColorizeState( Colors.white, {
leftAnchor = true,
rightAnchor = true,
topAnchor = false,
bottomAnchor = true,
left = 0,
right = 0,
bottom = 0,
height = CoD.TextSettings.NormalFont.Height,
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Left
} )
},
handlers = {
xp_widget_update_earned_xp = function ( f19_arg0, f19_arg1 )
f19_arg0:setText( f19_arg1.newVal .. " " .. Engine.Localize( "@LUA_MENU_XP" ) )
end
}
},
{
type = "UIText",
id = "next_xp_lable",
properties = {
text = Engine.Localize( "@LUA_MENU_XP_NEEDED" ),
textStyle = CoD.TextStyle.Shadowed
},
states = {
default = CoD.ColorizeState( Colors.secondary_text_color, {
leftAnchor = true,
rightAnchor = true,
topAnchor = false,
bottomAnchor = true,
left = 0,
right = 0,
bottom = -17,
height = CoD.TextSettings.NormalFont.Height,
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Right
} )
}
},
{
type = "UIText",
id = "next_xp_value",
properties = {
text = MBh.Property( "next_xp" ),
textStyle = CoD.TextStyle.Shadowed
},
states = {
default = CoD.ColorizeState( Colors.primary_text_color, {
leftAnchor = true,
rightAnchor = true,
topAnchor = false,
bottomAnchor = true,
left = 0,
right = 0,
bottom = 0,
height = CoD.TextSettings.NormalFont.Height,
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Right
} )
},
handlers = {
xp_widget_update_next_xp = function ( f20_arg0, f20_arg1 )
f20_arg0:setText( f20_arg1.newVal .. " " .. Engine.Localize( "@LUA_MENU_XP" ) )
end
}
}
}
}
}
}
}
}
end
function UpdateTokenBalance( f21_arg0, f21_arg1 )
local f21_local0 = LUI.FlowManager.GetMenuScopedDataByMenuName( "aar_summary_main" )
local f21_local1 = f21_local0.controller and AAR.GetTotalUnlockPoints( f21_local0.controller ) or 0
local f21_local2 = 3
local f21_local3, f21_local4, f21_local5, f21_local6 = GetTextDimensions( tostring( f21_local1 ), CoD.TextSettings.NormalFont.Font, CoD.TextSettings.NormalFont.Height )
local f21_local7 = f21_local5 - f21_local3
local f21_local8 = f21_arg0:getChildById( "unlockPointsValue" )
f21_local8:setText( tostring( f21_local1 ) )
f21_local8:registerAnimationState( "updated", {
topAnchor = false,
bottomAnchor = false,
leftAnchor = false,
rightAnchor = true,
height = CoD.TextSettings.NormalFont.Height,
right = 0,
width = f21_local7 + f21_local2
} )
f21_local8:animateToState( "updated", 0 )
local f21_local9 = f21_arg0:getChildById( "unlockPointsIcon" )
f21_local9:registerAnimationState( "updated", {
topAnchor = false,
bottomAnchor = false,
leftAnchor = false,
rightAnchor = true,
width = f21_arg0.properties.tokenWidth,
height = f21_arg0.properties.tokenHeight,
right = -1 * (f21_local7 + f21_local2)
} )
f21_local9:animateToState( "updated", 0 )
local f21_local10 = f21_arg0:getChildById( "unlockPointsLabel" )
f21_local10:registerAnimationState( "updated", {
topAnchor = false,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = true,
height = CoD.TextSettings.NormalFont.Height,
right = -1 * (f21_arg0.properties.tokenWidth + f21_local7 + f21_local2 * 2)
} )
f21_local10:animateToState( "updated", 0 )
end
function aar_token_balance()
return {
type = "UIElement",
properties = {
tokenWidth = 20,
tokenHeight = 20
},
states = {
default = {
topAnchor = false,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = -AAR.Layout.FooterHeight,
bottom = 0,
left = 0,
right = -10,
alpha = Engine.IsAliensMode() and 0 or 1
}
},
handlers = {
menu_create = UpdateTokenBalance,
element_refresh = UpdateTokenBalance
},
children = {
{
type = "UIText",
id = "unlockPointsLabel",
properties = {
text = Engine.Localize( "LUA_MENU_CURRENT_UNLOCK_TOKEN_BALANCE" )
},
states = {
default = CoD.ColorizeState( AAR.Swatch.title, {
leftAnchor = false,
rightAnchor = false,
topAnchor = false,
bottomAnchor = false,
right = -16,
width = 300,
height = CoD.TextSettings.NormalFont.Height,
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Right
} )
}
},
{
type = "UIImage",
id = "unlockPointsIcon",
states = {
default = {
leftAnchor = false,
rightAnchor = false,
topAnchor = false,
bottomAnchor = false,
width = MBh.Property( "tokenWidth" ),
height = MBh.Property( "tokenHeight" ),
material = RegisterMaterial( "icon_unlock_token_32" )
}
}
},
{
type = "UIText",
id = "unlockPointsValue",
properties = {
text = tostring( unlockPts )
},
states = {
default = CoD.ColorizeState( AAR.Swatch.title, {
leftAnchor = false,
rightAnchor = true,
topAnchor = false,
bottomAnchor = false,
left = 16,
width = 200,
height = CoD.TextSettings.NormalFont.Height,
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Right
} )
}
}
}
}
end
LUI.MenuBuilder.registerDef( "aar_match_summary_main", aar_match_summary_main )
LUI.MenuBuilder.registerDef( "aar_stats_list", aar_stats_list )
LUI.MenuBuilder.registerDef( "aar_stats_widget", aar_stats_widget )
LUI.MenuBuilder.registerDef( "aar_stats_spacer", aar_stats_spacer )
LUI.MenuBuilder.registerDef( "aar_xp_info_widget", aar_xp_info_widget )
LUI.MenuBuilder.registerDef( "aar_token_balance", aar_token_balance )
LockTable( _M )