Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions flixel/system/frontEnds/SoundFrontEnd.hx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import flixel.system.ui.FlxSoundTray;
import flixel.text.FlxInputText;
import flixel.util.FlxSignal;
import openfl.media.Sound;
import lime.media.AudioManager;

/**
* Accessed via `FlxG.sound`.
Expand All @@ -24,6 +25,16 @@ class SoundFrontEnd
*/
public var music:FlxSound;

/**
* Whether or not should it automatically switch to a new default playback device if detected.
*/
public var automaticDefaultDevice(get, set):Bool;

/**
* The current used playback device name to play audios.
*/
public var deviceName(get, set):String;

/**
* Whether or not the game sounds are muted.
*/
Expand All @@ -47,6 +58,21 @@ class SoundFrontEnd
*/
public var onVolumeChange(default, null):FlxTypedSignal<Float->Void> = new FlxTypedSignal<Float->Void>();

/**
* Dispatched when the default for the playback device is changed.
*/
public var onDefaultDeviceChanged(default, null):FlxTypedSignal<String->Void> = new FlxTypedSignal<String->Void>();

/**
* Dispatched whenever a playback device is added.
*/
public var onDeviceAdded(default, null):FlxTypedSignal<String->Void> = new FlxTypedSignal<String->Void>();

/**
* Dispatched whenever a playbck device is removed.
*/
public var onDeviceRemoved(default, null):FlxTypedSignal<String->Void> = new FlxTypedSignal<String->Void>();

#if FLX_KEYBOARD
/**
* The key codes used to increase volume (see FlxG.keys for the keys available).
Expand Down Expand Up @@ -406,6 +432,9 @@ class SoundFrontEnd

function new()
{
AudioManager.onDefaultPlaybackDeviceChanged.add(onDefaultDeviceChanged.dispatch);
AudioManager.onPlaybackDeviceAdded.add(onDeviceAdded.dispatch);
AudioManager.onPlaybackDeviceRemoved.add(onDeviceRemoved.dispatch);
#if FLX_SAVE
loadSavedPrefs();
#end
Expand Down Expand Up @@ -491,6 +520,47 @@ class SoundFrontEnd
}
#end

function get_automaticDefaultDevice():Bool
{
return AudioManager.automaticDefaultPlaybackDevice;
}

function set_automaticDefaultDevice(value:Bool):Bool
{
if (AudioManager.automaticDefaultPlaybackDevice != value)
{
AudioManager.automaticDefaultPlaybackDevice = value;
if (value && AudioManager.getCurrentPlaybackDeviceName() != AudioManager.getPlaybackDefaultDeviceName())
{
AudioManager.refresh();
}
}
return value;
}

function get_deviceName():String
{
return AudioManager.getCurrentPlaybackDeviceName();
}

function set_deviceName(value:String):String
{
if (AudioManager.getCurrentPlaybackDeviceName() != value)
{
if (AudioManager.refresh(value)) return value;
else
{
AudioManager.refresh();
return AudioManager.getCurrentPlaybackDeviceName();
}
}
else
{
return value;
}
}


@:haxe.warning("-WDeprecated")
function set_volume(Volume:Float):Float
{
Expand Down
Loading