diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index a53bb8e4..fb397ad1 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -329,6 +329,7 @@ AdvSceneSwitcher.condition.macro.type.state="Macro condition state" AdvSceneSwitcher.condition.macro.type.multiState="Multiple macro condition state" AdvSceneSwitcher.condition.macro.type.actionDisabled="Macro action disabled" AdvSceneSwitcher.condition.macro.type.actionEnabled="Macro action enabled" +AdvSceneSwitcher.condition.macro.type.paused="Macro is paused" AdvSceneSwitcher.condition.macro.type.selection="{{types}}" AdvSceneSwitcher.condition.macro.count.type.below="Less than" AdvSceneSwitcher.condition.macro.count.type.above="More than" @@ -344,6 +345,7 @@ AdvSceneSwitcher.condition.macro.count.entry.line1="{{macros}}was executed{{cond AdvSceneSwitcher.condition.macro.count.entry.line2="Current count:{{currentCount}}{{resetCount}}" AdvSceneSwitcher.condition.macro.actionState.disabled.entry="Action{{actionIndex}}of{{macros}}is disabled" AdvSceneSwitcher.condition.macro.actionState.enabled.entry="Action{{actionIndex}}of{{macros}}is enabled" +AdvSceneSwitcher.condition.macro.paused.entry="Macro{{macros}}is paused" AdvSceneSwitcher.condition.source="Source" AdvSceneSwitcher.condition.source.type.active="Is active" AdvSceneSwitcher.condition.source.type.showing="Is showing" diff --git a/src/macro-core/macro-condition-macro.cpp b/src/macro-core/macro-condition-macro.cpp index 496443b8..914b1b6c 100644 --- a/src/macro-core/macro-condition-macro.cpp +++ b/src/macro-core/macro-condition-macro.cpp @@ -24,6 +24,8 @@ const static std::map "AdvSceneSwitcher.condition.macro.type.actionDisabled"}, {MacroConditionMacro::Type::ACTION_ENABLED, "AdvSceneSwitcher.condition.macro.type.actionEnabled"}, + {MacroConditionMacro::Type::PAUSED, + "AdvSceneSwitcher.condition.macro.type.paused"}, }; const static std::map @@ -107,6 +109,16 @@ bool MacroConditionMacro::CheckActionStateCondition() return false; } +bool MacroConditionMacro::CheckPauseState() +{ + auto macro = _macro.GetMacro(); + if (!macro) { + return false; + } + + return macro->Paused(); +} + bool MacroConditionMacro::CheckCountCondition() { auto macro = _macro.GetMacro(); @@ -140,6 +152,8 @@ bool MacroConditionMacro::CheckCondition() case Type::ACTION_DISABLED: case Type::ACTION_ENABLED: return CheckActionStateCondition(); + case Type::PAUSED: + return CheckPauseState(); default: break; } @@ -335,6 +349,9 @@ void MacroConditionMacroEdit::ClearLayouts() void MacroConditionMacroEdit::SetupWidgets() { + SetWidgetVisibility(); + ClearLayouts(); + switch (_entryData->_type) { case MacroConditionMacro::Type::COUNT: SetupCountWidgets(); @@ -351,6 +368,9 @@ void MacroConditionMacroEdit::SetupWidgets() case MacroConditionMacro::Type::ACTION_ENABLED: SetupActionStateWidgets(true); break; + case MacroConditionMacro::Type::PAUSED: + SetupPauseWidgets(); + break; default: break; } @@ -358,38 +378,24 @@ void MacroConditionMacroEdit::SetupWidgets() void MacroConditionMacroEdit::SetupStateWidgets() { - SetWidgetVisibility(); - ClearLayouts(); - - std::unordered_map widgetPlaceholders = { - {"{{macros}}", _macros}, - }; PlaceWidgets( obs_module_text("AdvSceneSwitcher.condition.macro.state.entry"), - _settingsLine1, widgetPlaceholders); + _settingsLine1, {{"{{macros}}", _macros}}); } void MacroConditionMacroEdit::SetupMultiStateWidgets() { - SetWidgetVisibility(); - ClearLayouts(); - - std::unordered_map widgetPlaceholders = { - {"{{multiStateConditions}}", _multiStateConditions}, - {"{{multiStateCount}}", _multiStateCount}, - }; PlaceWidgets( obs_module_text( "AdvSceneSwitcher.condition.macro.multistate.entry"), - _settingsLine1, widgetPlaceholders); + _settingsLine1, + {{"{{multiStateConditions}}", _multiStateConditions}, + {"{{multiStateCount}}", _multiStateCount}}); } void MacroConditionMacroEdit::SetupCountWidgets() { - SetWidgetVisibility(); - ClearLayouts(); - - std::unordered_map widgetPlaceholders = { + const std::unordered_map widgetPlaceholders = { {"{{macros}}", _macros}, {"{{conditions}}", _counterConditions}, {"{{count}}", _count}, @@ -408,9 +414,6 @@ void MacroConditionMacroEdit::SetupCountWidgets() void MacroConditionMacroEdit::SetupActionStateWidgets(bool enable) { - SetWidgetVisibility(); - ClearLayouts(); - PlaceWidgets( obs_module_text( enable ? "AdvSceneSwitcher.condition.macro.actionState.enabled.entry" @@ -419,6 +422,13 @@ void MacroConditionMacroEdit::SetupActionStateWidgets(bool enable) {{"{{macros}}", _macros}, {"{{actionIndex}}", _actionIndex}}); } +void MacroConditionMacroEdit::SetupPauseWidgets() +{ + PlaceWidgets(obs_module_text( + "AdvSceneSwitcher.condition.macro.paused.entry"), + _settingsLine1, {{"{{macros}}", _macros}}); +} + void MacroConditionMacroEdit::SetWidgetVisibility() { _macros->setVisible( @@ -426,7 +436,9 @@ void MacroConditionMacroEdit::SetWidgetVisibility() _entryData->_type == MacroConditionMacro::Type::STATE || _entryData->_type == MacroConditionMacro::Type::ACTION_DISABLED || - _entryData->_type == MacroConditionMacro::Type::ACTION_ENABLED); + _entryData->_type == + MacroConditionMacro::Type::ACTION_ENABLED || + _entryData->_type == MacroConditionMacro::Type::PAUSED); _counterConditions->setVisible(_entryData->_type == MacroConditionMacro::Type::COUNT); _count->setVisible(_entryData->_type == @@ -447,7 +459,8 @@ void MacroConditionMacroEdit::SetWidgetVisibility() _entryData->_type == MacroConditionMacro::Type::ACTION_ENABLED); if (_entryData->_type == MacroConditionMacro::Type::MULTI_STATE || _entryData->_type == MacroConditionMacro::Type::ACTION_DISABLED || - _entryData->_type == MacroConditionMacro::Type::ACTION_ENABLED) { + _entryData->_type == MacroConditionMacro::Type::ACTION_ENABLED || + _entryData->_type == MacroConditionMacro::Type::PAUSED) { _pausedWarning->hide(); } diff --git a/src/macro-core/macro-condition-macro.hpp b/src/macro-core/macro-condition-macro.hpp index 4c41ecac..62a453ba 100644 --- a/src/macro-core/macro-condition-macro.hpp +++ b/src/macro-core/macro-condition-macro.hpp @@ -39,6 +39,7 @@ public: MULTI_STATE, ACTION_DISABLED, ACTION_ENABLED, + PAUSED, }; Type _type = Type::STATE; @@ -64,6 +65,7 @@ private: bool CheckStateCondition(); bool CheckMultiStateCondition(); bool CheckActionStateCondition(); + bool CheckPauseState(); static bool _registered; static const std::string id; @@ -128,6 +130,7 @@ private: void SetupMultiStateWidgets(); void SetupCountWidgets(); void SetupActionStateWidgets(bool enable); + void SetupPauseWidgets(); void SetWidgetVisibility(); bool _loading = true; };