SparrowInput/keybindings.h
2015-07-17 20:04:19 +02:00

53 lines
1.2 KiB
C++

/**
* @author: Thomas Brandého
*/
#ifndef KEYBINDINGS_H
#define KEYBINDINGS_H
#include <SFML/Window.hpp>
#include <unordered_map>
#define NO_KEY -1
#define NO_ACTION -1
class KeysMap {
public:
enum {PRIMARY,SECONDARY,NB_BINDINGS};
enum {PRESSED, RELEASED, HOLD};
KeysMap();
KeysMap(std::string keysmapping, int nb_actions);
int getKeyBinding(int action,int num);
void setKeyBinding(int action, int num, int key);
int getTypeAction(int action);
void setTypeAction(int action, int type);
void saveKeysMap();
void loadKeysMap();
private:
std::string keysmapping_file;
int size_keys_map = 0;
int* keys_map;
int* actiontype_map;
};
class KeyBindings {
public:
KeyBindings();
KeyBindings(const std::vector<int> action_list, KeysMap* keysmap);
int getPressedAction(int key);
int getReleasedAction(int key);
int getHoldAction(int key);
std::unordered_map<int,int> bindings_hold;
private:
std::unordered_map<int,int> bindings_pressed;
std::unordered_map<int,int> bindings_released;
void setPressedAction(int key, int action);
void setReleasedAction(int key, int action);
void setHoldAction(int key, int action);
};
#endif