From 631423a251b50232d27c9efc3ee33a872c46eb8f Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Thu, 25 Nov 2021 21:21:42 +0100 Subject: [PATCH] Add condition to check if the plugin is running This will only ever return true as the plugin cannot perform checks if it is not running. This is intended to be used in cases where it can be useful to trigger actions once the plugin was stopped and restarted or if one wants to perform actions after a certain amount of plugin "uptime". --- data/locale/en-US.ini | 1 + src/headers/macro-condition-plugin-state.hpp | 1 + src/macro-condition-plugin-state.cpp | 14 ++++++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 1fad44d1..b81228db 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -156,6 +156,7 @@ AdvSceneSwitcher.condition.idle="Idle" AdvSceneSwitcher.condition.idle.entry="No keyboard or mouse inputs for {{duration}}" AdvSceneSwitcher.condition.pluginState="Plugin state" AdvSceneSwitcher.condition.pluginState.state.sceneSwitched="Automated scene change was triggered in this interval" +AdvSceneSwitcher.condition.pluginState.state.running="Advanced scene switcher is running" AdvSceneSwitcher.condition.pluginState.entry="{{condition}}" AdvSceneSwitcher.condition.timer="Timer" AdvSceneSwitcher.condition.timer.pause="Pause" diff --git a/src/headers/macro-condition-plugin-state.hpp b/src/headers/macro-condition-plugin-state.hpp index bf131e85..98a322eb 100644 --- a/src/headers/macro-condition-plugin-state.hpp +++ b/src/headers/macro-condition-plugin-state.hpp @@ -5,6 +5,7 @@ enum class PluginStateCondition { SCENESWITCHED, + RUNNING, }; class MacroConditionPluginState : public MacroCondition { diff --git a/src/macro-condition-plugin-state.cpp b/src/macro-condition-plugin-state.cpp index 0fce3935..c3975e33 100644 --- a/src/macro-condition-plugin-state.cpp +++ b/src/macro-condition-plugin-state.cpp @@ -9,16 +9,26 @@ bool MacroConditionPluginState::_registered = MacroConditionFactory::Register( MacroConditionPluginState::id, {MacroConditionPluginState::Create, MacroConditionPluginStateEdit::Create, - "AdvSceneSwitcher.condition.pluginState", false}); + "AdvSceneSwitcher.condition.pluginState"}); static std::map pluginStateConditionTypes = { {PluginStateCondition::SCENESWITCHED, "AdvSceneSwitcher.condition.pluginState.state.sceneSwitched"}, + {PluginStateCondition::RUNNING, + "AdvSceneSwitcher.condition.pluginState.state.running"}, }; bool MacroConditionPluginState::CheckCondition() { - return switcher->macroSceneSwitched; + switch (_condition) { + case PluginStateCondition::SCENESWITCHED: + return switcher->macroSceneSwitched; + case PluginStateCondition::RUNNING: + return true; + default: + break; + } + return false; } bool MacroConditionPluginState::Save(obs_data_t *obj)