43 lines
916 B
C++

#pragma once
#include "olcPixelGameEngine.h"
#include <set>
//Future-proof game controller support.
enum InputType{
KEY,
MOUSE,
CONTROLLER
};
//A generic class that represents any type of input.
class Input{
friend class InputGroup;
InputType type;
int key; //This will be interpreted differently depending on input type.
public:
Input(InputType type,int key);
bool Pressed();
bool Held();
bool Released();
std::string GetDisplayName();
bool operator<(const Input&rhs)const{
return type<rhs.type||(type==rhs.type&&key<rhs.key);
}
};
class InputGroup{
std::set<Input>keys;
public:
InputGroup();
void AddKeybind(Input bind);
void RemoveKeybind(Input bind);
bool Pressed();
bool Held();
bool Released();
std::string GetDisplayName();
};
class GenericKey{
public:
static std::map<std::pair<InputType,int>,std::string>keyLiteral; //The displayed text for a given key for a given input type.
};