You've already forked pico-launcher
mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-01-09 16:28:48 -08:00
32 lines
848 B
C++
32 lines
848 B
C++
#pragma once
|
|
#include "InputProvider.h"
|
|
|
|
/// @brief Input provider that wraps another input provider and adds key repetition on top of it.
|
|
class InputRepeater : public InputProvider
|
|
{
|
|
public:
|
|
InputRepeater(InputProvider* inputProvider, InputKey repeatMask, u16 firstRepeatDelay, u16 nextRepeatDelay)
|
|
: _inputProvider(inputProvider), _state(State::Idle)
|
|
, _frameCounter(0), _repeatMask(repeatMask)
|
|
, _firstRepeatDelayFrames(firstRepeatDelay)
|
|
, _nextRepeatDelayFrames(nextRepeatDelay) { }
|
|
|
|
void Update() override;
|
|
void Reset() override;
|
|
|
|
private:
|
|
enum class State
|
|
{
|
|
Idle,
|
|
FirstRepeat,
|
|
NextRepeat
|
|
};
|
|
|
|
InputProvider* _inputProvider;
|
|
State _state;
|
|
u16 _frameCounter;
|
|
InputKey _repeatMask;
|
|
u16 _firstRepeatDelayFrames;
|
|
u16 _nextRepeatDelayFrames;
|
|
};
|