#include "RandomBinaryFunction.h"

#include "utilityRandom.h"

RandomBinaryFunction::RandomBinaryFunction(float resolution_s, float stateChangeProbability)
	: m_resolution_s(resolution_s)
	, m_stateChangeProbability(stateChangeProbability)
	, m_passedTime_s(0.0f)
	, m_value(utility::getRandomBool())
{
}

void RandomBinaryFunction::update(float deltaTime_s)
{
	m_passedTime_s += deltaTime_s;
	while (m_passedTime_s >= m_resolution_s)
	{
		m_passedTime_s -= m_resolution_s;
		if (utility::getRandomFloat() >= m_stateChangeProbability)
		{
			m_value = !m_value;
		}
	}
}

bool RandomBinaryFunction::getValue() const
{
	return m_value;
}
