Adds a utility function to retrieve key states for a given container of keys, enhancing input processing capabilities. Improves error handling by adding more logging for render failures, giving the development team better insights into potential issues and aiding debugging efforts.
84 lines
1.8 KiB
C++
84 lines
1.8 KiB
C++
#ifndef _INPUTCLASS_H_
|
|
#define _INPUTCLASS_H_
|
|
|
|
///////////////////////////////
|
|
// PRE-PROCESSING DIRECTIVES //
|
|
///////////////////////////////
|
|
#define DIRECTINPUT_VERSION 0x0800
|
|
|
|
/////////////
|
|
// LINKING //
|
|
/////////////
|
|
#pragma comment(lib, "dinput8.lib")
|
|
#pragma comment(lib, "dxguid.lib")
|
|
|
|
//////////////
|
|
// INCLUDES //
|
|
//////////////
|
|
#include "Logger.h"
|
|
#include <dinput.h>
|
|
#include "macro.h"
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Class name: input_class
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
class input_class
|
|
{
|
|
public:
|
|
|
|
template<typename Container>
|
|
std::vector<bool> get_key_states(const Container& key) const
|
|
{
|
|
std::vector<bool> key_states;
|
|
key_states.reserve(key.size());
|
|
for (auto k : key)
|
|
key_states.push_back(this->is_key_pressed(k));
|
|
return key_states;
|
|
}
|
|
|
|
input_class();
|
|
input_class(const input_class&);
|
|
~input_class();
|
|
|
|
virtual bool Initialize(HINSTANCE, HWND, int, int);
|
|
virtual void Shutdown();
|
|
virtual bool Frame();
|
|
|
|
bool IsEscapePressed() const;
|
|
void GetMouseLocation(int&, int&) const;
|
|
bool IsLeftMousePressed() const;
|
|
bool IsRightMousePressed() const;
|
|
void KeyDown(unsigned int);
|
|
void KeyUp(unsigned int);
|
|
bool IsLeftArrowPressed() const;
|
|
bool IsRightArrowPressed() const;
|
|
bool IsScrollUp() const;
|
|
bool IsScrollDown() const;
|
|
bool IsUpArrowPressed() const;
|
|
bool IsDownArrowPressed() const;
|
|
bool IsKeyDown(unsigned int) const;
|
|
bool is_key_pressed(const unsigned int);
|
|
|
|
|
|
|
|
private:
|
|
bool m_keys[256];
|
|
|
|
bool ReadKeyboard();
|
|
bool ReadMouse();
|
|
void ProcessInput();
|
|
|
|
private:
|
|
IDirectInput8* m_directInput;
|
|
IDirectInputDevice8* m_keyboard;
|
|
IDirectInputDevice8* m_mouse;
|
|
|
|
unsigned char m_keyboardState[256];
|
|
DIMOUSESTATE m_mouseState;
|
|
|
|
int m_screenWidth, m_screenHeight, m_mouseX, m_mouseY;
|
|
bool m_previousTildeState;
|
|
|
|
};
|
|
|
|
#endif |