diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-19 21:12:14 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-19 21:12:14 +1000 |
commit | d682b164aa87435183a5ad3196b25b5ff8a5ad18 (patch) | |
tree | 01f05fa9d5ab78711c7cd89ae5ea343dd2b427d3 /source/frontend/StarVoiceLuaBindings.cpp | |
parent | 0c1c3611b1b1c1b17efac547ad08a6821f3b8f01 (diff) |
more Lua voice callbacks
Diffstat (limited to 'source/frontend/StarVoiceLuaBindings.cpp')
-rw-r--r-- | source/frontend/StarVoiceLuaBindings.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/source/frontend/StarVoiceLuaBindings.cpp b/source/frontend/StarVoiceLuaBindings.cpp index a91937e..1b62aef 100644 --- a/source/frontend/StarVoiceLuaBindings.cpp +++ b/source/frontend/StarVoiceLuaBindings.cpp @@ -1,28 +1,32 @@ +#include "StarLuaConverters.hpp" #include "StarVoiceLuaBindings.hpp" #include "StarVoice.hpp" + namespace Star { +typedef Voice::SpeakerId SpeakerId; LuaCallbacks LuaBindings::makeVoiceCallbacks(Voice* voice) { LuaCallbacks callbacks; - callbacks.registerCallback("getSettings", [voice]() -> Json { return voice->saveJson(); }); + callbacks.registerCallbackWithSignature<StringList>("devices", bind(&Voice::availableDevices, voice)); + callbacks.registerCallback( "getSettings", [voice]() -> Json { return voice->saveJson(); }); callbacks.registerCallback("mergeSettings", [voice](Json const& settings) { voice->loadJson(settings); }); + // i have an alignment addiction i'm so sorry + callbacks.registerCallback("setSpeakerMuted", [voice](SpeakerId speakerId, bool muted) { voice->speaker(speakerId)->muted = muted; }); + callbacks.registerCallback( "speakerMuted", [voice](SpeakerId speakerId) { return (bool)voice->speaker(speakerId)->muted; }); + // it just looks so neat to me!! + callbacks.registerCallback("setSpeakerVolume", [voice](SpeakerId speakerId, float volume) { voice->speaker(speakerId)->volume = volume; }); + callbacks.registerCallback( "speakerVolume", [voice](SpeakerId speakerId) { return (float)voice->speaker(speakerId)->volume; }); + + callbacks.registerCallback("speakerPosition", [voice](SpeakerId speakerId) { return voice->speaker(speakerId)->position; }); + callbacks.registerCallback("speaker", [voice](SpeakerId speakerId) { return voice->speaker(speakerId)->toJson(); }); callbacks.registerCallback("speakers", [voice](Maybe<bool> onlyPlaying) -> List<Json> { List<Json> list; - for (auto& speaker : voice->speakers(onlyPlaying.value(true))) { - list.append(JsonObject{ - {"speakerId", speaker->speakerId }, - {"entityId", speaker->entityId }, - {"name", speaker->name }, - {"playing", (bool)speaker->playing }, - {"muted", (bool)speaker->muted }, - {"decibels", (float)speaker->decibelLevel }, - {"smoothDecibels", (float)speaker->smoothDb }, - }); - } + for (auto& speaker : voice->sortedSpeakers(onlyPlaying.value(true))) + list.append(speaker->toJson()); return list; }); |