//============================================================================= // GFxHudWrapper //============================================================================= // The Killing Floor 2 HUD wrapper class //============================================================================= // Killing Floor 2 // Copyright (C) 2015 Tripwire Interactive LLC // - Christian "schneidzekk" Schneider 8/23/2012 //============================================================================= class KFGFxHudWrapper extends KFHUDBase; /** Class of HUD Movie object */ var class HUDClass; /** Main Heads Up Display Flash movie */ var KFGFxMoviePlayer_HUD HudMovie; /** Cached reference to the boss pawn */ var KFInterface_MonsterBoss BossRef; /********************************************************************************************* `* Initialization ********************************************************************************************* */ /** * Create and initialize the HUDMovie. */ function CreateHUDMovie(optional bool bForce) { if(HudMovie != none && !bForce) { return; } HudMovie = new HUDClass; HudMovie.SetTimingMode(TM_Real); HudMovie.Init(class'Engine'.static.GetEngine().GamePlayers[HudMovie.LocalPlayerOwnerIndex]); } function class GetHUDClass() { return HUDClass; } singular event Destroyed() { RemoveMovies(); Super.Destroyed(); } /** * Destroy existing Movies */ function RemoveMovies() { if ( HUDMovie != None ) { HudMovie.CleanUp(); HUDMovie.Close(true); HUDMovie = None; } Super.RemoveMovies(); } /** * Returns the index of the local player that owns this HUD */ function int GetLocalPlayerOwnerIndex() { return HudMovie.LocalPlayerOwnerIndex; } /********************************************************************************************* `* Drawing ********************************************************************************************* */ /** * Toggles visibility of normal in-game HUD */ function SetVisible(bool bNewVisible) { Super.SetVisible(bNewVisible); if (HudMovie != none) { HudMovie.SetPause(!bNewVisible); HudMovie.NotifyVisibilityChange(bNewVisible); } } /** * Recreate movies since resolution changed (also creates them initially) */ function ResolutionChanged() { super.ResolutionChanged(); CreateHUDMovie(true); } /** * PostRender is the main draw loop. */ event PostRender() { super.PostRender(); if ( HudMovie != none ) { HudMovie.TickHud(0); } } /** sets bShowScores to a specific value (not toggle) */ exec function SetShowScores(bool bNewValue) { super.SetShowScores(bNewValue); if(HUDMovie != none) { HUDMovie.ShowScoreboard(bNewValue); } } /** * Call PostRenderFor() on actors that want it. */ event DrawHUD() { //local vector ViewPoint; //local rotator ViewRotation; local float XL, YL, YPos; super.DrawHUD(); /*if ( KFGRI != None && !KFGRI.bMatchIsOver ) { Canvas.Font = GetFontSizeIndex(0); PlayerOwner.GetPlayerViewPoint(ViewPoint, ViewRotation); DrawActorOverlays(Viewpoint, ViewRotation); }*/ // Don't draw canvas HUD in cinematic mode if( KFPlayerOwner != none && KFPlayerOwner.bCinematicMode ) { return; } if ( bCrosshairOnFriendly ) { // verify that crosshair trace might hit friendly bGreenCrosshair = CheckCrosshairOnFriendly(); bCrosshairOnFriendly = false; } else { bGreenCrosshair = false; } if ( bShowDebugInfo ) { Canvas.Font = GetFontSizeIndex(0); Canvas.DrawColor = ConsoleColor; Canvas.StrLen("X", XL, YL); YPos = 0; PlayerOwner.ViewTarget.DisplayDebug(self, YL, YPos); if (ShouldDisplayDebug('AI') && (Pawn(PlayerOwner.ViewTarget) != None)) { DrawRoute(Pawn(PlayerOwner.ViewTarget)); } return; } } /********************************************************************************************* `* Updating ********************************************************************************************* */ /********************************************************************************************* Close / Died ********************************************************************************************* */ function PlayerOwnerDied() { super.PlayerOwnerDied(); if(HudMovie != none) { HudMovie.PlayerOwnerDied(); } } /********************************************************************************************* GFx Local messaging ********************************************************************************************* */ function LocalizedMessage ( class InMessageClass, PlayerReplicationInfo RelatedPRI_1, PlayerReplicationInfo RelatedPRI_2, string MessageString, int Switch, float Position, float LifeTime, int FontSize, color DrawColor, optional object OptionalObject ) { local KFPlayerController KFPC; local string HexClr; local class KFLocalMessageClass; if( MessageString == "" ) { return; } KFPC = KFPlayerController(PlayerOwner); if( !InMessageClass.default.bIsSpecial ) { AddConsoleMessage( MessageString, InMessageClass, RelatedPRI_1 ); return; } if( bMessageBeep && InMessageClass.default.bBeep ) PlayerOwner.PlayBeepSound(); KFLocalMessageClass = class(InMessageClass); if(KFLocalMessageClass != none) { HexClr = KFLocalMessageClass.static.GetHexColor(Switch); } else if(InMessageClass == class'GameMessage') { HexClr = class 'KFLocalMessage'.default.ConnectionColor ; } if( HudMovie != none && HudMovie.HudChatBox != none ) { HudMovie.HudChatBox.AddChatMessage(MessageString, HexClr); } //Todo: Try to separate this from the HUD. if(KFPC.MyGFxManager != none && KFPC.MyGFxManager.PartyWidget != none) { KFPC.MyGFxManager.PartyWidget.ReceiveMessage(MessageString, HexClr); } } defaultproperties { HUDClass=class'KFGFxMoviePlayer_HUD' }