diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index c35b7f5d..35148d45 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -583,6 +583,7 @@ AdvSceneSwitcher.action.variable.type.increment="Increment" AdvSceneSwitcher.action.variable.type.decrement="Decrement" AdvSceneSwitcher.action.variable.type.setActionValue="Set to action value" AdvSceneSwitcher.action.variable.type.setConditionValue="Set to condition value" +AdvSceneSwitcher.action.variable.type.roundToInt="Round to nearest integer" AdvSceneSwitcher.action.variable.invalidSelection="Invalid selection!" AdvSceneSwitcher.action.variable.actionNoVariableSupport="Getting variable values from %1 actions is not supported!" AdvSceneSwitcher.action.variable.conditionNoVariableSupport="Getting variable values from %1 conditions is not supported!" diff --git a/src/macro-core/macro-action-variable.cpp b/src/macro-core/macro-action-variable.cpp index 56f67fa2..f11660b0 100644 --- a/src/macro-core/macro-action-variable.cpp +++ b/src/macro-core/macro-action-variable.cpp @@ -25,6 +25,8 @@ static std::map actionTypes = { "AdvSceneSwitcher.action.variable.type.setConditionValue"}, {MacroActionVariable::Type::SET_ACTION_VALUE, "AdvSceneSwitcher.action.variable.type.setActionValue"}, + {MacroActionVariable::Type::ROUND_TO_INT, + "AdvSceneSwitcher.action.variable.type.roundToInt"}, }; static void apppend(Variable &var, const std::string &value) @@ -95,6 +97,13 @@ bool MacroActionVariable::PerformAction() var->SetValue(segment->GetVariableValue()); break; } + case Type::ROUND_TO_INT: { + double curValue; + if (!var->DoubleValue(curValue)) { + return true; + } + var->SetValue(std::to_string(int(std::round(curValue)))); + } } return true; diff --git a/src/macro-core/macro-action-variable.hpp b/src/macro-core/macro-action-variable.hpp index 66fc439f..e158f578 100644 --- a/src/macro-core/macro-action-variable.hpp +++ b/src/macro-core/macro-action-variable.hpp @@ -28,6 +28,7 @@ public: DECREMENT, SET_CONDITION_VALUE, SET_ACTION_VALUE, + ROUND_TO_INT, }; Type _type = Type::SET_FIXED_VALUE;