1
0
KF2-Dev-Scripts/KFGameContent/Classes/KFTutorialSectionInfo.uc
2020-12-13 18:01:13 +03:00

134 lines
4.0 KiB
Ucode

//=============================================================================
// KFTutorialSectionInfo
//=============================================================================
// archetype inside GP_Tutorial_ARCH for kfgameinfo_tutorial
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
// - Zane Gholson 4/21/2016
//=============================================================================
class KFTutorialSectionInfo extends Object
hidecategories(Object);
struct STutorialSlide
{
var() string TitleKey;
var() string DescriptionKey;
var() Texture2D UIImage;
/** Key binds to locate and merge with description text */
var() array<string> KeyGBAs;
/** If >= 0, replace this slide from the GamepadSlides array */
var() int GamepadSlideIndex;
StructDefaultProperties
{
GamepadSlideIndex=INDEX_NONE
}
};
struct SControllerTutorialSlide
{
/** Image to use for PS4 builds */
var() Texture2D PS4Image;
/** Image to use for xbox one builds */
var() Texture2D XboxOneImage;
/** Image to use for xbox 360 builds or on PC with controller */
var() Texture2D PCImage;
var() string TitleKey;
var() string DescriptionKey;
/** Key binds to locate and merge with description text */
var() array<string> KeyGBAs;
};
/** Default slides */
var() private array <STutorialSlide> TutorialSlides;
/** DEPRECATED - Override slides used only for gamepad */
var() private array<STutorialSlide> GamepadReplacementSlides;
/** Override slides for use on controller or with consoles */
var() private array<SControllerTutorialSlide> ControllerReplacementSlides;
var() AKEvent VoiceOverOpenEvent;
var() AKEvent VoiceOverCloseEvent;
/** Delay before this screen opens */
var() float OpenDelay;
function array<STutorialSlide> GetSlides(PlayerController PC)
{
local array<STutorialSlide> MergedSlides;
local STutorialSlide NextSlide, NewSlide;
if ( GamepadReplacementSlides.Length > 0 )
{
if ( PC.PlayerInput.bUsingGamepad )
{
foreach TutorialSlides(NextSlide)
{
// ControllerReplacementSlides supports multiple platforms
if( NextSlide.GamepadSlideIndex >= 0 &&
NextSlide.GamepadSlideIndex < ControllerReplacementSlides.Length )
{
NewSlide.TitleKey = ControllerReplacementSlides[NextSlide.GamepadSlideIndex].TitleKey;
NewSlide.DescriptionKey = ControllerReplacementSlides[NextSlide.GamepadSlideIndex].DescriptionKey;
NewSlide.KeyGBAs = ControllerReplacementSlides[NextSlide.GamepadSlideIndex].KeyGBAs;
if( class'WorldInfo'.static.IsConsoleBuild( CONSOLE_Orbis ) )
{
NewSlide.UIImage = ControllerReplacementSlides[NextSlide.GamepadSlideIndex].PS4Image;
}
else if( class'WorldInfo'.static.IsConsoleBuild( CONSOLE_Durango ) )
{
NewSlide.UIImage = ControllerReplacementSlides[NextSlide.GamepadSlideIndex].XboxOneImage;
}
else
{
NewSlide.UIImage = ControllerReplacementSlides[NextSlide.GamepadSlideIndex].PCImage;
}
MergedSlides.AddItem( NewSlide );
}
// DEPRECRATED! Remove this block once ControllerReplacementSlides is fully utilized
else if ( NextSlide.GamepadSlideIndex >= 0
&& NextSlide.GamepadSlideIndex < GamepadReplacementSlides.Length )
{
MergedSlides.AddItem(GamepadReplacementSlides[NextSlide.GamepadSlideIndex]);
}
else
{
MergedSlides.AddItem(NextSlide);
}
}
return MergedSlides;
}
}
return TutorialSlides;
}
/** Called from GI when tutorial is requested */
function OpenDelayTimer()
{
local KFGameInfo_Tutorial GI;
GI = KFGameInfo_Tutorial(class'WorldInfo'.static.GetWorldInfo().Game);
if ( GI != None )
{
// Don't play this if load screen is still up
if( class'KFGameEngine'.static.IsFullScreenMoviePlaying() )
{
GI.SetTimer( 0.05, false, nameof(OpenDelayTimer), self );
}
else
{
GI.CreateTutorialHUD(self, true);
}
}
}