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

157 lines
4.6 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
//=============================================================================
// KFDebugCameraHUD
//=============================================================================
// HUD used with the ToggleDebugCamera console command
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//=============================================================================
class KFDebugCameraHUD extends KFHUDBase
config(Game)
native(UI);
var bool bDrawDebugText;
var bool bDrawAimBasedText;
var bool bFocusOnSelectedActor;
var KFPawn SelectedKFPawn;
var Camera PlayerCamera;
var bool bDisplayHelp;
var float DebugTextMaxLen;
native function DrawDebugHUDText( String Text, optional color TextColor );
function ToggleHelpDisplay()
{
bDisplayHelp = !bDisplayHelp;
}
function DisplayHelp()
{
local Color Greenish;
Greenish = MakeColor(0,255,50);
Canvas.Font = class'Engine'.Static.GetSmallFont();
Canvas.SetPos( (Canvas.ClipX * 0.5f) - 80, Canvas.SizeY * 0.3f );
Canvas.bCenter = true;
DrawDebugHUDText( "COMMANDS [work in progress]", Greenish );
DrawDebugHUDText( "[LEFT CLICK] While aiming at NPC to enable issuing commands to selected NPC:" );
DrawDebugHUDText( "[RIGHT CLICK] Move or pathfind to click location, if possible" );
DrawDebugHUDText( "[ESC] Turn off NPC Lock" );
DrawDebugHUDText( "[END] Toggle PlayersOnly" );
DrawDebugHUDText( "[DEL] ToggleDebugCamera (exits this mode)" );
DrawDebugHUDText( "[N] Order selected NPC to attempt to pathfind and move to your pawn location" );
DrawDebugHUDText( "[Z] Teleport your own pawn to debug camera location" );
DrawDebugHUDText( "[P] Toggle Sprinting" );
DrawDebugHUDText( "[R] Rotate toward crosshair dot" );
DrawDebugHUDText( "[K] Force a combat action" );
DrawDebugHUDText( "[L] Toggle camera mode, current view or auto-viewing selected NPC" );
DrawDebugHUDText( "[M] Move NPC forward regardless of obstructions" );
DrawDebugHUDText( "[H] Toggle displaying this help menu" );
DrawDebugHUDText( "[O] Toggle displaying debug text" );
}
event PostRender()
{
local KFDebugCameraController DCC;
local float xl,yl,X,Y;
local String MyText;
local TraceHitInfo HitInfo;
local byte i;
local vector CamLoc, HitLoc, HitNormal, ZeroVec;
local rotator CamRot;
local Actor HitActor;
local KFPawn_Monster HitPawn;
Super(HUD).PostRender();
DCC = KFDebugCameraController( PlayerOwner );
if( DCC != none )
{
Canvas.SetDrawColor(0, 0, 255, 255);
MyText = "KFDebugCameraHUD";
Canvas.Font = class'Engine'.Static.GetSmallFont();
Canvas.StrLen(MyText, XL, YL);
X = Canvas.SizeX * 0.05f;
Y = YL;//*1.67;
YL += 2*Y;
Canvas.SetPos( X, YL);
Canvas.DrawText(MyText, true);
Canvas.SetDrawColor(128, 128, 128, 255);
YL += Y;
if( bDisplayHelp )
{
DisplayHelp();
}
if( bDrawAimBasedText )
{
CamLoc = DCC.PlayerCamera.CameraCache.POV.Location;
CamRot = DCC.PlayerCamera.CameraCache.POV.Rotation;
HitActor = Trace(HitLoc, HitNormal, vector(CamRot) * 5000 * 20 + CamLoc, CamLoc, true, ZeroVec, HitInfo);
DrawDebugLine( HitLoc, HitLoc+HitNormal*30, 255,255,1255 );
HitPawn = KFPawn_Monster(HitActor);
if( HitPawn != none )
{
DCC.SelectedActor = HitPawn;
DCC.SelectedKFPawn = HitPawn;
DCC.bShowSelectedInfo = true;
}
else
{
DCC.SelectedKFPawn = none;
DCC.SelectedActor = none;
DCC.bShowSelectedInfo = false;
}
}
if ( DCC.bShowSelectedInfo == true && DCC.SelectedActor != None )
{
YL += Y;
Canvas.SetPos( X, YL );
Canvas.DrawText( "--------------------------------------" );
YL += Y;
Canvas.SetPos( X, YL );
Canvas.DrawText( "Selected: '" $ DCC.SelectedActor.Name $ "'" );
SelectedKFPawn = DCC.SelectedKFPawn;
if( SelectedKFPawn != none )
{
if( SelectedKFPawn.MyKFAIC != none )
{
SelectedKFPawn.MyKFAIC.bPostRenderIfNotVisible = true;
i = PostRenderedActors.Find(SelectedKFPawn.MyKFAIC);
if( i == INDEX_NONE )
{
PostRenderedActors.AddItem(SelectedKFPawn.MyKFAIC);
}
bShowOverlays = true;
//SelectedKFPawn.MyKFAIC.KFDrawDebug( self, 'All' );
}
}
}
}
}
function DrawCrosshair()
{
local byte CrossHairAlpha;
CrossHairAlpha=255;
Canvas.SetDrawColor(255, 255, 255, CrossHairAlpha);
Canvas.SetPos(CenterX, CenterY);
Canvas.DrawRect(4, 4);
}
DefaultProperties
{
bHidden=false
bDrawDebugText=true
bShowOverlays=true
bDrawAimBasedText=false
bDrawCrosshair=true
}