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

71 lines
2.4 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
class UISoundTheme extends Object
native(UserInterface);
/** Maps an event name to a sound. When an event comes in to the UISceneTheme, if it can be found in the bindings array, then the corresponding SoundCue will be played */
struct native SoundEventMapping
{
/** Name of the event that corresponds to the sound cue below. */
var() name SoundEventName;
/** Sound to play when the the above event is received. */
`if(`__TW_WWISE_)
var() AkBaseSoundObject SoundToPlay;
`else
var() SoundCue SoundToPlay;
`endif //__TW_WWISE_
};
/** List of the event bindings for this sound theme. Usually, these will be specified by a designer in an archetype in the editor, or in the defaultproperties */
var() array<SoundEventMapping> SoundEventBindings;
/** Called when an event (focus change, click, etc) is fired from the UI */
event ProcessSoundEvent(name SoundEventName, optional PlayerController SoundOwner)
{
local int EventIndex;
// Find an entry in the bindings array to match this sound event, or warn if we can't find one.
EventIndex = SoundEventBindings.Find('SoundEventName', SoundEventName);
if( EventIndex != INDEX_NONE )
{
`if(`__TW_WWISE_)
`else
`log("ProcessSoundEvent - Sound Event: "$SoundEventName$", Sound Theme: "$self$", Sound: "$SoundEventBindings[EventIndex].SoundToPlay,, 'DevGFxUI');
`endif //__TW_WWISE_
if( SoundOwner != None )
{
// If there's a specific PlayerOwner, use it to play the sound
`if(`__TW_WWISE_)
SoundOwner.PlaySoundBase( SoundEventBindings[EventIndex].SoundToPlay, TRUE, TRUE, TRUE );
`else
SoundOwner.PlaySound( SoundEventBindings[EventIndex].SoundToPlay, TRUE, TRUE, TRUE );
`endif //__TW_WWISE_
}
else
{
// Default implementation: Play the sound via the WorldInfo, which assumes the sound is not attenuated / spatialised
`if(`__TW_WWISE_)
class'WorldInfo'.static.GetWorldInfo().PlaySoundBase( SoundEventBindings[EventIndex].SoundToPlay, TRUE, TRUE, TRUE );
`else
class'WorldInfo'.static.GetWorldInfo().PlaySound( SoundEventBindings[EventIndex].SoundToPlay, TRUE, TRUE, TRUE );
`endif //__TW_WWISE_
}
}
else
{
`if(`__TW_WWISE_)
`else
`log(self$": ProcessSoundEvent - Unable to find a binding for event: "$SoundEventName);
`endif //__TW_WWISE_
}
}
defaultproperties
{
}