1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
#include "macro-condition.hpp"
namespace advss {
MacroCondition::MacroCondition(Macro *m, bool supportsVariableValue)
: MacroSegment(m, supportsVariableValue)
{
}
bool MacroCondition::Save(obs_data_t *obj) const
{
MacroSegment::Save(obj);
obs_data_set_string(obj, "id", GetId().c_str());
_logic.Save(obj, "logic");
_durationModifier.Save(obj);
return true;
}
bool MacroCondition::Load(obs_data_t *obj)
{
MacroSegment::Load(obj);
_logic.Load(obj, "logic");
_durationModifier.Load(obj);
return true;
}
void MacroCondition::ValidateLogicSelection(bool isRootCondition,
const char *context)
{
if (_logic.IsValidSelection(isRootCondition)) {
return;
}
if (_logic.IsRootType()) {
_logic.SetType(Logic::Type::ROOT_NONE);
blog(LOG_WARNING,
"setting invalid logic selection to 'if' for macro %s",
context);
return;
}
_logic.SetType(Logic::Type::NONE);
blog(LOG_WARNING,
"setting invalid logic selection to 'ignore' for macro %s",
context);
}
void MacroCondition::ResetDuration()
{
_durationModifier.ResetDuration();
}
bool MacroCondition::CheckDurationModifier(bool conditionValue)
{
return _durationModifier.CheckConditionWithDurationModifier(
conditionValue);
}
DurationModifier MacroCondition::GetDurationModifier() const
{
return _durationModifier;
}
void MacroCondition::SetDurationModifier(DurationModifier::Type m)
{
_durationModifier.SetModifier(m);
}
void MacroCondition::SetDuration(const Duration &duration)
{
_durationModifier.SetDuration(duration);
}
std::string_view MacroCondition::GetDefaultID()
{
return "scene";
}
MacroRefCondition::MacroRefCondition(Macro *m, bool supportsVariableValue)
: MacroCondition(m, supportsVariableValue)
{
}
bool MacroRefCondition::PostLoad()
{
_macro.PostLoad();
return true;
}
MultiMacroRefCondition::MultiMacroRefCondition(Macro *m,
bool supportsVariableValue)
: MacroCondition(m, supportsVariableValue)
{
}
bool MultiMacroRefCondition::PostLoad()
{
for (auto ¯o : _macros) {
macro.PostLoad();
}
return true;
}
} // namespace advss
|