mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -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.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.selectPreviousScene="Previous Scene"
|
||||
AdvSceneSwitcher.selectCurrentScene="Current Scene"
|
||||
|
|
|
|||
|
|
@ -10,18 +10,20 @@ bool MacroConditionTimer::_registered = MacroConditionFactory::Register(
|
|||
{MacroConditionTimer::Create, MacroConditionTimerEdit::Create,
|
||||
"AdvSceneSwitcher.condition.timer", false});
|
||||
|
||||
const static std::map<TimerType, std::string> timerTypes = {
|
||||
{TimerType::FIXED, "AdvSceneSwitcher.condition.timer.type.fixed"},
|
||||
{TimerType::RANDOM, "AdvSceneSwitcher.condition.timer.type.random"},
|
||||
const static std::map<MacroConditionTimer::TimerType, std::string> timerTypes = {
|
||||
{MacroConditionTimer::TimerType::FIXED,
|
||||
"AdvSceneSwitcher.condition.timer.type.fixed"},
|
||||
{MacroConditionTimer::TimerType::RANDOM,
|
||||
"AdvSceneSwitcher.condition.timer.type.random"},
|
||||
};
|
||||
|
||||
bool MacroConditionTimer::CheckCondition()
|
||||
{
|
||||
if (_paused) {
|
||||
SetVariableValue(std::to_string(_remaining));
|
||||
SetVariables(_remaining);
|
||||
return _remaining == 0.;
|
||||
}
|
||||
SetVariableValue(std::to_string(_duration.TimeRemaining()));
|
||||
SetVariables(_duration.TimeRemaining());
|
||||
if (_duration.DurationReached()) {
|
||||
if (!_oneshot) {
|
||||
_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)
|
||||
{
|
||||
for (auto entry : timerTypes) {
|
||||
|
|
@ -203,7 +228,7 @@ void MacroConditionTimerEdit::TimerTypeChanged(int type)
|
|||
}
|
||||
|
||||
auto lock = LockContext();
|
||||
_entryData->_type = static_cast<TimerType>(type);
|
||||
_entryData->_type = static_cast<MacroConditionTimer::TimerType>(type);
|
||||
SetWidgetVisibility();
|
||||
}
|
||||
|
||||
|
|
@ -337,7 +362,7 @@ void MacroConditionTimerEdit::SetWidgetVisibility()
|
|||
{"{{duration2}}", _duration2},
|
||||
};
|
||||
|
||||
if (_entryData->_type == TimerType::RANDOM) {
|
||||
if (_entryData->_type == MacroConditionTimer::TimerType::RANDOM) {
|
||||
PlaceWidgets(
|
||||
obs_module_text(
|
||||
"AdvSceneSwitcher.condition.timer.entry.line1.random"),
|
||||
|
|
|
|||
|
|
@ -12,11 +12,6 @@
|
|||
|
||||
namespace advss {
|
||||
|
||||
enum class TimerType {
|
||||
FIXED,
|
||||
RANDOM,
|
||||
};
|
||||
|
||||
class MacroConditionTimer : public MacroCondition {
|
||||
public:
|
||||
MacroConditionTimer(Macro *m) : MacroCondition(m, true) {}
|
||||
|
|
@ -32,6 +27,7 @@ public:
|
|||
void Continue();
|
||||
void Reset();
|
||||
|
||||
enum class TimerType { FIXED, RANDOM };
|
||||
TimerType _type = TimerType::FIXED;
|
||||
Duration _duration;
|
||||
Duration _duration2;
|
||||
|
|
@ -42,6 +38,9 @@ public:
|
|||
|
||||
private:
|
||||
void SetRandomTimeRemaining();
|
||||
void SetVariables(double seconds);
|
||||
void SetupTempVars();
|
||||
|
||||
std::default_random_engine _re;
|
||||
static bool _registered;
|
||||
static const std::string id;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user