KF2-YetAnotherScoreboard/ScoreboardExt/Classes/ScoreboardExtHUD.uc
2021-06-12 23:11:37 +03:00

114 lines
2.6 KiB
Ucode

class ScoreboardExtHUD extends KFGFxHudWrapper
config(ScoreboardExtMut);
`include(Build.uci)
`include(Logger.uci)
const HUDBorderSize = 3;
var float ScaledBorderSize;
var array<KFGUI_Base> HUDWidgets;
var class<KFScoreBoard> ScoreboardClass;
var KFScoreBoard Scoreboard;
var transient KF2GUIController GUIController;
var transient GUIStyleBase GUIStyle;
simulated function PostBeginPlay()
{
Super.PostBeginPlay();
PlayerOwner.PlayerInput.OnReceivedNativeInputKey = NotifyInputKey;
PlayerOwner.PlayerInput.OnReceivedNativeInputAxis = NotifyInputAxis;
PlayerOwner.PlayerInput.OnReceivedNativeInputChar = NotifyInputChar;
RemoveMovies();
CreateHUDMovie();
}
function PostRender()
{
if( KFGRI == None )
KFGRI = KFGameReplicationInfo(WorldInfo.GRI);
if( GUIController!=None && PlayerOwner.PlayerInput==None )
GUIController.NotifyLevelChange();
if( GUIController==None || GUIController.bIsInvalid )
{
GUIController = Class'ScoreboardExt.KF2GUIController'.Static.GetGUIController(PlayerOwner);
if( GUIController!=None )
{
GUIStyle = GUIController.CurrentStyle;
GUIStyle.HUDOwner = self;
LaunchHUDMenus();
}
}
GUIStyle.Canvas = Canvas;
GUIStyle.PickDefaultFontSize(Canvas.ClipY);
if( !GUIController.bIsInMenuState )
GUIController.HandleDrawMenu();
ScaledBorderSize = FMax(GUIStyle.ScreenScale(HUDBorderSize), 1.f);
Super.PostRender();
}
function LaunchHUDMenus()
{
Scoreboard = KFScoreBoard(GUIController.InitializeHUDWidget(ScoreboardClass));
Scoreboard.SetVisibility(false);
}
function bool NotifyInputKey(int ControllerId, Name Key, EInputEvent Event, float AmountDepressed, bool bGamepad)
{
local int i;
for( i=(HUDWidgets.Length-1); i>=0; --i )
{
if( HUDWidgets[i].bVisible && HUDWidgets[i].NotifyInputKey(ControllerId, Key, Event, AmountDepressed, bGamepad) )
return true;
}
return false;
}
function bool NotifyInputAxis(int ControllerId, name Key, float Delta, float DeltaTime, optional bool bGamepad)
{
local int i;
for( i=(HUDWidgets.Length-1); i>=0; --i )
{
if( HUDWidgets[i].bVisible && HUDWidgets[i].NotifyInputAxis(ControllerId, Key, Delta, DeltaTime, bGamepad) )
return true;
}
return false;
}
function bool NotifyInputChar(int ControllerId, string Unicode)
{
local int i;
for( i=(HUDWidgets.Length-1); i>=0; --i )
{
if( HUDWidgets[i].bVisible && HUDWidgets[i].NotifyInputChar(ControllerId, Unicode) )
return true;
}
return false;
}
exec function SetShowScores(bool bNewValue)
{
if (Scoreboard != None)
Scoreboard.SetVisibility(bNewValue);
else Super.SetShowScores(bNewValue);
}
defaultproperties
{
ScoreboardClass=class'KFScoreBoard'
}