Files
pico-launcher/arm9/source/gui/input/SampledInputProvider.h
2025-11-25 17:41:31 +01:00

35 lines
862 B
C++

#pragma once
#include "InputProvider.h"
#include "IInputSource.h"
/// @brief Input provider providing input from an \see IInputSource.
class SampledInputProvider : public InputProvider
{
public:
explicit SampledInputProvider(const IInputSource* inputSource)
: _inputSource(inputSource), _inputBufferReadPtr(0), _inputBufferWritePtr(0) { }
void Update() override;
/// @brief Samples the input source.
void Sample()
{
_inputBuffer[_inputBufferWritePtr] = _inputSource->Sample();
_inputBufferWritePtr = (_inputBufferWritePtr + 1) & 3;
}
void Reset() override
{
InputProvider::Reset();
_inputBufferReadPtr = 0;
_inputBufferWritePtr = 0;
}
private:
const IInputSource* _inputSource;
InputKey _inputBuffer[4];
u8 _inputBufferReadPtr;
u8 _inputBufferWritePtr;
};