| 7 | |
| 8 | typedef Voice::SpeakerId SpeakerId; |
| 9 | LuaCallbacks LuaBindings::makeVoiceCallbacks() { |
| 10 | LuaCallbacks callbacks; |
| 11 | |
| 12 | auto voice = Voice::singletonPtr(); |
| 13 | |
| 14 | callbacks.registerCallbackWithSignature<StringList>("devices", bind(&Voice::availableDevices, voice)); |
| 15 | callbacks.registerCallback( "getSettings", [voice]() -> Json { return voice->saveJson(); }); |
| 16 | callbacks.registerCallback("mergeSettings", [voice](Json const& settings) { voice->loadJson(settings); }); |
| 17 | // i have an alignment addiction i'm so sorry |
| 18 | callbacks.registerCallback("setSpeakerMuted", [voice](SpeakerId speakerId, bool muted) { voice->speaker(speakerId)->muted = muted; }); |
| 19 | callbacks.registerCallback( "speakerMuted", [voice](SpeakerId speakerId) { return (bool)voice->speaker(speakerId)->muted; }); |
| 20 | // it just looks so neat to me!! |
| 21 | callbacks.registerCallback("setSpeakerVolume", [voice](SpeakerId speakerId, float volume) { voice->speaker(speakerId)->volume = volume; }); |
| 22 | callbacks.registerCallback( "speakerVolume", [voice](SpeakerId speakerId) { return (float)voice->speaker(speakerId)->volume; }); |
| 23 | |
| 24 | callbacks.registerCallback("speakerPosition", [voice](SpeakerId speakerId) { return voice->speaker(speakerId)->position; }); |
| 25 | |
| 26 | callbacks.registerCallback("speaker", [voice](Maybe<SpeakerId> speakerId) { |
| 27 | if (speakerId) |
| 28 | return voice->speaker(*speakerId)->toJson(); |
| 29 | else |
| 30 | return voice->localSpeaker()->toJson(); |
| 31 | }); |
| 32 | |
| 33 | callbacks.registerCallback("speakers", [voice](Maybe<bool> onlyPlaying) -> List<Json> { |
| 34 | List<Json> list; |
| 35 | |
| 36 | for (auto& speaker : voice->sortedSpeakers(onlyPlaying.value(true))) |
| 37 | list.append(speaker->toJson()); |
| 38 | |
| 39 | return list; |
| 40 | }); |
| 41 | |
| 42 | return callbacks; |
| 43 | } |
| 44 | |
| 45 | } |
nothing calls this directly
no test coverage detected