#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 #include "macro.h" //////////////////////////////////////////////////////////////////////////////// // Class name: input_class //////////////////////////////////////////////////////////////////////////////// class input_class { public: template std::vector get_key_states(const Container& key) const { std::vector 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