This commit is contained in:
nastys
2019-07-30 13:48:28 +02:00
parent 25f819bdfb
commit 998f4274a5
157 changed files with 0 additions and 0 deletions
@@ -0,0 +1,51 @@
#pragma once
#include "../IInputDevice.h"
#include <xinput.h>
#include "../../Utilities/Stopwatch.h"
#include "XinputState.h"
using Stopwatch = TLAC::Utilities::Stopwatch;
namespace TLAC::Input
{
class Xinput : public IInputDevice
{
const float DOUBLE_TAP_THRESHOLD = 200.0f;
const float INTERVAL_TAP_DELAY_THRESHOLD = 500.0f;
const float INTERVAL_TAP_THRESHOLD = 75.0f;
public:
static Xinput* GetInstance();
bool PollInput() override;
bool IsDown(BYTE keycode);
bool IsUp(BYTE keycode);
bool IsTapped(BYTE keycode);
bool IsReleased(BYTE keycode);
bool IsDoubleTapped(BYTE keycode);
bool IsIntervalTapped(BYTE keycode);
bool WasDown(BYTE keycode);
bool WasUp(BYTE keycode);
private:
Xinput();
XinputState lastState;
XinputState currentState;
XINPUT_STATE state;
BYTE KeyDoubleTapStates[0xFF];
Utilities::Stopwatch KeyDoubleTapWatches[0xFF];
Stopwatch keyIntervalWatch;
BOOL keyIntervalInitials[0xFF];
BYTE keyIntervalTapStates[0xFF];
FLOAT keyIntervalTapTimes[0xFF];
static Xinput* instance;
void SetTapStates(BYTE keycode, float elapsed);
};
}