1
0
KF2-Dev-Scripts/KFGame/Classes/KFGFxWidget_PartyInGame_Versus.uc

180 lines
4.8 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
//=============================================================================
// KFGFxWidget_PartyInGame_Versus
//=============================================================================
//
//=============================================================================
// Killing Floor 2
// Copyright (C) 2016 Tripwire Interactive LLC
// - Zane Gholson
//=============================================================================
class KFGFxWidget_PartyInGame_Versus extends KFGFxWidget_PartyInGame;
var localized string SwitchTeamsString;
var localized string balanceWarningString;
var GFxObject SwitchTeamsButton;
var Texture2D ZedIConTexture;
function InitializeWidget()
{
KFGRI = KFGameReplicationInfo( GetPC().WorldInfo.GRI );;
SwitchTeamsButton = GetObject("switchTeamsButton");
super.InitializeWidget();
}
function LocalizeText()
{
super.LocalizeText();
//SwitchTeamsButton.SetString("label", SwitchTeamsString);
SetString( "switchTeamsString", SwitchTeamsString );
}
function OneSecondLoop()
{
super.OneSecondLoop();
SetInt("myTeam", GetPC().PlayerReplicationInfo.GetTeamNum());
UpdateTeams();
UpdateBalanceWarning();
}
function UpdateBalanceWarning()
{
if(KFGRI == none)
{
return;
}
if(KFGRI.AreTeamsOutOfBalanced())
{
SetString("balanceWarning", balanceWarningString);
}
else
{
SetString("balanceWarning", "");
}
}
function UpdateTeams()
{
local int i;
for (i = 0; i < PlayerSlots; i++)
{
if(MemberSlots[i].PRI != none)
{
MemberSlots[i].MemberSlotObject.SetInt("team", MemberSlots[i].PRI.GetTeamNum());
}
}
}
function GetKFPRIArray( out array<KFPlayerReplicationInfo> KFPRIArray )
{
super.GetKFPRIArray(KFPRIArray);
if(KFPRIArray.length > 0)
{
//sort by team
KFPRIArray.Sort(SortPlayers);
}
}
delegate int SortPlayers(KFPlayerReplicationInfo A, KFPlayerReplicationInfo B)
{
return A.GetTeamNum() > B.GetTeamNum() ? -1 : 0;
}
// Check which aspect of the slot has changed and update it
function GFxObject RefreshSlot( int SlotIndex, KFPlayerReplicationInfo KFPRI )
{
local byte CurrentTeamIndex;
local string PlayerName;
local UniqueNetId AdminId;
local bool bIsLeader;
local bool bIsMyPlayer;
local PlayerController PC;
local GFxObject PlayerInfoObject, PerkIconObject;
CurrentTeamIndex = KFPRI.GetTeamNum();
PlayerInfoObject = CreateObject("Object");
PC = GetPC();
if(OnlineLobby != none)
{
OnlineLobby.GetLobbyAdmin( OnlineLobby.GetCurrentLobbyId(), AdminId);
}
//leader
bIsLeader = (KFPRI.UniqueId == AdminId && KFPRI.UniqueId != ZeroUniqueId);
PlayerInfoObject.SetBool("bLeader", bIsLeader);
//my player
bIsMyPlayer = PC.PlayerReplicationInfo.UniqueId == KFPRI.UniqueId;
MemberSlots[SlotIndex].PlayerUID = KFPRI.UniqueId;
MemberSlots[SlotIndex].PRI = KFPRI;
MemberSlots[SlotIndex].PerkClass = KFPRI.CurrentPerkClass;
MemberSlots[SlotIndex].PerkLevel = String(KFPRI.GetActivePerkLevel());
MemberSlots[SlotIndex].PrestigeLevel = String(KFPRI.GetActivePerkPrestigeLevel());
PlayerInfoObject.SetBool("myPlayer", bIsMyPlayer);
//perk info
if(MemberSlots[SlotIndex].PerkClass != none)
{
PerkIconObject = CreateObject("Object");
if( CurrentTeamIndex == 255 ) //zed team
{
PerkIconObject.SetString("perkIcon", "img://"$PathName(ZedIConTexture));
MemberSlots[SlotIndex].PerkClass = class'KFPerk_Monster';
}
else//human team
{
PlayerInfoObject.SetString("perkLevel", MemberSlots[SlotIndex].PerkLevel); //separate from icon
PerkIconObject = CreateObject("Object");
PerkIconObject.SetString("perkIcon", "img://"$MemberSlots[SlotIndex].PerkClass.static.GetPerkIconPath());
PerkIconObject.SetString("prestigeIcon", MemberSlots[SlotIndex].PerkClass.static.GetPrestigeIconPath(KFPRI.GetActivePerkPrestigeLevel()));
}
PlayerInfoObject.SetObject("perkImageSource", PerkIconObject);
}
//perk info
if(!bIsMyPlayer)
{
PlayerInfoObject.SetBool("muted", PC.IsPlayerMuted(KFPRI.UniqueId));
}
// E3 build force update of player name
if( class'WorldInfo'.static.IsE3Build() )
{
// Update this slots player name
PlayerName = KFPRI.PlayerName;
}
else
{
PlayerName = KFPRI.PlayerName;
}
PlayerInfoObject.SetString("playerName", PlayerName);
//player icon
if( class'WorldInfo'.static.IsConsoleBuild(CONSOLE_Orbis) )
{
PlayerInfoObject.SetString("profileImageSource", "img://"$KFPC.GetPS4Avatar(PlayerName));
}
else
{
PlayerInfoObject.SetString("profileImageSource", "img://"$KFPC.GetSteamAvatar(KFPRI.UniqueId));
}
if(KFGRI != none)
{
PlayerInfoObject.SetBool( "ready", KFPRI.bReadyToPlay );
}
return PlayerInfoObject;
}
DefaultProperties
{
PlayerSlots=12
ZedIConTexture=Texture2D'UI_Widgets.MenuBarWidget_SWF_IF'
}