375 lines
14 KiB
Ucode
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
|
||
|
{
|
||
|
|
||
|
}
|