Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/frontend/StarVoiceLuaBindings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/frontend/StarVoiceLuaBindings.cpp')
-rw-r--r--source/frontend/StarVoiceLuaBindings.cpp28
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;
});