rott/kf_sources/KFGui/Classes/KFUT2K4Tab_AudioSettings.uc
2026-07-14 20:27:09 +07:00

186 lines
6.7 KiB
Ucode

// Fix for the Music problem with the KF Main Menu
class KFUT2K4Tab_AudioSettings extends UT2K4Tab_AudioSettings;
function InternalOnChange(GUIComponent Sender)
{
local PlayerController PC;
local float AnnouncerVol;
local Sound snd;
local int AnnouncerIdx;
local bool bIsWin32;
bIsWin32 = ( ( PlatformIsWindows() ) && ( !PlatformIs64Bit() ) );
Super.InternalOnChange(Sender);
PC = PlayerOwner();
switch(Sender)
{
case sl_VoiceVol:
iVoice = sl_VoiceVol.GetValue();
AnnouncerVol = 2.0 * FClamp(0.1 + iVoice*0.225,0.2,1.0);
if ( co_StatusAnnouncer == None )
return;
snd = sound(co_StatusAnnouncer.GetObject());
if ( snd == None && Announcers.Length > 0 )
{
snd = Sound(DynamicLoadObject(Announcers[AnnouncerIdx].PackageName $ "." $ StatusPreviewSound,class'Sound'));
if ( snd == none )
snd = Sound(DynamicLoadObject(Announcers[AnnouncerIdx].FallbackPackage $ "." $ StatusPreviewSound,class'Sound'));
co_StatusAnnouncer.MyComboBox.List.SetObjectAtIndex(co_StatusAnnouncer.MyComboBox.List.Index,snd);
}
if ( snd != None )
PC.PlaySound(snd,SLOT_Talk,AnnouncerVol);
break;
case sl_MusicVol:
fMusic = sl_MusicVol.GetValue();
PC.ConsoleCommand("set ini:Engine.Engine.AudioDevice MusicVolume"@fMusic);
PC.ConsoleCommand("SetMusicVolume"@fMusic);
if( PC.Level.Song != "" && PC.Level.Song != "None" )
PC.ClientSetMusic( PC.Level.Song, MTRAN_Instant );
else PC.ClientSetMusic( class'KFGUI.KFMainMenu'.default.MenuSong, MTRAN_Instant );
break;
case sl_EffectsVol:
fEffects = sl_EffectsVol.GetValue();
PC.ConsoleCommand("set ini:Engine.Engine.AudioDevice SoundVolume"@fEffects);
PC.ConsoleCommand("stopsounds");
PC.PlaySound(sound'KF_MenuSnd.SetSoundFX');
break;
/*
case sl_TTS:
fTTS = sl_TTS.GetValue();
// Do not preview TTS voice volume, since there isn't any way to truly represent the way it will sound in-game
// PC.TextToSpeech( "Fo Shizzle my nizzle", fTTS );
break;
*/
case co_Mode:
if ( !bIsWin32 ) // Simple OpenAL abstraction... --ryan.
break;
iMode = co_Mode.GetIndex();
if (iMode > 1)
ShowPerformanceWarning();
bCompat = iMode < 1;
b3DSound = iMode > 1;
bEAX = iMode > 2;
PC.ConsoleCommand("set ini:Engine.Engine.AudioDevice CompatibilityMode"@bCompat);
PC.ConsoleCommand("set ini:Engine.Engine.AudioDevice Use3DSound"@b3DSound);
PC.ConsoleCommand("set ini:Engine.Engine.AudioDevice UseEAX"@bEAX);
PC.ConsoleCommand("SOUND_REBOOT");
// Restart music.
if( PC.Level.Song != "" && PC.Level.Song != "None" )
PC.ClientSetMusic( PC.Level.Song, MTRAN_Instant );
else PC.ClientSetMusic( class'KFGUI.KFMainMenu'.default.MenuSong, MTRAN_Instant );
break;
case ch_ReverseStereo:
bRev = ch_ReverseStereo.IsChecked();
break;
case ch_MessageBeep:
bBeep = ch_MessageBeep.IsChecked();
break;
case ch_AutoTaunt:
bAuto = ch_AutoTaunt.IsChecked();
break;
case ch_TTS:
bTTS = ch_TTS.IsChecked();
break;
case ch_MatureTaunts:
bMature = ch_MatureTaunts.IsChecked();
break;
case co_Voices:
iVoiceMode = co_Voices.GetIndex();
break;
case ch_Default:
bDefault = ch_Default.IsChecked();
PC.ConsoleCommand("set ini:Engine.Engine.AudioDevice UseDefaultDriver"@bDefault);
PC.ConsoleCommand("SOUND_REBOOT");
break;
case ch_LowDetail:
bLow = ch_LowDetail.IsChecked();
PC.Level.bLowSoundDetail = bLow;
PC.Level.StaticSaveConfig();
PC.ConsoleCommand("set ini:Engine.Engine.AudioDevice LowQualitySound"@bLow);
PC.ConsoleCommand("SOUND_REBOOT");
// Restart music.
if( PC.Level.Song != "" && PC.Level.Song != "None" )
PC.ClientSetMusic( PC.Level.Song, MTRAN_Instant );
else PC.ClientSetMusic( class'KFGUI.KFMainMenu'.default.MenuSong, MTRAN_Instant );
break;
case co_Announce:
iAnnounce = co_Announce.GetIndex();
break;
case co_RewardAnnouncer:
AnnouncerIdx = int(co_RewardAnnouncer.GetExtra());
sRewAnnouncer = Announcers[AnnouncerIdx].ClassName;
AnnouncerVol = 2.0 * FClamp(0.1 + iVoice*0.225,0.2,1.0);
snd = sound(co_RewardAnnouncer.GetObject());
if ( snd == None )
{
snd = Sound(DynamicLoadObject(Announcers[AnnouncerIdx].PackageName $ "." $ RewardPreviewSound,class'Sound'));
if ( snd == none )
snd = Sound(DynamicLoadObject(Announcers[AnnouncerIdx].FallbackPackage $ "." $ RewardPreviewSound,class'Sound'));
co_RewardAnnouncer.MyComboBox.List.SetObjectAtIndex(co_RewardAnnouncer.MyComboBox.List.Index,snd);
}
PC.PlaySound(snd,SLOT_Talk,AnnouncerVol);
break;
case co_StatusAnnouncer:
AnnouncerIdx = int(co_StatusAnnouncer.GetExtra());
sStatAnnouncer = Announcers[AnnouncerIdx].ClassName;
AnnouncerVol = 2.0 * FClamp(0.1 + iVoice*0.225,0.2,1.0);
snd = sound(co_StatusAnnouncer.GetObject());
if ( snd == None )
{
snd = Sound(DynamicLoadObject(Announcers[AnnouncerIdx].PackageName $ "." $ StatusPreviewSound,class'Sound'));
if ( snd == none )
snd = Sound(DynamicLoadObject(Announcers[AnnouncerIdx].FallbackPackage $ "." $ StatusPreviewSound,class'Sound'));
co_StatusAnnouncer.MyComboBox.List.SetObjectAtIndex(co_StatusAnnouncer.MyComboBox.List.Index,snd);
}
PC.PlaySound(snd,SLOT_Talk,AnnouncerVol);
break;
case ch_TTSIRC:
bTTSIRC = ch_TTSIRC.IsChecked();
break;
case ch_VoiceChat:
bVoiceChat = ch_VoiceChat.IsChecked();
break;
case ch_OnlyTeamTTS:
bOnlyTeamTTS = ch_OnlyTeamTTS.IsChecked();
break;
}
}
defaultproperties
{
}