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

924 lines
31 KiB
Lua

LUI.UISquadMemberWindow = InheritFrom( LUI.UIElement )
LUI.UISquadMemberWindow.build = function ( f1_arg0, f1_arg1 )
return LUI.UISquadMemberWindow.new( f1_arg1 )
end
LUI.UISquadMemberWindow.new = function ( f2_arg0 )
local self = LUI.UIElement.new()
self.id = "UISquadMemberWindow"
self.setDisplayName = LUI.UISquadMemberWindow.SetDisplayName
self.setPrestigeIcon = LUI.UISquadMemberWindow.SetPrestigeIcon
self.moveTo = LUI.UISquadMemberWindow.MoveTo
self.setCharacterAnim = LUI.UISquadMemberWindow.SetAnimation
self.setBackground = LUI.UISquadMemberWindow.SetBackground
self.updateSquadMember = LUI.UISquadMemberWindow.UpdateSavedCharacterWindow
self.updateCharacter = LUI.UISquadMemberWindow.UpdateCharacterWindow
assert( f2_arg0, "UISquadMemberWindow requires a properties table. At the very least, you must specify char_window_dims, uv_values, and character_pos" )
if not f2_arg0 then
f2_arg0 = {
char_window_dims = {
top = 0,
bottom = 0,
left = 0,
right = 0
}
}
end
self.squadMemberIndex = f2_arg0.squad_member_index
self.loadoutSlot = f2_arg0.loadout_slot
local f2_local1 = f2_arg0.squad_location
if not f2_local1 then
DebugPrint( "WARNING: Using UISquadMemberWindow without specifying squad_location. Defaulting to privateMatchSquadMembers" )
f2_local1 = "privateMatchSquadMembers"
end
self.squadLocation = f2_local1
local f2_local2 = f2_arg0.controller
if not f2_local2 then
DebugPrint( "WARNING: Using UISquadMemberWindow without specifying controller. Defaulting to first active controller" )
f2_local2 = Engine.GetFirstActiveController()
end
self.controller = f2_local2
if f2_arg0.use_background then
local charWindow = f2_arg0.mask_pos_data
if not charWindow then
charWindow = {
left = 0,
top = 0,
right = 0,
bottom = 0
}
end
local f2_local4 = f2_arg0.mask_dims_data
if not f2_local4 then
f2_local4 = {
width = 512,
height = 512
}
end
self.background_mask = LUI.UIImage.new( {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = charWindow.top,
left = charWindow.left,
width = f2_local4.width,
height = f2_local4.height,
material = RegisterMaterial( "img_bg_alpha_stencil" ),
alpha = 1
} )
self.background_mask:setUseStencil( true )
self.background_mask.id = "member_window_background_mask_id"
self:addElement( self.background_mask )
local f2_local5 = f2_arg0.bg_anchor_data
if not f2_local5 then
f2_local5 = {
left = true,
top = true,
right = true,
bottom = true
}
end
local f2_local6 = f2_arg0.bg_pos_data
if not f2_local6 then
f2_local6 = {
left = 1,
top = 1,
right = -1,
bottom = -1
}
end
self.background = LUI.UIImage.new( {
left = f2_local6.left,
top = f2_local6.top,
right = f2_local6.right,
bottom = f2_local6.bottom,
leftAnchor = f2_local5.left,
topAnchor = f2_local5.top,
rightAnchor = f2_local5.right,
bottomAnchor = f2_local5.bottom,
alpha = 1
} )
self.background.id = "member_window_background_id"
self.background:registerAnimationState( "hidden", {
alpha = 0
} )
self.background:animateToState( "hidden", 0 )
self.background:registerEventHandler( "update_character_bg", function ( element, event )
if event.material then
element:setImage( event.material )
element:animateToState( "default", 0 )
end
end )
self.background_mask:addElement( self.background )
end
if f2_arg0.use_border then
local f2_local4 = LUI.MenuBuilder.buildItems( {
type = "generic_border",
id = "member_window_bg_border_id",
properties = {
thickness = 1,
border_red = 1,
border_green = 1,
border_blue = 1,
border_alpha = 0.5
},
states = {
default = {
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = 0,
bottom = 0,
left = 0,
right = 0,
alpha = 0.2
}
}
}, f2_arg0, self )
f2_local4:registerAnimationState( "focused", {
alpha = 0.4
} )
f2_local4:registerAnimationState( "hidden", {
alpha = 0
} )
f2_local4:registerEventHandler( "set_border_state", function ( element, event )
element:animateToState( event.border_state )
end )
self:addElement( f2_local4 )
end
if f2_arg0.use_3d_model and f2_arg0.use_2d_character_image then
DebugPrint( "ERROR: Both use_3d_model and use_2d_character_image are set to true! Defaulting to using the 2d model." )
f2_arg0.use_3d_model = false
end
if f2_arg0.use_3d_model ~= false then
local charWindow = LUI.UICharacterWindow.new()
charWindow.id = "member_window_character_id"
charWindow:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = f2_arg0.char_window_dims.top,
bottom = f2_arg0.char_window_dims.bottom,
left = f2_arg0.char_window_dims.left,
right = f2_arg0.char_window_dims.right,
red = 1,
green = 1,
blue = 1,
alpha = 1
} )
charWindow:registerAnimationState( "silhouette", {
red = 0,
green = 0,
blue = 0,
alpha = 1
} )
charWindow:registerAnimationState( "hidden", {
red = 0,
green = 0,
blue = 0,
alpha = 0
} )
charWindow:animateToState( "default" )
charWindow:registerEventHandler( "make_scene", LUI.UISquadMemberWindow.InitCharacterWindow )
charWindow:registerEventHandler( "set_silhouette", function ( element, event )
element:animateToState( "silhouette", event.anim_length or 0 )
end )
charWindow:registerEventHandler( "set_normal", function ( element, event )
element:animateToState( "default", event.anim_length or 0 )
end )
charWindow:registerEventHandler( "hide_character", function ( element, event )
element:animateToState( "hidden", event.anim_length or 0 )
end )
charWindow:registerEventHandler( "animLooped", LUI.UISquadMemberWindow.ChangeAnimOnLoopedEnd )
charWindow:registerEventHandler( "animEnded", LUI.UISquadMemberWindow.ChangeAnimOnEnd )
charWindow:registerEventHandler( "weapon_changed", LUI.UISquadMemberWindow.WeaponChangeAnim )
charWindow:registerEventHandler( "weapon_changed_stowed", LUI.UISquadMemberWindow.WeaponChangeStowed )
charWindow:registerEventHandler( "idle_changed", LUI.UISquadMemberWindow.IdleChangeAnim )
charWindow:registerEventHandler( "gamepad_sticks", LUI.UISquadMemberWindow.RightStickSpin )
charWindow:registerEventHandler( "leftmousedown", function ( element, event )
end )
charWindow:registerEventHandler( "leftmouseup", function ( element, event )
local f9_local0 = element:getParent()
CharacterScene.SetSpin( f9_local0.handle, 0, 0, 0 )
end )
charWindow:registerEventHandler( "mousemove", LUI.UISquadMemberWindow.PCSpin )
charWindow:setHandleMouseButton( true )
local f2_local4 = LUI.UITimer.new( 50, "make_scene" )
f2_local4.id = "createSceneTimer"
charWindow:addElement( f2_local4 )
self:addElement( charWindow )
self.charWindow = charWindow
LUI.UISquadMemberWindow.AddLoadingWidget( self, f2_arg0 )
end
if f2_arg0.use_2d_character_image == true then
local charWindow = LUI.UIImage.new()
charWindow.id = "member_window_character_id"
charWindow:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = f2_arg0.char_window_dims.top,
bottom = f2_arg0.char_window_dims.bottom,
left = f2_arg0.char_window_dims.left,
right = f2_arg0.char_window_dims.right,
material = RegisterMaterial( "img_char_cas" ),
red = 0.6,
green = 0.6,
blue = 0.6,
alpha = 0.25
} )
charWindow:registerAnimationState( "hidden", {
alpha = 0
} )
charWindow:animateToState( "default" )
charWindow:registerEventHandler( "set_normal", function ( element, event )
element:animateToState( "default", event.anim_length or 0 )
end )
charWindow:registerEventHandler( "set_silhouette", function ( element, event )
element:animateToState( "default", event.anim_length or 0 )
end )
charWindow:registerEventHandler( "hide_character", function ( element, event )
element:animateToState( "hidden", event.anim_length or 0 )
end )
self:addElement( charWindow )
self.charImage = charWindow
end
if f2_arg0.use_member_name then
LUI.UISquadMemberWindow.AddMemberName( self )
end
if f2_arg0.use_prestige_icon then
self.prestigeIcon = LUI.UIImage.new()
self.prestigeIcon.id = "member_window_prestige_icon_id"
self.prestigeIcon:registerAnimationState( "default", {
leftAnchor = true,
rightAnchor = false,
topAnchor = true,
bottomAnchor = false,
left = 30,
top = 100,
right = 94,
bottom = 164,
material = RegisterMaterial( "white" ),
alpha = 1
} )
self.prestigeIcon:registerAnimationState( "shown", {
alpha = 1
} )
self.prestigeIcon:registerAnimationState( "hidden", {
alpha = 0
} )
self.prestigeIcon:animateToState( "default" )
self.prestigeIcon:registerEventHandler( "show_prestige_icon", function ( element, event )
element:animateToState( "shown", event.anim_length or 0 )
end )
self.prestigeIcon:registerEventHandler( "hide_prestige_icon", function ( element, event )
element:animateToState( "hidden", event.anim_length or 0 )
end )
self:addElement( self.prestigeIcon )
end
if f2_arg0.use_playercard then
local charWindow = LUI.Playercard.new( nil, f2_arg0.card_props or {}, childNum )
charWindow.id = "playercard_id"
local f2_local4 = f2_arg0.card_dims
if not f2_local4 then
f2_local4 = {
top = -15,
bottom = 35,
left = -50,
right = 6
}
end
charWindow:registerAnimationState( "default", {
topAnchor = false,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
top = f2_local4.top,
bottom = f2_local4.bottom,
left = f2_local4.left,
right = f2_local4.right,
scale = f2_arg0.card_scale or 0,
alpha = 1
} )
charWindow:animateToState( "default" )
self:addElement( charWindow )
end
self.close = function ()
LUI.UISquadMemberWindow.Shutdown( self, event )
LUI.UIElement.close( self )
end
self.closeTree = function ()
LUI.UISquadMemberWindow.Shutdown( self, event )
LUI.UIElement.closeTree( self )
end
if self.squadMemberIndex and (f2_arg0.use_playercard or f2_arg0.use_3d_model) then
self:updateSquadMember( self.controller, self.squadMemberIndex )
end
return self
end
LUI.UISquadMemberWindow.InitCharacterWindow = function ( f17_arg0, f17_arg1 )
if not CharacterScene.IsReady() then
return
end
local f17_local0 = f17_arg0:getParent()
f17_local0:processEvent( {
name = "close_loading_character_scene"
} )
f17_arg0:closeChildren()
if f17_arg0.handle then
CharacterScene.FreeCharacter( f17_arg0.handle )
end
f17_local0 = f17_arg0:getParent()
if not f17_local0 then
return
end
local f17_local1 = "iw6_kriss_mp"
local f17_local2 = "iw6_pp19_mp"
local f17_local3 = Cac.GetDefaultBodyModel( f17_local0.controller )
local f17_local4 = Cac.GetDefaultHeadModel( f17_local0.controller )
local f17_local5 = f17_arg0.storedCharacterData or {}
if f17_local0.squadMemberIndex then
f17_local5 = GetCharDataForSquadMember( f17_local0, f17_local0.controller, f17_local0.squadMemberIndex )
end
f17_local1 = f17_local5.primaryWeaponName or f17_local1
f17_local2 = f17_local5.secondaryWeaponName or f17_local2
f17_local3 = f17_local5.bodyModel or f17_local3
f17_local4 = f17_local5.headModel or f17_local4
local f17_local6 = f17_local0.properties
local f17_local7 = f17_local6.charHandle
if not f17_local7 then
f17_local7 = f17_local0.id .. "_character_render"
end
local f17_local8 = CharacterScene.CreateCharacter( f17_local7, f17_local3, f17_local4, f17_local1 )
CharacterScene.SetVisionSet( "mp_character_room" )
CharacterScene.SetFOV( 43 )
CharacterScene.SetAmbient( 0, 0, 0 )
CharacterScene.SetSpin( f17_local8, 0, 0, 0 )
if f17_local6 then
CharacterScene.SetCharacterUVs( f17_local8, f17_local6.uv_values[1], f17_local6.uv_values[2], f17_local6.uv_values[3], f17_local6.uv_values[4] )
CharacterScene.PositionRelativeToCamera( f17_local8, f17_local6.character_pos[1], f17_local6.character_pos[2], f17_local6.character_pos[3] )
if f17_local6.character_rot then
CharacterScene.SetBlendedRotation( f17_local8, f17_local6.character_rot[1], f17_local6.character_rot[2], f17_local6.character_rot[3], 0 )
end
end
f17_local0.handle = f17_local8
f17_local0.current_weapon = f17_local1
f17_arg0:setCharacterHandle( f17_local8 )
if f17_local0.storedCharacterData then
f17_local0:updateCharacter( f17_local0.storedCharacterData )
elseif f17_local0.squadMemberIndex then
f17_local0:updateSquadMember( f17_local0.controller, f17_local0.squadMemberIndex )
end
local self = LUI.UIElement.new()
self.id = "anim_handling_elem"
self:registerAnimationState( "default", {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = 0,
bottom = 1,
left = 0,
right = 1,
red = 1,
green = 1,
blue = 1,
alpha = 0
} )
self:registerAnimationState( "weapon_change_start", {
alpha = 1
} )
self:animateToState( "default" )
self:registerEventHandler( "weapon_change_start", LUI.UISquadMemberWindow.WeaponChangeStart )
self:registerEventHandler( "transition_complete_weapon_change_start", function ( element, event )
if not event.interrupted then
local f18_local0 = element:getParent()
f18_local0:processEvent( {
name = "weapon_changed",
new_weapon = element.new_weapon,
prev_weapon = element.prev_weapon,
offline_weapon = element.offline_weapon
} )
end
end )
f17_arg0:addElement( self )
f17_arg0.anim_states = {}
f17_arg0.anim_states[1] = {
anim_state = "idle",
anim_name = Cac.GetRandomIdleAnim( f17_local0.current_weapon ),
weapon_name = f17_local0.current_weapon
}
LUI.UISquadMemberWindow.SetAnimation( f17_arg0:getParent(), f17_arg0.anim_states[1].anim_name, 0.2 )
f17_local0:processEvent( {
name = "character_init_complete"
} )
end
LUI.UISquadMemberWindow.MoveTo = function ( f19_arg0, f19_arg1, f19_arg2 )
if not CharacterScene.IsReady() then
return
elseif f19_arg0.handle then
CharacterScene.SetMovement( f19_arg0.handle, f19_arg1.Position[1], f19_arg1.Position[2], f19_arg1.Position[3], f19_arg2 or 0 )
CharacterScene.SetBlendedRotation( f19_arg0.handle, f19_arg1.Rotation[1], f19_arg1.Rotation[2], f19_arg1.Rotation[3], f19_arg2 or 0 )
end
end
function GetCharDataForSquadMember( f20_arg0, f20_arg1, f20_arg2 )
local f20_local0 = {
bodyModel = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Body].GetSavedModel( f20_arg1, f20_arg0.squadLocation, f20_arg2 ),
headModel = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Head].GetSavedModel( f20_arg1, f20_arg0.squadLocation, f20_arg2 )
}
if not Engine.IsAliensMode() then
f20_local0.primaryWeaponName = Cac.BuildPrimaryWeaponName( f20_arg1, f20_arg0.squadLocation, f20_arg2, "loadouts", f20_arg0.loadoutSlot or 0 )
f20_local0.secondaryWeaponName = Cac.BuildSecondaryWeaponName( f20_arg1, f20_arg0.squadLocation, f20_arg2, "loadouts", f20_arg0.loadoutSlot or 0 )
f20_local0.experience = Engine.GetPlayerDataEx( f20_arg1, CoD.GetStatsGroupForGameMode(), f20_arg0.squadLocation, f20_arg2, "squadMemXP" )
f20_local0.rank = Lobby.GetRankForXP( f20_local0.experience )
f20_local0.prestige = Cac.GetPrestigeLevel( f20_arg1, f20_arg0.squadLocation )
else
f20_local0.primaryWeaponName = "iw6_" .. string.sub( LUI.mp_menus.Aliens.GetAlienPerk( f20_arg1, 1 ), string.len( "perk_pistol_" ) + 1 ) .. "_mp"
f20_local0.experience = LUI.mp_menus.Aliens.getAliensExperience( f20_arg1 )
f20_local0.rank = Lobby.GetAlienRankForXP( f20_local0.experience )
f20_local0.prestige = LUI.mp_menus.Aliens.getAliensPrestigeLevel( f20_arg1 )
end
f20_local0.background = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Background].GetSavedRef( f20_arg1, f20_arg0.squadLocation, f20_arg2 )
f20_local0.patch = Cac.Customization.Fields[Cac.Customization.FieldIndexes.Patch].GetSavedRef( f20_arg1, f20_arg0.squadLocation, f20_arg2 )
f20_local0.clanTag = Cac.Customization.Fields[Cac.Customization.FieldIndexes.ClanTag].GetSavedRef( f20_arg1 )
return f20_local0
end
LUI.UISquadMemberWindow.UpdateSavedCharacterWindow = function ( f21_arg0, f21_arg1, f21_arg2 )
f21_arg0.squadMemberIndex = f21_arg2
f21_arg0:updateCharacter( GetCharDataForSquadMember( f21_arg0, f21_arg1, f21_arg2 ) )
end
LUI.UISquadMemberWindow.UpdateCharacterWindow = function ( f22_arg0, f22_arg1 )
if f22_arg1.background then
Cac.Customization.Fields[Cac.Customization.FieldIndexes.Background].PreviewFunction( controller, f22_arg0, nil, f22_arg1.background )
end
if f22_arg1.patch then
Cac.Customization.Fields[Cac.Customization.FieldIndexes.Patch].InitFunction( controller, f22_arg0, nil, f22_arg1.patch )
end
if f22_arg1.clanTag then
Cac.Customization.Fields[Cac.Customization.FieldIndexes.ClanTag].PreviewFunction( controller, f22_arg0, nil, f22_arg1.clanTag )
end
f22_arg0:processEvent( {
name = "update_playercard",
experience = f22_arg1.experience,
rank = f22_arg1.rank,
prestige = f22_arg1.prestige
} )
if not f22_arg0.handle then
f22_arg0.storedCharacterData = f22_arg1
return
elseif f22_arg1.bodyModel then
if f22_arg1.patch then
CharacterScene.ChangeBody( f22_arg0.handle, f22_arg1.bodyModel, f22_arg1.patch )
else
CharacterScene.ChangeBody( f22_arg0.handle, f22_arg1.bodyModel )
end
end
if f22_arg1.headModel then
CharacterScene.ChangeHead( f22_arg0.handle, f22_arg1.headModel )
end
if f22_arg1.primaryWeaponName then
CharacterScene.ChangeWeapon( f22_arg0.handle, f22_arg1.primaryWeaponName and "iw6_knifeonlymenu_mp" or f22_arg1.primaryWeaponName )
LUI.UISquadMemberWindow.IdleChangeAnim( f22_arg0.charWindow, {
name = "idle_changed",
new_weapon = f22_arg1.primaryWeaponName
} )
f22_arg0.current_weapon = f22_arg1.primaryWeaponName
end
if f22_arg1.secondaryWeaponName then
CharacterScene.ChangeStowedWeapon( f22_arg0.handle, f22_arg1.secondaryWeaponName )
end
end
LUI.UISquadMemberWindow.Shutdown = function ( f23_arg0, f23_arg1 )
if f23_arg0.handle then
CharacterScene.FreeCharacter( f23_arg0.handle )
f23_arg0.handle = nil
end
end
LUI.UISquadMemberWindow.SetDisplayName = function ( f24_arg0, f24_arg1 )
if f24_arg0.displayName then
f24_arg0.displayName:setText( f24_arg1 )
end
end
LUI.UISquadMemberWindow.SetPrestigeIcon = function ( f25_arg0, f25_arg1 )
if f25_arg0.prestigeIcon then
f25_arg0.prestigeIcon:setImage( f25_arg1 )
end
end
LUI.UISquadMemberWindow.SetAnimation = function ( f26_arg0, f26_arg1, f26_arg2 )
if not CharacterScene.IsReady() then
return
elseif f26_arg0.handle then
f26_arg0.playing_anim = f26_arg1
if not f26_arg2 then
CharacterScene.PlayAnim( f26_arg0.handle, f26_arg1 )
else
CharacterScene.PlayAnim( f26_arg0.handle, f26_arg1, f26_arg2 )
end
end
end
LUI.UISquadMemberWindow.SetBackground = function ( f27_arg0, f27_arg1 )
if f27_arg0.background then
if f27_arg1 == nil or f27_arg1 == "" then
f27_arg0.background:animateToState( "hidden", 0 )
else
f27_arg0.background:setImage( RegisterMaterial( f27_arg1 ) )
f27_arg0.background:animateToState( "default", 0 )
end
end
end
LUI.UISquadMemberWindow.AddMemberName = function ( f28_arg0 )
local f28_local0 = -15
local self = LUI.UIElement.new( {
top = -60,
bottom = 0,
left = 1,
right = -1,
topAnchor = false,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true
} )
self.id = "member_window_name_container_id"
local f28_local2 = LUI.UIImage.new( {
top = 0,
bottom = 0,
left = 0,
right = 0,
topAnchor = true,
bottomAnchor = true,
leftAnchor = true,
rightAnchor = true,
red = Colors.black.r,
green = Colors.black.g,
blue = Colors.black.g,
alpha = 0.5,
material = RegisterMaterial( "gradient_bottom" )
} )
f28_local2.id = "member_window_text_bg_id"
self:addElement( f28_local2 )
f28_arg0.displayName = LUI.UIMarqueeText.new()
f28_arg0.displayName.id = "member_window_name_id"
f28_arg0.displayName:registerAnimationState( "default", {
leftAnchor = true,
rightAnchor = true,
topAnchor = false,
bottomAnchor = true,
left = 0,
top = -CoD.TextSettings.ExtraBigFont.Height + f28_local0,
right = 0,
bottom = f28_local0,
font = CoD.TextSettings.ExtraBigFont.Font,
alignment = LUI.Alignment.Center,
red = Colors.primary_text_color.r,
green = Colors.primary_text_color.g,
blue = Colors.primary_text_color.b
} )
f28_arg0.displayName:animateToState( "default" )
self:addElement( f28_arg0.displayName )
local f28_local3 = nil
f28_local3 = LUI.UIHorizontalList.new()
f28_local3.id = "member_window_unlock_text"
f28_local3:registerAnimationState( "default", {
leftAnchor = false,
rightAnchor = false,
topAnchor = true,
bottomAnchor = true,
left = 0,
top = 0,
right = 0,
bottom = 0,
alpha = 1,
alignment = LUI.Alignment.Center,
spacing = 2
} )
f28_local3:registerAnimationState( "hidden", {
alpha = 0
} )
f28_local3:animateToState( "default" )
f28_local3:registerEventHandler( "show_unlock_text", function ( element, event )
element:animateToState( "default" )
end )
f28_local3:registerEventHandler( "hide_unlock_text", function ( element, event )
element:animateToState( "hidden" )
end )
local f28_local4 = LUI.UIImage.new( {
topAnchor = false,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
height = 32,
left = 0,
right = 32,
material = RegisterMaterial( "icon_unlock_token_32" )
} )
local f28_local5 = Engine.Localize( "@LUA_MENU_SQUAD_MEMBER_UNLOCK_COST", Cac.MemberCost[1] )
local f28_local6, f28_local7, f28_local8, f28_local9 = GetTextDimensions( f28_local5, CoD.TextSettings.NormalFont.Font, CoD.TextSettings.NormalFont.Height )
local f28_local10 = LUI.UIText.new( {
leftAnchor = true,
rightAnchor = true,
topAnchor = false,
bottomAnchor = false,
left = 0,
height = CoD.TextSettings.NormalFont.Height,
right = f28_local8 + 1,
font = CoD.TextSettings.NormalFont.Font,
alignment = LUI.Alignment.Left,
red = Colors.primary_text_color.r,
green = Colors.primary_text_color.g,
blue = Colors.primary_text_color.b
} )
f28_local10:setText( f28_local5 )
f28_local3:addElement( f28_local4 )
f28_local3:addElement( f28_local10 )
self:addElement( f28_local3 )
f28_arg0:addElement( self )
end
LUI.UISquadMemberWindow.AddLoadingWidget = function ( f31_arg0, f31_arg1 )
local f31_local0 = f31_arg1.mask_pos_data
if not f31_local0 then
f31_local0 = {
left = 0,
top = 0,
right = 0,
bottom = 0
}
end
local f31_local1 = f31_arg1.mask_dims_data
if not f31_local1 then
f31_local1 = {
width = 512,
height = 512
}
end
local self = LUI.UIElement.new( {
topAnchor = true,
bottomAnchor = false,
leftAnchor = true,
rightAnchor = false,
top = f31_local0.top,
left = f31_local0.left,
width = f31_local1.width,
height = f31_local1.height
} )
self:registerEventHandler( "close_loading_character_scene", function ( element, event )
element:close()
end )
f31_arg0:addElement( self )
local f31_local3 = LUI.MenuBuilder.buildItems( {
type = "live_dialog_text_box",
id = "loading_widget_id",
properties = {
message = Engine.Localize( "@MENU_LOADING_DOTS" ),
overlay_alpha = 0
}
}, {}, f31_arg0 )
f31_local3:processEvent( {
name = "hide_popup_background"
} )
self:addElement( f31_local3 )
end
LUI.UISquadMemberWindow.RightStickSpin = function ( f33_arg0, f33_arg1 )
if Engine.IsGamepadEnabled() ~= 1 then
return
end
local f33_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f33_arg0 )
if f33_local0 and f33_local0.exclusiveController and f33_arg1.controller and f33_local0.exclusiveController ~= f33_arg1.controller then
return
end
local f33_local1 = f33_arg1.rightStickDirection
local f33_local2 = f33_arg1.rightStickMagnitude
local f33_local3 = f33_arg0:getParent()
f33_local3 = f33_local3.handle
if f33_local2 > 0.1 then
if f33_local1 < 35 and f33_local1 > -35 then
CharacterScene.SetSpin( f33_local3, 0, f33_local2 * 3, 0 )
elseif not (f33_local1 >= -145 or f33_local1 < -180) or f33_local1 <= 180 and f33_local1 > 145 then
CharacterScene.SetSpin( f33_local3, 0, -f33_local2 * 3, 0 )
else
CharacterScene.SetSpin( f33_local3, 0, 0, 0 )
end
else
CharacterScene.SetSpin( f33_local3, 0, 0, 0 )
end
end
LUI.UISquadMemberWindow.PCSpin = function ( f34_arg0, f34_arg1 )
if Engine.IsGamepadEnabled() == 1 then
return
end
local f34_local0 = f34_arg0:getParent()
f34_local0 = f34_local0.handle
if not f34_arg0.m_leftMouseDown or not f34_arg1.x then
CharacterScene.SetSpin( f34_local0, 0, 0, 0 )
return
end
local f34_local1 = LUI.clamp( ((f34_arg0.mouse_last_x or 0) - f34_arg1.x) * -100, -10, 10 )
if f34_local1 ~= 0 then
CharacterScene.SetSpin( f34_local0, 0, f34_local1, 0 )
else
CharacterScene.SetSpin( f34_local0, 0, 0, 0 )
end
f34_arg0.mouse_last_x = f34_arg1.x
end
LUI.UISquadMemberWindow.ChangeAnimOnLoopedEnd = function ( f35_arg0, f35_arg1 )
LUI.UISquadMemberWindow.DoAnimChange( f35_arg0, f35_arg1 )
end
LUI.UISquadMemberWindow.ChangeAnimOnEnd = function ( f36_arg0, f36_arg1 )
LUI.UISquadMemberWindow.DoAnimChange( f36_arg0, f36_arg1 )
end
LUI.UISquadMemberWindow.WeaponChangeStowed = function ( f37_arg0, f37_arg1 )
local f37_local0 = f37_arg0:getParent()
if f37_local0.handle then
f37_local0 = f37_arg1.weapon
if not f37_local0 then
f37_local0 = Cac.BuildWeaponName( f37_arg1.weapon )
end
local f37_local1 = CharacterScene.ChangeStowedWeapon
local f37_local2 = f37_arg0:getParent()
f37_local1( f37_local2.handle, f37_local0 )
end
end
LUI.UISquadMemberWindow.WeaponChangeStart = function ( f38_arg0, f38_arg1 )
f38_arg0.new_weapon = f38_arg1.new_weapon
f38_arg0.prev_weapon = f38_arg1.prev_weapon
f38_arg0.offline_weapon = f38_arg1.offline_weapon
f38_arg0:cancelAnimateToState()
f38_arg0:animateToState( "weapon_change_start", 400 )
end
LUI.UISquadMemberWindow.IdleChangeAnim = function ( f39_arg0, f39_arg1 )
local f39_local0 = f39_arg0:getParent()
local f39_local1 = f39_local0.handle
local f39_local2 = string.find( f39_arg1.new_weapon, "riotshield" )
local f39_local3 = string.find( f39_arg1.new_weapon, "knifeonly" )
local f39_local4 = Cac.Customization.Animations.idles.normal[math.random( 1, #Cac.Customization.Animations.idles.normal )]
if f39_local2 then
f39_local4 = Cac.Customization.Animations.idles.riotshield[math.random( 1, #Cac.Customization.Animations.idles.riotshield )]
elseif f39_local3 then
f39_local4 = Cac.Customization.Animations.idles.knifeonly[math.random( 1, #Cac.Customization.Animations.idles.knifeonly )]
end
if not f39_local0.current_weapon then
LUI.UISquadMemberWindow.SetAnimation( f39_local0, f39_local4, 0 )
else
local f39_local5 = string.find( f39_local0.current_weapon, "riotshield" )
local f39_local6 = string.find( f39_local0.current_weapon, "knifeonly" )
if not (not f39_local2 or f39_local5) or f39_local3 and not f39_local6 then
LUI.UISquadMemberWindow.SetAnimation( f39_local0, f39_local4, 0 )
elseif not (f39_local2 or not f39_local5) or not f39_local3 and f39_local6 then
LUI.UISquadMemberWindow.SetAnimation( f39_local0, f39_local4, 0 )
end
end
f39_local0.current_weapon = f39_arg1.new_weapon
if not f39_arg0.anim_states then
f39_arg0.anim_states = {}
end
f39_arg0.anim_states[1] = {
anim_state = "idle",
anim_name = f39_local4,
weapon_name = f39_local0.current_weapon
}
end
LUI.UISquadMemberWindow.AnimateToFirst = function ( f40_arg0, f40_arg1 )
local f40_local0 = f40_arg0:getParent()
local f40_local1 = f40_arg0.anim_states[1]
if f40_local1.anim_state == "grab" then
CharacterScene.ChangeWeapon( f40_local0.handle, f40_local1.weapon_name and "iw6_knifeonlymenu_mp" or f40_local1.weapon_name )
f40_local0.current_weapon = f40_local1.weapon_name
local f40_local2 = LUI.FlowManager.GetMenuScopedDataFromElement( f40_local0 )
if f40_local2.slot then
local f40_local3 = Cac.BuildPrimaryWeaponName( f40_local2.controller or f40_local2.exclusiveController, f40_local2.squadLocation, f40_local2.squadMemberIndex, f40_local2.classLocation, f40_local2.slot )
if f40_local3 ~= f40_local1.weapon_name then
f40_arg0:processEvent( {
name = "weapon_change_start",
new_weapon = f40_local3,
prev_weapon = f40_local1.weapon_name
} )
end
end
end
LUI.UISquadMemberWindow.SetAnimation( f40_local0, f40_local1.anim_name, 0.2 )
end
LUI.UISquadMemberWindow.DoAnimChange = function ( f41_arg0, f41_arg1 )
local f41_local0 = f41_arg0:getParent()
if f41_arg0.anim_states[1].anim_state == "idle" then
local f41_local1 = f41_arg0.anim_states[1]
f41_local1.anim_name = Cac.GetRandomIdleAnim( f41_local1.weapon_name, f41_local1.anim_name )
LUI.UISquadMemberWindow.SetAnimation( f41_local0, f41_local1.anim_name, 0.2 )
else
local f41_local1 = f41_local0.handle
if #f41_arg0.anim_states > 1 then
for f41_local2 = 1, #f41_arg0.anim_states, 1 do
f41_arg0.anim_states[f41_local2] = f41_arg0.anim_states[f41_local2 + 1]
end
end
LUI.UISquadMemberWindow.AnimateToFirst( f41_arg0, f41_arg1 )
end
end
LUI.UISquadMemberWindow.WeaponChangeAnim = function ( f42_arg0, f42_arg1 )
local f42_local0 = f42_arg0:getParent()
local f42_local1 = f42_local0.current_weapon
local f42_local2 = nil
if f42_arg1.offline_weapon then
f42_local2 = f42_arg1.offline_weapon
else
f42_local2 = f42_arg1.new_weapon
end
if f42_local1 == f42_local2 then
return
end
local f42_local3, f42_local4 = nil
if f42_local1 and string.find( f42_local1, "riotshield" ) then
f42_local3 = Cac.Customization.Animations.weapon_grabs.riotshield[1]
elseif f42_local1 and string.find( f42_local1, "knifeonly" ) then
f42_local3 = Cac.Customization.Animations.weapon_grabs.knifeonly[1]
elseif math.random( 1, 2 ) == 1 then
f42_local3 = Cac.Customization.Animations.weapon_grabs.normal_1[1]
else
f42_local3 = Cac.Customization.Animations.weapon_grabs.normal_2[1]
end
if string.find( f42_local2, "riotshield" ) then
f42_local4 = Cac.Customization.Animations.weapon_grabs.riotshield[2]
elseif string.find( f42_local2, "knifeonly" ) then
f42_local4 = Cac.Customization.Animations.weapon_grabs.knifeonly[2]
elseif math.random( 1, 2 ) == 1 then
f42_local4 = Cac.Customization.Animations.weapon_grabs.normal_1[2]
else
f42_local4 = Cac.Customization.Animations.weapon_grabs.normal_2[2]
end
if f42_arg0.anim_states[1].anim_state == "idle" then
f42_arg0.anim_states[1] = {
anim_state = "toss",
anim_name = f42_local3,
weapon_name = f42_local1
}
f42_arg0.anim_states[2] = {
anim_state = "grab",
anim_name = f42_local4,
weapon_name = f42_local2
}
f42_arg0.anim_states[3] = {
anim_state = "idle",
anim_name = Cac.GetRandomIdleAnim( f42_local2 ),
weapon_name = f42_local2
}
LUI.UISquadMemberWindow.AnimateToFirst( f42_arg0, f42_arg1 )
elseif f42_arg0.anim_states[1].anim_state == "toss" then
f42_arg0.anim_states[2] = {
anim_state = "grab",
anim_name = f42_local4,
weapon_name = f42_local2
}
f42_arg0.anim_states[3] = {
anim_state = "idle",
anim_name = Cac.GetRandomIdleAnim( f42_local2 ),
weapon_name = f42_local2
}
elseif f42_arg0.anim_states[1].anim_state == "grab" then
f42_arg0.anim_states[2] = {
anim_state = "toss",
anim_name = f42_local3,
weapon_name = f42_local1
}
f42_arg0.anim_states[3] = {
anim_state = "grab",
anim_name = f42_local4,
weapon_name = f42_local2
}
f42_arg0.anim_states[4] = {
anim_state = "idle",
anim_name = Cac.GetRandomIdleAnim( f42_local2 ),
weapon_name = f42_local2
}
end
end
LUI.MenuBuilder.registerType( "UISquadMemberWindow", LUI.UISquadMemberWindow.build )