Hello there!
New to the forums, though i`ve been skimming these forums for a while now! FIY I`m new with C++ and totally new with SDL2.
In any case, I`m trying to achieve something which roughly translates to the following use case: Handling keyboard input with SDL2.
So imagine the following cpp:
Player::Update( float dt) {
if(Input::OnKeyDown("w")){
/// move player up (or jump w/e)
}
}
All valid, correct? This is not the hardest part, I can read the current input using SDL_GetKeyboardState(NULL) and my Input class directly reads the returned array to check if the given key was set to 1.
However, I`m also looking for a way to register single key strokes. So, instead of plainly checking if a button is DOWN, I need to differentiate. What I would like to achieve is this; how do I check whether the previous state was UP and the current state is DOWN?
The SDL_GetKeyboardState() returns a pointer to an array which I can use to retrieve information, however I have no clue how to store that array some place else.
Basically, what i`m looking for is something like this ( using SDL_PumpEvents())
// somewhere in the update function of input
SDL_pumpEvents();
oldKeyboardState = currentKeyboardState;
currentKeyboardState = nextKeyboardState;
* nextKeyboardState = < the pointer to the SDL keyboard array>;
I`m not sure, but if I manage to get this working, it should be fairly easy to check whether the previous state was 0 and the current state was 1 correct?
Any tips/pointers(ugh..) to help me out? Any and all help will be much appreciated!