1721 lines
41 KiB
Lua
1721 lines
41 KiB
Lua
local f0_local0 = module
|
|
local f0_local1, f0_local2 = ...
|
|
f0_local0( f0_local1, package.seeall )
|
|
CoD.PrintModuleLoad( _NAME )
|
|
function chaos_main_score()
|
|
local f1_local0 = 220
|
|
local f1_local1 = 64
|
|
local f1_local2 = 16
|
|
local f1_local3 = 16
|
|
local f1_local4 = 1.5
|
|
local self = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
height = f1_local1,
|
|
width = f1_local0,
|
|
right = 4
|
|
} )
|
|
self.id = "chaos_main_score"
|
|
local f1_local6 = LUI.UIHorizontalList.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
f1_local6.id = "background"
|
|
self:addElement( f1_local6 )
|
|
local f1_local7 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "hud_box_combo_score_ltcap" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = f1_local2
|
|
} )
|
|
f1_local7.id = "bgLeft"
|
|
f1_local6:addElement( f1_local7 )
|
|
local f1_local8 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "hud_box_combo_score_mid" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = f1_local0 - f1_local2 - f1_local3
|
|
} )
|
|
f1_local8.id = "bgMid"
|
|
f1_local6:addElement( f1_local8 )
|
|
local f1_local9 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "hud_box_combo_score_rtcap" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = f1_local3
|
|
} )
|
|
f1_local9.id = "bgRight"
|
|
f1_local6:addElement( f1_local9 )
|
|
local f1_local10 = LUI.UIText.new( CoD.ColorizeState( Colors.primary_text_color, {
|
|
font = CoD.TextSettings.SmallFont.Font,
|
|
alignment = LUI.Alignment.Center,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
left = 0,
|
|
top = 6,
|
|
right = 0,
|
|
height = CoD.TextSettings.SmallFont.Height
|
|
} ) )
|
|
f1_local10.id = "title"
|
|
f1_local10:setText( Engine.Localize( "ALIEN_CHAOS_SCORE" ) )
|
|
self:addElement( f1_local10 )
|
|
local f1_local11 = Game.GetOmnvar( "ui_alien_chaos_total_score" )
|
|
local f1_local12 = LUI.UIPrettyNumber.new( CoD.ColorizeState( Colors.alien_chaos_hilite, {
|
|
font = CoD.TextSettings.ExtraBigFont.Font,
|
|
alignment = LUI.Alignment.Center,
|
|
topAnchor = false,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
left = 0,
|
|
bottom = -8,
|
|
right = 0,
|
|
height = CoD.TextSettings.ExtraBigFont.Height
|
|
} ), {
|
|
speed = 1000,
|
|
initialValue = f1_local11,
|
|
precision = 5
|
|
} )
|
|
f1_local12.id = "score"
|
|
f1_local12:setTextStyle( CoD.TextStyle.Outlined )
|
|
self:addElement( f1_local12 )
|
|
local f1_local13 = function ( f2_arg0, f2_arg1 )
|
|
assert( f1_local4 > 0 )
|
|
local f2_local0 = 0
|
|
if f2_arg0.getDisplayValue then
|
|
f2_local0 = f2_arg0:getDisplayValue()
|
|
end
|
|
f2_arg0:setSpeed( (f2_arg1.value - f2_local0) / f1_local4 )
|
|
f2_arg0:setValue( f2_arg1.value )
|
|
end
|
|
|
|
f1_local12:registerOmnvarHandler( "ui_alien_chaos_total_score", f1_local13 )
|
|
f1_local13( f1_local12, {
|
|
value = f1_local11
|
|
} )
|
|
return self
|
|
end
|
|
|
|
f0_local0 = 300
|
|
function chaos_combo_gauge()
|
|
local f3_local0 = 256
|
|
local f3_local1 = 40
|
|
local f3_local2 = 18
|
|
local f3_local3 = 12
|
|
local f3_local4 = 32
|
|
local f3_local5 = 130
|
|
local f3_local6 = 12
|
|
local f3_local7 = -2
|
|
local self = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
height = f3_local1,
|
|
left = -f3_local0 / 2,
|
|
right = f3_local0 / 2
|
|
} )
|
|
self.id = "chaos_combo_gauge"
|
|
local f3_local9 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "hud_combo_meter_bg" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
f3_local9.id = "background"
|
|
self:addElement( f3_local9 )
|
|
local f3_local10 = LUI.UIHorizontalList.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 3,
|
|
height = f3_local4,
|
|
left = 0,
|
|
right = 0,
|
|
alignment = LUI.Alignment.Center
|
|
} )
|
|
f3_local10.id = "ticks"
|
|
self:addElement( f3_local10 )
|
|
for f3_local11 = 1, f3_local2, 1 do
|
|
local f3_local14 = f3_local11
|
|
local f3_local15 = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = f3_local3
|
|
} )
|
|
f3_local15.id = "tick_" .. f3_local14
|
|
f3_local10:addElement( f3_local15 )
|
|
local f3_local16 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "hud_combo_meter_tic_empty" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0,
|
|
alpha = 0.75
|
|
} )
|
|
f3_local16.id = "tickBorder"
|
|
f3_local15:addElement( f3_local16 )
|
|
local f3_local17 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "hud_combo_meter_tic_fill" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 1,
|
|
bottom = 1,
|
|
left = 0,
|
|
right = 0,
|
|
alpha = 0
|
|
} )
|
|
f3_local17:registerAnimationState( "frozen", CoD.ColorizeState( Colors.alien_chaos_freeze, {
|
|
alpha = 1
|
|
} ) )
|
|
local f3_local18 = {
|
|
r = 0.38,
|
|
g = 0.65,
|
|
b = 0.31
|
|
}
|
|
local f3_local19 = {
|
|
r = 0.9,
|
|
g = 0.78,
|
|
b = 0.1
|
|
}
|
|
local f3_local20 = {
|
|
r = 1,
|
|
g = 0.24,
|
|
b = 0.04
|
|
}
|
|
local f3_local21 = {
|
|
{
|
|
threshold = 0,
|
|
color = f3_local20
|
|
},
|
|
{
|
|
threshold = 0.19,
|
|
color = f3_local20
|
|
},
|
|
{
|
|
threshold = 0.31,
|
|
color = f3_local19
|
|
},
|
|
{
|
|
threshold = 0.53,
|
|
color = f3_local19
|
|
},
|
|
{
|
|
threshold = 0.64,
|
|
color = f3_local18
|
|
},
|
|
{
|
|
threshold = 1,
|
|
color = f3_local18
|
|
}
|
|
}
|
|
f3_local17.id = "tickFill"
|
|
f3_local15:addElement( f3_local17 )
|
|
local f3_local22 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "white" ),
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 14,
|
|
height = 4,
|
|
left = 1,
|
|
right = -1,
|
|
alpha = 0
|
|
} )
|
|
f3_local22:registerAnimationState( "visible", {
|
|
alpha = 1
|
|
} )
|
|
f3_local22.id = "tickFlash"
|
|
f3_local15:addElement( f3_local22 )
|
|
f3_local15.fill = f3_local17
|
|
f3_local15.flash = f3_local22
|
|
f3_local15.ticksLit = 0
|
|
f3_local15:registerEventHandler( "refresh_ticks", function ( element, event )
|
|
local f4_local0 = f3_local14 <= event.ticksLit
|
|
if f4_local0 or event.frozen then
|
|
if event.frozen then
|
|
if not element.frozen then
|
|
element.fill:animateToState( "frozen", 350 )
|
|
end
|
|
elseif element.ticksLit ~= event.ticksLit then
|
|
if not element.lit then
|
|
local f4_local1 = MBh.AnimateSequence( {
|
|
{
|
|
"default",
|
|
0
|
|
},
|
|
{
|
|
"default",
|
|
20 * math.max( 0, f3_local14 - element.ticksLit )
|
|
},
|
|
{
|
|
"visible",
|
|
0
|
|
},
|
|
{
|
|
"default",
|
|
200
|
|
}
|
|
} )
|
|
f4_local1( element.flash, {} )
|
|
end
|
|
element.fill:registerAnimationState( "current", CoD.ColorizeState( CoD.GradientMap( f3_local21, event.ticksLit / f3_local2 ) ) )
|
|
element.fill:animateToState( "current" )
|
|
end
|
|
elseif element.lit then
|
|
element.fill:animateToState( "default", 100 )
|
|
end
|
|
element.frozen = event.frozen
|
|
element.ticksLit = event.ticksLit
|
|
element.lit = f4_local0
|
|
end )
|
|
end
|
|
local f3_local11 = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
f3_local11.id = "frozen"
|
|
self:addElement( f3_local11 )
|
|
for f3_local12 = 1, f3_local5, 1 do
|
|
local f3_local15 = f3_local12
|
|
local f3_local16 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "alien_chaos_freeze_snowflake" ),
|
|
topAnchor = false,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = f3_local7 - math.random() * 10,
|
|
height = f3_local6,
|
|
left = 20 - f3_local6 / 2 + f3_local15 * (f3_local0 - 40) / f3_local5,
|
|
width = f3_local6,
|
|
scale = -1,
|
|
alpha = 0
|
|
} )
|
|
f3_local16:registerAnimationState( "visible", {
|
|
alpha = 1,
|
|
scale = 0.75 - 1.5 * math.random(),
|
|
zRot = 360 * math.random()
|
|
} )
|
|
f3_local16.id = "iceCube_" .. f3_local15
|
|
f3_local11:addElement( f3_local16 )
|
|
f3_local16:registerEventHandler( "refresh_ice_cubes", function ( element, event )
|
|
if f3_local15 <= event.cubesLit then
|
|
if not element.visible then
|
|
local f5_local0 = MBh.AnimateSequence( {
|
|
{
|
|
"default",
|
|
0
|
|
},
|
|
{
|
|
"default",
|
|
f0_local0 * f3_local15 / f3_local5
|
|
},
|
|
{
|
|
"visible",
|
|
200
|
|
}
|
|
} )
|
|
f5_local0( element, {} )
|
|
element.visible = true
|
|
end
|
|
elseif element.visible then
|
|
element:cancelAnimateToState()
|
|
element:animateToState( "default", 100 )
|
|
element.visible = nil
|
|
end
|
|
end )
|
|
end
|
|
local f3_local12 = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 8,
|
|
bottom = 8,
|
|
left = 0,
|
|
right = 0,
|
|
alpha = 0
|
|
} )
|
|
f3_local12:registerAnimationState( "visible", {
|
|
alpha = 1
|
|
} )
|
|
f3_local12.id = "icicles"
|
|
f3_local11:addElement( f3_local12 )
|
|
f3_local12:registerOmnvarHandler( "ui_alien_chaos_meter_freeze_end", function ( f6_arg0, f6_arg1 )
|
|
if f6_arg1.value > 0 then
|
|
f6_arg0:animateToState( "visible", f0_local0 )
|
|
else
|
|
f6_arg0:animateToState( "default", 400 )
|
|
end
|
|
end )
|
|
f3_local12:addElement( LUI.UIImage.new( {
|
|
material = RegisterMaterial( "alien_chaos_freeze_icicles" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0
|
|
} ) )
|
|
f3_local12:addElement( LUI.UIImage.new( {
|
|
material = RegisterMaterial( "alien_chaos_freeze_icicles" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0,
|
|
alpha = 0.2
|
|
} ) )
|
|
local f3_local15 = Game.GetOmnvar( "ui_alien_chaos_combo_meter_start" )
|
|
self:registerOmnvarHandler( "ui_alien_chaos_combo_meter_end", function ( f7_arg0, f7_arg1 )
|
|
f3_local15 = Game.GetTime()
|
|
end )
|
|
local f3_local16 = LUI.UITimer.new( 50, "combo_gauge_refresh" )
|
|
f3_local16.id = "refreshTimer"
|
|
self:addElement( f3_local16 )
|
|
self:registerEventHandler( "combo_gauge_refresh", function ( element, event )
|
|
local f8_local0 = Game.GetTime()
|
|
local f8_local1 = Game.GetOmnvar( "ui_alien_chaos_meter_freeze_start" )
|
|
local f8_local2 = Game.GetOmnvar( "ui_alien_chaos_meter_freeze_end" )
|
|
local f8_local3
|
|
if f8_local1 > f8_local0 or f8_local0 >= f8_local2 then
|
|
f8_local3 = false
|
|
else
|
|
f8_local3 = true
|
|
end
|
|
local f8_local4 = Game.GetOmnvar( "ui_alien_chaos_combo_meter_end" )
|
|
local f8_local5 = (f8_local4 - f8_local0) / (f8_local4 - f3_local15)
|
|
if f8_local3 then
|
|
f8_local5 = (f8_local0 - f8_local1) / f0_local0
|
|
end
|
|
f3_local10:processEvent( {
|
|
name = "refresh_ticks",
|
|
ticksLit = math.ceil( LUI.clamp( f8_local5, 0, 1 ) * f3_local2 ),
|
|
frozen = f8_local3,
|
|
duration = f8_local4 - f3_local15
|
|
} )
|
|
local f8_local6 = LUI.clamp( (f8_local2 - f8_local0) / (f8_local2 - f8_local1), 0, 1 )
|
|
if not f8_local3 then
|
|
f8_local6 = 0
|
|
end
|
|
f3_local11:processEvent( {
|
|
name = "refresh_ice_cubes",
|
|
cubesLit = math.ceil( f8_local6 * f3_local5 )
|
|
} )
|
|
end )
|
|
return self
|
|
end
|
|
|
|
function chaos_combo_score()
|
|
local f9_local0 = 200
|
|
local f9_local1 = 15
|
|
local f9_local2 = 36
|
|
local f9_local3 = 1.5
|
|
local self = LUI.UIHorizontalList.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 24,
|
|
height = f9_local2,
|
|
left = 0,
|
|
right = 0,
|
|
alignment = LUI.Alignment.Center
|
|
} )
|
|
self.id = "chaos_combo_score"
|
|
local f9_local5 = LUI.UIText.new( CoD.ColorizeState( Colors.alien_tech_tree_bright_grey, {
|
|
font = CoD.TextSettings.ExtraBigFont.Font,
|
|
alignment = LUI.Alignment.Right,
|
|
topAnchor = false,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
left = 0,
|
|
bottom = 3,
|
|
width = f9_local0,
|
|
height = f9_local2,
|
|
scale = 0
|
|
} ) )
|
|
f9_local5:registerAnimationState( "pulse", CoD.ColorizeState( Colors.white, {
|
|
scale = 0.1
|
|
} ) )
|
|
f9_local5:registerAnimationState( "frozen", CoD.ColorizeState( Colors.alien_chaos_freeze, {
|
|
scale = 0
|
|
} ) )
|
|
f9_local5:setTextStyle( CoD.TextStyle.OutlinedMore )
|
|
f9_local5.id = "comboMultiplier"
|
|
self:addElement( f9_local5 )
|
|
local f9_local6 = 0
|
|
local f9_local7 = function ( f10_arg0, f10_arg1 )
|
|
local f10_local0 = MBh.AnimateSequence( {
|
|
{
|
|
"pulse",
|
|
50
|
|
},
|
|
{
|
|
f10_arg0.frozen and "frozen" or "default",
|
|
200
|
|
}
|
|
} )
|
|
f10_arg0:setText( f10_arg1.value .. "x" )
|
|
if f10_arg1.value > 0 then
|
|
f10_local0( f10_arg0, {} )
|
|
end
|
|
end
|
|
|
|
f9_local5:registerOmnvarHandler( "ui_alien_chaos_combo_counter", f9_local7 )
|
|
f9_local5:registerOmnvarHandler( "ui_alien_chaos_meter_freeze_start", function ( f11_arg0, f11_arg1 )
|
|
if f11_arg1.value > 0 then
|
|
f11_arg0:animateToState( "frozen", f0_local0 )
|
|
f11_arg0.frozen = true
|
|
else
|
|
f11_arg0:animateToState( "default", 100 )
|
|
f11_arg0.frozen = false
|
|
end
|
|
end )
|
|
f9_local7( f9_local5, {
|
|
value = Game.GetOmnvar( "ui_alien_chaos_combo_counter" )
|
|
} )
|
|
local f9_local8 = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
width = f9_local1
|
|
} )
|
|
f9_local8.id = "padding"
|
|
self:addElement( f9_local8 )
|
|
local f9_local9 = LUI.UIPrettyNumber.new( CoD.ColorizeState( Colors.alien_chaos_hilite, {
|
|
font = CoD.TextSettings.HudIW6NormalFont.Font,
|
|
alignment = LUI.Alignment.Left,
|
|
topAnchor = false,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
left = 0,
|
|
bottom = 0,
|
|
width = f9_local0,
|
|
height = CoD.TextSettings.HudIW6NormalFont.Height
|
|
} ), {
|
|
speed = 150,
|
|
initialValue = Game.GetOmnvar( "ui_alien_chaos_score_streak" )
|
|
} )
|
|
f9_local9:registerAnimationState( "frozen", CoD.ColorizeState( Colors.alien_chaos_freeze ) )
|
|
f9_local9:setTextStyle( CoD.TextStyle.OutlinedMore )
|
|
f9_local9.id = "comboPoints"
|
|
self:addElement( f9_local9 )
|
|
local f9_local10 = function ( f12_arg0, f12_arg1 )
|
|
assert( f9_local3 > 0 )
|
|
local f12_local0 = 0
|
|
if f12_arg0.getDisplayValue then
|
|
f12_local0 = f12_arg0:getDisplayValue()
|
|
end
|
|
f12_arg0:setSpeed( (f12_arg1.value - f12_local0) / f9_local3 )
|
|
f12_arg0:setValue( f12_arg1.value )
|
|
end
|
|
|
|
f9_local9:registerOmnvarHandler( "ui_alien_chaos_score_streak", f9_local10 )
|
|
f9_local9:registerOmnvarHandler( "ui_alien_chaos_meter_freeze_start", function ( f13_arg0, f13_arg1 )
|
|
if f13_arg1.value > 0 then
|
|
f13_arg0:animateToState( "frozen", f0_local0 )
|
|
else
|
|
f13_arg0:animateToState( "default", 100 )
|
|
end
|
|
end )
|
|
f9_local10( f9_local9, {
|
|
value = Game.GetOmnvar( "ui_alien_chaos_score_streak" )
|
|
} )
|
|
return self
|
|
end
|
|
|
|
function chaos_combo_meter()
|
|
local self = nil
|
|
if Engine.UsingSplitscreenUpscaling() then
|
|
self = LUI.UIElement.new( {
|
|
topAnchor = false,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
bottom = -60,
|
|
height = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
else
|
|
self = LUI.UIElement.new( {
|
|
topAnchor = false,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 50,
|
|
height = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
end
|
|
self.id = "chaos_combo_meter"
|
|
self:addElement( chaos_combo_gauge() )
|
|
self:addElement( chaos_combo_score() )
|
|
return self
|
|
end
|
|
|
|
function chaos_clock()
|
|
local f15_local0 = 256
|
|
local f15_local1 = 64
|
|
local f15_local2 = Game.GetOmnvar( "ui_alien_chaos_grace_period" )
|
|
local f15_local3 = {
|
|
{
|
|
time = 30000,
|
|
alias = "ui_mp_suitcasebomb_timer"
|
|
},
|
|
{
|
|
time = 20000,
|
|
alias = "ui_mp_suitcasebomb_timer"
|
|
},
|
|
{
|
|
time = 10000,
|
|
alias = "ui_mp_timer_countdown"
|
|
},
|
|
{
|
|
time = 9000,
|
|
alias = "ui_mp_timer_countdown"
|
|
},
|
|
{
|
|
time = 8000,
|
|
alias = "ui_mp_timer_countdown"
|
|
},
|
|
{
|
|
time = 7000,
|
|
alias = "ui_mp_timer_countdown"
|
|
},
|
|
{
|
|
time = 6000,
|
|
alias = "ui_mp_timer_countdown"
|
|
},
|
|
{
|
|
time = 5000,
|
|
alias = "ui_mp_timer_countdown"
|
|
},
|
|
{
|
|
time = 4000,
|
|
alias = "ui_mp_timer_countdown"
|
|
},
|
|
{
|
|
time = 3000,
|
|
alias = "ui_mp_timer_countdown"
|
|
},
|
|
{
|
|
time = 2000,
|
|
alias = "ui_mp_timer_countdown"
|
|
},
|
|
{
|
|
time = 1000,
|
|
alias = "ui_mp_timer_countdown"
|
|
}
|
|
}
|
|
local self = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
self.id = "chaos_clock"
|
|
local f15_local5 = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = false,
|
|
bottom = 0,
|
|
height = f15_local1,
|
|
left = -f15_local0 / 2,
|
|
right = f15_local0 / 2,
|
|
alpha = 0
|
|
} )
|
|
f15_local5:registerAnimationState( "visible", {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
height = f15_local1,
|
|
left = -f15_local0 / 2,
|
|
right = f15_local0 / 2,
|
|
alpha = 1
|
|
} )
|
|
f15_local5:registerAnimationState( "animating", {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = false,
|
|
top = 20,
|
|
height = f15_local1,
|
|
left = -f15_local0 / 2,
|
|
right = f15_local0 / 2,
|
|
alpha = 1
|
|
} )
|
|
f15_local5.id = "chaos_clock"
|
|
local f15_local6 = function ( f16_arg0, f16_arg1 )
|
|
local f16_local0 = nil
|
|
if 0 < f16_arg1 then
|
|
f16_local0 = MBh.AnimateSequence( {
|
|
{
|
|
"animating",
|
|
100
|
|
},
|
|
{
|
|
"visible",
|
|
150
|
|
}
|
|
} )
|
|
else
|
|
f16_local0 = MBh.AnimateSequence( {
|
|
{
|
|
"animating",
|
|
150
|
|
},
|
|
{
|
|
"default",
|
|
100
|
|
}
|
|
} )
|
|
end
|
|
f16_local0( f16_arg0, {} )
|
|
end
|
|
|
|
f15_local5:registerOmnvarHandler( "ui_alien_chaos_grace_period", function ( f17_arg0, f17_arg1 )
|
|
f15_local6( f17_arg0, f17_arg1.value )
|
|
end )
|
|
if f15_local2 > 0 then
|
|
f15_local6( f15_local5, f15_local2 )
|
|
end
|
|
local f15_local7 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "hud_box_combo_time" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
f15_local7.id = "background"
|
|
f15_local5:addElement( f15_local7 )
|
|
local f15_local8 = LUI.UICountdown.new()
|
|
f15_local8:registerAnimationState( "default", {
|
|
font = CoD.TextSettings.ExtraBigFont.Font,
|
|
alignment = LUI.Alignment.center,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
left = 0,
|
|
top = 15.5,
|
|
right = 0,
|
|
height = CoD.TextSettings.ExtraBigFont.Height,
|
|
red = 1,
|
|
green = 1,
|
|
blue = 1,
|
|
alpha = 1
|
|
} )
|
|
f15_local8:animateToState( "default" )
|
|
f15_local8.id = "value"
|
|
f15_local8.isPulsing = false
|
|
f15_local8:setTextStyle( CoD.TextStyle.Outlined )
|
|
f15_local8:setEndTime( f15_local2 )
|
|
f15_local8:registerOmnvarHandler( "ui_alien_chaos_grace_period", function ( f18_arg0, f18_arg1 )
|
|
f18_arg0:setEndTime( f18_arg1.value )
|
|
f18_arg0:animateToState( "default" )
|
|
f18_arg0.currentBeepIndex = 1
|
|
f18_arg0.isPulsing = false
|
|
end )
|
|
f15_local8:registerAnimationState( "pulse", {
|
|
red = 1,
|
|
blue = 0,
|
|
green = 0,
|
|
alpha = 1
|
|
} )
|
|
f15_local5:addElement( f15_local8 )
|
|
f15_local8.currentBeepIndex = 1
|
|
f15_local8:registerEventHandler( "timer_pulse_check", function ( element, event )
|
|
local f19_local0 = Game.GetTime()
|
|
local f19_local1 = Game.GetOmnvar( "ui_alien_chaos_grace_period" )
|
|
local f19_local2 = false
|
|
if element.currentBeepIndex <= #f15_local3 and f19_local1 - f19_local0 <= f15_local3[element.currentBeepIndex].time and f19_local1 > 0 then
|
|
Engine.PlaySound( f15_local3[element.currentBeepIndex].alias )
|
|
f19_local2 = true
|
|
element.currentBeepIndex = element.currentBeepIndex + 1
|
|
end
|
|
if not element.isPulsing == true then
|
|
if f19_local2 == true then
|
|
local f19_local3 = MBh.AnimateSequence( {
|
|
{
|
|
"pulse",
|
|
0
|
|
},
|
|
{
|
|
"pulse",
|
|
450
|
|
},
|
|
{
|
|
"default",
|
|
0
|
|
},
|
|
{
|
|
"default",
|
|
450
|
|
}
|
|
} )
|
|
f19_local3( element )
|
|
element:registerEventHandlerIfFree( LUI.FormatAnimStateFinishEvent( "default" ), function ( f20_arg0, f20_arg1 )
|
|
f20_arg0.isPulsing = false
|
|
f19_local2 = false
|
|
end )
|
|
end
|
|
elseif element.isPulsing == true and f19_local2 == false then
|
|
element:animateToState( "default" )
|
|
element.isPulsing = false
|
|
end
|
|
end )
|
|
local f15_local9 = LUI.UITimer.new( 50, "timer_pulse_check" )
|
|
f15_local9.id = "pulseTimer"
|
|
f15_local8:addElement( f15_local9 )
|
|
self:addElement( f15_local5 )
|
|
return self
|
|
end
|
|
|
|
ChaosPerksLUT = {
|
|
file = "mp/alien/chaos_perks.csv",
|
|
index = 2,
|
|
icon = 3
|
|
}
|
|
function CountChaosPerks()
|
|
local f21_local0 = 32
|
|
for f21_local1 = 1, f21_local0, 1 do
|
|
if Engine.TableLookup( ChaosPerksLUT.file, ChaosPerksLUT.index, tostring( f21_local1 ), 0 ) == "" then
|
|
return f21_local1 - 1
|
|
end
|
|
end
|
|
return f21_local0
|
|
end
|
|
|
|
function GetChaosPerksIcon( f22_arg0 )
|
|
return Engine.TableLookup( ChaosPerksLUT.file, ChaosPerksLUT.index, tostring( f22_arg0 ), ChaosPerksLUT.icon )
|
|
end
|
|
|
|
function chaos_perks()
|
|
local f23_local0 = 8
|
|
local f23_local1 = 36
|
|
local f23_local2 = 8
|
|
local f23_local3 = CountChaosPerks()
|
|
local f23_local4 = f23_local0 * f23_local1 + f23_local2 * (2 + math.max( 0, f23_local3 - 1 ))
|
|
local f23_local5 = math.ceil( f23_local3 / f23_local0 ) * f23_local1 + f23_local2 * (2 + math.max( 0, f23_local3 - 1 ))
|
|
local f23_local6 = 60
|
|
local self = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
bottom = f23_local5,
|
|
left = 0,
|
|
width = f23_local4
|
|
} )
|
|
self.id = "chaos_perks"
|
|
self.perkElements = {}
|
|
local f23_local8 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "alien_health_bg_shadow" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = -f23_local6,
|
|
bottom = 0,
|
|
left = -f23_local6,
|
|
right = f23_local6,
|
|
alpha = 0.8
|
|
} )
|
|
f23_local8.id = "background"
|
|
self:addElement( f23_local8 )
|
|
local f23_local9 = LUI.UIGrid.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = f23_local2,
|
|
bottom = -f23_local2,
|
|
left = f23_local2,
|
|
right = -f23_local2
|
|
}, {
|
|
elementsPerRow = f23_local0,
|
|
rowHeight = f23_local1,
|
|
hSpacing = f23_local2,
|
|
vSpacing = f23_local2
|
|
} )
|
|
f23_local9.id = "grid"
|
|
self:addElement( f23_local9 )
|
|
for f23_local10 = 1, f23_local3, 1 do
|
|
local f23_local13 = f23_local10
|
|
local f23_local14 = GetChaosPerksIcon( f23_local13 )
|
|
local f23_local15 = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
bottom = f23_local1,
|
|
left = 0,
|
|
right = f23_local1,
|
|
scale = 0
|
|
} )
|
|
f23_local15:registerAnimationState( "smaller", {
|
|
scale = -0.2
|
|
} )
|
|
f23_local15:registerAnimationState( "bigger", {
|
|
scale = 0.2
|
|
} )
|
|
f23_local15.id = "perk_" .. f23_local13
|
|
f23_local9:addElement( f23_local15 )
|
|
self.perkElements[f23_local13] = f23_local15
|
|
local f23_local16 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "hud_box_combo_perk" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0,
|
|
alpha = 0.1
|
|
} )
|
|
f23_local16:registerAnimationState( "active", {
|
|
alpha = 0.8
|
|
} )
|
|
f23_local16.id = "perkBG"
|
|
f23_local15:addElement( f23_local16 )
|
|
local f23_local17 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( f23_local14 ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0,
|
|
alpha = 0.2
|
|
} )
|
|
f23_local17:registerAnimationState( "active", {
|
|
alpha = 1
|
|
} )
|
|
f23_local17.id = "perkIcon"
|
|
f23_local15:addElement( f23_local17 )
|
|
f23_local15.bg = f23_local16
|
|
f23_local15.icon = f23_local17
|
|
f23_local15:registerEventHandler( "activate", function ( element, event )
|
|
if not element.active then
|
|
local f24_local0 = MBh.AnimateSequence( {
|
|
{
|
|
"default",
|
|
0
|
|
},
|
|
{
|
|
"smaller",
|
|
250
|
|
},
|
|
{
|
|
"bigger",
|
|
100
|
|
},
|
|
{
|
|
"default",
|
|
150
|
|
}
|
|
} )
|
|
local f24_local1 = MBh.AnimateSequence( {
|
|
{
|
|
"default",
|
|
0
|
|
},
|
|
{
|
|
"active",
|
|
100
|
|
}
|
|
} )
|
|
local f24_local2 = MBh.AnimateSequence( {
|
|
{
|
|
"default",
|
|
0
|
|
},
|
|
{
|
|
"active",
|
|
100
|
|
}
|
|
} )
|
|
f24_local0( element, {} )
|
|
f24_local1( element.bg, {} )
|
|
f24_local2( element.icon, {} )
|
|
element.active = true
|
|
end
|
|
end )
|
|
f23_local15:registerEventHandler( "deactivate", function ( element, event )
|
|
if element.active then
|
|
local f25_local0 = 80 * (f23_local3 - f23_local13)
|
|
local f25_local1 = MBh.AnimateSequence( {
|
|
{
|
|
"default",
|
|
f25_local0
|
|
},
|
|
{
|
|
"bigger",
|
|
250
|
|
},
|
|
{
|
|
"smaller",
|
|
100
|
|
},
|
|
{
|
|
"default",
|
|
150
|
|
}
|
|
} )
|
|
f25_local1( element, {} )
|
|
f25_local1 = MBh.AnimateSequence( {
|
|
{
|
|
"active",
|
|
f25_local0
|
|
},
|
|
{
|
|
"default",
|
|
200
|
|
}
|
|
} )
|
|
f25_local1( element.bg, {} )
|
|
f25_local1 = MBh.AnimateSequence( {
|
|
{
|
|
"active",
|
|
f25_local0
|
|
},
|
|
{
|
|
"default",
|
|
200
|
|
}
|
|
} )
|
|
f25_local1( element.icon, {} )
|
|
element.active = nil
|
|
end
|
|
end )
|
|
end
|
|
self:registerOmnvarHandler( "ui_chaos_perk", function ( f26_arg0, f26_arg1 )
|
|
if f26_arg1.value == 0 then
|
|
f23_local9:processEvent( {
|
|
name = "deactivate"
|
|
} )
|
|
end
|
|
end )
|
|
self.getPerkElement = function ( f27_arg0, f27_arg1 )
|
|
return f27_arg0.perkElements[f27_arg1]
|
|
end
|
|
|
|
local f23_local10 = Game.GetOmnvar( "ui_chaos_perk" )
|
|
if f23_local10 > 0 then
|
|
for f23_local11 = 1, f23_local10, 1 do
|
|
local f23_local15 = self:getPerkElement( f23_local11 )
|
|
if f23_local15 then
|
|
f23_local15:processEvent( {
|
|
name = "activate"
|
|
} )
|
|
end
|
|
end
|
|
end
|
|
return self
|
|
end
|
|
|
|
f0_local1 = 2000
|
|
function chaos_perk_unlock_one( f28_arg0, f28_arg1 )
|
|
assert( f28_arg1 )
|
|
local f28_local0 = 48
|
|
local f28_local1 = f28_arg0:getPerkElement( f28_arg1 )
|
|
local self = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
height = f28_local0,
|
|
left = -80 - f28_local0 / 2,
|
|
width = f28_local0,
|
|
scale = 0,
|
|
alpha = 1
|
|
} )
|
|
self:registerAnimationState( "centered", {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
height = f28_local0,
|
|
left = -f28_local0 / 2,
|
|
width = f28_local0
|
|
} )
|
|
self:registerAnimationState( "wait", {} )
|
|
self:registerAnimationState( "hidden", {
|
|
alpha = 0
|
|
} )
|
|
self.id = "chaos_perk_unlock_one_" .. f28_arg1
|
|
local f28_local3 = MBh.AnimateSequence( {
|
|
{
|
|
"default",
|
|
0
|
|
},
|
|
{
|
|
"centered",
|
|
400
|
|
},
|
|
{
|
|
"wait",
|
|
f0_local1
|
|
}
|
|
} )
|
|
self:registerEventHandler( LUI.FormatAnimStateFinishEvent( "wait" ), function ( element, event )
|
|
self:registerAnimationState( "flyover", LUI.MakeFlyOverAnimationState( element, f28_local1 ) )
|
|
element:animateToState( "flyover", 400 )
|
|
end )
|
|
self:registerEventHandler( LUI.FormatAnimStateFinishEvent( "flyover" ), function ( element, event )
|
|
element:animateToState( "hidden", 200 )
|
|
f28_local1:processEvent( {
|
|
name = "activate"
|
|
} )
|
|
end )
|
|
self:registerEventHandler( LUI.FormatAnimStateFinishEvent( "hidden" ), function ( element, event )
|
|
element:close()
|
|
end )
|
|
f28_local3( self, {} )
|
|
local f28_local4 = LUI.UIElement.new( {
|
|
topAnchor = false,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
bottom = 1,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
f28_local4:registerAnimationState( "horizontal", {
|
|
topAnchor = false,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 1,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
f28_local4:registerAnimationState( "full", {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
f28_local4.id = "stencil"
|
|
f28_local4:setUseStencil( true )
|
|
self:addElement( f28_local4 )
|
|
local f28_local5 = MBh.AnimateSequence( {
|
|
{
|
|
"default",
|
|
0
|
|
},
|
|
{
|
|
"horizontal",
|
|
100,
|
|
false,
|
|
false
|
|
},
|
|
{
|
|
"horizontal",
|
|
100,
|
|
false,
|
|
true
|
|
},
|
|
{
|
|
"full",
|
|
150
|
|
}
|
|
} )
|
|
f28_local5( f28_local4, {} )
|
|
f28_local5 = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
bottom = 0,
|
|
top = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
f28_local5.id = "icon"
|
|
f28_local4:addElement( f28_local5 )
|
|
local f28_local6 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( "hud_box_combo_perk" ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0,
|
|
alpha = 0.8
|
|
} )
|
|
f28_local6.id = "perkBG"
|
|
f28_local5:addElement( f28_local6 )
|
|
local f28_local7 = LUI.UIImage.new( {
|
|
material = RegisterMaterial( GetChaosPerksIcon( f28_arg1 ) ),
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
f28_local7.id = "perkIcon"
|
|
f28_local5:addElement( f28_local7 )
|
|
return self
|
|
end
|
|
|
|
function chaos_perk_unlock( f32_arg0, f32_arg1 )
|
|
assert( f32_arg1.perksWidget )
|
|
local f32_local0 = {}
|
|
local f32_local1 = 16
|
|
local self = LUI.UIElement.new( {
|
|
topAnchor = false,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 114,
|
|
height = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
self.id = "chaos_perk_unlock"
|
|
self.lastUnlockTime = 0
|
|
self:registerOmnvarHandler( "ui_chaos_perk", function ( f33_arg0, f33_arg1 )
|
|
if f33_arg1.value > 0 and #f32_local0 < f32_local1 then
|
|
table.insert( f32_local0, f33_arg1.value )
|
|
end
|
|
end )
|
|
self:registerEventHandler( "refresh_unlock_perk", function ( element, event )
|
|
local f34_local0 = Game.GetTime()
|
|
if #f32_local0 > 0 and f0_local1 + 400 < f34_local0 - element.lastUnlockTime then
|
|
local f34_local1 = chaos_perk_unlock_one( f32_arg1.perksWidget, f32_local0[1] )
|
|
table.remove( f32_local0, 1 )
|
|
element:addElement( f34_local1 )
|
|
element.lastUnlockTime = f34_local0
|
|
Engine.PlaySound( "mp_intel_success" )
|
|
end
|
|
end )
|
|
local f32_local3 = LUI.UITimer.new( 100, "refresh_unlock_perk" )
|
|
f32_local3.id = "refreshTimer"
|
|
self:addElement( f32_local3 )
|
|
return self
|
|
end
|
|
|
|
maxVisibleChaosLogEvents = 5
|
|
ChaosEventLUT = {
|
|
file = "mp/alien/chaos_events.csv",
|
|
size = 256,
|
|
index = 2,
|
|
text = 3,
|
|
points = 5,
|
|
mp_alien_town = 6,
|
|
mp_alien_armory = 7,
|
|
mp_alien_beacon = 8,
|
|
mp_alien_dlc3 = 9,
|
|
mp_alien_last = 10
|
|
}
|
|
function GetChaosEventInfo( f35_arg0 )
|
|
return Engine.Localize( Engine.TableLookup( ChaosEventLUT.file, ChaosEventLUT.index, tostring( f35_arg0 ), ChaosEventLUT.text ) ), Engine.TableLookup( ChaosEventLUT.file, ChaosEventLUT.index, tostring( f35_arg0 ), ChaosEventLUT.points )
|
|
end
|
|
|
|
function ChaosEventFactory( f36_arg0, f36_arg1 )
|
|
local f36_local0 = 12000
|
|
local f36_local1, f36_local2 = GetChaosEventInfo( f36_arg0 )
|
|
local self = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 1,
|
|
left = -80,
|
|
right = -80,
|
|
alpha = 0
|
|
} )
|
|
self:registerAnimationState( "opening", {
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
height = 20,
|
|
left = 0,
|
|
right = 0,
|
|
scale = 0.05,
|
|
alpha = 1
|
|
} )
|
|
self:registerAnimationState( "visible", {
|
|
scale = 0,
|
|
alpha = 1
|
|
} )
|
|
self:registerAnimationState( "closed", {
|
|
alpha = 0
|
|
} )
|
|
self:setUseStencil( true )
|
|
self.id = "event_" .. f36_arg1
|
|
local f36_local4 = CoD.TextSettings.SmallFont
|
|
local f36_local5, f36_local6, f36_local7, f36_local8 = GetTextDimensions( f36_local1, f36_local4.Font, f36_local4.Height )
|
|
local f36_local9 = f36_local7 - f36_local5
|
|
local f36_local10 = LUI.UIText.new( {
|
|
alignment = LUI.Alignment.Left,
|
|
font = f36_local4.Font,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
width = f36_local9,
|
|
top = 0,
|
|
right = 0,
|
|
height = f36_local4.Height
|
|
} )
|
|
f36_local10.id = "eventText"
|
|
f36_local10:setText( f36_local1 )
|
|
self:addElement( f36_local10 )
|
|
local f36_local11 = LUI.UIText.new( CoD.ColorizeState( Colors.alien_chaos_hilite, {
|
|
alignment = LUI.Alignment.Right,
|
|
font = CoD.TextSettings.SmallFont.Font,
|
|
topAnchor = true,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
right = -f36_local9 - 10,
|
|
top = 0,
|
|
width = 60,
|
|
height = CoD.TextSettings.SmallFont.Height
|
|
} ) )
|
|
f36_local11.id = "eventPoints"
|
|
f36_local11:setText( f36_local2 )
|
|
self:addElement( f36_local11 )
|
|
local f36_local12 = MBh.AnimateSequence( {
|
|
{
|
|
"opening",
|
|
100
|
|
},
|
|
{
|
|
"visible",
|
|
150
|
|
}
|
|
} )
|
|
f36_local12( self, {} )
|
|
self:registerEventHandler( "close", function ( element, event )
|
|
if element.closing then
|
|
return
|
|
else
|
|
element.closing = true
|
|
element:animateToState( "closed", 250 )
|
|
end
|
|
end )
|
|
self:registerEventHandler( LUI.FormatAnimStateFinishEvent( "closed" ), self.close )
|
|
self:registerEventHandler( "new_log_event", function ( element, event )
|
|
if element.closing then
|
|
return
|
|
else
|
|
element.timesPushed = element.timesPushed and element.timesPushed + 1 or 1
|
|
element:registerAnimationState( "target", {
|
|
scale = 0,
|
|
alpha = LUI.clamp( 1 - element.timesPushed / math.max( 1, maxVisibleChaosLogEvents ), 0, 1 )
|
|
} )
|
|
element:animateToState( "target", 100 )
|
|
end
|
|
end )
|
|
f36_local12 = LUI.UITimer.new( f36_local0, "close", nil, true )
|
|
f36_local12.id = "expirationTimer"
|
|
self:addElement( f36_local12 )
|
|
return self
|
|
end
|
|
|
|
function chaos_event_log()
|
|
local f39_local0 = 0
|
|
local self = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
top = 60,
|
|
bottom = 0,
|
|
width = 300,
|
|
right = 0
|
|
} )
|
|
self.id = "chaos_event_log"
|
|
local f39_local2 = LUI.UIVerticalList.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0
|
|
} )
|
|
f39_local2.id = "vlist"
|
|
self:addElement( f39_local2 )
|
|
local f39_local3 = function ()
|
|
local f40_local0 = 0
|
|
local f40_local1 = f39_local2:getFirstChild()
|
|
while f40_local1 do
|
|
if not f40_local1.closing then
|
|
f40_local0 = f40_local0 + 1
|
|
end
|
|
f40_local1 = f40_local1:getNextSibling()
|
|
end
|
|
return f40_local0
|
|
end
|
|
|
|
local f39_local4 = function ( f41_arg0 )
|
|
f39_local0 = f39_local0 + 1
|
|
f39_local2:processEvent( {
|
|
name = "new_log_event"
|
|
} )
|
|
local f41_local0 = ChaosEventFactory( f41_arg0, f39_local0 )
|
|
f41_local0:setPriority( -f39_local0 )
|
|
f39_local2:addElement( f41_local0 )
|
|
if f39_local3() > maxVisibleChaosLogEvents then
|
|
local f41_local1 = f39_local2:getLastChild()
|
|
f41_local1:processEvent( {
|
|
name = "close"
|
|
} )
|
|
end
|
|
end
|
|
|
|
self:registerOmnvarHandler( "ui_chaos_event", function ( f42_arg0, f42_arg1 )
|
|
f39_local4( f42_arg1.value )
|
|
end )
|
|
self:registerEventHandler( "fake_event", function ()
|
|
f39_local4( 1 + math.floor( 8 * math.random() ) )
|
|
end )
|
|
return self
|
|
end
|
|
|
|
function chaos_event_recap()
|
|
local f44_local0 = LUI.mp_hud.AlienScoreboards
|
|
local self = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0,
|
|
scale = Engine.UsingSplitscreenUpscaling() and -0.25 or 0
|
|
} )
|
|
self.id = "chaos_event_recap"
|
|
local f44_local2 = f44_local0.table_factory( 21, {
|
|
80,
|
|
350,
|
|
80
|
|
}, 4, LUI.Alignment.Middle )
|
|
f44_local2:registerAnimationState( "default", {
|
|
topAnchor = false,
|
|
bottomAnchor = false,
|
|
leftAnchor = false,
|
|
rightAnchor = false,
|
|
top = 0,
|
|
left = -255,
|
|
width = 510,
|
|
bottom = 0
|
|
} )
|
|
f44_local2:animateToState( "default" )
|
|
self:addElement( f44_local2 )
|
|
f44_local2.addHeader( Engine.Localize( "ALIEN_CHAOS_RECAP_TITLE" ) )
|
|
local f44_local3 = {
|
|
r = Colors.alien_tech_tree_bright_grey.r,
|
|
g = Colors.alien_tech_tree_bright_grey.g,
|
|
b = Colors.alien_tech_tree_bright_grey.b,
|
|
a = 1
|
|
}
|
|
f44_local2.addRow( f44_local0.bgPalette.Dark, {
|
|
{
|
|
text = Engine.Localize( "ALIEN_CHAOS_RECAP_VALUE" ),
|
|
color = f44_local3,
|
|
align = LUI.Alignment.Left
|
|
},
|
|
{
|
|
text = Engine.Localize( "ALIEN_CHAOS_RECAP_EVENT" ),
|
|
color = f44_local3,
|
|
align = LUI.Alignment.Center
|
|
},
|
|
{
|
|
text = Engine.Localize( "ALIEN_CHAOS_RECAP_COUNT" ),
|
|
color = f44_local3,
|
|
align = LUI.Alignment.Left
|
|
}
|
|
}, false )
|
|
local f44_local4 = 0
|
|
local f44_local5 = Engine.GetDvarString( "ui_mapname" )
|
|
repeat
|
|
if Engine.TableLookupByRow( ChaosEventLUT.file, f44_local4, 0 ) == "" then
|
|
break
|
|
else
|
|
local f44_local6 = Engine.TableLookupByRow( ChaosEventLUT.file, f44_local4, ChaosEventLUT.index )
|
|
local f44_local7 = true
|
|
if ChaosEventLUT[f44_local5] then
|
|
f44_local7 = tonumber( Engine.TableLookupByRow( ChaosEventLUT.file, f44_local4, ChaosEventLUT[f44_local5] ) ) == 1
|
|
end
|
|
if f44_local6 and tonumber( f44_local6 ) and tonumber( f44_local6 ) > 0 and f44_local7 then
|
|
local f44_local8 = Game.GetOmnvar( "ui_alien_eog_score_row_" .. f44_local6 )
|
|
if f44_local8 then
|
|
local f44_local9, f44_local10 = GetChaosEventInfo( f44_local6 )
|
|
f44_local2.addRow( f44_local0.bgPalette.Dark, {
|
|
{
|
|
text = f44_local10,
|
|
color = Colors.alien_scoreboard_dull_grey,
|
|
align = LUI.Alignment.Right
|
|
},
|
|
{
|
|
text = f44_local9,
|
|
color = Colors.alien_scoreboard_dull_grey,
|
|
align = LUI.Alignment.Left
|
|
},
|
|
{
|
|
text = f44_local8,
|
|
color = Colors.alien_chaos_hilite,
|
|
align = LUI.Alignment.Left,
|
|
pretty = {
|
|
initialValue = 0,
|
|
speed = math.max( 40, f44_local10 / 3 )
|
|
}
|
|
}
|
|
}, 40 )
|
|
end
|
|
end
|
|
f44_local4 = f44_local4 + 1
|
|
end
|
|
until f44_local4 >= ChaosEventLUT.size
|
|
return self
|
|
end
|
|
|
|
function quick_shop_freeze_item()
|
|
local self = LUI.UIElement.new( {
|
|
topAnchor = true,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = 0,
|
|
bottom = 0,
|
|
left = 0,
|
|
right = 0,
|
|
alpha = 0
|
|
} )
|
|
self:registerAnimationState( "visible", {
|
|
alpha = 1
|
|
} )
|
|
self.id = "element"
|
|
local f45_local1 = function ( f46_arg0, f46_arg1 )
|
|
local f46_local0 = f46_arg0
|
|
local f46_local1 = f46_arg0.animateToState
|
|
local f46_local2
|
|
if f46_arg1 then
|
|
f46_local2 = "visible"
|
|
if not f46_local2 then
|
|
|
|
else
|
|
f46_local1( f46_local0, f46_local2, 100 )
|
|
end
|
|
end
|
|
f46_local2 = "default"
|
|
end
|
|
|
|
self:registerOmnvarHandler( "ui_alien_chaos_has_meter_freeze", function ( f47_arg0, f47_arg1 )
|
|
f45_local1( f47_arg0, f47_arg1.value )
|
|
end )
|
|
f45_local1( self, Game.GetOmnvar( "ui_alien_chaos_has_meter_freeze" ) )
|
|
self:addElement( LUI.mp_hud.AlienHud.quick_shop_item( LUI.Alignment.Bottom, nil, function ()
|
|
return "alien_dpad_icon_freeze"
|
|
end ) )
|
|
return self
|
|
end
|
|
|
|
function chaos_class_skill_item()
|
|
local f49_local0 = 40
|
|
local f49_local1 = 8
|
|
local self = LUI.UIElement.new( {
|
|
topAnchor = false,
|
|
bottomAnchor = true,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
top = -210,
|
|
bottom = -170,
|
|
left = -100,
|
|
right = -60,
|
|
alpha = 1
|
|
} )
|
|
self.id = "chaos_class_skill_item"
|
|
local f49_local3 = LUI.UIImage.new()
|
|
f49_local3.id = "arrow"
|
|
f49_local3:registerAnimationState( "default", {
|
|
material = RegisterMaterial( "alien_dpad_arrow_up" ),
|
|
topAnchor = false,
|
|
bottomAnchor = true,
|
|
leftAnchor = false,
|
|
rightAnchor = true,
|
|
top = -9,
|
|
left = -30,
|
|
width = 21,
|
|
height = 11,
|
|
red = 1,
|
|
green = 1,
|
|
blue = 1,
|
|
alpha = 0
|
|
} )
|
|
f49_local3:registerAnimationState( "enabled", CoD.ColorizeState( Colors.white, {
|
|
alpha = 0.8
|
|
} ) )
|
|
f49_local3:animateToState( "default" )
|
|
f49_local3:registerOmnvarHandler( "ui_alien_chaos_class_skill_bonus", function ( f50_arg0, f50_arg1 )
|
|
if f50_arg1.value == 0 then
|
|
f50_arg0:animateToState( "default" )
|
|
else
|
|
f50_arg0:animateToState( "enabled" )
|
|
end
|
|
end )
|
|
local f49_local4 = LUI.UIImage.new( {
|
|
topAnchor = false,
|
|
bottomAnchor = true,
|
|
leftAnchor = true,
|
|
rightAnchor = true,
|
|
top = -50,
|
|
bottom = -10,
|
|
left = 0,
|
|
right = 0,
|
|
alpha = 1
|
|
} )
|
|
f49_local4:registerAnimationState( "hidden", {
|
|
material = RegisterMaterial( "white" ),
|
|
alpha = 0
|
|
} )
|
|
f49_local4:registerAnimationState( "specialist", {
|
|
material = RegisterMaterial( "hud_alien_ammo_infinite" ),
|
|
alpha = 1
|
|
} )
|
|
f49_local4:registerAnimationState( "tank", {
|
|
material = RegisterMaterial( "alien_icon_tank" ),
|
|
alpha = 1
|
|
} )
|
|
f49_local4:registerAnimationState( "engineer", {
|
|
material = RegisterMaterial( "alien_icon_engineer" ),
|
|
alpha = 1
|
|
} )
|
|
f49_local4:registerAnimationState( "medic", {
|
|
material = RegisterMaterial( "alien_icon_medic" ),
|
|
alpha = 1
|
|
} )
|
|
f49_local4:animateToState( "hidden" )
|
|
f49_local4:registerOmnvarHandler( "ui_alien_chaos_class_skill_bonus", function ( f51_arg0, f51_arg1 )
|
|
if f51_arg1.value == 0 then
|
|
f51_arg0:animateToState( "hidden" )
|
|
elseif f51_arg1.value == 1 then
|
|
f51_arg0:animateToState( "specialist" )
|
|
elseif f51_arg1.value == 2 then
|
|
f51_arg0:animateToState( "tank" )
|
|
elseif f51_arg1.value == 3 then
|
|
f51_arg0:animateToState( "engineer" )
|
|
elseif f51_arg1.value == 4 then
|
|
f51_arg0:animateToState( "medic" )
|
|
end
|
|
end )
|
|
self:addElement( f49_local4 )
|
|
self:addElement( f49_local3 )
|
|
return self
|
|
end
|
|
|
|
LUI.MenuBuilder.registerType( "chaos_main_score", chaos_main_score )
|
|
LUI.MenuBuilder.registerType( "chaos_combo_meter", chaos_combo_meter )
|
|
LUI.MenuBuilder.registerType( "chaos_clock", chaos_clock )
|
|
LUI.MenuBuilder.registerType( "chaos_perks", chaos_perks )
|
|
LUI.MenuBuilder.registerType( "chaos_perk_unlock", chaos_perk_unlock )
|
|
LUI.MenuBuilder.registerType( "chaos_event_log", chaos_event_log )
|
|
LUI.MenuBuilder.registerType( "chaos_event_recap", chaos_event_recap )
|
|
LUI.MenuBuilder.registerType( "quick_shop_freeze_item", quick_shop_freeze_item )
|
|
LUI.MenuBuilder.registerType( "chaos_class_skill_item", chaos_class_skill_item )
|
|
LockTable( _M )
|