1#include "input_class.h"
4input_class::input_class()
9 m_previousTildeState =
false;
18input_class::~input_class()
22bool input_class::Initialize(HINSTANCE hinstance, HWND hwnd,
int screenWidth,
int screenHeight)
24 Logger::Get().
Log(
"Initializing input class", __FILE__, __LINE__, Logger::LogLevel::Initialize);
30 for (i = 0; i < 256; i++)
36 m_screenWidth = screenWidth;
37 m_screenHeight = screenHeight;
44 result = DirectInput8Create(hinstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (
void**)&m_directInput, NULL);
47 Logger::Get().
Log(
"Failed to create direct input interface", __FILE__, __LINE__, Logger::LogLevel::Error);
52 result = m_directInput->CreateDevice(GUID_SysKeyboard, &m_keyboard, NULL);
55 Logger::Get().
Log(
"Failed to create direct input interface for the keyboard", __FILE__, __LINE__, Logger::LogLevel::Error);
60 result = m_keyboard->SetDataFormat(&c_dfDIKeyboard);
63 Logger::Get().
Log(
"Failed to set data format for the keyboard", __FILE__, __LINE__, Logger::LogLevel::Error);
68 result = m_keyboard->SetCooperativeLevel(hwnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE);
71 Logger::Get().
Log(
"Failed to set cooperative level of the keyboard", __FILE__, __LINE__, Logger::LogLevel::Error);
76 result = m_keyboard->Acquire();
79 Logger::Get().
Log(
"Failed to acquire the keyboard", __FILE__, __LINE__, Logger::LogLevel::Error);
84 result = m_directInput->CreateDevice(GUID_SysMouse, &m_mouse, NULL);
87 Logger::Get().
Log(
"Failed to create direct input interface for the mouse", __FILE__, __LINE__, Logger::LogLevel::Error);
92 result = m_mouse->SetDataFormat(&c_dfDIMouse);
95 Logger::Get().
Log(
"Failed to set data format for the mouse", __FILE__, __LINE__, Logger::LogLevel::Error);
100 result = m_mouse->SetCooperativeLevel(hwnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE);
103 Logger::Get().
Log(
"Failed to set cooperative level of the mouse", __FILE__, __LINE__, Logger::LogLevel::Error);
108 result = m_mouse->Acquire();
111 Logger::Get().
Log(
"Failed to acquire the mouse", __FILE__, __LINE__, Logger::LogLevel::Error);
115 Logger::Get().
Log(
"Input class initialized", __FILE__, __LINE__, Logger::LogLevel::Initialize);
121void input_class::KeyDown(
unsigned int input)
124 Logger::Get().
Log(
"Key down: " + std::to_string(
input), __FILE__, __LINE__, Logger::LogLevel::Input);
125 m_keys[
input] =
true;
130void input_class::KeyUp(
unsigned int input)
133 m_keys[
input] =
false;
138bool input_class::IsKeyDown(
unsigned int key)
const
144void input_class::Shutdown()
146 Logger::Get().
Log(
"Shutting down input class", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
151 m_mouse->Unacquire();
159 m_keyboard->Unacquire();
160 m_keyboard->Release();
167 m_directInput->Release();
171 Logger::Get().
Log(
"Input class shut down", __FILE__, __LINE__, Logger::LogLevel::Shutdown);
176bool input_class::Frame()
182 result = ReadKeyboard();
185 Logger::Get().
Log(
"Failed to read keyboard state", __FILE__, __LINE__, Logger::LogLevel::Error);
190 result = ReadMouse();
193 Logger::Get().
Log(
"Failed to read mouse state", __FILE__, __LINE__, Logger::LogLevel::Error);
203bool input_class::ReadKeyboard()
209 result = m_keyboard->GetDeviceState(
sizeof(m_keyboardState), (LPVOID)&m_keyboardState);
213 if ((result == DIERR_INPUTLOST) || (result == DIERR_NOTACQUIRED))
215 m_keyboard->Acquire();
219 Logger::Get().
Log(
"Failed to get keyboard device state", __FILE__, __LINE__, Logger::LogLevel::Error);
227bool input_class::ReadMouse()
233 result = m_mouse->GetDeviceState(
sizeof(DIMOUSESTATE), (LPVOID)&m_mouseState);
237 if ((result == DIERR_INPUTLOST) || (result == DIERR_NOTACQUIRED))
243 Logger::Get().
Log(
"Failed to get mouse device state", __FILE__, __LINE__, Logger::LogLevel::Error);
251void input_class::ProcessInput()
254 m_mouseX += m_mouseState.lX;
255 m_mouseY += m_mouseState.lY;
259 if (m_mouseY < -m_screenHeight) { m_mouseY = -m_screenHeight; }
262 if (m_mouseY > m_screenHeight) { m_mouseY = m_screenHeight; }
267bool input_class::IsEscapePressed()
const
270 if (m_keyboardState[DIK_ESCAPE] & 0x80)
278bool input_class::IsLeftArrowPressed()
const
280 if (m_keyboardState[DIK_LEFT] & 0x80)
289bool input_class::IsRightArrowPressed()
const
291 if (m_keyboardState[DIK_RIGHT] & 0x80)
299bool input_class::IsUpArrowPressed()
const
301 if (m_keyboardState[DIK_UP] & 0x80)
310bool input_class::IsDownArrowPressed()
const
312 if (m_keyboardState[DIK_DOWN] & 0x80)
324bool input_class::IsAPressed()
const
327 if (m_keyboardState[DIK_A] & 0x80)
335bool input_class::IsDPressed()
const
337 if (m_keyboardState[DIK_D] & 0x80)
345bool input_class::IsWPressed()
const
348 if (m_keyboardState[DIK_W] & 0x80)
356bool input_class::IsSPressed()
const
358 if (m_keyboardState[DIK_S] & 0x80)
366bool input_class::IsQPressed()
const
369 if (m_keyboardState[DIK_Q] & 0x80)
377bool input_class::IsEPressed()
const
379 if (m_keyboardState[DIK_E] & 0x80)
387void input_class::GetMouseLocation(
int& mouseX,
int& mouseY)
const
394bool input_class::IsLeftMousePressed()
const
397 if (m_mouseState.rgbButtons[0] & 0x80)
405bool input_class::IsRightMousePressed()
const
408 if (m_mouseState.rgbButtons[1] & 0x80)
416bool input_class::IsScrollUp()
const
418 if (m_mouseState.lZ > 0)
426bool input_class::IsScrollDown()
const
428 if (m_mouseState.lZ < 0)
436bool input_class::is_key_pressed(
const unsigned int key_code)
438 if (m_keyboardState[key_code] & 0x80)
void Log(const std::string &message, const std::string &fileName, int lineNumber, LogLevel level=LogLevel::Info)