mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-04-25 15:34:48 -05:00
Add temp variable support to timer condition
This commit is contained in:
parent
7e56dc35b8
commit
975eacbc7e
|
|
@ -1419,6 +1419,11 @@ AdvSceneSwitcher.tempVar.scene.preview="Preview scene"
|
||||||
AdvSceneSwitcher.tempVar.window.window="Window title"
|
AdvSceneSwitcher.tempVar.window.window="Window title"
|
||||||
AdvSceneSwitcher.tempVar.window.window.description="The window title of the current foreground window."
|
AdvSceneSwitcher.tempVar.window.window.description="The window title of the current foreground window."
|
||||||
|
|
||||||
|
AdvSceneSwitcher.tempVar.timer.seconds="Seconds"
|
||||||
|
AdvSceneSwitcher.tempVar.timer.minutes="Minutes"
|
||||||
|
AdvSceneSwitcher.tempVar.timer.hours="Hours"
|
||||||
|
AdvSceneSwitcher.tempVar.timer.days="Days"
|
||||||
|
|
||||||
AdvSceneSwitcher.selectScene="--select scene--"
|
AdvSceneSwitcher.selectScene="--select scene--"
|
||||||
AdvSceneSwitcher.selectPreviousScene="Previous Scene"
|
AdvSceneSwitcher.selectPreviousScene="Previous Scene"
|
||||||
AdvSceneSwitcher.selectCurrentScene="Current Scene"
|
AdvSceneSwitcher.selectCurrentScene="Current Scene"
|
||||||
|
|
|
||||||
|
|
@ -10,18 +10,20 @@ bool MacroConditionTimer::_registered = MacroConditionFactory::Register(
|
||||||
{MacroConditionTimer::Create, MacroConditionTimerEdit::Create,
|
{MacroConditionTimer::Create, MacroConditionTimerEdit::Create,
|
||||||
"AdvSceneSwitcher.condition.timer", false});
|
"AdvSceneSwitcher.condition.timer", false});
|
||||||
|
|
||||||
const static std::map<TimerType, std::string> timerTypes = {
|
const static std::map<MacroConditionTimer::TimerType, std::string> timerTypes = {
|
||||||
{TimerType::FIXED, "AdvSceneSwitcher.condition.timer.type.fixed"},
|
{MacroConditionTimer::TimerType::FIXED,
|
||||||
{TimerType::RANDOM, "AdvSceneSwitcher.condition.timer.type.random"},
|
"AdvSceneSwitcher.condition.timer.type.fixed"},
|
||||||
|
{MacroConditionTimer::TimerType::RANDOM,
|
||||||
|
"AdvSceneSwitcher.condition.timer.type.random"},
|
||||||
};
|
};
|
||||||
|
|
||||||
bool MacroConditionTimer::CheckCondition()
|
bool MacroConditionTimer::CheckCondition()
|
||||||
{
|
{
|
||||||
if (_paused) {
|
if (_paused) {
|
||||||
SetVariableValue(std::to_string(_remaining));
|
SetVariables(_remaining);
|
||||||
return _remaining == 0.;
|
return _remaining == 0.;
|
||||||
}
|
}
|
||||||
SetVariableValue(std::to_string(_duration.TimeRemaining()));
|
SetVariables(_duration.TimeRemaining());
|
||||||
if (_duration.DurationReached()) {
|
if (_duration.DurationReached()) {
|
||||||
if (!_oneshot) {
|
if (!_oneshot) {
|
||||||
_duration.Reset();
|
_duration.Reset();
|
||||||
|
|
@ -120,6 +122,29 @@ void MacroConditionTimer::Reset()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MacroConditionTimer::SetVariables(double seconds)
|
||||||
|
{
|
||||||
|
SetVariableValue(std::to_string(seconds));
|
||||||
|
SetTempVarValue("seconds", std::to_string((int)seconds));
|
||||||
|
SetTempVarValue("minutes", std::to_string((int)(seconds / 60)));
|
||||||
|
SetTempVarValue("hours", std::to_string((int)(seconds / (60 * 60))));
|
||||||
|
SetTempVarValue("days",
|
||||||
|
std::to_string((int)(seconds / (60 * 60 * 24))));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MacroConditionTimer::SetupTempVars()
|
||||||
|
{
|
||||||
|
MacroCondition::SetupTempVars();
|
||||||
|
AddTempvar("seconds",
|
||||||
|
obs_module_text("AdvSceneSwitcher.tempVar.timer.seconds"));
|
||||||
|
AddTempvar("minutes",
|
||||||
|
obs_module_text("AdvSceneSwitcher.tempVar.timer.minutes"));
|
||||||
|
AddTempvar("hours",
|
||||||
|
obs_module_text("AdvSceneSwitcher.tempVar.timer.hours"));
|
||||||
|
AddTempvar("days",
|
||||||
|
obs_module_text("AdvSceneSwitcher.tempVar.timer.days"));
|
||||||
|
}
|
||||||
|
|
||||||
static inline void populateTimerTypeSelection(QComboBox *list)
|
static inline void populateTimerTypeSelection(QComboBox *list)
|
||||||
{
|
{
|
||||||
for (auto entry : timerTypes) {
|
for (auto entry : timerTypes) {
|
||||||
|
|
@ -203,7 +228,7 @@ void MacroConditionTimerEdit::TimerTypeChanged(int type)
|
||||||
}
|
}
|
||||||
|
|
||||||
auto lock = LockContext();
|
auto lock = LockContext();
|
||||||
_entryData->_type = static_cast<TimerType>(type);
|
_entryData->_type = static_cast<MacroConditionTimer::TimerType>(type);
|
||||||
SetWidgetVisibility();
|
SetWidgetVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -337,7 +362,7 @@ void MacroConditionTimerEdit::SetWidgetVisibility()
|
||||||
{"{{duration2}}", _duration2},
|
{"{{duration2}}", _duration2},
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_entryData->_type == TimerType::RANDOM) {
|
if (_entryData->_type == MacroConditionTimer::TimerType::RANDOM) {
|
||||||
PlaceWidgets(
|
PlaceWidgets(
|
||||||
obs_module_text(
|
obs_module_text(
|
||||||
"AdvSceneSwitcher.condition.timer.entry.line1.random"),
|
"AdvSceneSwitcher.condition.timer.entry.line1.random"),
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,6 @@
|
||||||
|
|
||||||
namespace advss {
|
namespace advss {
|
||||||
|
|
||||||
enum class TimerType {
|
|
||||||
FIXED,
|
|
||||||
RANDOM,
|
|
||||||
};
|
|
||||||
|
|
||||||
class MacroConditionTimer : public MacroCondition {
|
class MacroConditionTimer : public MacroCondition {
|
||||||
public:
|
public:
|
||||||
MacroConditionTimer(Macro *m) : MacroCondition(m, true) {}
|
MacroConditionTimer(Macro *m) : MacroCondition(m, true) {}
|
||||||
|
|
@ -32,6 +27,7 @@ public:
|
||||||
void Continue();
|
void Continue();
|
||||||
void Reset();
|
void Reset();
|
||||||
|
|
||||||
|
enum class TimerType { FIXED, RANDOM };
|
||||||
TimerType _type = TimerType::FIXED;
|
TimerType _type = TimerType::FIXED;
|
||||||
Duration _duration;
|
Duration _duration;
|
||||||
Duration _duration2;
|
Duration _duration2;
|
||||||
|
|
@ -42,6 +38,9 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void SetRandomTimeRemaining();
|
void SetRandomTimeRemaining();
|
||||||
|
void SetVariables(double seconds);
|
||||||
|
void SetupTempVars();
|
||||||
|
|
||||||
std::default_random_engine _re;
|
std::default_random_engine _re;
|
||||||
static bool _registered;
|
static bool _registered;
|
||||||
static const std::string id;
|
static const std::string id;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user