From 392e775c7bea63d2c311aef6e42c2cd99303af6b Mon Sep 17 00:00:00 2001 From: WarmUpTill <19472752+WarmUpTill@users.noreply.github.com> Date: Sun, 13 Oct 2024 11:40:16 +0200 Subject: [PATCH] Add temp var support for size and running state --- data/locale/en-US.ini | 4 ++++ lib/macro/macro-condition-queue.cpp | 15 +++++++++++++++ lib/macro/macro-condition-queue.hpp | 2 ++ plugins/twitch/macro-condition-twitch.cpp | 18 ++++++++---------- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 4188158a..3a66afc4 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -1960,6 +1960,10 @@ AdvSceneSwitcher.tempVar.streamDeck.column="Key column" AdvSceneSwitcher.tempVar.streamDeck.data="Data" AdvSceneSwitcher.tempVar.streamDeck.data.description="The value of the \"Data\" field configured in the action on the Stream Deck side." +AdvSceneSwitcher.tempVar.queue.size="Size" +AdvSceneSwitcher.tempVar.queue.running="Is running" +AdvSceneSwitcher.tempVar.queue.running.description="Returns \"true\" if the queue is started and \"false\" if it is stopped." + AdvSceneSwitcher.selectScene="--select scene--" AdvSceneSwitcher.selectPreviousScene="Previous Scene" AdvSceneSwitcher.selectCurrentScene="Current Scene" diff --git a/lib/macro/macro-condition-queue.cpp b/lib/macro/macro-condition-queue.cpp index f7859c38..d9626a22 100644 --- a/lib/macro/macro-condition-queue.cpp +++ b/lib/macro/macro-condition-queue.cpp @@ -27,6 +27,9 @@ bool MacroConditionQueue::CheckCondition() return false; } + SetTempVarValue("size", std::to_string(queue->Size())); + SetTempVarValue("running", queue->IsRunning()); + switch (_condition) { case Condition::STARTED: return queue->IsRunning(); @@ -63,6 +66,18 @@ std::string MacroConditionQueue::GetShortDesc() const return GetActionQueueName(_queue); } +void MacroConditionQueue::SetupTempVars() +{ + MacroCondition::SetupTempVars(); + AddTempvar("size", + obs_module_text("AdvSceneSwitcher.tempVar.queue.size")); + AddTempvar( + "running", + obs_module_text("AdvSceneSwitcher.tempVar.queue.running"), + obs_module_text( + "AdvSceneSwitcher.tempVar.queue.running.description")); +} + static inline void populateQueueTypeSelection(QComboBox *list) { for (const auto &[_, name] : conditionTypes) { diff --git a/lib/macro/macro-condition-queue.hpp b/lib/macro/macro-condition-queue.hpp index 7e5b76d8..a08d0eb6 100644 --- a/lib/macro/macro-condition-queue.hpp +++ b/lib/macro/macro-condition-queue.hpp @@ -32,6 +32,8 @@ public: IntVariable _size = 1; private: + void SetupTempVars(); + static bool _registered; static const std::string id; }; diff --git a/plugins/twitch/macro-condition-twitch.cpp b/plugins/twitch/macro-condition-twitch.cpp index 6cf3c712..62d820a7 100644 --- a/plugins/twitch/macro-condition-twitch.cpp +++ b/plugins/twitch/macro-condition-twitch.cpp @@ -304,11 +304,10 @@ bool MacroConditionTwitch::CheckChannelGenericEvents() continue; } SetVariableValue(event->ToString()); - setTempVarsHelper( - event->data, - std::bind(&MacroConditionTwitch::SetTempVarValue, this, - std::placeholders::_1, - std::placeholders::_2)); + setTempVarsHelper(event->data, + [this](const char *id, const char *value) { + SetTempVarValue(id, value); + }); if (_clearBufferOnMatch) { _eventBuffer->Clear(); @@ -346,11 +345,10 @@ bool MacroConditionTwitch::CheckChannelLiveEvents() } SetVariableValue(event->ToString()); - setTempVarsHelper( - event->data, - std::bind(&MacroConditionTwitch::SetTempVarValue, this, - std::placeholders::_1, - std::placeholders::_2)); + setTempVarsHelper(event->data, + [this](const char *id, const char *value) { + SetTempVarValue(id, value); + }); if (_clearBufferOnMatch) { _eventBuffer->Clear();