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

375 lines
14 KiB
Ucode

//=============================================================================
// KFGFxOptionsMenu_Audio
//=============================================================================
// This menu will be used to update and display the audio options for the game
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
// Zane Gholson - 9/29/2014
//=============================================================================
class KFGFxOptionsMenu_Audio extends KFGFxObject_Menu;
//@HSL_MOD_BEGIN - amiller 5/25/2016 - Adding support to save extra data into profile settings
`include(KFProfileSettings.uci)
//@HSL_MOD_END
var localized string SectionNameString;
var localized string OptionsString;
var localized string AudioString;
var localized string DialogVolumeString;
var localized string MasterVolumeString;
var localized string MusicString;
var localized string SFxString;
var localized string VOIPVolumeString;
var localized string ConfigureMicString;
var localized string VocalsString;
var localized string BattleChatterString;
var localized string PushToVoIPString;
var localized string ScreenSizeString;
var float VoIPMin, VoIPMax;
function InitializeMenu( KFGFxMoviePlayer_Manager InManager )
{
super.InitializeMenu(InManager);
LocalizeText();
InitValues();
ConditionallyHideDurangoButton();
}
function LocalizeText()
{
local GFxObject LocalizedObject;
LocalizedObject = CreateObject( "Object" );
LocalizedObject.SetString("master", MasterVolumeString);
LocalizedObject.SetString("dialog", DialogVolumeString);
LocalizedObject.SetString("music", MusicString);
LocalizedObject.SetString("sFx", SFxString);
// Console adds the gamma button and video section so change the localization so it is correct.
if ( GetPC().WorldInfo.IsConsoleBuild() )
{
// Cobbling together the "Audio" and "Video" localization strings to make AUDIO/VIDEO.
LocalizedObject.SetString("header", Caps(class'KFGFxOptionsMenu_Selection'.default.OptionStrings[OM_Audio])$"/"$Caps(class'KFGFxOptionsMenu_Selection'.default.OptionStrings[OM_Video]));
// This should just be Audio string
LocalizedObject.SetString("sectionName", Caps(class'KFGFxOptionsMenu_Selection'.default.OptionStrings[1]));
// This should just be Video string
LocalizedObject.SetString("options", Caps(class'KFGFxOptionsMenu_Selection'.default.OptionStrings[0]));
LocalizedObject.SetString("configureMic", class'KFGFxOptionsMenu_Graphics'.default.AdjustGammaString);
LocalizedObject.SetString("screenSize", ScreenSizeString); //durango option only
// Controller sound available for PS4 only
if( class'WorldInfo'.static.IsConsoleBuild(CONSOLE_Orbis) )
{
LocalizedObject.SetString("controllerSound", Localize("KFGFxOptionsMenu_Audio","ControllerSound","KFGameConsole"));
}
}
else
{
LocalizedObject.SetString("header", Caps(class'KFGFxOptionsMenu_Selection'.default.OptionStrings[OM_Audio]));
LocalizedObject.SetString("sectionName", SectionNameString);
LocalizedObject.SetString("options", OptionsString);
LocalizedObject.SetString("configureMic", ConfigureMicString);
// Not going to set these values on Console so only add them on PC.
LocalizedObject.SetString("voipVolume", VOIPVolumeString);
LocalizedObject.SetString("pushToTalk", PushToVoIPString);
LocalizedObject.SetString("resetDefault", Localize("KFGFxOptionsMenu_Graphics","DefaultString","KFGame"));
}
LocalizedObject.SetString("vocals", VocalsString);
LocalizedObject.SetString("battleChatter", BattleChatterString);
LocalizedObject.SetString("close", Class'KFCommon_LocalizedStrings'.default.BackString);
SetObject("localizedText", LocalizedObject);
}
function ConditionallyHideDurangoButton()
{
local GfxObject ScreenSizeButton;
if(!class'WorldInfo'.static.IsConsoleBuild(CONSOLE_Durango))
{
//hide screensize button
ScreenSizeButton = GetObject("screenSizeButton");
if(ScreenSizeButton != none)
{
ScreenSizeButton.SetVisible(false);
}
}
}
function InitValues()
{
local float VoIPCurrent;
local KFPlayerInput KFPI;
local bool bControllerSoundEnabled;
local GFxObject ControllerSndObj;
// Don't try to set values of objects that aren't there on Console.
if( GetPC().WorldInfo.IsConsoleBuild() )
{
bControllerSoundEnabled = Manager.CachedProfile.GetProfileBool(KFID_ControllerSoundEnabled);
SetBool("controllerSound", bControllerSoundEnabled);
class'KFGameEngine'.static.SetWWisePADVolume(bControllerSoundEnabled ? 100.f : 0.0f);
// Hide controller sound for any thing that isn't PS4
if( !GetPC().WorldInfo.IsConsoleBuild(CONSOLE_Orbis) )
{
ControllerSndObj = GetObject("controllerSoundCheckBox");
if (ControllerSndObj != None)
{
ControllerSndObj.SetVisible(false);
}
}
}
else
{
KFPI = KFPlayerInput(GetPC().PlayerInput);
// Retrieve current volume from online sub (indirectly from profile) along with min/max
class'KFGameEngine'.static.GetVoIPVolumeRange(VoIPMin, VoIPMax, VoIPCurrent);
// convert to % for the slider
SetFloat("voipVolume", VoIPCurrent / VoIPMax * 100);
SetBool("bPushToTalk", class'KFPlayerInput'.default.bRequiresPushToTalk);
SetBool("bPushToTalk", KFPI.bRequiresPushToTalk);
}
SetFloat("masterVolume", Manager.CachedProfile.GetProfileFloat(KFID_MasterVolumeMultiplier));
SetFloat("dialogVolume", Manager.CachedProfile.GetProfileFloat(KFID_DialogVolumeMultiplier));
SetFloat("musicVolume", Manager.CachedProfile.GetProfileFloat(KFID_MusicVolumeMultiplier));
SetFloat("sFxVolume", Manager.CachedProfile.GetProfileFloat(KFID_SFXVolumeMultiplier));
SetBool("vocalsEnabled", Manager.CachedProfile.GetProfileBool(KFID_MusicVocalsEnabled));
SetBool("battleChatter", Manager.CachedProfile.GetProfileBool(KFID_MinimalChatter));
}
function SetVoIPMinMax( float MinVol, float MaxVol )
{
ActionScriptVoid("setVOIPVolumeRange");
}
event OnClose()
{
Manager.CachedProfile.Save( GetLP().ControllerId );
SaveConfigValues();
}
//Do this when we close the menu so that we do not constantly write to the config.
function SaveConfigValues()
{
class'KFGameEngine'.static.StaticSaveConfig();
class'KFGameEngine'.static.GetEngine().SaveConfig();
}
function Callback_ScreenSizePress()
{
//show the screen size pop up here
Manager.OpenScreenSizeMovie();
}
function Callback_CloseMenu()
{
Manager.OpenMenu( UI_OptionsSelection );
}
function Callback_ConfigureMicPress()
{
local OnlineSubsystem SubSystem;
// Console swaps the config mic button for Gamma setting so show that pop up instead.
if( GetPC().WorldInfo.IsConsoleBuild() )
{
Manager.SetVariableBool("bStartUpGamma", false); // Let the manager know if we are gamma for start up so we can block backing out of the popup - HSL
Manager.DelayedOpenPopup(EGamma,EDPPID_Gamma, "", class'KFGFxOptionsMenu_Graphics'.default.AdjustGammaDescription, class'KFGFxOptionsMenu_Graphics'.default.ResetGammaString, class'KFGFxOptionsMenu_Graphics'.default.SetGammaString);
}
else
{
SubSystem = class'GameEngine'.static.GetOnlineSubsystem();
if( SubSystem != none )
{
//@SABER_EGS_BEGIN
if (class'WorldInfo'.static.isEOSBuild())
{
// In-game popup winwow with Mic configuration
Manager.DelayedOpenPopup(EOptionMic, EDPPID_ExitToMainMenu,
Class'KFCommon_LocalizedStrings'.default.MicrophonePopupTitleString,
"",
Class'KFCommon_LocalizedStrings'.default.OKString,
Class'KFCommon_LocalizedStrings'.default.CancelString);
}
else
{
// Overlay window with Mic configuration
SubSystem.ShowVOIPConfigUI();
}
//@SABER_EGS_END
}
}
}
function Callback_ConfigureBattleChatter(bool bMinimalChatter)
{
Manager.CachedProfile.SetProfileSettingValueInt(KFID_MinimalChatter, bMinimalChatter ? 1 : 0);
KFGameEngine(Class'Engine'.static.GetEngine()).bMinimalChatter = bMinimalChatter;
}
function Callback_PushToTalkChanged(bool bValue)
{
local PlayerController PC;
local KFPlayerInput KFPI;
PC = GetPC();
if(PC != none)
{
KFPI = KFPlayerInput(GetPC().PlayerInput);
if(KFPI != none)
{
KFPI.UpdatePushToTalk(bValue);
}
}
}
function Callback_ConfigureVocals( bool bEnabled )
{
Manager.CachedProfile.SetProfileSettingValueInt(KFID_MusicVocalsEnabled, bEnabled ? 1 : 0);
KFGameEngine(Class'Engine'.static.GetEngine()).bMusicVocalsEnabled = bEnabled;
}
function Callback_ConfigureControllerSound( bool bEnabled )
{
`if( `notdefined(ShippingPC) )
local bool bWasEnabled;
// TODO: add functionality for turning on/off controller sound.
bWasEnabled = Manager.CachedProfile.GetProfileBool(KFID_ControllerSoundEnabled);
`QAlog(`location@`showvar(bEnabled)@`showvar(bWasEnabled), true);
`endif
Manager.CachedProfile.SetProfileSettingValueInt(KFID_ControllerSoundEnabled, bEnabled ? 1 : 0);
KFGameEngine(Class'Engine'.static.GetEngine()).PadVolumeMultiplier = bEnabled ? 100.0f : 0.0f;
class'KFGameEngine'.static.SetWWisePADVolume(bEnabled ? 100.0f : 0.0f);
}
function Callback_MasterVolumeChanged( float NewVolume )
{
local float MasterVolumeMultiplier;
MasterVolumeMultiplier = NewVolume;
class'KFGameEngine'.static.SetWWiseMasterVolume( MasterVolumeMultiplier);
Manager.CachedProfile.SetProfileSettingValueFloat(KFID_MasterVolumeMultiplier, MasterVolumeMultiplier);
KFGameEngine(Class'Engine'.static.GetEngine()).MasterVolumeMultiplier = MasterVolumeMultiplier;
}
function Callback_DialogVolumeChanged( float NewVolume )
{
local float DialogVolumeMultiplier;
DialogVolumeMultiplier = NewVolume;
class'KFGameEngine'.static.SetWWiseVoiceVolume( DialogVolumeMultiplier);
GetPC().SetAudioGroupVolume( 'Voice', DialogVolumeMultiplier / 100 ); //0 - 1
Manager.CachedProfile.SetProfileSettingValueFloat(KFID_DialogVolumeMultiplier, DialogVolumeMultiplier);
KFGameEngine(Class'Engine'.static.GetEngine()).DialogVolumeMultiplier = DialogVolumeMultiplier;
}
function Callback_MusicVolumeChanged( float NewVolume )
{
local float MusicVolumeMultiplier;
MusicVolumeMultiplier = NewVolume;
class'KFGameEngine'.static.SetWWiseMusicVolume( MusicVolumeMultiplier);
GetPC().SetAudioGroupVolume( 'Music', MusicVolumeMultiplier / 100 ); //0 - 1
Manager.CachedProfile.SetProfileSettingValueFloat(KFID_MusicVolumeMultiplier, MusicVolumeMultiplier);
KFGameEngine(Class'Engine'.static.GetEngine()).MusicVolumeMultiplier = MusicVolumeMultiplier;
}
function Callback_SFxVolumeChanged( float NewVolume )
{
local float SFXVolumeMultiplier;
SFXVolumeMultiplier = NewVolume;
class'KFGameEngine'.static.SetWWiseSFXVolume( SFXVolumeMultiplier);
GetPC().SetAudioGroupVolume( 'SFX', SFXVolumeMultiplier / 100 );
Manager.CachedProfile.SetProfileSettingValueFloat(KFID_SFXVolumeMultiplier, SFXVolumeMultiplier);
KFGameEngine(Class'Engine'.static.GetEngine()).SFxVolumeMultiplier = SFXVolumeMultiplier;
}
function Callback_VOIPVolumeChanged( float SliderValue )
{
local float NewVolume;
// VoIPMax should be initialized by now
if ( VoIPMax > 0 )
{
// convert from % back to multiplier (expected by OnlineSub)
NewVolume = (SliderValue / 100) * VoIPMax;
Manager.CachedProfile.SetProfileSettingValueFloat(KFID_VOIPVolumeMultiplier, NewVolume);
class'KFGameEngine'.static.SetVoIPRecieveVolume( NewVolume ); //Steam saves this
}
}
function CallBack_ResetAudioOptions()
{
Manager.DelayedOpenPopup( EConfirmation, EDPPID_Misc,
Localize("KFGFxOptionsMenu_Graphics","WarningPromptString","KFGame"),
Localize("KFGFxObject_Menu","ResetDefaults","KFGameConsole"),
Localize("KFGFxOptionsMenu_Graphics","OKString","KFGame"),
Localize("KFGFxOptionsMenu_Graphics","CancelString","KFGame"),
ResetAudioOptions);
}
function ResetAudioOptions()
{
local KFGameEngine KFGE;
local float FloatValue;
local float DefaultGamma;
// Don't try to set values of objects that aren't there on Console.
if( !GetPC().WorldInfo.IsConsoleBuild() )
{
Manager.CachedProfile.SetProfileSettingValueInt(KFID_RequiresPushToTalk, Manager.CachedProfile.GetDefaultInt(KFID_RequiresPushToTalk));
FloatValue = Manager.CachedProfile.GetDefaultFloat(KFID_VOIPVolumeMultiplier);
Manager.CachedProfile.SetProfileSettingValueFloat(KFID_VOIPVolumeMultiplier, FloatValue);
class'KFGameEngine'.static.SetVoIPRecieveVolume(FloatValue);
}
else
{
// Handle resetting the gamma setting since it is in this menu.
DefaultGamma = Manager.CachedProfile.GetDefaultFloat(KFID_GammaMultiplier);
// Multiplying by 100 so we can go 0-100 with a snapInterval of 1 for consistency. HSL_BB
KFGE = KFGameEngine(Class'Engine'.static.GetEngine());
KFGE.GammaMultiplier = DefaultGamma;
KFGE.SaveConfig();
Manager.CachedProfile.SetProfileSettingValueFloat(KFID_GammaMultiplier, DefaultGamma);
class'KFGameEngine'.static.SetGamma(DefaultGamma);
Manager.CachedProfile.SetProfileSettingValueInt(KFID_ControllerSoundEnabled, Manager.CachedProfile.GetDefaultInt(KFID_ControllerSoundEnabled));
}
Manager.CachedProfile.SetProfileSettingValueFloat(KFID_MasterVolumeMultiplier, Manager.CachedProfile.GetDefaultFloat(KFID_MasterVolumeMultiplier));
Manager.CachedProfile.SetProfileSettingValueFloat(KFID_DialogVolumeMultiplier, Manager.CachedProfile.GetDefaultFloat(KFID_DialogVolumeMultiplier));
Manager.CachedProfile.SetProfileSettingValueFloat(KFID_MusicVolumeMultiplier, Manager.CachedProfile.GetDefaultFloat(KFID_MusicVolumeMultiplier));
Manager.CachedProfile.SetProfileSettingValueFloat(KFID_SFXVolumeMultiplier, Manager.CachedProfile.GetDefaultFloat(KFID_SFXVolumeMultiplier));
Manager.CachedProfile.SetProfileSettingValueInt(KFID_MusicVocalsEnabled, Manager.CachedProfile.GetDefaultInt(KFID_MusicVocalsEnabled));
Manager.CachedProfile.SetProfileSettingValueInt(KFID_MinimalChatter , Manager.CachedProfile.GetDefaultInt(KFID_MinimalChatter));
Callback_MasterVolumeChanged(Manager.CachedProfile.GetDefaultFloat(KFID_MasterVolumeMultiplier));
Callback_DialogVolumeChanged(Manager.CachedProfile.GetDefaultFloat(KFID_DialogVolumeMultiplier));
Callback_MusicVolumeChanged(Manager.CachedProfile.GetDefaultFloat(KFID_MusicVolumeMultiplier));
Callback_SFxVolumeChanged(Manager.CachedProfile.GetDefaultFloat(KFID_SFXVolumeMultiplier));
Callback_ConfigureVocals(bool(Manager.CachedProfile.GetDefaultInt(KFID_MusicVocalsEnabled)));
Callback_ConfigureBattleChatter(bool(Manager.CachedProfile.GetDefaultInt(KFID_MinimalChatter)));
Manager.CachedProfile.Save(GetLP().ControllerId);
SaveConfigValues();
InitValues();
}
defaultproperties
{
}