main
parent
b17c794999
commit
650e4584bd
23 changed files with 260 additions and 221 deletions
@ -0,0 +1,39 @@ |
|||||||
|
#include "keyboard.h" |
||||||
|
|
||||||
|
namespace Bk
|
||||||
|
{ |
||||||
|
std::vector<bool> Keyboard::keys; |
||||||
|
std::vector<bool> Keyboard::keysChanged; |
||||||
|
|
||||||
|
bool Keyboard::KeyCallback(KeyEvent& e)
|
||||||
|
{ |
||||||
|
//If the button is pressed or down then key is true
|
||||||
|
if (e.get_name() == "KeyPress" || e.get_name() == "KeyRelease") keys[e.get_key()] = !keys[e.get_key()]; |
||||||
|
else keys[e.get_key()] = false; |
||||||
|
//If the button is not down then keyChanged is true
|
||||||
|
keysChanged[e.get_key()] = e.get_name() == "KeyPress" || e.get_name() == "KeyRelease"; |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
bool Keyboard::KeyDown(KeyCode key)
|
||||||
|
{ |
||||||
|
return keys[key]; |
||||||
|
} |
||||||
|
|
||||||
|
bool Keyboard::KeyWentUp(KeyCode key)
|
||||||
|
{ |
||||||
|
return !keys[key] && keyChanged(key); |
||||||
|
} |
||||||
|
|
||||||
|
bool Keyboard::KeyWentDown(KeyCode key)
|
||||||
|
{ |
||||||
|
return keys[key] && keyChanged(key); |
||||||
|
} |
||||||
|
|
||||||
|
bool Keyboard::keyChanged(KeyCode key)
|
||||||
|
{ |
||||||
|
bool ret = keysChanged[key]; |
||||||
|
keysChanged[key] = false; |
||||||
|
return ret; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
#include "bakara.pch" |
||||||
|
#include "key_codes.h" |
||||||
|
#include "bakara/events/key_event.h" |
||||||
|
|
||||||
|
namespace Bk
|
||||||
|
{ |
||||||
|
class Keyboard { |
||||||
|
public: |
||||||
|
|
||||||
|
static bool KeyCallback(KeyEvent& e); |
||||||
|
//Assesors
|
||||||
|
static bool KeyDown(KeyCode key); |
||||||
|
static bool KeyWentUp(KeyCode key); |
||||||
|
static bool KeyWentDown(KeyCode key); |
||||||
|
|
||||||
|
private: |
||||||
|
//Keys state
|
||||||
|
static std::vector<bool> keys; |
||||||
|
static std::vector<bool> keysChanged; |
||||||
|
//Assesor
|
||||||
|
static bool keyChanged(KeyCode key); |
||||||
|
}; |
||||||
|
} |
Loading…
Reference in New Issue